如何從C中的函數(shù)返回多個(gè)值?如果我有一個(gè)產(chǎn)生結(jié)果int和結(jié)果的函數(shù),我該string如何從函數(shù)中返回它們?據(jù)我所知,我只能返回一個(gè)東西,由函數(shù)名前面的類型決定。
3 回答

臨摹微笑
TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊
Option 1
:使用int和string聲明一個(gè)struct并返回一個(gè)struct變量。
struct foo { int bar1; char bar2[MAX];};struct foo fun() { struct foo fooObj; ... return fooObj;}
Option 2
:您可以通過指針傳遞兩個(gè)中的一個(gè),并通過指針更改實(shí)際參數(shù),并像往常一樣返回另一個(gè):
int fun(char **param) { int bar; ... strcpy(*param,"...."); return bar;}
要么
char* fun(int *param) { char *str = /* malloc suitably.*/ ... strcpy(str,"...."); *param = /* some value */ return str;}
Option 3
:類似于選項(xiàng)2.您可以通過指針傳遞兩個(gè)并從函數(shù)中返回任何內(nèi)容:
void fun(char **param1,int *param2) { strcpy(*param1,"...."); *param2 = /* some calculated value */}

RISEBY
TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個(gè)贊
由于您的一個(gè)結(jié)果類型是一個(gè)字符串(并且您使用的是C而不是C ++),我建議將指針作為輸出參數(shù)傳遞。使用:
void foo(int *a, char *s, int size);
并稱之為:
int a;char *s = (char *)malloc(100); /* I never know how much to allocate :) */foo(&a, s, 100);
通常,更喜歡在調(diào)用函數(shù)中進(jìn)行分配,而不是在函數(shù)本身內(nèi)部進(jìn)行分配,這樣您就可以對不同的分配策略盡可能地開放。
- 3 回答
- 0 關(guān)注
- 484 瀏覽
添加回答
舉報(bào)
0/150
提交
取消