为什么数组自赋值(C程序)?

为什么数组自赋值(C程序)?,c,arrays,C,Arrays,我将二维数组声明为row和col,并将值留空,但当我检查每个数组位置的值时,一些索引包含一些奇怪的数字 您正在查看未初始化的内存。它可以拥有任何对它有价值的东西。永远不要信任尚未初始化的变量的值。访问未初始化的值是未定义的行为。您可以非常简单地解决问题,首先将数组初始化为全零,例如 int seatNo[5][5] = {{0}}; 现在,对seatNo的任何元素的任何后续访问都将成功,因为每个元素都已初始化为零。一般来说,尤其是在学习C语言时,如果您只需初始化所有变量,就可以省去自己的痛苦

我将二维数组声明为row和col,并将值留空,但当我检查每个数组位置的值时,一些索引包含一些奇怪的数字


您正在查看未初始化的内存。它可以拥有任何对它有价值的东西。永远不要信任尚未初始化的变量的值。

访问未初始化的值是未定义的行为。您可以非常简单地解决问题,首先将数组初始化为全零,例如

int seatNo[5][5] = {{0}};
现在,对
seatNo
的任何元素的任何后续访问都将成功,因为每个元素都已初始化为零。一般来说,尤其是在学习C语言时,如果您只需初始化所有变量,就可以省去自己的痛苦

(您还需要至少打开警告,例如
-Wall-Wextra
,以便编译器在变量可能未初始化时向您发出警告)

#包括
内部主(空){
int seatNo[5][5]={{0};
对于(int i=0;i<5;i++)
对于(int j=0;j<5;j++)
printf(“seatNo[%d][%d]=%d\n”,i,j,seatNo[i][j]);
返回0;
}
示例

$ ./bin/initarray
 seatNo[0][0] = 0
 seatNo[0][1] = 0
 seatNo[0][2] = 0
 seatNo[0][3] = 0
 seatNo[0][4] = 0
 seatNo[1][0] = 0
 seatNo[1][1] = 0
<snip>
$。/bin/initarray
seatNo[0][0]=0
seatNo[0][1]=0
seatNo[0][2]=0
seatNo[0][3]=0
seatNo[0][4]=0
seatNo[1][0]=0
seatNo[1][1]=0

为什么您的
if
else
主体相同?您熟悉“好像”规则吗?读取未初始化的变量是一种未定义的行为。代码的图像在这里是无用的。解释为什么不应将代码作为图像发布。它是编辑器中的文本,这使得在这里复制和粘贴比创建图像并上传要容易得多。
$ ./bin/initarray
 seatNo[0][0] = 0
 seatNo[0][1] = 0
 seatNo[0][2] = 0
 seatNo[0][3] = 0
 seatNo[0][4] = 0
 seatNo[1][0] = 0
 seatNo[1][1] = 0
<snip>