七、多级指针
1、二级指针
二级指针变量的定义形式为:类型 **指针变量名;
普通变量、一级指针变量、二级指针变量也可以在一道定义。例如: int **q,*p,x;
指向指针的指针
用于存放某个指针变量地址的指针变量被称为指向指针的指针,其定义形式如下:
类型名 **变量名;
int a, *p1, **p2 ;
a=10;
p1=&a;
p2=&p1;
printf("%d,%d,%d",a,*p1,**p2);
注意!!!:
1.一级指针变量只能取得普通变量的地址,二级指针变量只能取得一级指针变量的地址,当然都不能用整数给它们赋值。
2. printf(“x=%d”,**q);就相当于语句: printf(“x=%d”,x);
3. 可理解为**q==*(*q)==*p==x。
4. 综上所述,引用普通变量 x 共有三种方法:
x /* 直接引用 */
*p /* 间接引用 */
**q /* 间接引用 */
当然,后两种方法的前提是:指针变量都取得了相应的地址值。
2、多级指针的概念 可以加下群466572167(群内有各种项目学习资料)
按照上述二级指针的思路,显然可以推广到三级指针、四级指针……。使用多级指针变量的要点是:
①多级指针变量均用基类型定义,定义几级指针变量要将变量名前放几个“*”号;
②各指针变量均应取得低一级指针变量的地址后才能引用;
③引用几级指针变量访问最终的普通变量时,变量名前需用几个指向运算符*号。
例:
运行下面的程序
/* EX7-3.C */
main()
{
int *p1,**p2,***p3,****p4,x=10;
p1=&x; p2=&p1; p3=&p2; p4=&p3;
printf("x=%d",****p4);
}
程序运行的结果如图所示: