...我想知道带有点(。)的属性定义对于结构属性的含义...
它允许您使用初始化语法访问结构的特定元素{ }
。例如,考虑这个结构:
struct my_struct {
int field_1;
int field_2;
int field_3;
};
...它可以初始化如下:
struct my_struct s1 = { 1, 2, 3 };
...或如下:
struct my_struct s2 = { .field_1 = 1, .field_2 = 2, .field_3 = 3 };
...或者如果您不知道字段的顺序(或想以某种顺序指定它们):
struct my_struct s3 = { .field_3 = 3, .field_1 = 1, .field_2 = 2 };
... 备注 that s1
is equivalent to s2
which is equivalent to s3
。此外,如果您没有在初始化中指定字段,那么它将为零。从C99 标准 6.7.8.21:
如果大括号括起来的列表中的初始值设定项少于聚合的元素或成员,或者用于初始化已知大小数组的字符串文字中的字符少于数组中的元素,则聚合的其余部分应隐式初始化与具有静态存储持续时间的对象相同。
...为了说明这一点:
struct my_struct s4 = { .field_1 = 1 };
...这将零填充字段 2 和 3,因此s4.field_2 == 0
意味着true
.