为了账号安全,请及时绑定邮箱和手机立即绑定

请问如何从C中的函数返回多个值?

请问如何从C中的函数返回多个值?

C
慕沐林林 2019-11-23 16:15:03
如何从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 */}



查看完整回答
反对 回复 2019-11-24
?
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);

通常,更喜欢在调用函数中进行分配,而不是在函数本身内部进行分配,这样您就可以对不同的分配策略尽可能地开放。



查看完整回答
反对 回复 2019-11-24
  • 3 回答
  • 0 关注
  • 463 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信