欢迎来到天天文库
浏览记录
ID:40106384
大小:934.00 KB
页数:147页
时间:2019-07-21
《《解析c程序设计》高级程序设计ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第8章高级程序设计主要内容如何打印学生成绩指针数组指向指针的指针指向二维数组的指针查找字符位置问题返回指针的函数多用途排序问题指向函数的指针文件复制问题带参数的main函数如何打印结构体信息结构体指针约瑟夫环问题链表如何管理用户程序外部函数7/22/20212《解析C程序设计》第8章高级程序设计问题的提出在许多应用领域,需要存储多种各式各样的信息。例如,管理一个班学生的成绩,一个班有多个学生,而每一个学生又有多门课的成绩,因此常常使用二维数组存储数据;而存储多个学生的信息时,又会用到字符串数组。为了方便地使用和管理这些数组,就会用到指针
2、。但是这里所指的指针和前面的指针有所不同,已经不是简单的单个指针定义,会涉及到如何将各类指针综合在一起。【例8-1】有一个班,有5个学生,各学3门课,计算各个学生的平均成绩。7/22/20213《解析C程序设计》第8章高级程序设计问题的分析该问题涉及5个学生的成绩,而每个学生又有3门课,因此用二维数组存储这15个数据。但是问题本身要求计算每个学生的成绩,每个学生的成绩对应着一个一维数组,访问一维数组可以使用指针,但是要访问5个一维数组,就需要5个指针,这5个指针的类型是一致的,因此就可以考虑能不能将这5个指针组成一个数组,这就是本节将介
3、绍的指针数组。7/22/20214《解析C程序设计》第8章高级程序设计指针数组用途:处理二维数组或多个字符串定义:数组中的元素为指针变量格式:[存储类型]数据类型*数组名[数组长度];例:int*p[5];其中:p[0]指向存放第1个学生的三门课程的数组,p[1]指向存放第2个学生的三门课程的数组,依此类推。指针所指向变量的数据类型指针本身的存储类型区分int*p[5]与int(*p)[5]7/22/20215《解析C程序设计》第8章高级程序设计【注意】p为该指针数组名,和其它数组名一样,p是常量,不能对它进行增量运算。p为指针数组元素
4、p[0]的地址,p+i为p[i]的地址。则,*p就是p[0],*(p+i)就是p[i]。7/22/20216《解析C程序设计》第8章高级程序设计指针数组对处理字符串提供了更大的方便和灵活性,指针数组由于其中每个元素都为指针变量,因此指针数组非常适合用来处理若干个字符串。如构造字符串数组,在这种结构中,数组中的每一个元素都是一个字符串。而字符串实际上是指向字符串第一个字符的指针,所以字符串数组中的每一个字符串实际上是指向字符串第一个字符的指针,我们定义字符串数组如下:char*suit[4]={"Hearts","Diamonds","C
5、lubs","Spades"};7/22/20217《解析C程序设计》第8章高级程序设计suit[0]suit[1]suit[2]suit[3]‘H’‘e’‘a’‘r’‘t’‘s’‘ ’‘D’‘i’‘a’‘m’‘o’‘n’‘d’‘s’‘ ’‘C’‘l’‘u’‘b’‘s’‘ ’‘S’‘p’‘a’‘d’‘e’‘s’‘ ’数组中存放只是指针:图8-17/22/20218《解析C程序设计》第8章高级程序设计【注意】指针数组和一般数组一样,允许指针数组在定义时初始化,但由于指针数组的每个元素是指针变量,它只能存放地址,所以对指向字符串的指
6、针数组在说明赋初值时,是把存放字符串的首地址赋给指针数组的对应元素。7/22/20219《解析C程序设计》第8章高级程序设计指针数组赋值与初始化赋值:main(){intb[2][3],*pb[2];pb[0]=b[0];pb[1]=b[1];……..}int*pb[2]pb[0]pb[1]intb[2][3]123246初始化:main(){intb[2][3],*pb[]={b[0],b[1]};……..}int*pb[2]pb[0]pb[1]intb[2][3]1232467/22/202110《解析C程序设计》第8章高级程序设计
7、指针数组赋值与初始化Lisp Fortran Basic p[0]p[1]p[2]p[3]0赋值:main(){chara[]="Fortran";charb[]="Lisp";charc[]="Basic";char*p[4];p[0]=a;p[1]=b;p[2]=c;p[3]=NULL;……..}或:main(){char*p[4];p[0]="Fortran";p[1]="Lisp";p[2]="Basic";p[3]=NULL;……..}初始化:main(){char*p[]={"Fortran","Lisp","Basi
8、c",NULL};……..}Lisp Fortran Basic p[0]p[1]p[2]p[3]07/22/202111《解析C程序设计》第8章高级程序设计charname[5][9]={“gain
此文档下载收益归作者所有