我将一个二维数组声明为row和col,我将值保留为空,但是当我检查每个数组位置的值时,某些索引包含一些奇怪的数字。
答案 0 :(得分:6)
你正在看未经消毒的记忆。它可以有任何价值。你永远不应该相信你没有初始化的变量的值。
答案 1 :(得分:1)
未初始化值的访问是未定义的行为。您可以通过将数组初始化为零开始来简单地解决您的问题,例如
int seatNo[5][5] = ;
现在,对seatNo
的任何元素的任何后续访问都将成功,因为每个元素都已初始化为零。作为一项规则,特别是在你学习C的时候,如果你只是简单地初始化你的所有变量,你就会挽救自己的悲伤。
(您还需要至少打开警告,例如-Wall -Wextra
,这样当变量未初始化时,编译器会发出警告)
#include <stdio.h>
int main (void) {
int seatNo[5][5] = ;
for (int i = 0; i < 5; i++)
for (int j = 0; j < 5; j++)
printf (" seatNo[%d][%d] = %d\n", i, j, seatNo[i][j]);
return 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>