首页 百科知识 指向指针的指针

指向指针的指针

时间:2022-10-16 百科知识 版权反馈
【摘要】:如果一个指针变量指向另一个指针,这种指向指针的指针通常称为指针型指针。图5.6.1说明了一般指针变量和指针型指针变量所采用的单重间接访问和多重间接访问方式的区别。多重间接访问方式根据需要还可以进一步延伸,产生多级指针,但多重的间接访问操作会给计算带来困难,且容易产生混淆而导致错误,所以一般很少使用二级以上的指针。将q指针的地址赋予p指针。

5.6 指向指针的指针

如果一个指针变量指向另一个指针,这种指向指针的指针通常称为指针型指针。对指针型的指针,第一个指针的值是第二个指针的地址,第二个指针的值是目标变量的地址。

直接指向目标变量的指针称为单重指针,对目标变量的访问称为单重间接访问;而指向指针的指针,又称为二重指针或二级指针。对指针型指针的目标变量的访问是采用多重间接访问方式实现的。图5.6.1说明了一般指针变量和指针型指针变量所采用的单重间接访问和多重间接访问方式的区别。

img358

图5.6.1 单重间接访问与多重间接访问

多重间接访问方式根据需要还可以进一步延伸,产生多级指针,但多重的间接访问操作会给计算带来困难,且容易产生混淆而导致错误,所以一般很少使用二级以上的指针。

指针型指针的定义应在变量名前加上两个*指针说明符,例如:

  int number,*one_point,**two_point;

其中,two_point是指向指针的指针变量。

为了访问由指针型指针所指向的目标变量的内容,同样需要两次取内容的操作,例如:

  number=**two_point;

即将指针型指针point的目标变量的内容(整型数)赋予整型变量number。

例5-18 指针型指针的概念。

参考程序为

img359

输出结果:

  10

程序中定义了整型指针q及指向整型数据的指针型指针p,并将变量x的地址赋予q指针。将q指针的地址赋予p指针。通过多重间接访问输出目标变量**p,即变量x的值。

在定义指针型指针的同时,也可对其初始化,例如:

  int a[4]={1,2,3,4};

  int *pa[ ]={&a[0],&a[1],&a[2],&a[3]};

  int **pp=pa;

在定义指针型指针pp的同时,将整型的指针型数组pa的首地址赋予pp,即使指针pp指向指针型数组pa,而指针型数组pa的指针元素pa[0]~pa[3]又分别指向整型数组a的元素a[0]~a[3],如图5.6.2所示。

img360

图5.6.2 指向指针数组的指针

例5-19 用指针型指针输出数组元素。

参考程序为

img361

程序的运行结果:

  1 3 5 7 9

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈