1
C语言程序设计
1.9.1.2 8.1.2 结构嵌套

8.1.2 结构嵌套

C语言中,结构成员不仅可以是位数可变的位域变量,而且可以是另一个结构类型变量。这种情况被称为嵌套式结构。例如,下面的结构变量payday就是嵌套在结构person内的一个嵌套式结构变量。

img643

图8.1.2说明了结构变量worker及各成员之间的关系。

根据图8.1.2的定义,如果要给worker的各成员赋值,可使用下面的程序段:

  worker.name="Li_ming";

  worker.age=34;

  worker.wage=350;

  worker.payday.month=11;

  worker.payday.day=1;

  worker.payday.year=1993;

显然,对每个结构成员的访问,在结构嵌套情况下,必须从最外层到最内层逐个列出结构成员变量名。

img644

图8.1.2 嵌套式结构中变量与成员间的关系

如果把worker定义为外部(或静态)结构变量,则定义时可以用同样方法赋初值。

  worker={"Li_m ing",34,350,11,1,1993};

在结束结构嵌套讨论之前,再简单介绍一下数组与结构的问题。数组与结构之间有密切的关系。前面已介绍了结构数组,数组的每个元素是一个结构类型数据。同样,结构中也常常包含有数组成员,如person结构中的name[]字符串数组。结构也可以包含各种数据的一维和多维数组,例如,考虑下面的一个例子:

img645

为了访问结构变量matrix中数组a的下标变量为2和5的整型量,可以写成:

  matrix.a[2][5];

为了访问数组b的第一个元素,可以写成:

  matrix.b[0];