📅  最后修改于: 2023-12-03 15:23:47.245000             🧑  作者: Mango
在C或C++中,函数通常只能返回一个值。如果需要从函数中返回多个值,可以采用以下几种方式。
可以定义一个结构体来存储多个返回值:
#include <stdio.h>
struct MyStruct {
int a;
double b;
};
struct MyStruct func() {
struct MyStruct result;
result.a = 10;
result.b = 3.1415;
return result;
}
int main() {
struct MyStruct ret = func();
printf("%d %f\n", ret.a, ret.b);
return 0;
}
输出结果:
10 3.141500
可以将要返回的值通过指针参数传入,由函数内部修改:
#include <stdio.h>
void func(int *a, double *b) {
*a = 10;
*b = 3.1415;
}
int main() {
int a;
double b;
func(&a, &b);
printf("%d %f\n", a, b);
return 0;
}
输出结果:
10 3.141500
可以将多个返回值打包成一个结构体参数传入,并由函数内部修改:
#include <stdio.h>
struct MyStruct {
int a;
double b;
};
void func(struct MyStruct *result) {
result->a = 10;
result->b = 3.1415;
}
int main() {
struct MyStruct ret;
func(&ret);
printf("%d %f\n", ret.a, ret.b);
return 0;
}
输出结果:
10 3.141500
以上三种方式各有优缺点,需要根据具体情况选择。