《指针数组教学教学课件.pptx》由会员分享,可在线阅读,更多相关《指针数组教学教学课件.pptx(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、CONTENTS 目 录提出问题 引入新课自主学习 明确考点案例分析 交流提升仿真演练 体验探索提出问题 引入新课PART 01回顾: 1、数组指针的定义、赋值与引用? 2、数组指针有什么要点?3、数组指针与数组之间有什么关联? 思考:在C语言中,使用数组使编写的程序简洁、明了,但对于一些数据长度不一致的数据,我们如何定义数组呢?提出问题 引入新课自主学习 明确考点PART 02一个数组,如果它的元素都是指针型,则称为指针数组。即数组的元素都是指针变量。一维指针数组的定义形式为:类型名 *数组名数据长度;例如: int *p4;由于 比*的优先级高,因此p先与结合,形成p4形式,这显然是数组形
2、式,它有四个元素,其元素的类型是整型指针。考点一:指针数组的定义说明:在书写时,要注意int (*p)4和int *p4的区别。原理:区分两者的优先级别区分两者的优先级别(1)用指针数组元素分别指向二维数组的每一行,通过指针数组元素控制对二维数组每一行元素的操作。结指针元素赋值的格式是:下标 = 行下标;考点二:指针数组的赋值与使用【例1】通过指针数组对二维数组的元素进行输出操作#includemain() int a33=1,2,3,4,5,6,7,8,9,*pa3; int *p=a0;/*定义指针指向每行元素的值*/ int i; for(i=0;i=2;i+) pai=ai;/指针数组
3、元素分别指向每一行 for(i=0;i3;i+) printf(%d,%d,%dn,ai2-i,*ai,*(*(a+i)+i); for(i=0;i3;i+) printf(%d,%d,%dn,*pai,pi,*(p+i);说明:pa是一个指针数组,三个元素分别指三个元素分别指向二维数组向二维数组a a的各行的首地址的各行的首地址。然后用循环语句输出指定的数组元素。其中*ai表示i行0列元素值;*(*(a+i)+i)表示i行i列的元素值;*pai表示i行0列元素值;由于p与a0相同,故pi表示0行i列的值;*(p+i)表示0行i列的值。(2)用于对多个字符串的处理,让每个数组元素指向一个字符串
4、常量,或指向存放字符串的字符数组,每个指针数组元素就可以代表一个字符串进行整串的操作。对指针数组元素赋值的格式是:考点二:指针数组的赋值与使用 = ;考点二:指针数组的赋值与使用 【例2】有若干个字符串,输出其中最长的字符串。 #include main()char *p=teacher,book,pascal,hello, and,computer design; char *q; int i; q=p0; for(i=1;istrlen(q) q=pi; printf(%sn,q); 运行结果为:computer design 说明:程序中用指针变量q记录最长字符串的地址。考点二:指针数组
5、的赋值与使用 【例3】有若干长度不等的字符串,请按字母顺序输出(由小到大)。 #include main() char *p=teacher,book,pascal,hello,and,me; int n=6,i,j,k; char *temp; for(i=0;in-1;i+) k=i; for(j=i+1;j0)k=j;if(k!=j) temp=pk;pk=pi;pi=temp; for(i=0;in;i+)printf(%sn,pi);案例分析 交流提升PART 03【例1】若有语句:char *line5;,以下叙述中正确的是( )A)定义line是一个数组,每个数组元素是一个基类型
6、为char的指针变量B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组C)定义line是一个指针数组,语句中的*号称为间址运算符D)定义line是一个指向字符型函数的指针【例2】有以下程序运行后的输出结果是( ) main() char ch34= ”123”,”456”,”78”,*p3;int i; for(i=0;i3;i+) pi=chi; for(i=0;i=0;i-,i-) printf(%c, *pi); printf( n );【例4】有以下程序运行后的输出结果是( )#include main( ) int a3=1,2,3,4,5,0,(*pa)3,i;
7、 pa=a; for(i=0;i3;i+) if(i2) pa1i=pa1i-1; else pa1i=1; printf(%dn ,a01+a11+a12);A)7 B) 6 C)8 D)无确定值仿真演练,体验探索PART 041、写出以下程序运行后的输出结果是( )main() char *s=“one”,”two”,”three”, *p; p=s1; printf(“%c,%sn”, *(p+1), s0); A) n,two B)t,one C)w,one D)o,two2、读程序写结果main() int a34=1,2,3,4,3,4,5,6,5,6,7,8; int i; int (*p)4=a,*q=a0; for(i=0;i3;i+) if(i=0) (*p)i+i/2=*q+1; else p+,+q; for(i=0;i3;i+) printf(%d,aii); printf(%d,%dn,*(int *)p),*q);3、分析下列程序的运行结果是( )main() char ch25=6937,8254,*p2;int i,j,s=0;for(i=0;i2;i+) pi=chi;for(i=0;i0;j+=2)s=10*s+pij-0;printf(%dn,s);
限制150内