首页 理论教育C语言程序设计基础:多级指针的定义和引用

C语言程序设计基础:多级指针的定义和引用

【摘要】:一般来说,对于一个n(n>1)级指针变量其内容是存放一个n-1级指针变量的地址。虽然y和z都是指针变量,但它们指向的变量是不同的,显然不能用同一层次的指针变量来表示。图8.5多级指针在存储系统中的关系在C语言中,用指针变量的级别来区分不同层次的指针变量。指向普通变量的称为一级指针变量,指向一级指针变量的称为二级指针变量,以此类推。而且,只要数据类型相同,任意级别的指针变量可以与普通变量、数组等一起定义。

一般来说,对于一个n(n>1)级指针变量其内容是存放一个n-1级指针变量的地址。如图8.5所示,普通变量x的值为100,其占用空间的首地址为10000。当指针变量y指向x时,其值就是10000。同样,指针变量y占用空间的首地址为10300,当指针变量z指向y时,其值就是10300。虽然y和z都是指针变量,但它们指向的变量是不同的,显然不能用同一层次的指针变量来表示。

图8.5 多级指针在存储系统中的关系

在C语言中,用指针变量的级别来区分不同层次的指针变量。指向普通变量的称为一级指针变量,指向一级指针变量的称为二级指针变量,以此类推。常用的二级和三级指针变量定义形式如下:

[存储类别符]数据类型符**指针变量名;

[存储类别符]数据类型符***指针变量名;

更多级的指针变量的定义形式按照上述形式类推,只需指针变量名的前面增加更多的星号即可。而且,只要数据类型相同,任意级别的指针变量可以与普通变量、数组等一起定义。

对于指针变量而言,其拥有的值(内容)是另外一个同类型数据对象在存储系统中的起始地址,称为指针变量指向这个数据对象,下面代码段描述了普通变量x,一级指针变量y,二级指针变量z之间的关系:

int x=100,*y,**z; //定义普通变量x、一级指针变量y和二级指针变量z

y=&x;//一级指针变量y指向整型变量x(www.chuimin.cn)

z=&y;//二级指针变量z指向一级指针变量y

对于指针变量施加指针运算(*)则表示指针变量所指向的数据对象,可以得到下面的等价关系:

*y等价于x

*z等价于y

**z等价于*y(同时等价于x)

【例8.9】 多级指针变量的引用示例。