文档详情

《C语言程序设计》课件——42指针在二维数组中的应用举例.ppt

发布:2025-03-26约3.1千字共5页下载文档
文本预览下载声明

指针在二维数组中的应用举例9.6指针在二维数组中的应用举例

【例9.6】利用指针变量完成数组元素的输出。

main()

{inta[3][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},*p;

for(p=a[0];pa[0]+15;p++)

printf(“%d”,*p);

printf(“\n”);

}

运行结果是:

123456789101112131415程序中定义行指针变量的形式为:int(*p)[5]【例9.7】利用指向一维数组的行指针变量输出数组元素的值。

main()

{inta[3][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

inti,j,(*p)[5];

p=a;

for(i=0;i3;i++)

for(j=0;j5;j++)printf(%d,*(*(p+i)+j));

printf(\n);

}

运行情况如下:

123456789101112131415行指针变量的形式为:int(*p)[5]行指针变量的形式为:int(*p)[5]行指针变量的形式为:int(*p)[5]行指针变量的形式为:int(*p)[5]行指针变量的形式为:int(*p)[5]程序中定义行指针变量的形式为:int(*p)[5]程序中定义行指针变量的形式为:int(*p)[5]程序中定义行指针变量的形式为:int(*p)[5]程序中定义行指针变量的形式为:int(*p)[5]程序中定义行指针变量的形式为:int(*p)[5]程序中定义行指针变量的形式为:

int(*p)[5]

【例9.8】数组行地址和列地址的输出。

main()

{shorta[3][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

printf(1:%ld,%ld,%ld\n,a,a+1,a+2);

printf(2:%ld,%ld,%ld,%ld\n,*a,*a+1,*a+2,*a+3);

printf(3:%ld,%ld,%ld,%ld\n,*(a+1),*(a+1)+1,*(a+1)+2,*(a+1)+3);

printf(4:%ld,%ld,%ld,%ld\n,*(a+2),*(a+2)+1,*(a+2)+2,*(a+2)+3);

printf(5:%ld,%ld,%ld\n,a[0],a[1],a[2]);

printf(6:%ld,%ld,%ld,%ld\n,a[0][0],a[0][1],a[0][2],a[0][3]);

printf(7:%ld,%ld,%ld,%ld\n,a[0],a[0]+1,a[0]+2,a[0]+3);

printf(8:%ld,%ld,%ld,\n,*a,*(a+1),*(a+2));

printf(9:%d,%d,%d,\n,*(a[1]+2),*(*(a+1)+2),a[1][2]);

}

运行结果如下:

1:404,414,424 (第1,2,3行的行地址)

2:404,406,408,410 (第0行4个元素的地址)

3:414,416,418,420 (第1行4个元素的地址)

4:424,426,428,430 (第2行4个元素的地址)

5:404,414,424 (第0,1,2行的行地址)

6:404,406,408,410 (第0行4个元素的地址)

7:404,406,408,410 (第0行4个元素的地址)

8:404,414,424(第0,1,2行中第0列元素地址,即a[0],a[1],a[2])

9:8,8,8 (第1行第2列元素的值)程序中定义行指针变量的形式为:int(*p)[5]程序中定义行指针变量的形式为:int(*p)[5](1)开始把列地址a[0]赋给p。p是指向整型数据的指针变量,p+1是使p的地址值增加两个字节,使p移动到下一个元素处。因此循环15次后,输出全部元素的值。

(2)如果将p=a[0]改写成p=a,程序就可能出错。因为尽管a[0]和a的值是相同的,但属性不同,a指向行,a[0]指向列,二者指向的对象不同。由于p是指向整型数据的指针变量,所以它只能接受a[0],而不能接受a。但写成下面的形式是允许的:

p=*a;

p=*(a+0);

p=a[0][0];

(3)如果一定想将a赋给p,必须先进行强制类型转换

显示全部
相似文档