【发布时间】:2011-01-02 13:29:09
【问题描述】:
如何从一个函数返回多个值?
【问题讨论】:
-
对于 C、C++ 和其他语言,SO 上已经有许多重复项,例如can a function return more than one value?
标签: c
如何从一个函数返回多个值?
【问题讨论】:
标签: c
一个函数只能有一个返回值。您可以将多个值打包成复合数据类型(例如结构),也可以通过函数参数返回值。当然,这样的参数必须使用调用者声明的内存指针来传递。
【讨论】:
像这样声明方法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 的任何值都将在函数返回后可用。
返回具有多个成员的结构。
【讨论】:
在 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);
【讨论】:
您不能从函数返回超过 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;
}
【讨论】:
函数可以返回数组或列表
【讨论】: