【问题标题】:Returning two values at the same time in a function [duplicate]在函数中同时返回两个值[重复]
【发布时间】:2015-10-31 18:11:01
【问题描述】:

如何在 C 编程语言的一个函数中同时返回两个整数类型值,还是应该编写两个不同的函数?

【问题讨论】:

  • 这种答案用google很容易找到。

标签: c function return-value multiple-return-values


【解决方案1】:

两个不同的函数或通过引用传递参数。

例如

void someFunc(int* outParam1, int* outParam2)
{
    if (outParam1 != NULL) {
        *outParam1 = 42;
    }
    if (outParam2 != NULL) {
        *outParam2= 13;
    }
}

【讨论】:

  • 你的意思是通过指针
  • C 中的实现是“按指针传递”,但编程技术的名称更普遍地称为“按引用传递”。
【解决方案2】:

您可以创建一个struct,其中有两个整数,然后将这个struct 作为函数的结果返回。

在像 C 这样的语言中,您可以像这样将数据存储在 struct 中:

struct foo {
 int x;
 int y;
}

【讨论】:

  • 你的意思是用“struct”这个词来使用数组吗?
  • 请用英文。 @eestudent
  • 不,他的意思是结构。
【解决方案3】:

如果返回它们不是强制性的并且您可以接受使用指针,它遵循一种可能的方法:

void your_function(/* some other parameters */ int *ret1, int *ret2) {
    int first_value, second_value;
    // do whatever you want there
    *ret1 = first_value; // first_value is the first value you want to return, quite obvious
    *ret2 = second_value; // still obvious
}

然后,您可以按如下方式调用它:

// somewhere
int r1, r2;
your_function(/* other parameters */ &r1, &r2);
// here you can use "returned" values r1, r2

【讨论】:

    【解决方案4】:

    在 C 中,函数只能返回一个值。 您可以通过地址将变量传递给函数并使用函数对其进行修改。

    #include <stdio.h>
    
    int returnTwoInt(int *var2)
    {
        *var2 = 2;
        return 1;
    }
    
    int main()
    {
        int var2 = 0;
        int var1 = returnTwoInt(&var2);
    
        printf("%d %d\n", var1, var2);
    
        return 0;
    }
    

    【讨论】:

      【解决方案5】:

      你可以使用任何一种方式-

      使用struct 并返回struct variable

      或者

      使函数用指针处理参数。
      前-

      void f1(int *x, int *y){
      
      *x  = 1;
      *y  = 2;
      
       }
      
      int main(int argc, char* argv[]) {
      int x,y;
      f1(&x, &y);
      printf("%d %d",x,y);
      return 0;
       }
      

      【讨论】:

        猜你喜欢
        • 2011-04-18
        • 2011-03-09
        • 2016-03-16
        • 2016-07-11
        • 1970-01-01
        • 2013-11-13
        • 2013-02-28
        • 1970-01-01
        • 2014-09-12
        相关资源
        最近更新 更多