结构体

来源:互联网 发布:手机淘宝怎样看追评 编辑:程序博客网 时间:2024/05/23 15:06


结构体
理解与测试:
1)结构体也是一种数据类型。结构体类型变量的定义有三种方式。第一种,先声明一个结构体类型再定义一个结构体变量。第二种,声明结构体类型时同时定义结构体变量。第三种,直接定义结构类型变量,即不出现结构体名。结构体可以嵌套定义,即成员也可以是一个结构体变量。
2)成员名可以与程序中的变量名相同,二者不代表同一个对象。
3)结构体变量的初始化可以类似数组的初始化,即用大口号对每个成员赋值。 4)不能对结构体变量的成员整体赋值。结构体变量的成员可以当成普通变量使用,对结构体中的成员(即“域”)的引用方式如下:
                      结构体变量.成员名
对于结构体指针变量来说,一般通过“->”运算符来访问其成员,这边其实是访问结构体指针所指向的结构体的成员,因为结构体指针也和其他变量的指针相似,指向的是结构体存储单元的首地址。结构体指针引用成员的一般格式如下:
                  结构体指针->成员名 或(*结构体指针).成员名 总结与注意
结构体类型与结构体变量是不同的概念,不要混同。只能对变量赋值、存取或运算,而不能对一个类型赋值、存取或运算。在编译时,对类型时不分配空间的,只对变量分配空间。

结构体数组
理解与测试:
结构体作为一种数据类型也可定义数组,用结构体定义的数组每个元素都是一个结构体变量。结构体数组的定义、引用和普通结构体变量相同。 总结与注意
在测试的过程中发现使用结构体数组存在下面问题:
int main()
{
 int i = 0;  struct student  {
  float grade[2];





 }st[2]={{1,2},{1,2}};
 scanf("%f",&st[i].grade[0]);  printf("%f",st[i].grade[0]);  getch(); }
运行后窗口只是一闪下。如果在scanf();不要用变量作为数组下标程序可以正常运行。这应该是scanf();语句的一个bug。

0 0