
(中职)C语言程序设计案例教程 7.5指针数组ppt课件.pptx
18页单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,YCF,正版可修改,PPT,(中职)C语言程序设计案例教程 7.5指针数组ppt课件,指针数组,CONTENTS,目 录,提出问题 引入新课,自主学习 明确考点,案例分析 交流提升,仿真演练 体验探索,提出问题 引入新课,PART,01,回顾:1、数组指针的定义、赋值与引用?,2、数组指针有什么要点?,3、数组指针与数组之间有什么关联?,思考:在C语言中,使用数组使编写的程序简洁、明了,但对于一些数据长度不一致的数据,我们如何定义数组呢?,提出问题 引入新课,自主学习 明确考点,PART 02,一个数组,如果它的元素都是指针型,则称为指针数组即,数组的元素都是指针变量,一维指针数组的定义形式为:,类型名*数组名数据长度;,例如:int*p4;,由于 比*的优先级高,,因此p先与结合,形成p4形式,这显然是数组形式,它有四个元素,其元素的类型是整型指针考点一:指针数组的定义,说明:在书写时,要注意int(*p)4和int*p4的区别原理:,区分两者的优先级别,(1)用指针数组元素分别指向二维数组的每一行,通过指针数组元素控制对二维数组每一行元素的操作。
结指针元素赋值的格式是:,下标=行下标;,考点二:指针数组的赋值与使用,【例1】通过指针数组对二维数组的元素进行输出操作,#include,main(),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;,/,指针数组元素分别指向每一行,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的各行的首地址,然后用循环语句输出指定的数组元素其中*ai表示i行0列元素值;*(*(a+i)+i)表示i行i列的元素值;*pai表示i行0列元素值;,由于p与a0相同,故pi表示0行i列的值;*(p+i)表示0行i列的值2)用于对多个字符串的处理,,让每个数组元素指向一个字符串常量,,或指向存放字符串的字符数组,,每个指针数组元素就可以代表一个字符串进行整串的操作,对指针数组元素赋值的格式是:,考点二:指针数组的赋值与使用,=;,考点二:指针数组的赋值与使用,【例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记录最长字符串的地址考点二:指针数组的赋值与使用,【例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是一个数组,每个数组元素是一个基类型为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;,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 04,1、写出以下程序运行后的输出结果是(),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,two,2、读程序写结果,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);,指针数组,。
