作为结构初始化器,{}和{0}之间有什么区别?

时间:2013-12-10 16:14:06

标签: c struct initialization

这有什么区别:

struct something s = {};

这个?

struct something s = {0};

据我所知,两者都将每个成员初始化为零。

1 个答案:

答案 0 :(得分:8)

struct something s = {};无效C (除非他们在C11中添加了它),但它是有效的C ++。 GCC似乎允许它在C程序中作为扩展(虽然我没有在http://gcc.gnu.org/onlinedocs/gcc/C-Extensions.html的文档中提到它,但我可能只是错过了它。)

在C ++中,它将导致'value-initialization',这基本上意味着为每个成员调用默认构造函数(非类成员的零初始化)。