c语言return能不能有2个以上返回值

c语言return能不能有2个返回值 比如说return(a,b)
2025-03-29 04:59:58
推荐回答(3个)
回答(1):

1 return只能返回一个变量,但该变量里是可以包含多个值的,即能满足"有2个以上返回值"的要求

2 方法

    采用数组或结构体等复合数据类型来作为函数的返回值类型

3 示例

#include
#include

//方法1: 返回一个包含两个值的数组
int* fun1(){
int *result = (int*)malloc(2 * sizeof(int));
result[0] = 5;
result[1] = 6;
return result;
}
//方法2: 返回一个包含两个成员的结构体
struct Jiegouti{
int a;
int b;
};
struct Jiegouti fun2(){
return{ 5, 6 };
}

int main(){
int *res1 = fun1();
struct Jiegouti res2 = fun2();
printf("%d %d\n", res1[0], res1[1]);
printf("%d %d\n", res2.a, res2.b);

free(res1);
getchar();
return 0;
}

4 运行结果

回答(2):

C系列语言是不能的,只能返回一个返回值。 但纠正一下三楼的说法,不是所有语言都是这样,比如matlab就可以返回多个。 如果在C++语言中需要返回多个值可以有以下三种方法: 1、返回一个数组的首地址,那么可以把整个数组的元素返回。 例如: double* a; a=f(); double* f() { b=(double*)malloc(8*2); b[0]=1; b[1]=2; return b; } 但是多次调用还要考虑释放内存问题 2、传入指针 例如: double a[2]; f(a) void f(double *a) { a[0]=1; a[1]=2; } 3、输入引用,可以返回不同类型变量 例如: int a; double b; f(a,b) void f(int &a,double &b) { a=1; b=2; }

回答(3):

不是,要想返回2个以上返回值,建议返回值用数组或者参数用指针模式,直接改写