26-匿名结构(C11)
14.7.10 匿名结构(C11)
匿名结构是一个没有名称的结构成员。为了理解它的工作原理,我们先考虑如何创建嵌套结构:
struct names
{
char first[20];
char last[20];
};
struct person
{
int id;
struct names name; // 嵌套结构成员
};
struct person ted = {8483, {"Ted", "Grass"}};
这里, name 成员是一个嵌套结构,可以通过类似 ted.name.first 的表达式访问 "ted" :
puts(ted.name.first);
在C11中,可以用嵌套的匿名成员结构定义 person :
struct person
{
int id;
struct {char first[20]; char last[20];}; // 匿名结构
};
初始化 ted 的方式相同:
struct person ted = {8483, {"Ted", "Grass"}};
但是,在访问 ted 时简化了步骤,只需把 first 看作是 person 的成员那样使用它:
puts(ted.first);
当然,也可以把 first 和 last 直接作为 person 的成员,删除嵌套循环。匿名特性在嵌套联合中更加有用,我们在本章后面介绍。