是否可以静态初始化结构体的一部分?
我的结构:
struct data {
char name[20];
float a;
int b;
char c;
};
首字母缩写和打印时:
struct data badge = {"badge",307};
printf("%s,%d\n", badge.name, badge.b);
这将打印出“badge”,但不会打印“307”。
我怎样才能使用这个char name[20]
and int b
同时忽略float a
.
你可以使用C99指定的初始值设定项正如@sps建议的:
struct data badge = {.name = "badge", .b = 307};
但在 C89 中,无法仅初始化结构体的某些成员。
所以,你必须这样做:
struct data badge = {"badge", 0.0, 307, 0};
请注意,即使使用指定的初始化程序,未显式初始化的成员也将被零初始化。所以,以上两者是等价的。
但是使用指定的初始化程序,您无需显式初始化它(想象一下,如果您有一个包含 100 个成员的结构体
并且您只想为其中两个提供首字母缩写 - 就像在您的示例中一样)并使代码更易于阅读。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)