首页 理论教育 C语言程序设计:应用指向二维数组元素指针

C语言程序设计:应用指向二维数组元素指针

时间:2023-10-29 理论教育 版权反馈
【摘要】:利用指针输出二维数组中的所有元素。语句p=*a等价于p=a[0],即p代表二维数组第一个元素a[0][0]的地址。根据p的定义知,指针p的加减运算单位正好是二维数组中的一个元素的长度,因此语句p++可使得p依次指向二维数组中的每一个元素,*p则对应该元素的值。第8~13行通过双层循环,使得指针变量p不断地指向二维数组a的下一个元素,从而遍历出二维数组a的所有元素。

C语言程序设计:应用指向二维数组元素指针

【例7.14】利用指针输出二维数组中的所有元素。

程序内容如下:

1 #include<stdio.h>

2 void main()

3 {

4  int a[3][4]={{11,21,33,42},{15,22,32,13},{41,32,24,16}};

5  int*p;

6  for(p=*a;p<*a+3*4;p++)

7   printf("%d",*p);

8 }

程序结果如图7.18所示:

图7.18 例7.14程序结果图

【例题中关键问题说明】

(1)本程序中,数组元素a[3][4]被看作由3个一维数组组成,其中a[0]、a[1]和a[2]分别代表3个一维数组的地址。因此,定义指针变量指向a[3][4]数组的首地址时需注意,应使用语句p=*a,而不能使用p=a。因为,根据指针的 定 类义 型“。i n如t*果p使;用”,语该句定义p=表a示,则p*为p指 =针a[,0p]指,a向[0的]是数一据个类地型址为而i n不t是型一,即个*整p数为类整型数,这将导致p指向类型不匹配的错误

(2)语句p=*a等价于p=a[0],即p代表二维数组第一个元素a[0][0]的地址。根据p的定义知,指针p的加减运算单位正好是二维数组中的一个元素的长度,因此语句p++可使得p依次指向二维数组中的每一个元素,*p则对应该元素的值。

【例7.15】用行指针输出二维数组的值。

程序内容如下:

1 #include<stdio.h>

2 int main()

3 {(www.xing528.com)

4  int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};

5  int(*p)[4];

6  int i,j;

7  p=a;

8  for(i=0;i<3;i++)

9  {

10   for(j=0;j<4;j++)

11    printf("%2d",*(*(p+i)+j));

12   printf("\n");

13  }

14  return 0;

15 }

程序结果如图7.19所示:

图7.19 例7.15程序结果图

【例题中关键问题说明】

(1)第7行使指针变量p指向二维数组a的首地址。

(2)第8~13行通过双层循环,使得指针变量p不断地指向二维数组a的下一个元素,从而遍历出二维数组a的所有元素。

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

我要反馈