如何从C中的函数返回多个值?如果我有一个产生结果int和结果的函数,我该string如何从函数中返回它们?据我所知,我只能返回一个东西,由函数名前面的类型决定。
3 回答
临摹微笑
TA贡献1982条经验 获得超2个赞
Option 1
:使用int和string声明一个struct并返回一个struct变量。
struct foo { int bar1; char bar2[MAX];};struct foo fun() { struct foo fooObj; ... return fooObj;}
Option 2
:您可以通过指针传递两个中的一个,并通过指针更改实际参数,并像往常一样返回另一个:
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.您可以通过指针传递两个并从函数中返回任何内容:
void fun(char **param1,int *param2) { strcpy(*param1,"...."); *param2 = /* some calculated value */}
RISEBY
TA贡献1856条经验 获得超5个赞
由于您的一个结果类型是一个字符串(并且您使用的是C而不是C ++),我建议将指针作为输出参数传递。使用:
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);
通常,更喜欢在调用函数中进行分配,而不是在函数本身内部进行分配,这样您就可以对不同的分配策略尽可能地开放。
- 3 回答
- 0 关注
- 463 浏览
添加回答
举报
0/150
提交
取消