#include <stdio.h>
main ()
{int i;
int a[3][3]={3,6,9,12,15,18,21,24,27};
for(i=0;i<3;i++)
printf("%2d", a[i][3-i]);
}
结果为12 18 24
为什么程序中没有a[0][3]会输出来12
首先,你要明白
二维数组的存储方式其实就是以一维
的方式存储的
编译器好像会把a[0][ⅰ]中的i按顺序输出,比如a[0][4就是15,a[0][5]就是18。
数组的内存是连续的,二维数组只是为了好理解才会定义解释成平面二维的,实际上在内存中就是一段连续的数据,int a[3][3] 和 int b[9] 的数据在内存中都是一样的存储方式。
a[0][3]=解引用(解引用(a+0)+3),因为数组存储空间是连续的,所以+3正好就跳到12了