2

这可能看起来很简单,但是当我四处搜索时似乎找不到它。

我只是想知道这两种初始化方式和数组是否相同,或者是否有首选方式?ANSI C 标准对此有何评论?

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

和...

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

4 回答 4

7

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

int [] = {1, 2, 3};绝对是语法错误。

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

于 2013-04-26T18:01:30.003 回答
5

第一个有效,但第二个将给出语法错误。另外,如果您使用某物。像这样:

int a[5]={1};

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

于 2013-04-26T18:04:43.673 回答
1

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

int a[CONST_SIZE] = {1,2,3};
int a[] = {1, 2, 3};
于 2013-04-26T18:11:39.977 回答
1

我觉得你第二个做错了!但如果第二个是:

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

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

于 2013-04-26T18:12:25.660 回答