c语言 程序设计 关于二维数组 初始化

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{ int i,j;
int a[][3]={1,2,3,4,5,6,7};
for(i=0;i<3;i++)
for(j=0;j<3;j++)
printf("%d\n",a[i][j]);

}
输出 123456700
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{ int i,j;
int a[][3]={1,2,3,4,5,6};
for(i=0;i<3;i++)
for(j=0;j<3;j++)
printf("%d\n",a[i][j]);

}
输出1 2 3 4 5 6 0 2 1245120
如果说因为 这个数组不是静态的?这样?
那么这个呢
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{ int i,j;
static int a[][3]={1,2,3,4,5,6,7};
for(i=0;i<3;i++)
for(j=0;j<3;j++)
printf("%d\n",a[i][j]);

}
输出1 2 3 4 5 6 0 4205760 1
怎么不是自动默认为 0 呢那些那么直接给出的
关于这样的二维数组定义 要注意些什么呢?
哪位能说说么?

大哥,你越界了!~
第一次
123456 后面那个 0 2 就是 传说中的j 和 i
第二次
123456 后面的0 就是传说中的j
这次i在数组所在虚拟内存的前面

注意,不要越界不要越界啊
修改的时候千万不要越界,万一不小心改了i 或者j 的值,你就哭吧!~

注意事项嘛。。就是不要越界,还有,能不用二维数组就别用二维数组!~
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-09-09
怎么不是自动默认为 0 呢那些那么直接给出的

不是初始化时就赋值的内存,什么值都有可能

使用变量前要定义和初始化,老生长谈,那样才能一切在掌握中,不会出现奇怪的数值。
第2个回答  2010-09-09
数组定义后是不会默认为0的。系统会给一个随机数。
至于二维数组定义要注意什么,我也不知道。我自己也很少赋初始值。注意不要越界就行了。
相似回答