如何實(shí)現(xiàn)一個(gè)子函數(shù)返回多個(gè)值

如何實(shí)現(xiàn)一個(gè)子函數(shù)返回多個(gè)值

ID:41727492

大?。?28.74 KB

頁數(shù):4頁

時(shí)間:2019-08-30

如何實(shí)現(xiàn)一個(gè)子函數(shù)返回多個(gè)值_第1頁
如何實(shí)現(xiàn)一個(gè)子函數(shù)返回多個(gè)值_第2頁
如何實(shí)現(xiàn)一個(gè)子函數(shù)返回多個(gè)值_第3頁
如何實(shí)現(xiàn)一個(gè)子函數(shù)返回多個(gè)值_第4頁
資源描述:

《如何實(shí)現(xiàn)一個(gè)子函數(shù)返回多個(gè)值》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、如何實(shí)現(xiàn)一個(gè)子程序返回多個(gè)返回值我們知道,在C語言中,子函數(shù)可以有零個(gè)或者一個(gè)返回值,那么當(dāng)我的子程序中產(chǎn)生了兩個(gè)及以上的數(shù)值需要傳遞給主函數(shù)或者其它的函數(shù),那么該怎么辦呢?首先第一種方法是采用全局變量,那么在子程序中改變?nèi)肿兞康闹?,再在其它函?shù)中使用。該方法的確可行,但全局變量使用過多會(huì)使程序顯得凌亂,除開發(fā)者木身外,不便于閱讀;其次采用全局變量時(shí)占用內(nèi)存會(huì)多,而且移植不方便。那么到底該如何實(shí)現(xiàn)一個(gè)子程序返回多個(gè)值,可以采用以下方法:第一種:釆用數(shù)組的形式,把需要返回的數(shù)值存放在數(shù)組中,然后在執(zhí)行程序中定義數(shù)組,傳遞指針。具體如下圖1.1#include/

2、*字程序傳入?yún)⑺抋,b返回a+b和a-b的值夬/voidFunctionReturnl(inta,intb,int*s){s[0二二a+b;s[l]=a-b;}intmain(){intx,y;intMaxMin[2];//定義一個(gè)數(shù)組,用于保存函數(shù)的返回值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程序執(zhí)行的結(jié)果演示執(zhí)行結(jié)果如下圖1.2第二種:釆用結(jié)構(gòu)體傳遞,即把主程序結(jié)構(gòu)體的首地址傳遞給調(diào)用程序結(jié)構(gòu)體的首地址。其程序如圖1.3所示。^include/*說明一個(gè)結(jié)構(gòu)類型★/typedefstructfunrerurn{intsum;intSubtract;}Fun_return;★孑程序傳入?yún)?shù)a,b返回a+b和a-b的值★Fun_returnFunctionReturn2(inta,intb){,Fun_returnValue;//定義一個(gè)結(jié)構(gòu)體Valu

4、e.sum=a+b;//給結(jié)構(gòu)體的兩個(gè)元素賦值returnValue;//返固結(jié)構(gòu)體的名稱,實(shí)際返回的是結(jié)構(gòu)體的首地址}intmainO{intx,y;Fun_returnValueReal;主程序中定義一個(gè)結(jié)構(gòu)printf(,fPleaseinputtwovalue,f);scanf&x);scanf(,f%dr,&y);ValueReal=FunctionReturn2(x,y);把主程序結(jié)構(gòu)的地址傳遞過來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程序示例程序的執(zhí)行結(jié)果如圖1.4所示。廠wC:UsersFangLeyunDe5ktop_函數(shù)…Pleaseinputtwovalue8025x=80y=25UalueReal.sum=105UalueReal.Subtract=55Pressanykeytocontinue圖1.4執(zhí)行結(jié)果第三種:通過臨時(shí)分配內(nèi)存來實(shí)現(xiàn)。即在子程序中開辟一個(gè)動(dòng)態(tài)存儲(chǔ)區(qū),用來保存變量,然后再主程序中調(diào)用,再釋放空間。需要注意的是調(diào)用malloc()函數(shù)必須包含頭文件t

6、tinclude,而JL使用完后,必須釋放所申請(qǐng)的動(dòng)態(tài)存儲(chǔ)空間,調(diào)用free(void*ptr)函數(shù)。其執(zhí)行的程序如圖1?5所示。^include^include"子程序傳入?yún)?shù)a,b返回a+b和a-b的值次/inr*FuncrionReturn(inra,intb){int*p;需強(qiáng)制轉(zhuǎn)換*//*左動(dòng)態(tài)內(nèi)存區(qū)中申請(qǐng)2個(gè)int型的存儲(chǔ)空間,由于malloc返回的是空指針,p=(int*)malloc(sizeof(int)*2);*p=a+b;*(p+l)=a-b;returnp;}inrmainO{intx,y;int

7、*ptr;//定義一個(gè)指針”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/釋放所申請(qǐng)的因吞空向return0;}圖1.5程序示例執(zhí)行結(jié)果如下圖1.6所示。?wC:UsersF

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。