c語言函數返回兩個值
『壹』 c語言中調用函數如何返回多個值
1、通過使用指針,在函數調用時,傳遞帶有地址的參數,並使用指針更改其值;這樣,修改後的值就會變成原始參數。
『貳』 編程中C語言函數想返回2個值該怎麼辦
樓下真牛逼,恐怕是怪獸大學畢業的吧。
推薦做法
把函數聲明寫成這樣int func(int* ret1,int* ret2)
這樣就可以用ret1和ret2來返回信息了,事實上,scanf函數就是這樣的一個例子。
方案二呢,可以將多個返回值打成一個結構體,然後作處理,其實這種方式不怎麼好,因為結構里的兩個變數很可能沒什麼聯系,而你卻把他們打包在一起。其實,等你學得好了,你會發現其實還有很多方法都可以達到目的,因為c語言就是如此強大而靈活。最後,警告一下不要用 return a,b之類的語句。因為a,b會被解釋為一個逗號表達式,它最終的值就是b的值,所以return a,b;就等同於return b;
『叄』 C語言函數想要返回兩個值,怎麼做
單獨返回兩個值好像不行的,只能通過指針改變兩個值,或者返回一個數組也行
『肆』 c語言中在一個自定義函數中怎麼返回兩個值
方法一:設置全局變數,這樣在形參中改變全局變數,在實參中也會有效。所以可以在形參中改變多個全局變數的值,那麼在實參中就相當於返回多個值。
方法二:如果用數組名作為形參,那麼改變數組內容,比如排序,或者進行加減運算,回到實參時依然是有效的。這樣也會返回一組值。
方法三:可以利用指針變數,這個原理和方法二是一樣的,因為數組名本身就是數組首元素的地址。就不多說了。 用結構體封裝不同類型數據,或者用數組表示同類型數據,然後返回結構體指針或者數組名,本質都是用指針來返回多個參數
方法四:如果學過C++,可以引用參數
『伍』 C語言中一個函數怎樣返回多個值
方法一:設置全局變數,這樣你在形參中改變全局變數,在實參中也會有效。所以你可以在形參中改變多個全局變數的值,那麼在實參中就相當於返回多個值。
方法二:如果你用數組名作為形參,那麼你改變數組內容,比如排序,或者進行加減運算,回到實參時依然是有效的。這樣也會返回一組值。
方法三:可以利用指針變數,這個原理和方法二是一樣的,因為數組名本身就是數組首元素的地址。就不多說了。
方法四:如果你學過C++,可以引用參數
『陸』 C語言函數返回2個值
首先比喻下函數是什麼吧?
函數簡單的說就是一個黑箱子似的製造機器,你給他原料(輸入參數)它給你製造出產品(函數返回的結果)。
所以函數的返回值一般就是你想要的結果。當然有些函數沒有返回值,比如輸出一句話的函數,這函數就沒有返回值。c++用void型表示。但是求兩個數的最大值函數int
max(int
a,
int
b)的返回值就可以是你求的最大的值。
int
max(int
a,
intb)
{
if(a>b)
{
return
a;
}
else
{
return
b;
}
}
其中return返回的值就是函數的返回值。
『柒』 C語言 如果調用兩個函數 就是返回兩個值
如果使用 return 語句的話,那麼一次函數調用就只能返回一個值;如果想一次函數調用操作就能夠返回兩個值的話,那麼就只能夠通過傳遞指針變數實現。例如下程序:
void mysubcall(int *, char *) ;
void main( )
{
int num = 10 ;
char mystr[20]=「1234567890」;
mysubcall(&num,mystr);
printf(「%d %s\n」,num,mystr);
}
void mysubcall(int * num, char mystr[20])
{
(*num)+=40;
mystr[5]+=5;
}
該子函數返回的就是兩個值:改變後的數字、以及改變後的字元串。
『捌』 C語言中函數調用怎麼返回兩個值
在C語言中,函數只能返回一個值,要返回兩個值,可以改換思路,通過其它方式做到。
1 建立數組,返回指針。
在要返回的兩個值類型相同時,可以用創建數組的方式,將要返回的值存在數組中,並返回數組首地址,這樣就可以實現返回兩個值的效果。
需要注意的是,要返回數組首地址,那麼返回的值不可以是局部變數,有如下幾種是可以的:
a) 使用靜態局部變數存儲,並返回地址;
b) 使用全局變數存儲,返回地址;
c) 函數中動態分配內存,並返回申請到的地址,此種方法需要注意,在使用後需要釋放;
d) 在參數中傳入數組地址,並返回。即返回的實際上是主調函數中的變數地址。
2 建立結構體,返回結構體變數。
將需要返回的值,寫成結構體形式,並返回結構體變數,這樣可以實現一個返回值中含有多組數據。
3 當數據規模較小時,可以採用將小規模數據合並為大規模數據的方式,進行返回。
比如,需要返回兩個char型數據時,可以通過返回一個short數據,高地位分別存儲各自的值。
除以上方法外,還可以不使用返回值的方式,而是通過函數參數傳值,或者全局變數傳值等方式,將要返回的值回傳給主調函數。
『玖』 C語言中return語句怎樣返回兩個或多個值
/*我把樓主的稍微改了一下,一個函數裡面只能有一個return語句,因為程序執行到這個return語句的時候就已經返回的,他後面的語句都不會執行。所以摟主你的max函數中雖然有兩個return,但是後面一個根本就不會執行。要想讓一個函數返回多個值,可以用傳地址來實現,下面是這個程序*/
#include
"stdio.h"
int
max(int
x,int
y,int*
z);//第三個參數傳的是地址用來保存最大值加100
void
main()
{
int
a,b;
int
maxLi
=
0;//保存最大值加100
int
maxNum=
0;//保存最大值
scanf("%d,%d",&a,&b);
maxNum=max(a,b,&maxLi);
/*函數的返回值本身就是最大值,所以可以用一個整形變數來存儲他,而由於第三個參數傳的是maxLi的地值,用來存放最大值加100,他與函數裡面的改變是同步的,所以可以保存而不丟失,這樣兩個數值都得到了*/
printf("Max
is
%d,%d",maxNum,maxLi);
}
int
max(int
x,int
y,int*
z)
{
int
tmp
=
0;
tmp=x>y?
x:y;
*z=tmp+100;
//將tmp+100存到z裡面地值(就是maxLi的地質)所表示的內存
return
tmp;
}
『拾』 c語言一個函數能否有兩個返回值
應該是正確的,因為系統可能把百a,b作為一個逗度號表達式,返回逗號表達式的值問b,不行的話,return
(a.b);試試
你的語句可能正確,答但你想讓它返回a和b不可能,一版個return
語句只返回一個值,執行完權return,程序就結束