使用{}进行数组初始化的未指定维度

时间:2012-01-07 10:46:03

标签: c arrays initialization

我想知道是否:

int a[] = {1, 2};

分配sizeof(int)*括号内的常量数

int a[5] = {1, 2};

将常量分配给0到1的数组字段,然后填充0

int a[5] = {};

填写0

当我这样做时会发生什么:

int a[] = {};

感谢。

1 个答案:

答案 0 :(得分:6)

int a[5] = {};

 int a[] = {};

不是有效的C定义。

在GNU C(带扩展名为gcc的C语言)中,您可以使用空{},它与{0}一样。

请注意int []是不完整的类型。当使用显式初始化器初始化不完整类型的数组时,类型已完成,并且数组的元素数是括号括起初始化列表中的元素数。

所以int a[] = {0};在C中定义了一个1元素的数组,在GNU C int a[] = {};中也是如此。

相关问题