C数组初始化,都可以接受吗?

时间:2013-04-26 17:59:34

标签: c arrays

这可能看起来很简单,但我在搜索时似乎无法找到它。

我只是想知道这两种初始化方法和数组是否相同,还是有一种首选的方法呢? ANSI C标准对此有何看法?

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

和...

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

4 个答案:

答案 0 :(得分:7)

int a[3] = {1, 2, 3};是O.K。

但是int [] = {1, 2, 3};肯定是语法错误。

但如果您的问题与int a[] = {1, 2, 3};有关,那么这是一个有效的陈述。

答案 1 :(得分:5)

第一个可以工作,但第二个会产生语法错误。如果你使用......像这样:

int a[5]={1};

其他4个整数将初始化为0。

答案 2 :(得分:1)

当您希望在阵列中有更多空间并且只想在声明中设置其中一些时,通常会使用添加数组的大小。在其他情况下,我个人更喜欢第二种表示法,因为它可以防止由于大小较小而占用更多大小或编译错误,这只是因为你的数组大小错误。 如果你有一个大小的const值,并且你使用它几次,那么第一个符号将更可靠。 所以你的答案取决于你的计划。

int a[CONST_SIZE] = {1,2,3};
int a[] = {1, 2, 3};

答案 3 :(得分:1)

我认为你第二个做错了!但如果第二个是:

int b[] = {1, 2, 3};

两条线的结果完全相同。
两个数组的数组大小为3 * sizeof(int) 这是您决定使用哪条线。第一行的优点是,您可以轻松地查看数组大小而无需计算括号中的元素,但它在源代码文件中使用了1个字节; - )