考虑下面的代码:如何初始化一个联合?
struct T {
int a;
union {
struct {
int a;
} s1;
struct {
char b[1024];
} s2;
};
};
int main() {
T x = T();
}
由于明确的构造函数被调用,上面的代码结束向上零初始化所有数据x中的成员。
但是我想要x初始化,即使明确不被调用。要做到这一点,一个想法就是在声明中初始化数据成员,对于T :: a来说似乎没问题。但是,如何通过使用 相同的标准来初始化工会占用的所有内存?
struct T {
int a = 0;
union {
struct {
int a;
} s1;
struct {
char b[1024];
} s2;
};
};
int main() {
T x; // I want x to be zero-initialized
}
http://stackoverflow.com/questions/1069621/are-members-of-a-c-struct-initialized-to-0-by-default – Joe 2012-08-04 22:51:33
或只是'T x = {};' – Mehrdad 2012-08-04 22:51:46