指向指针的指针,顾名思义,就是定义一个指针变量,它的值是一个地址,指向的是另一个指针变量的地址。
要理解这个内容,首先需要掌握指针数组的概念。int *pt[4]就是一个指针数组,因为[]的优先级比*高,所以,pt是个数组,其数组元素的值是指向int型变量指针的地址,如:
int a[4]={1,2,3,4}
int *pt[4]={&a[0],&a[1],&a[2],&a[3]}
printf("%d",pt[0]) &a[0],即a[0]的地址
printf("%d",*pt[0]) a[0]的值:1
这时,如果希望获取&pt[0]的地址,可以再次定义一个指针**p,可以看作是
*(*p),一个指针变量,所指向的是另外一个指针变量,所以,p的值可这样得到:p=&pt[0]
此时,要从p得到a[0]的值1,便可以通过指针的二次指向获得
*p:一次间接获取-->pt[0]的值,是个地址,&a[0]
把(*p)看作是一个地址,注意不要搞混
*(*p):从这个地址中再次间接指向,取得a[0]的值:1
int a[4]={1,2,3,4}
int *pt[4]={&a[0],&a[1],&a[2],&a[3]}
int **p;
p=&pt[0];
printf("%d",p) 得到指针数组元素 pt[0]的地址 &pt[0]
printf("%d",*p) 得到a[0]的地址,&a[0]
printf("%d",**p) 得到a[0]的值:1
文章评论(0条评论)
登录后参与讨论