资源描述:
《返回指针值的函数-指针数组-指向指针的指针》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
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:9 a: 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]Pascal VC Basic Java 定义一个4个元素的字符指针数组p,其中每个数组元素是一个字符指针,可以