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

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

如果我有一个产生结果int和结果的函数,我该string如何从函数中返回它们?

据我所知,我只能返回一个东西,由函数名前面的类型决定。


慕沐林林
浏览 464回答 3
3回答

临摹微笑

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

由于您的一个结果类型是一个字符串(并且您使用的是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);通常,更喜欢在调用函数中进行分配,而不是在函数本身内部进行分配,这样您就可以对不同的分配策略尽可能地开放。
打开App,查看更多内容
随时随地看视频慕课网APP