c语言二维数组行列指针转换问题,图中画的句子真是理解不了,从行转换成列我懂,从列转换成行就不懂了,就是划线句子
我想问为什么指向列的指针加上&后就指向行了,上面你解释的我都明白
本回答被网友采纳a[0]+1=&a[0][1],
&a[0]+1=a+1=&a[1]
追问第二个等式是为什么
追答因为&a[0]指向的是第0行,那么&a[1]指向的就是第一行
追问为什么&a[0]是指向第零行的,这就是我最不明白的地方
追答可以将a[0]看成是第0行的数组名,因此a[0]指向第0行的首元素,而a+0指向第0行,*a就指向0行的首元素,于是有a[0]=*a,同时加一个&符号,就有&a[0]=a,因为a指向第0行,于是有&a[0]指向第0行
追问那 为什么&*a=a呢,这里不懂
麻烦大神解释一下
追答汗,如果a是一个地址,则*a就是a存放的值,而&*a又是这个值的地址,所以&和*是可以抵消的,类似正负号可以抵消一样
追问可是二维数组中不是不能这样想吗,毕竟a中并没有存放任何东西
我先采纳了,毕竟大神回答了这么多,希望能给我讲明白
追答反正你只要知道*和&是可以抵消就行了
本回答被提问者采纳