返回指针值的函数-指针数组-指向指针的指针

返回指针值的函数-指针数组-指向指针的指针

ID:39414196

大小:620.31 KB

页数:18页

时间:2019-07-02

返回指针值的函数-指针数组-指向指针的指针_第1页
返回指针值的函数-指针数组-指向指针的指针_第2页
返回指针值的函数-指针数组-指向指针的指针_第3页
返回指针值的函数-指针数组-指向指针的指针_第4页
返回指针值的函数-指针数组-指向指针的指针_第5页
资源描述:

《返回指针值的函数-指针数组-指向指针的指针》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

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

2、,这样函数结束后该变量仍然存在。mainpaverageaver1静态aver&aver1&aver181返回指针值的函数voidmain(){intn;floatx=0,y=100,*p;printf(“inputn:”);scanf("%d",&n);p=average(n,&x,&y);printf("ave=%6.2f,",*p);printf("max=%6.2f,",x);printf("min=%6.2f",y);}例3-4程序代码静态局部变量float*average(intn,float

3、*max,float*min){inti;floats,*aver,sum=0;staticfloataver1;aver=&aver1;for(i=1;i<=n;i++){printf(“inputs:");scanf("%f",&s);if(s>*max)*max=s;if(s<*min)*min=s;sum=sum+s;}aver1=sum/n;return(aver);}例3-5:编写一个alloc(n)函数,用来在内存区开辟n个字节的连续空间,该函数的返回值是一个指针,指向新开辟的空间的起始地址提示

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

5、string.h>#defineSIZE1000charbuf[SIZE];char*p=buf;char*alloc(intn){char*begin;if(p+n<=buf+SIZE){begin=p;p=p+n;return(begin);}elsereturn(NULL);}voidmain(){char*p1,*p2;p1=alloc(10);strcpy(p1,”123456789”);p2=alloc(5);strcpy(p2,”abcd”);printf(“buf=%p”,buf);pri

6、ntf(“p1=%p”,p1);printf(“p2=%p”,p2);puts(p1);puts(p2);for(inti=0;i<15;i++)printf(“%c”,buf[i]);}返回指针值的函数全局变量输出地址buf[0]buf[1]::buf[9]buf[10]:buf[14]buf[15]::buf[999]bufpbuf+10p1p2mainbeginnallocbufbufbuf+1012:9a:10buf+15beginnallocbuf+105char*alloc(int

7、n){char*begin;if(p+n<=buf+SIZE){begin=p;p=p+n;return(begin);}elsereturn(NULL);}p1=alloc(10);p2=alloc(5);p是一个指针数组,它有3个元素,每个元素是一个整型指针变量,可指向一个整型数据概念:一个数组的元素均为指针类型的数据,则该数组称为指针数组即:指针数组的每一个元素都是一个指针变量定义格式:类型名*数组名[数组长度];int*p[3];intx,y,a[4];p[0]=&x;p[1]=&y;p[2]=a;x

8、ya[0]a[1]a[2]a[3]数组ap[0]p[1]p[2]指针数组p&x&ya指针数组指针数组用得最多的是“字符型指针数组”,利用字符指针数组可以指向多个长度不等的字符串,使字符串处理起来更方便、灵活,节省内存空间。指针数组char*p[4];p[0]p[1]p[2]p[3]PascalVCBasicJava定义一个4个元素的字符指针数组p,其中每个数组元素是一个字符指针,可以

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。