【问题标题】:pointers and functions指针和函数
【发布时间】:2011-01-02 13:29:09
【问题描述】:

如何从一个函数返回多个值?

【问题讨论】:

标签: c


【解决方案1】:

一个函数只能有一个返回值。您可以将多个值打包成复合数据类型(例如结构),也可以通过函数参数返回值。当然,这样的参数必须使用调用者声明的内存指针来传递。

【讨论】:

  • 查看参考参数的概念。这可能会有所帮助
  • @programmer 这是 C 而不是 C++
【解决方案2】:

1

像这样声明方法foo (char *msg, int *num, int *out1, int *out2); 并这样称呼它

int i=10;
char c='s';
int out1;
int out2;
foo(&c,&i,&out1,&out2);

现在你在函数中分配给 out1 和 out2 的任何值都将在函数返回后可用。

2

返回具有多个成员的结构。

【讨论】:

    【解决方案3】:

    在 C 语言中,通常会使用指针:

    int foo(int x, int y, int z, int* out);
    

    这里,函数返回一个值,并使用out“返回”另一个值。调用此函数时,必须为out 参数提供一个指向已分配内存的指针。函数本身可能看起来像这样:

    int foo(int x, int y, int z, int* out) {
        /* Do some work */
        *out = some_value;
        return another_value;
    }
    

    并称它为:

    int out1, out2;
    out1 = foo(a, b, c, &out2);
    

    【讨论】:

      【解决方案4】:

      您不能从函数返回超过 1 个值。但是有办法。由于您使用的是 C,因此您可以使用指针。

      例子:

      // calling function:
      foo(&a, &b);
      printf("%d %d", a, b);
      // a is now 5 and b is now 10.
      
      // called function:
      void foo(int* a, int* b) {
         *a = 5;
         *b = 10;
      }
      

      【讨论】:

        【解决方案5】:

        函数可以返回数组或列表

        【讨论】:

          猜你喜欢
          • 2011-12-13
          • 2018-09-12
          • 2011-04-26
          • 2012-10-03
          • 1970-01-01
          • 1970-01-01
          • 2011-08-30
          • 1970-01-01
          • 2021-11-28
          相关资源
          最近更新 更多