理论教育 C语言程序设计:多级指针的定义及应用

C语言程序设计:多级指针的定义及应用

时间:2023-11-21 理论教育 版权反馈
【摘要】:前面学习的指针变量,其中主要存放的是目标变量的地址,这类指针称为一级指针。下面以二级指针为例介绍其定义及应用。 *的个数表示指针的级数,**表示后面的变量是二级指针变量。图9-9二级指针应用结果说明:对变量的值引用可以有以下3种方式。例如:int a=6;int ** p;p=&a; //非法使用例9.11 利用二级指针处理字符串。

C语言程序设计:多级指针的定义及应用

前面学习的指针变量,其中主要存放的是目标变量的地址,这类指针称为一级指针。如果指针变量中存放的不是变量的地址,而是存放一级指针变量的地址,则称这种指针为二级指针。依此类推,对于一个n(n>1)级指针变量其内容是存放一个n-1级指针变量的地址。下面以二级指针为例介绍其定义及应用。

二级指针变量定义的一般形式为:

说明:

(1)存储类型指二级指针变量本身的存储类型,可以省略。

(2)数据类型可以是任何类型,是指针变量所指向的最终目标变量的数据类型。(3) *的个数表示指针的级数,**表示后面的变量是二级指针变量。

例如:

int a=6;

int * p1 ;

int ** p2;

p1 =&a;

p2 = &p1;

**p2=10;

上面的程序段将变量a的值变为10,如图9-9所示。

图9-9 二级指针应用结果

说明:

对变量的值引用可以有以下3种方式。

方式一:直接引用,如a。

方式二:通过一级指针变量引用,如*p1。(www.daowen.com)

方式三:通过二级指针变量应用,如** p2 。

注意:二级指针变量不能用变量的地址直接对其赋值,只能用一级指针的地址赋值。例如:

int a=6;

int ** p;

p=&a; //非法使用

例9.11 利用二级指针处理字符串。

编写程序:

创建一个名为“eg9_11.c”的新文件,在编辑窗口中输入下面的程序代码。

运行结果:

程序说明:

程序中定义了1个二级指针pStr和1个字符串指针数组Array。在Array中每个元素分别指向4个字符串;其中最后一个是空串,作为判断指针数组中指针元素的结束标志。通过对二级指针变量赋值,二级指针pStr指向指针Array [0],即字符串“Beijing”的地址。第一个printf ()函数中,以%x输出的是pStr指向的指针地址。第二个printf()函数中,以%s输出的是pStr的内容(即Array[0])所指向的字符串(即“Beijing” )。通过循环,逐个输出字符串,直到空串循环结束。

注意:二级指针与指针数组的关系。例如:

int * p[5] , ** pt;

(1)指针数组名是二级指针常量。

(2)pt=p; pt+i就是p[i]的地址。

(3)系统为二级指针变量pt分配了1个存储单元,而为指针数组p分配了5个连续的存储单元,每个存储单元存放1个指向int型数据的指针。

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

我要反馈