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

慕斯王
TA貢獻1864條經(jīng)驗 獲得超2個贊
Option 1
:使用int和string聲明一個struct并返回一個struct變量。
struct foo { int bar1; char bar2[MAX];};struct foo fun() { struct foo fooObj; ... return fooObj;}
Option 2
:您可以通過指針傳遞兩個中的一個,并通過指針更改實際參數(shù),并像往常一樣返回另一個:
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
:類似于選項2.您可以通過指針傳遞兩個并從函數(shù)中返回任何內(nèi)容:
void fun(char **param1,int *param2) { strcpy(*param1,"...."); *param2 = /* some calculated value */}

海綿寶寶撒
TA貢獻1809條經(jīng)驗 獲得超8個贊
由于您的一個結(jié)果類型是一個字符串(并且您使用的是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ù)中進行分配,而不是在函數(shù)本身內(nèi)部進行分配,這樣您就可以對不同的分配策略盡可能地開放。
- 3 回答
- 0 關(guān)注
- 844 瀏覽
添加回答
舉報
0/150
提交
取消