c語(yǔ)言函數(shù)只能最多有一個(gè)返回值。我們以一個(gè)數(shù)據(jù)運(yùn)算函數(shù)作為實(shí)例講解:
創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的察哈爾右翼前網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
使用指針返回額外數(shù)據(jù):定義指針參數(shù),將結(jié)果通過(guò)指針返回。
如果有很多類型相同的數(shù)據(jù),如何返回?cái)?shù)組呢?c語(yǔ)言也只能借助指針返回?cái)?shù)組。
使用結(jié)構(gòu)體返回:如果返回多個(gè)數(shù)據(jù),并且各個(gè)數(shù)據(jù)類型都不相同。那么只能通過(guò)結(jié)構(gòu)體返回。
使用結(jié)構(gòu)體指針返回:直接返回結(jié)構(gòu)體,程序執(zhí)行效率會(huì)受到影響。因?yàn)樾枰獜?fù)制結(jié)構(gòu)體數(shù)據(jù),如果結(jié)構(gòu)體數(shù)據(jù)比較大,復(fù)制操作會(huì)損耗程序性能。
通過(guò)使用結(jié)構(gòu)體指針,我們也可以返回多個(gè)數(shù)據(jù)結(jié)果。
在c++中,除了使用指針,通常使用引用返回多個(gè)數(shù)據(jù)。與指針相比,使用引用時(shí)不用擔(dān)心函數(shù)調(diào)用者傳入不符合預(yù)期的指針。
所謂返回值,就是人們想要知道函數(shù)或者程序所得到 的結(jié)果而設(shè)計(jì)的函數(shù)或者程序結(jié)束時(shí)給出一個(gè)值。比如:我們編寫一個(gè)加法函數(shù),肯定想知道加完過(guò)后的結(jié)果是什么,那么我們就指定這個(gè)結(jié)果為該加法程序的返回值。
關(guān)于返回值的返回:
1、函數(shù)調(diào)用語(yǔ)句本身代表其返回值:例如:fun(a);那么“fun(a)”就是這個(gè)返回值。
2、可以把返回值存到對(duì)應(yīng)類型的變量之中。例如:int a=fun(b);
3、返回值是多種多樣的,可以是各種各樣的,int short char double 等等,還可以是指針或者結(jié)構(gòu)體。在數(shù)據(jù)結(jié)構(gòu)的二叉樹部分,某一個(gè)函數(shù)的返回值是一個(gè)帶有兩個(gè)指針的結(jié)構(gòu)體。
return后接一個(gè)值。\r\n在調(diào)用這個(gè)函數(shù)的函數(shù)里面,調(diào)用它的時(shí)候希望獲得一個(gè)值,如果不希望獲得這個(gè)值的時(shí)候,用void聲明就好。如果需要,比如說(shuō)需要得到一個(gè)整形值\r\n就聲明\r\nint func()\r\n在調(diào)用它的比如main里面\r\nfunc()的作用就可以相當(dāng)于一個(gè)int型常數(shù)\r\n比如外面定義了\r\nint max(int a,int b)\r\n{\r\nreturn ab?a:b;\r\n}\r\n主函數(shù)里面是\r\nmain()\r\n{\r\nint A;\r\nA=max(1,2);\r\n}\r\n這時(shí)候就是通過(guò)max計(jì)算 12 則return 一個(gè)1 ,1
回答于?2022-11-16
C/C++不能直接返回一個(gè)數(shù)組。這是由于在C/C++中,數(shù)組不是一種類型,因此不能被直接返回。 在C/C++中,一般有兩種方法來(lái)返回一個(gè)數(shù)組。 第一種方法: 返回一個(gè)指向數(shù)組的指針,例如char (*retArray)[10]聲明了一個(gè)函數(shù)retArray,該函數(shù)可以返回指向具有10個(gè)char元素的數(shù)組例子如下:#include#includeint (*retArray())[10]{int (*a)[10];int i=0;/*動(dòng)態(tài)開辟空間*/ a=calloc(10,sizeof(int));/*賦值*/for(i=0;i10;i++){(*a)[i]=i;}return a;}int main(){int (*b)[10]; /*函數(shù)返回指向數(shù)組的指針*/ b=retArray(); /*打印第一個(gè)元素*/ printf("%d/n",(*b)[0]); /*釋放空間*/free(b);return 0;}第二種方法: 如果你不喜歡用指針的形式返回?cái)?shù)組,那么可以采用返回一個(gè)結(jié)構(gòu)的形式。這種形式相對(duì)較安全,可以避免忘記釋放指針而造成內(nèi)存泄露,也可以避免訪問(wèn)懸掛指針造成的錯(cuò)誤。但缺點(diǎn)是由于結(jié)構(gòu)是先拷貝再返回,因此如果結(jié)構(gòu)較大時(shí),會(huì)影響效率和占用較大內(nèi)存。 例子如下:#includestruct tag{int a[10];}x,y;struct tag retArray(){int i=0;for(i=0;i10;i++) x.a[i]=i;return x;}int main(){struct tag y=retArray(); printf("%d/n",y.a[3]);return 0;}注意:(1)在返回指針時(shí)要切記要避免內(nèi)存泄露和訪問(wèn)懸掛指針。 (2)很多人認(rèn)為指針和數(shù)組等價(jià)的,這是錯(cuò)誤的。int (*a)[10]和int b[10]兩者是不能直接用a=b來(lái)賦值的。在數(shù)組和指針作為函數(shù)參數(shù)傳遞時(shí),二者可以認(rèn)為等價(jià),這是因?yàn)閿?shù)組會(huì)被轉(zhuǎn)化為指針來(lái)傳遞。 (3)返回多維數(shù)組方法類似。
其實(shí)我們也可以把函數(shù)當(dāng)作一個(gè)變量來(lái)看,既然是變量,那一定也可以有類型。還舉最前面的例子,現(xiàn)在要求在main()函數(shù)里輸入一個(gè)整數(shù)作為正方形的邊長(zhǎng),在子函數(shù)里求正方形的面積,然后再在主函數(shù)里輸出這個(gè)面積。
新聞標(biāo)題:c語(yǔ)言怎么讓函數(shù)返回,C語(yǔ)言怎么讓函數(shù)返回多個(gè)值
URL鏈接:http://chinadenli.net/article12/heshgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、微信公眾號(hào)、搜索引擎優(yōu)化、網(wǎng)站收錄、網(wǎng)站制作、用戶體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)