c語言多個返回值
1. c語言中調用函數如何返回多個值
建立數組,返回指針。
在要返回的兩個值類型相同時,可以用創建數組的方式,將要返回的值存在數組中,並返回數組首地址,這樣就可以實現返回兩個值的效果。需要注意的是,要返回數組首地運首掘址,那麼返回的值不可以是局部變數,有如下幾種是可以的:
a) 使用靜態局部變數存儲,並返回地址;
b) 使用全局變數存儲,返回地址;
c) 函數中動態分配內存,並返回申請到的地址,此種方法需要注意,在使用後需要釋放;
d) 在參數中傳入數組地址,並返回。即返回的實際上是主調函數中的變數地址。
(1)c語言多個返回值擴展閱讀
通常我們希望通過函數調用使主調函數能得到一個確定的值,這就是函數的返回值。函數的返回值是通過函數中的 return 語句獲得的。return 語句將被調函數中的一個確定的值帶回到主調函數中,供主調函數使用。
函數的返回值類型是在定義函數時指定的。return 語句中表達式的類型應與定義函數時指芹氏定的返回值類型一致。如果不一致,則以函數定義時的返回值類型為准,對 return 語句中表達式的類型自動進行轉換,然後再將它返回給主調函數使用。
在調用函數時,如果需要從被調函數返回一個值供主調旁核函數使用,那麼返回值類型必須定義成非 void 型。此時被調函數中必須包含 return 語句,而且 return 後面必須要有返回值,否則就是語法錯誤。
如果函數有返回值,那麼 return 語句後面的括弧可以不要,比如「return(z);」等價於「return z;」。若不需要返回值則可以不要 return 語句。
需要強調的是,一個函數中可以有多個 return 語句,但並不是所有的 return 語句都起作用。執行到哪個 return 語句,就是哪個 return 語句起作用,該 return 語句後的其他語句就都不會執行了。
2. C語言中主函數是否有返回值,如果有,最多有幾個
c語言中, 只要是函數,返回值只能有一個,要想使用這個函數同時改變多個數值,可以使用指針。主函數也不例外,c語言中主函數一般是void類型,即無返回值,如果你是軟體專業,後續學習的c++將介紹有返回值的main主函數,我也是軟體專業,有問題可以一起討論,祝你學習順利。
3. C語言中return語句怎樣返回兩個或多個值
return語句不能直接返回多個值。如果想通過函數內部返回多個值的話,可是使用以下代碼:
#include<stdio.h>
//定義一個s
typedefstruct_a{
inta;intb;
}A,*PA;//函數返回結構體變數,它裡面就可以包含多個值
PAfunc(){
PAa=(A*)malloc(sizeof(A));a->a=2;
a->b=3;returna;
}intmain()
{PAtest=func();
printf("%d%d ",test->a,test->b);
deletetest;return0;
}
(3)c語言多個返回值擴展閱讀
#include <stdio.h>
void min_max(int *ptr,int n)
{
int *temp;
for(int i = 0; i < 5; i++)
{
if(*(ptr) > *(ptr+i))
{
*temp = *(ptr);
*(ptr) = *(ptr+i);
*(ptr+i) = *temp;
}
if(*(ptr + n-1) < *(ptr + i) )
{
*temp = *(ptr+n-1);
*(ptr+n-1) = *(ptr+i);
*(ptr+i) = *temp;
}
}
}
int main()
{
int a[5];
for(int i = 0; i < 5 ; i++)
scanf("%d",&a[i]);
min_max(a,5);
printf("%d %d",a[0], a[4]);
return 0;
}
4. c語言中調用函數如何返回多個值
1、通過使用指針,在函數調用時,傳遞帶有地址的參數,並使用指針更改其值;這樣,修改後的值就會變成原始參數。
5. c語言return能不能有2個以上返回值
1 return只能返回一個變數,但該變數里是可以包含多個值的,即能滿足"有2個以上返回值"的要求
2 方法
採用數組或結構體等復合數據類型來作為函數的返回值類型
3 示例
#include<stdio.h>
#include<malloc.h>
//方法1:返回一個包含兩個值的數組
int*fun1(){
int*result=(int*)malloc(2*sizeof(int));
result[0]=5;
result[1]=6;
returnresult;
}
//方法2:返回一個包含兩個成員的結構體
structJiegouti{
inta;
intb;
};
structJiegoutifun2(){
return{5,6};
}
intmain(){
int*res1=fun1();
structJiegoutires2=fun2();
printf("%d%d ",res1[0],res1[1]);
printf("%d%d ",res2.a,res2.b);
free(res1);
getchar();
return0;
}
4 運行結果
6. c語言函數如何返回多個值
c語言察弊函數只能最多有一個返回值。我們以一個數據運早枯算函數作為實例講解:
使用指針返回額外數據:定義指針參數,將結果通過指針返回。
如果有很多類型相同的數據,如何返回數組呢?c語言也只能藉助指針返回數組。
使用結構體返回:如果返回多個數據,並且各個數據類型都不相敗睜族同。那麼只能通過結構體返回。
使用結構體指針返回:直接返回結構體,程序執行效率會受到影響。因為需要復制結構體數據,如果結構體數據比較大,復制操作會損耗程序性能。
通過使用結構體指針,我們也可以返回多個數據結果。
在c++中,除了使用指針,通常使用引用返回多個數據。與指針相比,使用引用時不用擔心函數調用者傳入不符合預期的指針。