14.5 嵌套结构
有时,在一个结构中包含另一个结构(即嵌套结构)很方便。
程序清单14.3 friend.c程序
// friend.c -- example of a nested structure
#include
#define LEN 20
const char * msgs[5] =
{
" Thank you for the wonderful evening, ",
"You certainly prove that a ",
"is a special kind of guy. We must get together",
"over a delicious ",
" and have a few laughs"
};
struct names { // first structure
char first[LEN];
char last[LEN];
};
struct guy { // second structure
struct names handle; // nested structure
char favfood[LEN];
char job[LEN];
float income;
};
int main(void)
{
struct guy fellow = { // initialize a variable
{ "Ewen", "Villard" },
"grilled salmon",
"personality coach",
68112.00
};
printf("Dear %s, \n\n", fellow.handle.first);
printf("%s%s.\n", msgs[0], fellow.handle.first);
printf("%s%s\n", msgs[1], fellow.job);
printf("%s\n", msgs[2]);
printf("%s%s%s", msgs[3], fellow.favfood, msgs[4]);
if (fellow.income > 150000.0)
puts("!!");
else if (fellow.income > 75000.0)
puts("!");
else
puts(".");
printf("\n%40s%s\n", " ", "See you soon,");
printf("%40s%s\n", " ", "Shalala");
return 0;
}
/* 输出:
*/
注意如何在结构中创建嵌套结构。和声明int类型一样,进行简单的声明:
struct names handle;
其次,诸如如何访问嵌套结构的成员,这需要使用两次点运算符:
fellow.handle.first;
.运算符的结合性是从左往右的。