我想知道是否:
int a[] = {1, 2};
分配sizeof(int)*括号内的常量数
int a[5] = {1, 2};
将常量分配给0到1的数组字段,然后填充0
int a[5] = {};
填写0
当我这样做时会发生什么:
int a[] = {};
感谢。
答案 0 :(得分:6)
int a[5] = {};
和
int a[] = {};
不是有效的C定义。
在GNU C(带扩展名为gcc的C语言)中,您可以使用空{}
,它与{0}
一样。
请注意int []
是不完整的类型。当使用显式初始化器初始化不完整类型的数组时,类型已完成,并且数组的元素数是括号括起初始化列表中的元素数。
所以int a[] = {0};
在C中定义了一个1元素的数组,在GNU C int a[] = {};
中也是如此。