如何从C中的函数返回多个值?如果我有一个产生结果int和结果的函数,我该string如何从函数中返回它们?据我所知,我只能返回一个东西,由函数名前面的类型决定。
3 回答
拉风的咖菲猫
TA贡献1995条经验 获得超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 */}
慕村9548890
TA贡献1884条经验 获得超4个赞
由于您的一个结果类型是一个字符串(并且您使用的是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 关注
- 405 浏览
添加回答
举报
0/150
提交
取消
