当前位置:嗨网首页>书籍在线阅读

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);

当然,也可以把 firstlast 直接作为 person 的成员,删除嵌套循环。匿名特性在嵌套联合中更加有用,我们在本章后面介绍。