📜  如何从C或C ++中的函数返回多个值?(1)

📅  最后修改于: 2023-12-03 15:23:47.245000             🧑  作者: Mango

如何从C或C++中的函数返回多个值?

在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

以上三种方式各有优缺点,需要根据具体情况选择。