理论教育 C语言程序设计:行指针变量简介

C语言程序设计:行指针变量简介

时间:2023-11-02 理论教育 版权反馈
【摘要】:例如,在下面的代码中,p为指向含有4个元素的一维数组的行指针变量;a为3行4列的二维数组,即每行是含有4个元素的一维数组。可以通过行指针变量表示二维数组的首地址、行地址、元素地址、元素等。假设行指针变量p指向二维数组a的第i行,即p=a[i],则有以下几个事实。例8.11使用行指针变量输出二维数组中某一行的所有元素的值。

C语言程序设计:行指针变量简介

可以将二维数组的每行看成一个元素,从而将一个二维数组看成一个一维数组,这个特殊的一维数组的每个元素实际上是原来二维数组的一行,即二维数组的每一行是一个一维数组,这个一维数组的首地址就是二维数组的某一行的首地址。

为了存放“行地址”,引入行指针变量的概念,用行指针变量存放二维数组中某一行的首地址。

行指针变量的定义格式如下:

例如,定义行指针变量p:

在使用上面格式定义行指针变量时,格式“(*行指针变量名)”中的括号不能省略,否则成了指针数组(指针数组的内容在9.5节介绍)。

定义行指针变量“int(*p)[4];”之后,p就是指向一维数组的行指针变量,(*p)代表p所指向的一个一维数组(该数组含有4个元素)。

例如,在下面的代码中,p为指向含有4个元素的一维数组的行指针变量;a为3行4列的二维数组,即每行是含有4个元素的一维数组。

二维数组名是一个地址常量,语句“p=a;”的作用是将数组a的首地址赋给p,使行指针变量p指向该二维数组的首行(将每行看成为一个一维数组,二维数组的首行是数组名为a[0]的一维数组,p现在指向数组名为a[0]的一维数组)。

可以通过行指针变量表示二维数组的首地址、行地址、元素地址、元素等。假设行指针变量p指向二维数组a的第i行,即p=a[i](或p=a+i),则有以下几个事实。

(1)p:等价于a+i,指向第i行的首地址。

(2)p+1:等价于a+i+1,指向第i+1行的首地址。(www.daowen.com)

(3)p++:p向后移动一行,等价于a+i+1。

(4)*p:第i行的第0个元素的地址,等价于*(a+i)或a[i]。

(5)*p+j:第i行中的第j列元素的地址,等价于*(a+i)+j、a[i]+j、&a[i][j]。

(6)*(*p+j):第i行第j列元素的值,等价于*(*(a+i)+j)、*(a[i]+j)、a[i][j]。

例8.11 使用行指针变量输出二维数组中某一行的所有元素的值。

【分析】定义数组x和指针变量p后,使用“p=x;”让p指向数组的第一行,然后给定行数值row,通过循环变量n,输出该行的每个元素的值*(*(p+row)+n))。

程序代码如下:

程序运行结果:

若不使用行指针变量,输出某一行的所有元素值时,可以直接使用数组名x,将程序中的*(*(p+row)+n)改为*(*(x+row)+n),也可以输出第row行的所有数组元素值。

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

我要反馈