打印二维数组输出地址

问题描述 投票:0回答:1

我尝试打印二维数组,但输出包含随机整数。我不确定是什么原因导致这个问题,因为我是 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 

c multidimensional-array printf
1个回答
0
投票

您的数组未初始化。您正在打印该内存中的任何随机值,解释为

int
值。现在,您可能会偶然在程序运行时得到全零,但这不能指望。

如果你想确保它被归零,要么显式地初始化它,将其设为

static
,要么将其设为全局变量(但如果可以避免的话,不要使用全局变量)。在后两种情况下,它将被初始化为零,而无需显式编写初始化。

© www.soinside.com 2019 - 2024. All rights reserved.