通过指针引用数组元素

以a[0][0]的地址为参考那一行。不知道那个列数是几额,是不是4呢,但是代进去又不对,不知道是不是理解错了??

确实是4,这个实际上算得是相对地址,列数*i+j算得是这个[i][j]元素是整个数组的第几个元素,然后再加上a[0][0]的初始地址,得到了一个相对地址

从这个角度上是正确的,但是由于int类型每个元素要占到2个或者4个字节(视具体机器和环境而定),所以得到的实际地址&[i][j]会和上面计算的有出入
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-01
[0]是首地址, &a[0][0]+3*1+2是首地址后面第五个元素,也就是a[1][2]

不能 p=a 这样赋值,p是int*[2]类型,a是int[2][3]类型 类型不同不能赋值

int a[2][3]是申请的一个连续地址,而*p[2]是一个指针数组,如果你能把每一行的首地址赋给这个指针数组的话,可以这么使用。但是如果只是给首地址赋值的话,此时这个指针数组的第二个元素,也就是第二行的首地址为一个随意地址,没有意义,不是连续的,所以不能实现*(p+3*1+2)来表示a[1][2]本回答被提问者采纳
第2个回答  2011-04-01
[0]是首地址, &a[0][0]+3*1+2是首地址后面第五个元素,也就是a[1][2]

不能 p=a 这样赋值,p是int*[2]类型,a是int[2][3]类型 类型不同不能赋值

int a[2][3]是申请的一个连续地址,而*p[2]是一个指针数组,如果你能把每一行的首地址赋给这个指针数组的话,可以这么使用。但是如果只是给首地址赋值的话,此时这个指针数组的第二个元素,也就是第二行的首地址为一个随意地址,没有意义,不是连续的,所以不能实现*(p+3*1+2)来表示a[1][2]
另外,虚机团上产品团购,超级便宜
第3个回答  2011-04-01
列数就是 4
比如 a[1][2] 就是 &a[0][0]+4*1+2=&a[0][0]+6 也就是后退6个位置。
因为这是一个int型的数组,每个占2个字节的空间。
&a[0][0]是 1 再加6个位置就是12个字节 1+12=13