【发布时间】:2016-12-11 19:01:52
【问题描述】:
是否可以静态初始化结构的一部分?
我拥有的结构:
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”。
如何在忽略 float a 的同时使用 char name[20] 和 int b。
【问题讨论】:
-
你怎么能假设 307 会被放在第一位呢?如果您不指定它,编译器怎么能知道呢?您肯定在考虑类型匹配..但请记住 307 很容易被隐式转换为浮点数。
-
请注意,如果结构的任何部分被初始化,结构将被完全初始化。您没有显式初始化的部分将被隐式初始化为零,就像具有静态存储持续时间的对象一样。
标签: c