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

时间:2016-09-04 04:38:08

标签: c arrays

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

the picture attached below is the example

2 个答案:

答案 0 :(得分:6)

你正在看未经消毒的记忆。它可以有任何价值。你永远不应该相信你没有初始化的变量的值。

答案 1 :(得分:1)

未初始化值的访问是未定义的行为。您可以通过将数组初始化为零开始来简单地解决您的问题,例如

int seatNo[5][5] = Normal;

现在,对seatNo的任何元素的任何后续访问都将成功,因为每个元素都已初始化为零。作为一项规则,特别是在你学习C的时候,如果你只是简单地初始化你的所有变量,你就会挽救自己的悲伤。

(您还需要至少打开警告,例如-Wall -Wextra,这样当变量未初始化时,编译器会发出警告)

#include <stdio.h>

int main (void) {

    int seatNo[5][5] = Phone View;

    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>