06-访问结构成员
14.3.2 访问结构成员
结构类似于一个“超级数组”,这个超级数组中,可以是一个元素为 char 类型,下一个元素为 float 类型,下一个元素为 int 数组。可以通过数组下标单独访问数组中的各元素,那么,如何访问结构中的成员?使用结构成员运算符——点( . )访问结构中的成员。例如, library.value 即访问 library 的 value 部分。可以像使用任何 float 类型变量那样使用 library.value 。与此类似,可以像使用字符数组那样使用 library.title 。因此,程序清单14.1中的程序中有 s_gets(library.title, MAXTITL); 和 scanf("%f", &library.value); 这样的代码。
本质上, .title 、 .author 和 .value 的作用相当于 book 结构的下标。
注意,虽然 library 是一个结构,但是 library.value 是一个 float 类型的变量,可以像使用其他 float 类型变量那样使用它。例如, scanf("%f",...) 需要一个 float 类型变量的地址,而 &library.float 正好符合要求。 . 比 & 的优先级高,因此这个表达式和 &(library.float) 一样。
如果还有一个相同类型的结构变量,可以用相同的方法:
struct book bill, newt;
s_gets(bill.title, MAXTITL);
s_gets(newt.title, MAXTITL);
.title 引用 book 结构的第1个成员。注意,程序清单14.1中的程序以两种不同的格式打印了 library 结构变量中的内容。这说明可以自行决定如何使用结构成员。