我们知道定义好一个结构体类型后,可以将其看作是与int,char和float等数据类型一样的一个新的数据类型,其中并无具体数据,系统对之也没有分配实际的内存空间单元。为了能够在程序中使用结构体数据类型,应当定义结构体类型变量,并在其中存放具体数据。
结构体类型变量的定义定义结构体类型变量是用已经定义好的某个结构体类型未完成。结构体变量的定义形式有如下3种。
1)先定义结构体类型,再定义结构体类型变量。例如:
以上程序段定义了名为employee的结构体类型,然后将a1,a2两个变量定义成employee结构体类型。结构体类型变量的定义形式为:
struct 结构体名 结构体变量名表列;
例如,struct employee a1,a2;
定义a1,a2为struct employee类型的变量,它们具有了struct employee类型的结构。在定义了结构体变量之后,系统会为之分配内存单元,结构体变量的每个成员在计算机中占有不同且连续的内存单元,每个结构体变量所占内存大小为各个成员项所占内存大小之和。
例如,a1和a2在内存中各占29个字节(2 20 1 2 4=29)。
2)定义结构体类型的同时定义结构体变量。例如:
定义employee结构体类型的同时,定义了属于该类型的两个结构体变量a1和a2。用这种方法进行结构体类型变量定义的一般形式为:
3)直接定义结构体类型变量。
结构体类型名一般在后面的程序中不会出现,就像除了变量定义之外,一般不会在程序中引用int一样。所以,定义结构体变量时,可以将结构体类型名省略掉。其一般形式为:
例如:
结构体的成员也可以定义成另一个结构体类型的变量。例如:
说明
结构体类型与结构体类型变量是不同的概念。结构体类型是一种数据类型,系统不对其分配存储空间;结构体类型变量才是实实在在的变量,系统会为其分配存储空间,可以进行赋值,存取或运算。
如有裨益,吾之兴也。
,