二维数组比较抽象,比较难理解,他的原理是则呢么样的呢与一维数组之间有什么联系呢?
定义一个二维数组
a[3][3]={
{1,2,3},
{4,5,6},
{7,8,9}.
}
我对于二维数组的理解就是
一个一维数组a[3]保存了3个地址,这三个地址分别是这二维数组的三行的首地址这样*(*(p+1)+1)与p[1][1]相同也就说的通了(p指针指向数组a)
●════════════════════════════════════════════════════●
最近几天我有思考了一下,感觉上面说的有点不妥
int a[8][8];
把a[8]看成一个一维指针数组不合适
因为 &a[0]==&a[0][0]
如果a[0]具有单独内存空间的话 &a[0]应该是!=&a[0][0]的
所以 应该说a[0]代表 a[0][0]的地址 而不是a[0]存储了 a[0][0]的地址 也就是编译器看到a[0]后将之替代为&a[0][0] 而不是将&a[0][0]存入某一块内存中, 也也就是 a[8][8]在内存中 只占了64*sizeof(int)个字节 不再多占用其他内存