此时输出为0的矩阵
int map[10][10];
int main()
{
int i, j;
for (i = 0; i < 10; i++) {
for (j = 0; j < 10; j++) {
printf("%d ", map[i][j]);
}
putchar('\n');
}
return 0;
}
此时输出为地址随机数
int main()
{
int map[10][10];
int i, j;
for (i = 0; i < 10; i++) {
for (j = 0; j < 10; j++) {
printf("%d ", map[i][j]);
}
putchar('\n');
}
return 0;
}
c语言的编译器就是这样规定的
全局变量,一般系统会初始化为0;
而函数内的局部变量,没有初始化这一过程.所以会得到随机值
局部变量改成 int map[10][10] = {0}; 就都初始化为0了
你题目的解答代码如下:
#include <stdio.h>
int main()
{
int map[10][10] = {0}; //加上 = {0}
int i, j;
for (i = 0; i < 10; i++) {
for (j = 0; j < 10; j++) {
printf("%d ", map[i][j]);
}
putchar('\n');
}
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
显然编译器对全局变量初始化为0,对局部变量不初始化
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!