为什么我们需要在c中同时初始化或声明两个维度​​而不是一个接一个地

时间:2014-11-16 06:07:49

标签: c

int a[3][3] = { {1, 2, 3} , {4, 5, 6} , {7, 8, 9} };

正在工作

int a[3][3] ;
a[3][3] = { {1, 2, 3} , {4, 5, 6} , {7, 8, 9} 

不工作。它在我的gcc编译器中显示和错误

1 个答案:

答案 0 :(得分:3)

第一行代码是声明数组并定义整个内容。你在这里说的是"用这些内容创建一个3x3的整数数组。"

当你写:

int a[3][3];

你说的是,"创建一个3x3的整数数组。"您没有指定内容。

你的第二个例子有两个问题。

首先,数组是从0开始的,因此a[3][3]不存在。有效索引为0,1和2.

更重要的是,当您解决a[x][y]时,您正在寻找该特定单元格。换句话说,"为数组中的单元格[2] [2]赋值。"

所以a[2][2] = 42;有效。但是您无法将数组分配给a[2][2],因为它只包含一个整数。