c語言調用函數返回值
⑴ 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 語句後的其他語句就都不會執行了。
⑵ C語言函數調用返回問題
一、return命令的含義
return命令的意思是返回調用者百。如果return後面有值(如你函數中的10),則將該值返回給調用者。
但是,在調用者函數(度如:main)中,如果想得到f()函數的返回值,需要有個變數來接收這個值,否則,這個數值將被程序忽略。
二、變數的定義、賦值與引用問
int main(void)
{
int i; //此時的i只是定義一個變數,變數是用來存儲數據的。好比你想裝東西,指定了一個箱子,可是現在箱子中沒有東西(也可能這個箱子曾經被人用過,裡面還有些垃圾答---隨機值)
f(i); //函數f()引用了i變數,,但是i這個在f()中並沒有發生變化(即使變化也不會影響到i,這里又涉及到實參與形參的問題內,先不講),所以i還是個空箱子
printf("%d\n", i); //此時想輸出i的數容值,因為是個隨機值(空箱子),當然不能輸出你想要的10了。 printf("%d\n", f(i)); //直接把函數返回的值,輸出出來,可以看到10
return 0;
}
⑶ c語言中調用函數的返回值,如果是數組,主函數要輸出這個數組怎麼實現啊
用指針,另外保存數據的變數退出函數時不得消失。
例如:
#include<stdio.h>
int * fun(int n)
{
int i;
static int a[100]; // 這里用static
for (i=0;i<n;i++) a[i]=i;
return &a[0];
}
void main()
{
int i,n=5;
int *p; // 聲明指針
p = fun(n); // 返回指針
for (i=0;i<n;i++) printf("%d ",p[i]); // 把 p 看成數組來輸出
}
得 0 1 2 3 4
(3)c語言調用函數返回值擴展閱讀:
注意事項
1、數組宏棚的維度必須是一個常蔽段則量表達式
int main(void)
{
constexpr int i = 20;
int j = 5;//不是常量表達式
int arr1[i];//正確
int arr2[j];//錯誤
system("燃宏pause");
return 0;
}
2、默認情況下,數組的元素被默認初始化。
而且需要注意的是,和內置類型的變數一樣,如果在函數內部定義了某種內置類型的數組,那麼默認初始化會令數組有未定義的值。
⑷ c語言中,函數返回值怎麼用
return後接數蔽一個值。 在調用這個函數的函數裡面,調用它的時候希望獲得一個值,如果不希望獲得這個值的時候,用void聲明就好。如果需要,比如說需要得到一個整形值 就聲明 int func() 在調用它的比如main裡面 func()的作用就可以相當於一個int型常數 比如外面定義了 int max(int a,int b) { return a>b?a:b; } 主函數裡面是 main() { int A; A=max(1,2); } 這時候就是通過max計算 1>2 則return 一個1 ,謹畢孫1<2 則return一個2。很明顯1<2 所以這里max(1,2)就會return 一個 2 這時候主函數里的max(1,2)就相當於一個常數 2 A=max(1,2)的作祥鏈用就相當於A=2 這個意思。
⑸ C語言函數調用:關於錯誤碼和返回值傳遞的幾個小思考
C 語言函數調用方式多樣,涉及錯誤碼和返回值傳遞的思考主要集中在參數和返回值如何更高效合理地傳遞信息。
假設有一個演算法函數,輸入兩個整型參數,輸出一個整型結果,並且輸出一個錯誤代碼。
第一種方式:全部參數傳遞。函數定義時,所有信息通過參數傳遞,函數簽名的返回類型為 void,調用者需定義接收變數。
優點:統一調用形式,適應各種參數類型。
缺點:調用者需額外定義接收變數,顯得冗餘。
第二種方式:返回值表示錯誤碼。將 err_code 參數通過函數返回值賦值給調用者,與 POSIX 風格相仿。
優點:函數調用簡潔,適用於不常檢查錯誤碼的場景。
第三種方式:返回值表示輸出結果。類似 Unix 風格,通過函數返回值傳遞結果。
缺點:同樣需要定義接收變數 err_code,適用於結果和錯誤碼都需關注的場景。
總結:三種方式並無好壞之分,取決於編碼習慣與具體需求。
函數輸出結果為結構體時,需考慮結構體類型與調用方式的匹配,以實現高效合理的信息傳遞。