看到看到很多人不明白指向指针的指针,所以发贴解释一下,学会的回帖,发分!
结合看到的二维数组的一个提问来讲吧!
int array[3][4];
int (*p)[4];
p=&array[0];
先了解下array,array[0],array[0][0]。
array[0]是什么呢?它就是一个数组,它有4个元素,也就是二维数组的第一行!严重强调,这是个数组!
array[0][0]当然是表示二维数组的第一个元素了!这个大家应该没有问题!
array呢?它是一个什么类型呢?他指向一个数组,这是肯定的,对,这个数组有4个元素!也就是说array这个指针变量的值是一个指针,它指向的是一个数组的首地址!也就是说上面的p=&array[0];就很好理解了!为什么不是p=array[0]就很好理解了,因为*p=array[0]!这句也可以换成p=array;效果是一样的!
再看看下面的一系列例子就更清晰了:
array+1指向第二行。
*(array+1)又是什么呢?和array[1]是一样的!
*(array+1)+1又是什么呢?你如果知道它也是一个地址,你就已经懂了!
找到一个讲解错误,给10分!