上一节只是建立了一个结构体类型,它只是一个模型,其中并没有具体数据,系统也不对之分配内存单元。为了能在程序中使用结构体类型的数据,应当定义结构体类型的变量,并在其中存放数据,就像使用整型数据前先定义整型变量一样。
定义结构体类型变量有3种方法,以上一节定义的struct Student为例来说明。
1.先定义结构体类型,再定义该类型的变量
例如:
定义了struct Student结构体类型的两个变量student1和student2,需要注意:Student为结构体名,而struct Student才是结构体类型名。
在定义了结构体变量后,系统会为之分配内存单元。student1和student2在内存中各占63个字节(4+20+1+4+4+30=63)。
2.声明结构体类型的同时定义结构体变量
这种定义的一般形式为:
struct结构体名
{
成员表列
}变量名表列;
例如:
struct Student
{
int num;
char name[20];
char sex;
int age;(www.xing528.com)
float score;
char addr[30];
}student1,student2;
在定义struct Student结构体类型的同时定义两个变量student1、student2,这种方法能直接看到结构体的结构,比较直观,适用于小程序,在写大程序时一般将类型的声明和变量的定义分别放在不同地方,但较少使用这种方式。
3.直接定义结构体类型变量
这种定义的一般形式为:
struct
{
成员表列
}变量名表列;
相较于方法2,方法3中省去了结构体名,而直接给出结构体变量。上述三种方法中定义的student1、student2变量都具有图8.2所示的结构。
图8.2 结构体变量结构图
需要注意:
(1)结构体类型与结构体变量是不同的概念,不要混淆。类型是一个模型,是用来定义变量的,只能对变量进行赋值、存取或运算。在编译时,对类型是不分配空间的,只对定义的变量分配空间。
(2)结构体中的成员可以单独使用,其作用与地位相当于普通变量。对成员的引用方法见8.1.3节。
(3)结构体类型中的成员名可与程序中变量名相同,例如程序中可以另定义一个变量num,但它与struct Student中的num不代表同一对象,两者互不干扰。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。