最佳答案
例如,如果 somestruct
有三个整数成员,我一直认为在 C (或 C + +)函数中这样做是可以的:
somestruct s = {123,};
第一个成员将被初始化为123,最后两个成员将被初始化为0。我经常对自动数组做同样的事情,编写 int arr[100] = {0,};
以便数组中的所有整数都初始化为零。
最近我在 GNU C 参考手册上读到:
如果不初始化结构变量,则效果取决于 是否具有静态存储(请参阅存储类说明符)或 如果是,则使用0和 指针成员初始化为 NULL; 否则,指针成员的 结构的成员是不确定的。
谁能告诉我 C 和 C + + 标准对于部分自动结构和自动数组初始化说了些什么?我在 Visual Studio 中完成上面的代码没有问题,但是我想兼容 gcc/g + + ,也许还要兼容其他编译器。谢谢