是否可以静态初始化结构的一部分?
我的结构:
struct data {
char name[20];
float a;
int b;
char c;
};
初始化和打印时:
struct data badge = {"badge",307};
printf("%s,%d\n", badge.name, badge.b);
这将打印出“徽章”,但不会打印出“307”。
如何在忽略char name[20]
的同时使用int b
和float a
。
答案 0 :(得分:8)
您可以按照@sps的建议使用C99的指定初始化程序:
struct data badge = {.name = "badge", .b = 307};
但是在C89中,没有办法只初始化结构的某些成员。 所以,你必须这样做:
struct data badge = {"badge", 0.0, 307, 0};
请注意,即使使用指定的初始值设定项,未明确初始化的成员也将初始化为零。所以,以上两者都是等价的。
但是使用指定的初始值设定项,您还没有明确地初始化它(想象一下,如果你有100个成员的结构 并且你想只为它们中的两个提供一个初始 - 就像在你的例子中一样)并且使代码也更容易阅读。
答案 1 :(得分:3)
你可以,
struct data badge = {.name = "badge", .b = 307};