c语言数组指针问题
<c语言程序设计教程>杨路明主编版。。里面说二维数组第i行第j列的元素可以表示为
*(&a[0][0]+n*i+j)。。。可是我不能理解。。希望大虾们解释一下。
&a[0][0]不是0行0列第一个元素的地址吗?为什么加上n*i和j就变成第i行第j列的元素了呢?
[解决办法]
第i行是不是有n个元素?
[解决办法]
“加上n*i和j” 的意思就是指针偏移n*i+j 个量。所以首地址加偏移量就得到第i行第j列的元素了。
[解决办法]
因为数组是连续存储的,不管有几行几列,都是第一行结尾挨着第二行。。。。等等
*(&a[0][0]+n*i+j)
先取出第一个元素的地址,也就是数组的首地址,找到对应的偏移 再取出值,就是你要找的元素了
[解决办法]
ls正解
[解决办法]
对 是这样 说的真清楚
[解决办法]
int a[0][0]
这里a等价于const int **
a[0][0]其实是**(int **)即int值
&a[0][0]其实是&(**(int **))即*(int**)即int*,是个数组指针。
楼主好好理解一下,绕来绕去的
[解决办法]