|
发表于 2013-4-13 09:08:47
|
显示全部楼层
本帖最后由 遒羽 于 2013-4-13 11:58 编辑
int a[2][3]={{1,2,3},{4,5,6}};
调试取值a[2][3]即取该数组2行,3列的数值,这个数值在数组初始化之外,所以编译器取到的值是内存里的一个随机的数据,这个随机的数值在不同时间取的值不一样。
请记住数组数值,行列都是从0开始的,{1,2,3}在数组第0行,其中1在第0列,要读取这个值就要输入a[0][0],如果你想读取6这个值,就要输入a[1][2],而不是a[2][3]我们再来调试所有的value看看:
所有超出数组初始化范围的值都会被随机得到一个数值。
注意下:
我们观察到
a[0][3]==a[1][0],a[0][4]==a[1][1],a[0][5]=a[1][2],还有其他随即的数值也有相等,这是怎么一回事??
我们重新看下初始化的数组,逻辑排列是这样的:
1,2,3
4,5,6
但是它的实际物理内存排列是这样的:
内存地址 value
0x0000 1
0x0004 2
0x0008 3
0x000c 4
0x000f 5
0x0014 6
这样一来就明白了,原来a[0][3]和a[1][0]是共用一个地址的,即它们对应的 值是一样的。
|
|