如何实现一个子函数返回多个值

如何实现一个子函数返回多个值

ID:41727492

大小:128.74 KB

页数:4页

时间:2019-08-30

如何实现一个子函数返回多个值_第1页
如何实现一个子函数返回多个值_第2页
如何实现一个子函数返回多个值_第3页
如何实现一个子函数返回多个值_第4页
资源描述:

《如何实现一个子函数返回多个值》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、如何实现一个子程序返回多个返回值我们知道,在C语言中,子函数可以有零个或者一个返回值,那么当我的子程序中产生了两个及以上的数值需要传递给主函数或者其它的函数,那么该怎么办呢?首先第一种方法是采用全局变量,那么在子程序中改变全局变量的值,再在其它函数中使用。该方法的确可行,但全局变量使用过多会使程序显得凌乱,除开发者木身外,不便于阅读;其次采用全局变量时占用内存会多,而且移植不方便。那么到底该如何实现一个子程序返回多个值,可以采用以下方法:第一种:釆用数组的形式,把需要返回的数值存放在数组中,然后在执行程序中定义数组,传递指针。具体如下图1.1#include/

2、*字程序传入参薮a,b返回a+b和a-b的值夬/voidFunctionReturnl(inta,intb,int*s){s[0二二a+b;s[l]=a-b;}intmain(){intx,y;intMaxMin[2];//定义一个数组,用于保存函数的返回值printf(f,Pleaseinputtwovalue'n");scanf("%d",&x):scanf&y);FunctionReturnl(x,y,MaxMin);printf(Mx=%df,,x);printf(ny=%dy);printf(,rMaxMin[0l=%dn,MaxMin[Oj);prin

3、tf(nMaxMin[l]=%dMaxMin[11);return0;图1.1程序示例图1.2程序执行的结果演示执行结果如下图1.2第二种:釆用结构体传递,即把主程序结构体的首地址传递给调用程序结构体的首地址。其程序如图1.3所示。^include/*说明一个结构类型★/typedefstructfunrerurn{intsum;intSubtract;}Fun_return;★孑程序传入参数a,b返回a+b和a-b的值★Fun_returnFunctionReturn2(inta,intb){,Fun_returnValue;//定义一个结构体Valu

4、e.sum=a+b;//给结构体的两个元素赋值returnValue;//返固结构体的名称,实际返回的是结构体的首地址}intmainO{intx,y;Fun_returnValueReal;主程序中定义一个结构printf(,fPleaseinputtwovalue,f);scanf&x);scanf(,f%dr,&y);ValueReal=FunctionReturn2(x,y);把主程序结构的地址传递过来printf(,fx=%d,f,x);printf(';y=%d,f,y);”printf(,fValueRea1・sum=%dValueReal.su

5、m);printf(,fValueRea1・Subtract=%dP,ValueReal.Subtract);图1・3程序示例程序的执行结果如图1.4所示。厂wC:UsersFangLeyunDe5ktop_函数…Pleaseinputtwovalue8025x=80y=25UalueReal.sum=105UalueReal.Subtract=55Pressanykeytocontinue图1.4执行结果第三种:通过临时分配内存来实现。即在子程序中开辟一个动态存储区,用来保存变量,然后再主程序中调用,再释放空间。需要注意的是调用malloc()函数必须包含头文件t

6、tinclude,而JL使用完后,必须释放所申请的动态存储空间,调用free(void*ptr)函数。其执行的程序如图1・5所示。^include^include"子程序传入参数a,b返回a+b和a-b的值次/inr*FuncrionReturn(inra,intb){int*p;需强制转换*//*左动态内存区中申请2个int型的存储空间,由于malloc返回的是空指针,p=(int*)malloc(sizeof(int)*2);*p=a+b;*(p+l)=a-b;returnp;}inrmainO{intx,y;int

7、*ptr;//定义一个指针”printf(^Pleaseinputrwovaluer,);scanf&x);scanf&y);ptr=FuncrionRerurn(x,y);printf(nx=%dfx);printf(,fv=%dy);printf(n*ptr=%d*ptr);printf(”*(ptr+l)=%dM,*(ptr+1));free(ptr);7/释放所申请的因吞空向return0;}图1.5程序示例执行结果如下图1.6所示。»wC:UsersF

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

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

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