首先比喻下函數(shù)是什么吧?
網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了甘德免費建站歡迎大家使用!
函數(shù)簡單的說就是一個黑箱子似的制造機器,你給他原料(輸入?yún)?shù))它給你制造出產(chǎn)品(函數(shù)返回的結果)。
所以函數(shù)的返回值一般就是你想要的結果。當然有些函數(shù)沒有返回值,比如輸出一句話的函數(shù),這函數(shù)就沒有返回值。c++用void型表示。但是求兩個數(shù)的最大值函數(shù)int
max(int
a,
int
b)的返回值就可以是你求的最大的值。
int
max(int
a,
intb)
{
if(ab)
{
return
a;
}
else
{
return
b;
}
}
其中return返回的值就是函數(shù)的返回值。
方法一:設置全局變量,這樣在形參中改變?nèi)肿兞?,在實參中也會有效。所以可以在形參中改變多個全局變量的值,那么在實參中就相當于返回多個值。
方法二:如果用數(shù)組名作為形參,那么改變數(shù)組內(nèi)容,比如排序,或者進行加減運算,回到實參時依然是有效的。這樣也會返回一組值。
方法三:可以利用指針變量,這個原理和方法二是一樣的,因為數(shù)組名本身就是數(shù)組首元素的地址。就不多說了。 用結構體封裝不同類型數(shù)據(jù),或者用數(shù)組表示同類型數(shù)據(jù),然后返回結構體指針或者數(shù)組名,本質(zhì)都是用指針來返回多個參數(shù)
方法四:如果學過C++,可以引用參數(shù)
樓下真牛逼,恐怕是怪獸大學畢業(yè)的吧。
推薦做法
把函數(shù)聲明寫成這樣int func(int* ret1,int* ret2)
這樣就可以用ret1和ret2來返回信息了,事實上,scanf函數(shù)就是這樣的一個例子。
方案二呢,可以將多個返回值打成一個結構體,然后作處理,其實這種方式不怎么好,因為結構里的兩個變量很可能沒什么聯(lián)系,而你卻把他們打包在一起。其實,等你學得好了,你會發(fā)現(xiàn)其實還有很多方法都可以達到目的,因為c語言就是如此強大而靈活。最后,警告一下不要用 return a,b之類的語句。因為a,b會被解釋為一個逗號表達式,它最終的值就是b的值,所以return a,b;就等同于return b;