C语言程序设计第指针程序设计.pptx

上传人:莉*** 文档编号:87183020 上传时间:2023-04-16 格式:PPTX 页数:48 大小:304.62KB
返回 下载 相关 举报
C语言程序设计第指针程序设计.pptx_第1页
第1页 / 共48页
C语言程序设计第指针程序设计.pptx_第2页
第2页 / 共48页
点击查看更多>>
资源描述

《C语言程序设计第指针程序设计.pptx》由会员分享,可在线阅读,更多相关《C语言程序设计第指针程序设计.pptx(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、7.1 指针概述u指针与指针变量u变量的直接访问和间接访问第1页/共48页7.1 指针概述 指针与指针指针与指针变量变量某个某个变量所占用的内存空间的开始地址称为该变量的地址,变量所占用的内存空间的开始地址称为该变量的地址,C C语言将这一地语言将这一地址称为指针,存储这一地址的变量称为指针变量。址称为指针,存储这一地址的变量称为指针变量。通过指针变量可以实现对其他变量的访问。通过指针变量可以实现对其他变量的访问。指针变量可以指向任何一种数据类型,如可以指向基本类型的变量,指针变量可以指向任何一种数据类型,如可以指向基本类型的变量,也可以指向数组等。也可以指向数组等。第2页/共48页7.1 指

2、针概述 变量直接访问变量直接访问是指通过变量名直接使用变量数据。是指通过变量名直接使用变量数据。例如:例如:int a=10,b=20,c;int a=10,b=20,c;c=a+b;c=a+b;printf(%dn,c);printf(%dn,c);变量间接访问变量间接访问是指通过指针变量去访问其他变量数据。是指通过指针变量去访问其他变量数据。第3页/共48页7.2 指针变量的定义和使用u7.2.1 指针变量程序示例 u7.2.2 定义指针变量u7.2.3 使用指针变量 第4页/共48页7.2.1 指针变量程序示例例例7-17-1 使用指针变量输出数据程序。#includeint main(

3、void)int a=2008;int*p;int*p;p=&a;p=&a;printf(%dn,*p*p);return 0;定义指针变量 p指向a 用*p表示变量a的值 第5页/共48页7.2.2 定义指针变量一般格式 数据类型数据类型*指针变量名1,*指针变量名2,;例如:intint*p1,*p2;floatfloat*q;指针变量允许和其他变量同时定义:charchar m,n,*p,*,*,*,*q;l注意“数据类型数据类型”是指针变量要指向的变量的数据类型是指针变量要指向的变量的数据类型。第6页/共48页7.2.3 7.2.3 使用指针变量1指针变量的初始化一般格式 数据类型*指

4、针变量名1=地址1,*指针变量名2=地址2,;例如:int m;int*p=&m;2指针变量的赋值l一般格式一般格式 指针变量指针变量=变量地址变量地址;例如:例如:int m=196,*p,*qint m=196,*p,*q;p=&mp=&m;q=pq=p;pm&m p196&mq q第7页/共48页7.2.3 7.2.3 使用指针变量3 3使用指针变量输入数据使用指针变量输入数据当指针变量有了确切的指向目标后,即可使用该指针变量为指向的目标输入数据。int score,*p;p=&score;scanf(%d,p p);scanf语句的功能与下列语句等价:scanf(%d,&score&s

5、core);第8页/共48页7.2.3 7.2.3 使用指针变量4 4指向运算指向运算“*”与目标访问与目标访问对于指针变量p,访问其指向的变量时,使用“*”运算符:*p例如,对上面的程序段,输出变量score的数据:printf(%d,*p*p);其中,*p表示p指向的目标score。第9页/共48页例例7-27-2定义指针变量p1、p2,并任意输入两个整数a、b,使得p1指向其中的较大值,p2指向其中的较小值。#includeint main()int*p1,*p2,*p,a,b;printf(Input:);scanf(%d,%d,&a,&b);p1=&a;p2=&b;if(ab)p=p

6、1;p1=p2;p2=pp=p1;p1=p2;p2=p;printf(Output:);printf(%d,%dn,*p1,*p2);return 0;7.2.27.2.2使用指针变量第10页/共48页7.3 指针与数组u7.3.1 指针与一维数组 u7.3.2 指针与二维数组 u7.3.3 指针与字符串 u7.3.4 指针数组 第11页/共48页7.3.1指针与一维数组 主要内容如何把一个指针和一维数组关联起来,即怎样使指针指向一维数组如何使用指针访问一维数组的元素l要解决的问题用指针实现一维数组的数据处理 第12页/共48页C C C C语言程序设计语言程序设计语言程序设计语言程序设计-理

7、论方法与实践(第理论方法与实践(第理论方法与实践(第理论方法与实践(第2 2 2 2版)版)版)版)7.3.1用指针访问一维数组 1 1指针与一维数组的关系指针与一维数组的关系 对于长度是N的一维数组a,当当使使用用指指针针p p指指向向其其首首元元素素后后,即即可可通通过过指指针针p p访访问问数数组组的的各各个元素个元素。简单类型数组aa0用*p表示a1用*(p+1)表示 aiai用*(p+i)(p+i)表示 指向一位数组指向一位数组的指针变量的指针变量第13页/共48页C C C C语言程序设计语言程序设计语言程序设计语言程序设计-理论方法与实践(第理论方法与实践(第理论方法与实践(第理

8、论方法与实践(第2 2 2 2版)版)版)版)7.3.1用指针访问一维数组 2 2定义和使用指向一维数组的指针变量定义和使用指向一维数组的指针变量 若有定义:int aN,*p;int aN,*p;/*N为符号常量*/则以下任何语句都能使指针变量p指向一维数组ap=a;p=a;p=&a0;p=&a0;当指针变量p指向a数组之后,就可以使用p访问a数组的元素。例如,可以使用下面的语句输出元素a0和a1的值。printf(“%d,%d”,*p,*(p+1)”,*p,*(p+1);第14页/共48页7.3.1用指针访问一维数组 例例7-37-37-37-3 用指针实现一维数组的输入输出。l程序一程序

9、一#include#define N 10int main()int aN;int*p=a,i;for(i=0;iN;i+)scanf(%d,p+i);for(i=0;iN;i+)printf(%d,*(p+i)*(p+i););return 0;return 0;&ai&ai&ai&aiaiaiaiai第15页/共48页C C C C语言程序设计语言程序设计语言程序设计语言程序设计-理论方法与实践(第理论方法与实践(第理论方法与实践(第理论方法与实践(第2 2 2 2版)版)版)版)7.3.1用指针访问一维数组 例例7-37-37-37-3 用指针实现一维数组的输入输出。l程序二程序二#in

10、clude#define N 10int main()int aN;int*p=a,i;for(i=0;iN;i+)scanf(%d,p+);p=a;for(i=0;iN;i+)printf(%d,*p+*p+););return 0;return 0;&ai&ai&ai&aiaiaiaiai第16页/共48页C C C C语言程序设计语言程序设计语言程序设计语言程序设计-理论方法与实践(第理论方法与实践(第理论方法与实践(第理论方法与实践(第2 2 2 2版)版)版)版)7.3.1用指针访问一维数组 例例7-37-37-37-3 用指针实现一维数组的输入输出。l程序三程序三#include#

11、define N 10int main(void)int aN,*p;for(p=a;p(a+N);p+)scanf(%d,p);for(p=a;p(a+N);p+)printf(%d,*p);return 0;&ai&ai&ai&aiaiaiaiai第17页/共48页7.3.1用指针访问一维数组 例例7-4 7-4 用指针法访问数组,求得一维数组元素的最大值。#include#define N 10int main(void)int aN,i,max,*p;,*p;p=a;printf(Data:);for(i=0;iN;i+)scanf(%d,p+ip+i);max=*p;max=*p;f

12、or(i=1;iN;i+)if(max*(p+i)if(max*(p+i)max=*(p+i);max=*(p+i);printf(Max:%dn,max);return 0;第18页/共48页7.3.2 指针与二维数组主要内容如何把一个指针和二维数组关联起来,即怎样使指针指向二维数组如何使用指针访问二维数组的元素l要解决的问题要解决的问题用指针实现二维数组的数据处理用指针实现二维数组的数据处理 第19页/共48页7.3.2 指针与二维数组102030408070605018273645l回顾二维数组的存储 10a0020a0130a0240a0380a1070a1160a1250a1318a

13、2027a2136a2245a23int a34;p pp+1p+1p+2p+2p+3p+3p+4p+4p+5p+5p+6p+6p+7p+7p+8p+8p+9p+9p+10p+10p+11p+11如何使如何使p p指向首元素?指向首元素?aijaij的指针如何表示?的指针如何表示?n n 问题问题第20页/共48页7.3.2 指针与二维数组 指针和二维数组元素的对应关系指针和二维数组元素的对应关系设设p p是指针变量,若有:是指针变量,若有:p=a0;p=a0;则则p+jp+j将指向将指向a0a0数组中的元素数组中的元素a0ja0j。由于由于a0a0、a1a1、aM-1aM-1等各个行数组依次

14、连续存储,等各个行数组依次连续存储,则对于则对于a a数组中的任一元素数组中的任一元素aijaij,指针的一般形式如下:,指针的一般形式如下:p+i*N+jp+i*N+j元素元素aijaij相应的指针表示为:相应的指针表示为:*(p+i*N+j)(p+i*N+j)aijaij也可用指针下标法表示:也可用指针下标法表示:pi*N+jpi*N+j第21页/共48页7.3.2 指针与二维数组 举例举例int int a34=10,20,30,40,50,60,70,80,90,91,92,93;a34=10,20,30,40,50,60,70,80,90,91,92,93;int*p=a0;int*

15、p=a0;则数组则数组a a的元素的元素a12a12对应的指针为:对应的指针为:p+1*4+2p+1*4+2元素元素a12a12也就可以表示为:也就可以表示为:*(p+1*4+2)(p+1*4+2)用下标表示法,用下标表示法,a12a12表示为:表示为:p1*4+2p1*4+2第22页/共48页7.3.2 指针与二维数组例例7-5 7-5 用指针访问二维数组的方法,求二维数组元素的最大值。用指针访问二维数组的方法,求二维数组元素的最大值。#include#includeint main(void)int main(void)int a34=3,17,8,11,66,7,8,19,12,88,7

16、,16;int a34=3,17,8,11,66,7,8,19,12,88,7,16;int*p,max;int*p,max;for(p=a0,max=*p;pa0+12;p+)for(p=a0,max=*p;pmax)if(*pmax)max=*p;max=*p;printf(Max=%dn,max);printf(Max=%dn,max);return 0;return 0;第23页/共48页7.3.3 指针与字符串 使字符型指针变量指向字符串的方法使字符型指针变量指向字符串的方法 定义指针变量时初始化指向字符串。定义指针变量时初始化指向字符串。char*p=a string;char*p

17、=a string;使指针变量指向字符型数组,从而使其指向字符串。char name20,*str;gets(name);str=name;第24页/共48页7.3.3 指针与字符串例例7-67-6从键盘输入一个字符串,统计其中的数字字符从键盘输入一个字符串,统计其中的数字字符个数。个数。#include#include#define N 100#define N 100int main(void)int main(void)char strN,*p;char strN,*p;int count;int count;p=str;p=str;gets(gets(p p););for(count=

18、0 for(count=0;*p!=0;p+);*p!=0;p+)if if(*p=0&*p=0&*p=9)count+;count+;printf(Total:%dn,count);printf(Total:%dn,count);return 0;return 0;第25页/共48页7.3.4 指针数组 数组元素为指针类型的数组称为指针数组数组元素为指针类型的数组称为指针数组,指针数组中的每一个元素都是指针变量。一维指针数组的定义形式如下:数据类型数据类型*数组名数组名 数组长度数组长度;例:例:char*days7;该语句定义了一个名为days的字符型指针数组,其每一个元素都是指向char

19、变量的指针变量。指针数组的每个元素是指针变量,只能存放地址,所以对指向字符串的指针数组赋初值时,要把存放字符串的首地址赋给指针数组的对应元素。例:例:char*days7=Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;第26页/共48页C C C C语言程序设计语言程序设计语言程序设计语言程序设计-理论方法与实践(第理论方法与实践(第理论方法与实践(第理论方法与实践(第2 2 2 2版)版)版)版)7.3.4 指针数组指针数组元素指针数组元素days0days0days1days1days2days2days3days3day

20、s4days4days5days5days6days6字符串字符串字符串字符串SundaySundayMondayMondayTuesdayTuesdayWednesdayWednesdayThursdayThursdayFridayFridaySaturdaySaturdaychar*days7char*days7=Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;第27页/共48页7.3.4 指针数组char*days7char*days7=Sunday,Monday,Tuesday,Wednesday,Thursday,Fr

21、iday,Saturday;例例例例7-77-7 分行输出分行输出days数组指向的字符串。数组指向的字符串。#includeint main()int i;char*days7*days7=Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;for(i=0;i7;i+)puts(daysidaysi);return 0;第28页/共48页7.4 指针作函数的参数 7.4.1 7.4.1 简单变量指针作函数参数简单变量指针作函数参数 7.4.2 7.4.2 指向数组的指针作函数的参数指向数组的指针作函数的参数 7.4.3 7.4.3

22、 字符串指针作函数的参数字符串指针作函数的参数 7.4.4 7.4.4 指针数组作指针数组作函数的参数函数的参数第29页/共48页实参:简单实参:简单变量地址变量地址void swap(int*p1,int*p2)void swap(int*p1,int*p2)int temp;int temp;temp=*p1;temp=*p1;*p1=*p2;*p1=*p2;*p2=temp;*p2=temp;7.4.1 简单变量指针作函数参数形参:指针形参:指针变量变量#include#includeint main()int main()void swap(int*,int*);void swap(i

23、nt*,int*);int x,y;int x,y;scanf(%d,%d,&x,&y);scanf(%d,%d,&x,&y);if(xy)if(xy)swap(&x,&y);swap(&x,&y);printf(%d,%dn,x,y);printf(%d,%dn,x,y);return 0;return 0;例例例例7-8 7-8 7-8 7-8 任意输入两个整数,任意输入两个整数,任意输入两个整数,任意输入两个整数,然后按照先大后小的顺序然后按照先大后小的顺序然后按照先大后小的顺序然后按照先大后小的顺序将其输出将其输出将其输出将其输出。l简单变量指针作函数参数,实现简单变量的地址在函数中的

24、传递。简单变量指针作函数参数,实现简单变量的地址在函数中的传递。第30页/共48页7.4.1 简单指针变量作函数参数例例例例7-97-9 用比较交换法,用比较交换法,用比较交换法,用比较交换法,将一维数组的最大将一维数组的最大将一维数组的最大将一维数组的最大值移到数组的最末值移到数组的最末值移到数组的最末值移到数组的最末元素位置,交换过元素位置,交换过元素位置,交换过元素位置,交换过程用上述程用上述程用上述程用上述swap()swap()函函函函数实现。数实现。数实现。数实现。#include#includeint main()int main()void swap(int*,int*);vo

25、id swap(int*,int*);int i,a10=33,-12,97,3,7,18,9,51,10,9;int i,a10=33,-12,97,3,7,18,9,51,10,9;for(i=0;i9;i+)for(i=0;iai+1)if(aiai+1)swap(&ai,&ai+1);swap(&ai,&ai+1);for(i=0;i10;i+)for(i=0;i10;i+)printf(%5d,ai);printf(%5d,ai);printf(n);printf(n);return 0;return 0;void void swap(int*p1,int*p2swap(int*p1

26、,int*p2)int temp;int temp;temp=*p1;temp=*p1;*p1=*p2;*p1=*p2;*p2=temp;*p2=temp;第31页/共48页7.4.2 指向数组的指针作函数的参数 例例7-10 7-10 设计求一维数组元素最大值的函数设计求一维数组元素最大值的函数pv_max()pv_max(),并在主函数中调,并在主函数中调用它求数组元素最大值用它求数组元素最大值。问题分析与算法设计问题分析与算法设计 为了方便函数编写,先假定数组长度为为了方便函数编写,先假定数组长度为n n,指针,指针p p指向该数组。指向该数组。设计设计pv_max()pv_max()函

27、数函数 原型:原型:int pv_max(int*p,int n)int pv_max(int*p,int n)功能:在长度为n、由p指向的一维数组中求元素最大值。用用main()main()函数作为主控函数。函数作为主控函数。第32页/共48页7.4.2 7.4.2 指向数组的指针作函数的参数 int pv_max(int*p*p,int n)int i,max=*p;for(i=1;imax)max=*(p+i);return max;#include#define N 10int main(void)int pv_max(int*,int);int aN,i;for(i=0;iN;i+)

28、scanf(%d,&ai);printf(Max=%dn,pv_max(a a,N);return 0;第33页/共48页7.4.3字符串指针作函数参数字符串指针作函数的参数,与前面介绍的数组指针作函字符串指针作函数的参数,与前面介绍的数组指针作函字符串指针作函数的参数,与前面介绍的数组指针作函字符串指针作函数的参数,与前面介绍的数组指针作函数参数没有本质的区别,函数间传递的都是地址值,所不数参数没有本质的区别,函数间传递的都是地址值,所不数参数没有本质的区别,函数间传递的都是地址值,所不数参数没有本质的区别,函数间传递的都是地址值,所不同的仅是指针指向对象的类型不同而已。同的仅是指针指向对象

29、的类型不同而已。同的仅是指针指向对象的类型不同而已。同的仅是指针指向对象的类型不同而已。例例例例7-11 7-11 7-11 7-11 改写例改写例改写例改写例7-67-6的程序,将统计数字字符的过程改由的程序,将统计数字字符的过程改由的程序,将统计数字字符的过程改由的程序,将统计数字字符的过程改由用户函数实现,要求字符串指针作函数参数。用户函数实现,要求字符串指针作函数参数。用户函数实现,要求字符串指针作函数参数。用户函数实现,要求字符串指针作函数参数。第34页/共48页7.4.3 字符串指针作函数参数#include#define N 100int main(void)char strin

30、gN;int count_p(char*);gets(string);printf(Total:%dn,count_p(stringcount_p(string);return 0;int count_p(char*p)int count_p(char*p)int count;for(count=0;*p!=0;p+)if(*p=0&*p=9)count+;return count;形参:形参:字符串指针字符串指针实参:实参:字符数组名字符数组名第35页/共48页7.4.4 指针数组作函数的参数指针数组的元素是指针变量,用指针数组能够实现一组字符串的处理。当用指针数组作函数参数时,就可设计通用

31、的多字符串操作函数。第36页/共48页7.4.4 指针数组作函数的参数#include#includeint main()void string_sort(char*,int);void string_out(char*,int);char*days7*days7=Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;string_sort(daysdays,7);string_out(daysdays,7);return 0;void string_out(char*string,int n)int i;for(i=0;in;i+)

32、printf(%s ,string i);void string_sort(char*string,int n)char*temp;int i,j;for(i=1;in;i+)for(j=0;j)0)temp=string j;string j=string j+1;string j+1=temp;例例7-13 7-13 编写能对多个字符串排序的函数,并调用该函数将一组字符串按字典顺序排序。第37页/共48页C C C C语言程序设计语言程序设计语言程序设计语言程序设计-理论方法与实践(第理论方法与实践(第理论方法与实践(第理论方法与实践(第2 2 2 2版)版)版)版)7.5 指针函数函数返

33、回值是指针类型的函数称为函数返回值是指针类型的函数称为函数返回值是指针类型的函数称为函数返回值是指针类型的函数称为指针函数指针函数指针函数指针函数 n指针函数的定义的一般格式数据类型数据类型数据类型数据类型 *函数名函数名函数名函数名(形参表形参表形参表形参表)函数体函数体函数体函数体u 函数体中的return命令须返回一个地址值第38页/共48页C C C C语言程序设计语言程序设计语言程序设计语言程序设计-理论方法与实践(第理论方法与实践(第理论方法与实践(第理论方法与实践(第2 2 2 2版)版)版)版)7.5 指针函数例例例例7-14 7-14 编写能够查找长度最大的字符串的函数,并调

34、用该函数求一组字符串中的最长字符串。l问题分析与算法设计 设计查找最长字符串的函数max_len(),其原型如下:char*max_len(char*string,int n)char*max_len(char*string,int n)其中,string为指向字符串的指针数组,n为字符串个数。函数功能:在string指向的n个字符串中查找最长字符串,返回该字符串的地址。设计主函数,其功能包括:通过指针数组提供一组字符串;调用函数max_len()求得最长字符串,并输出结果。第39页/共48页C C C C语言程序设计语言程序设计语言程序设计语言程序设计-理论方法与实践(第理论方法与实践(第理

35、论方法与实践(第理论方法与实践(第2 2 2 2版)版)版)版)7.5 指针函数#include#includeint main()char*max_len(char*,int);char*max_len(char*,int);char*p_string4=Sydney2000,Beijing2008,Athens1996,Korea1992;puts(max_len(p_string,4max_len(p_string,4);return 0;char*max_len(char*string,int n)char*max_len(char*string,int n)int i,posion,

36、max_l;posion=0;max_l=strlen(string0);for(i=1;imax_l)max_l=strlen(stringi);posion=i;return(stringposion);return(stringposion);字符串指字符串指针数组针数组字符串个数字符串个数存储字符串地存储字符串地址的数组名址的数组名返回最长字符串的首地址第40页/共48页C C C C语言程序设计语言程序设计语言程序设计语言程序设计-理论方法与实践(第理论方法与实践(第理论方法与实践(第理论方法与实践(第2 2 2 2版)版)版)版)7.6 指针应用举例 “学生成绩分等统计”进一步函数

37、化 三色球问题 第41页/共48页C C C C语言程序设计语言程序设计语言程序设计语言程序设计-理论方法与实践(第理论方法与实践(第理论方法与实践(第理论方法与实践(第2 2 2 2版)版)版)版)7.6 指针应用举例 例7-157-15将例6-16的“学生成绩分等统计”程序进一步函数化,把输出统计结果的过程改由函数实现。问题分析与算法设计 定义一维数组的输出函数output()函数原型:void outpu(int*p,int n)void outpu(int*p,int n)其中,p为指向一维数组的指针,n为元素个数。函数功能:将指针变量p指向的一维数组的全部n个元素输出。在例6-16的

38、程序中,使用一维数组r存储各等级的统计结果,本程序仍然使用数组r存储统计结果。输出输出r r数组各个元素的过程,通数组各个元素的过程,通过调用过调用output()output()函数实现,调用形式为函数实现,调用形式为output(r,5)output(r,5)。实现程序第42页/共48页C C C C语言程序设计语言程序设计语言程序设计语言程序设计-理论方法与实践(第理论方法与实践(第理论方法与实践(第理论方法与实践(第2 2 2 2版)版)版)版)7.6 指针应用举例#include#include#define N 6#define N 6 int main(void)int main

39、(void)int flag(int,int);int flag(int,int);void output(int*,int);void output(int*,int);int s1,s2,i;int s1,s2,i;static int r5;static int r5;for(i=0;iN;i+)for(i=0;i=90)return 0;if(ave=90)return 0;else if(ave=80)return 1;else if(ave=80)return 1;else if(ave=70)return 2;else if(ave=70)return 2;else if(ave

40、=60)return 3;else if(ave=60)return 3;else return 4;else return 4;void output(int*p,int n)void output(int*p,int n)int i;int i;for(i=0;in;i+)for(i=0;in;i+)printf(%d ,*(p+i);printf(%d ,*(p+i);第43页/共48页7.6 指针应用举例 例7-167-16有红、黄、蓝、白、黑五种颜色的球若干个,每次取出三个球,打印出三种不同颜色球的可能取法。问题分析与算法设计 定义表示颜色的指针数组p,使其元素p0、p1、p2、p3

41、、p4分别指向字符串“red”、“yellow”、“blue”、“white”、“black”,这5个字符串用于表示5种彩球颜色。指针数组p的定义方式如下:char*p5=red,yellow,blue,white,black;使用0、1、2、3、4分别代表红、黄、蓝、白、黑五种颜色,使用穷举法生成各种组合方案,具体由一个三重循环实现。设每次取出的球分别为i、j、k,它们分别是0、1、2、3和4等5种取值。外循环取第1个球,第二重循环取第2个球,第三重循取第3个球。由于3的个球颜色不能相同,所以只有ijk时才为所求,得到一种3色球组合方案。将每一种组合的i、j、k转化为相应的颜色字符串,具体颜

42、色由指针pi、pj、pk指向。第44页/共48页7.6 指针应用举例#include#includeint main()int main()int i,j,k,n=0;int i,j,k,n=0;char char*p5=red,yellow,blue,white,black;*p5=red,yellow,blue,white,black;for(i=0;i=4;i+)for(i=0;i=4;i+)for(j=0;j=4;j+)for(j=0;j=4;j+)for(k=0;k=4;k+)for(k=0;k=4;k+)if(if(i!=j)&(k!=i)&(k!=ji!=j)&(k!=i)&(k

43、!=j)n+;n+;printf(%-4d,n);printf(%-4d,n);printf(%-8s%-8s%-8sn,printf(%-8s%-8s%-8sn,pi,pj,pkpi,pj,pk););printf(Total:%dn,n);printf(Total:%dn,n);return 0;return 0;第45页/共48页小 结 (1)(1)(1)(1)指针是变量的地址,用于存储指针的变量称为指针变量,通过指针变量可以实现对其他变量的间接访问。(2)(2)使用如下形式定义指针变量:数据类型*指针变量名;其中的“数据类型”是指针变量指向的目标的数据类型,指针变量只能使用变量的地址为

44、其赋值。(3)(3)指针变量使数组的访问更加灵活。若p是指向一维数组a的指针变量,则数组元素ai可用指针表示为*(p+i)、pi,也可用数组名表示为*(a+i),ai的地址可以表示为&ai、p+i、a+i。(4)(4)使用字符型指针变量处理字符串是C语言中常用的一种方法,它首先通过一定的方式,使字符指针指向字符串,然后通过字符指针来访问字符串。第46页/共48页小 结 (2)(2)(5)(5)数组元素为指针类型的数组称为指针数组,指针数组中的每一个元素都是指针变量,它们指向相同类型的数据。引入指针数组的主要目的,是为了提高对多个字符串操作时的方便性和灵活性,尤其适合于长度不等的字符串的处理。(6)(6)指针作为函数的参数时,在函数间传递的是变量的地址。简单指针变量作函数参数是指针作函数参数中最基本的内容,它的作用是实现一个简单变量的地址在函数中的传递。字符串指针作函数的参数与数组指针作函数参数没有本质的区别,函数间传递的都是地址值,所不同的仅是指针指向对象的类型不同而已。(7)(7)函数返回值是指针类型的函数称为指针函数,使用指针函数可以获得更多的处理结果。需要特别特别注意的是,对于指针函数,用return返回的值必须是一个指针值。第47页/共48页C语言程序设计-理论方法与实践(第2版)感谢您的欣赏!第48页/共48页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁