第7讲 返回指针值的函数-指针数组-指向指针的指针.ppt
《第7讲 返回指针值的函数-指针数组-指向指针的指针.ppt》由会员分享,可在线阅读,更多相关《第7讲 返回指针值的函数-指针数组-指向指针的指针.ppt(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第7讲 指针内容:内容:(1)(1)返回指针值的函数返回指针值的函数(2)(2)指针数组指针数组(3)(3)指向指针的指针指向指针的指针返回指针值的函数l函数的返回值可以是一个指针类型的数据函数的返回值可以是一个指针类型的数据(即地址即地址)返回指针值函数的定义格式返回指针值函数的定义格式:函数类型函数类型 *函数名函数名(形参列表形参列表 )函数体函数体;说明说明:定义一个返回指针值的函数与定义普通函数的格式基本定义一个返回指针值的函数与定义普通函数的格式基本 类似类似,只是在函数名前加只是在函数名前加 *,表明该函数返回一个指针值表明该函数返回一个指针值例例:int *fun(int a,
2、int b)函数体函数体;例例3-4求某班成绩的平均分求某班成绩的平均分,最高分和最低分最高分和最低分要求用返回指针值的函数实现要求用返回指针值的函数实现分析分析:n通过函数通过函数average的返回值的返回值得到保存平均分变量的地址得到保存平均分变量的地址,进而得到平均分进而得到平均分,函数中将函数中将平均分变量定义成静态的平均分变量定义成静态的,这样函数结束后该变量仍然这样函数结束后该变量仍然存在。存在。mainpaverageaver1静态静态aver&aver1&aver181返回指针值的函数void main()int n;float x=0,y=100,*p;printf(“in
3、put n:”);scanf(%d,&n);p=average(n,&x,&y);printf(ave=%6.2f,*p);printf(max=%6.2f,x);printf(min=%6.2fn,y);例例3-4 程序代码程序代码静态局部变量静态局部变量float *average(int n,float*max,float*min)int i;float s,*aver,sum=0;static float aver1;aver=&aver1;for(i=1;i*max)*max=s;if(s*min)*min=s;sum=sum+s;aver1=sum/n;return(aver);例
4、例3-5:编写一个编写一个alloc(n)函数,用来在内存区开辟函数,用来在内存区开辟n个字节的连续空间个字节的连续空间,该函数的返回值是一个指针该函数的返回值是一个指针,指向新开辟的空间的起始地址指向新开辟的空间的起始地址提示:先在内存申请一个相当大的连续空提示:先在内存申请一个相当大的连续空间间(如如1000个字节个字节),然后在此区域内进行开然后在此区域内进行开辟空间的操作。辟空间的操作。假设指针变量假设指针变量p原来指向未用空间的开原来指向未用空间的开头头,调用调用alloc(n)函数后函数后,开辟了开辟了n个字节供个字节供程序使用程序使用,而指针变量而指针变量p的值应变成的值应变成p
5、+n,同同时将新的时将新的p值返回值返回,表示可以利用从此位置表示可以利用从此位置开始的存储单元。开始的存储单元。如果要开辟的空间太大如果要开辟的空间太大,超过了预设的超过了预设的空间空间,则则alloc(n)函数应返回空指针函数应返回空指针NULL,表示开辟失败。表示开辟失败。buf0buf1 :buf20 :buf999p返回指针值的函数例例3-5 程序代码程序代码#include#include#define SIZE 1000char bufSIZE;char *p=buf;char *alloc(int n)char *begin;if(p+n=buf+SIZE)begin=p;p=
6、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;i+)printf(“%c”,bufi);返回指针值的函数全局变量全局变量输出地址输出地址buf0buf1 :buf9buf10 :buf14buf15 :b
7、uf999bufp buf+10p1 p2 mainbeginn allocbufbufbuf+1012:90a:010buf+15beginn allocbuf+105char *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个元素个元素,每个每个元素是一个整元素是一个整型指针变量型指针变量,可指向一个整可指向一个整型数据型数据l概念概念:一个数组的元素均为指针类型的数据,一个
8、数组的元素均为指针类型的数据,则该数组称为指针数组则该数组称为指针数组即:指针数组的每一个元素都是一个指针变量即:指针数组的每一个元素都是一个指针变量定义格式:定义格式:类型名类型名 *数组名数组名数组长度数组长度;int *p3;int x,y,a4;p0=&x;p1=&y;p2=a;xya0a1a2a3数组数组ap0p1p2指针数组指针数组p&x&ya指针数组指针数组指针数组用得最多的是指针数组用得最多的是“字符型指针数组字符型指针数组”,利用字符指针数,利用字符指针数组可以指向多个长度不等的字符串,使字符串处理起来更方便、组可以指向多个长度不等的字符串,使字符串处理起来更方便、灵活,节省
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第7讲 返回指针值的函数-指针数组-指向指针的指针 返回 指针 函数 数组 指向
限制150内