我尝试打印二维数组,但输出包含随机整数。我不确定是什么原因导致这个问题,因为我是 C 新手,怀疑它与内存管理有关。
#include <stdio.h>
int main(){
int map[10][10];
for(int i = 0; i < 10; i++){
for(int j = 0; j < 10; j++){
printf("%d ",map[i][j]);
}
printf("\n");
}
return 0;
}
我希望这段代码输出一个 0 的 10x10 矩阵,但我得到的是 0 和随机整数的混合。我不确定是什么原因造成的,我怀疑该程序是在其专用内存之外运行的,但我是 C 新手,不明白为什么会这样做。
示例输出:
0 0 0 0 0 0 0 0 8388608 0
-1819386832 32765 -1819386840 32765 592768165 32694 786432 0 2048 0
0 0 32768 0 786432 0 8192 0 1048576 0
32768 0 2 0 14 -2147483648 0 0 0 0
0 0 0 0 0 0 0 0 0 0
6 142 12 8 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
592799968 32694 13 0 1 0 1 0 1 0
1417023552 21882 592791612 32694 2032 0 -1819385479 32765 -1818730496 32765
16777216 257 2 0 -1075053569 0 -1819385463 32765 100 0
您的数组未初始化。您正在打印该内存中的任何随机值,解释为
int
值。现在,您可能会偶然在程序运行时得到全零,但这不能指望。
如果你想确保它被归零,要么显式地初始化它,将其设为
static
,要么将其设为全局变量(但如果可以避免的话,不要使用全局变量)。在后两种情况下,它将被初始化为零,而无需显式编写初始化。