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

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

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

在 C 和 C++ 中,有时我们需要从函数中返回多个值,而不是只返回一个值。有几种方式可以实现这一点,让我们一一了解它们。

1. 通过指针参数返回多个值

我们可以通过指针参数将多个值返回给调用方。例如,以下代码演示如何将两个整数从函数中返回:

void get_values(int *a, int *b) {
    *a = 10;
    *b = 20;
}

int main() {
    int x, y;
    get_values(&x, &y);
    printf("x = %d, y = %d\n", x, y); // Output: x = 10, y = 20
    return 0;
}

注意,在上述示例中,访问这两个整数的方法是使用指针。指针参数应该总是使用指针访问它们所指向的值。

2. 通过结构体返回多个值

我们可以使用结构体从函数中返回多个值。这是一种比使用指针更好的方法,因为它允许我们在一个结构体中组织所有返回值。

以下代码演示如何使用结构体将两个整数从函数中返回:

struct values {
    int x;
    int y;
};

struct values get_values() {
    struct values v = {10, 20};
    return v;
}

int main() {
    struct values result = get_values();
    printf("x = %d, y = %d\n", result.x, result.y); // Output: x = 10, y = 20
    return 0;
}

在上面的示例中,结构体的字段 xy 存储了返回的整数。

3. 通过数组返回多个值

我们还可以使用数组从函数中返回多个值。以下代码演示如何将两个整数从函数中返回:

void get_values(int values[]) {
    values[0] = 10;
    values[1] = 20;
}

int main() {
    int result[2];
    get_values(result);
    printf("x = %d, y = %d\n", result[0], result[1]); // Output: x = 10, y = 20
    return 0;
}

在上面的示例中,函数 get_values 接受一个整数数组,并将两个整数存储在该数组中。

以上就是在 C 或 C++ 中从函数中返回多个值的几种方法。每种方法都有其优缺点,具体使用哪一种取决于情况。