ImageVerifierCode 换一换
格式:PPT , 页数:18 ,大小:425KB ,
资源ID:7249128      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-7249128.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第7讲 返回指针值的函数-指针数组-指向指针的指针.ppt)为本站会员(hwpkd79526)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

第7讲 返回指针值的函数-指针数组-指向指针的指针.ppt

1、第7讲 指针,内容: 返回指针值的函数 指针数组 指向指针的指针,返回指针值的函数,函数的返回值可以是一个指针类型的数据(即地址),返回指针值函数的定义格式: 函数类型 * 函数名( 形参列表 ) 函数体; ,说明:定义一个返回指针值的函数与定义普通函数的格式基本类似,只是在函数名前加 * , 表明该函数返回一个指针值,例: int * fun ( int a , int b ) 函数体 ; ,例3-4求某班成绩的平均分, 最高分和最低分 要求用返回指针值的函数实现,分析: 通过函数average的返回值得到保存平均分变量的地址, 进而得到平均分, 函数中将平均分变量定义成静态的, 这样函数结

2、束后该变量仍然存在。,&aver1,&aver1,81,返回指针值的函数,void main( ) int n;float x=0, y=100, *p;printf(“input n:”);scanf(“%d“, ,例3-4 程序代码,静态局部变量,float *average(int n, float *max, float *min) int i; float s, *aver, sum=0;static float aver1;aver= ,例3-5: 编写一个alloc(n)函数,用来在内存区开辟n个字节的连续空间, 该函数的返回值是一个指针,指向新开辟的空间的起始地址,提示:先在内

3、存申请一个相当大的连续空间(如1000个字节), 然后在此区域内进行开辟空间的操作。假设指针变量p原来指向未用空间的开头, 调用alloc(n)函数后, 开辟了n个字节供程序使用, 而指针变量p的值应变成p+n, 同时将新的p值返回, 表示可以利用从此位置开始的存储单元。如果要开辟的空间太大, 超过了预设的空间, 则alloc(n)函数应返回空指针NULL, 表示开辟失败。,buf0 buf1: buf20: buf999,p,返回指针值的函数,例3-5 程序代码 #include #include #define SIZE 1000 char bufSIZE ; char *p=buf ;

4、char *alloc( int n) char *begin ;if ( p+n = buf+SIZE ) begin=p; p=p+n;return(begin);else return(NULL); ,void main( ) char *p1,*p2 ; p1=alloc(10);strcpy(p1,”123456789”);p2=alloc(5);strcpy(p2,”abcd”);printf(“buf=%pn”, buf);printf(“p1=%pn”, p1);printf(“p2=%pn”, p2);puts(p1); puts(p2);for(int i=0 ; i15

5、; i+)printf(“%c”, bufi); ,返回指针值的函数,全局变量,输出地址,buf0 buf1: buf9 buf10: buf14 buf15: buf999,buf+10,buf,buf,buf+10,1 2 : 9 0,a : 0,10,buf+15,buf+10,5,char *alloc( int n) char *begin ;if (p+n = buf+SIZE) begin=p; p=p+n;return(begin);else return(NULL); ,p1=alloc(10);,p2=alloc(5);,p是一个指针数组, 它有3个元素, 每个元素是一个整

6、型指针变量, 可指向一个整型数据,概念: 一个数组的元素均为指针类型的数据,则该数组称为指针数组,即:指针数组的每一个元素都是一个指针变量,定义格式: 类型名 *数组名数组长度;,int *p3;,int x, y, a4; p0=,&x,&y,a,指针数组,指针数组用得最多的是“字符型指针数组”,利用字符指针数组可以指向多个长度不等的字符串,使字符串处理起来更方便、灵活,节省内存空间。,指针数组,char *p4;,定义一个4个元素的字符指针数组p,其中每个数组元素是一个字符指针,可以指向一个字符串,指针数组,例2-4: 编程将书名按字母顺序排序后输出,方法1: 用二维字符数组编程实现,思考

7、: 二维字符数组定义成多大合适? 采用什么方法进行排序? 字符串怎样比较和交换?, 第一维的长度取决于有几本书第二维的长度由最长的书名决定, 可使用冒泡排序或选择排序, 字符串的比较和交换应使用相应的字符串函数,#include #include #define MAXLEN 7 #define N 4 void main( ) int i, j; char tempMAXLEN;char nameNMAXLEN=“Pascal“,“VC“,“Basic“,“Java“;printf(“before sorted:n“);for(i=0; i0) strcpy(temp, namei);str

8、cpy(namei, namej);strcpy(namej, temp);printf(“nafter sorted:n“);for(i=0; iN; i+) puts(namei); ,/书名的最大长度+1,/书的数量,选择排序,/输出排序前的书名,/输出排序后的书名,例2-4:方法1: 用二维字符数组编程实现的程序代码,例2-4: 方法2: 用指针数组编程实现,注意: 排序时是交换指针变量的指向,#include #include #define N 4 void main( ) int i, j; char *temp=NULL;char *pN=“Pascal“, “VC“, “Ba

9、sic“, “Java“;printf(“nBefore sorted:n“);for(i=0; i0) temp=pi; pi=pj; pj=temp; printf(“nAfter sorted:n“);for(i=0; iN; i+) puts(pi); ,交换的是字符串的起始地址,例2-4: 方法2: 用指针数组编程实现的程序代码,for(i=0; i0) temp=pi; pi=pj; pj=temp; ,例2-4: 方法2的过程演示,i=0, j=1 PV,temp,2100 2107 2110 2116,i=0, j=2 PB temp=p0; p0=p2; p2=temp;,2

10、100,p0 p1 p2 p3,2110,2100,i=0, j=3 BJ,i=1, j=2 VP temp=p1; p1=p2; p2=temp;,2107,2100,2107,i=1, j=3 PJ temp=p1; p1=p3; p3=temp;,i=2, j=3 VP temp=p2; p2=p3; p3=temp;,2100,2116,2100,2107,2100,2107,指向指针的指针,int x, *q,*t; x=36; q=,2010,2026,思考: q=45; *q=45; *t=56; *t=56;,对,错,因为q是指针变量,赋值号右侧必须是地址,错,因为t是二级指针

11、变量,*t等价于q,对,指向指针的指针,char *p4=“Pascal“, “VC“, “Basic“, “Java“; char *q; q=p; for( ;qp+4;q+)puts(*q);,思考: int a34; int *p; p=a;,int a34; int (*p)4; p=a;,对,错,虽然在定义p的时只用了一个*,但p实际上是一个二级指针变量,虽然a是二级地址,p是二级指针变量,但它们的含义不同 a指向的是一行整型数据,它包含4个元素 p指向的是一个整型指针变量,作业:,习题10.12,某班期末考试有门课程, 班级人数不确定, 要求计算每个学生的总分和平均分, 按以下格式输出数据,NO. S1 S2 S3 SUM AVE1 97 86 92 276 922 92 91 90 273 91 3 90 81 82 253 84 : : : : : :,要求: 1. 学生人数由键盘输入2. 编写输入函数输入学生的学号和3门课的成绩3. 编写函数计算每个学生的总分和平均分4. 编写输出函数按格式输出数据,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报