在C中,正常情況下,我們只能從函數(shù)中返回一個值。但在有些情況下,我們需要從函數(shù)中返回多個值,此時使用數(shù)組或指針能夠很好地完成這樣的任務(wù)。這里是一
創(chuàng)新互聯(lián)專注于蘇尼特右企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站建設(shè)。蘇尼特右網(wǎng)站建設(shè)公司,為蘇尼特右等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站制作,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
個示例,這個程序使用一個整型數(shù)組作為參數(shù),并將數(shù)組元素的和與積返回給調(diào)用函數(shù)。下面是C代碼,這是一種常見情況。下面給出實現(xiàn)技巧:
1.
#include
2.
#include
3. int*
Pool(int array[],int size)
4.
{
5.
int *x;
6.
int i=0;
7.
int
a[2]={0,1};
8.
for(i=0;i
9.
{
10.
a[0]+=array[i];
// 存儲數(shù)組元素值的和
11.
a[1]*=array[i];
// 存儲數(shù)組元素值的積
12.
}
13. //
將數(shù)組的基地址賦值給整型指針
14.
x=a[0];
15. //
返回整個數(shù)組
16.
return x;
17. }
18.
19. int main()
20. {
21. int
a[]={1,2,3,4};
22. int
*c; c = Pool(a,4);
23.
printf("Sum = %d\nProduct = %d\n",c[0],c[1]);
24.
getch();
25.
return 0;
26. }
這樣,我們就知道如何使用數(shù)組和指針從C函數(shù)中返回多個值。在很多情況下你會發(fā)現(xiàn)這個技巧很有用。
方法一:設(shè)置全局變量,這樣在形參中改變?nèi)肿兞?,在實參中也會有效。所以可以在形參中改變多個全局變量的值,那么在實參中就相當于返回多個值。
方法二:如果用數(shù)組名作為形參,那么改變數(shù)組內(nèi)容,比如排序,或者進行加減運算,回到實參時依然是有效的。這樣也會返回一組值。
方法三:可以利用指針變量,這個原理和方法二是一樣的,因為數(shù)組名本身就是數(shù)組首元素的地址。就不多說了。 用結(jié)構(gòu)體封裝不同類型數(shù)據(jù),或者用數(shù)組表示同類型數(shù)據(jù),然后返回結(jié)構(gòu)體指針或者數(shù)組名,本質(zhì)都是用指針來返回多個參數(shù)
方法四:如果學(xué)過C++,可以引用參數(shù)
函數(shù)形參x和y和實參a和b是兩組不同的變量,交換x和y的值不影響a和b的值。
你調(diào)用了a()之后,函數(shù)a()會返回一個5,但你沒有將其返回值保存起來,所以這個返回值會被拋棄。要么用一個變量將函數(shù)a的返回值保存起來:int b=a(),要么將函數(shù)的返回值作為另一個函數(shù)的參數(shù)輸入:printf("%d",a())。
自定義函數(shù)的返回值不是必須的,如果函數(shù)運行結(jié)束后需要一個結(jié)果給主調(diào)函數(shù)使用那就可以設(shè)置返回值,如果只是需要函數(shù)的運行過程,過程結(jié)束后沒有其他要求就不用返回值