有没有办法从C中的函数返回多个变量?

时间:2016-05-09 10:42:22

标签: c function variables

我目前正在使用Python进行长时间的咒语后回到C.我想知道是否有办法在C中返回多个变量的信息。我能想到的最好的方法是返回一个包含变量的结构。这是最好的方式吗?

3 个答案:

答案 0 :(得分:4)

C不支持允许您执行此操作的元组或类似功能。所以,答案很遗憾没有

正如你所说,你可以得到的最接近的是定义你自己的自定义struct,然后可以用它来存储你想要返回的值。

答案 1 :(得分:2)

当多个变量以某种显而易见的方式相互关联时,例如描述坐标的两个变量(x, y)(firstName, lastName, address)联系人定义等等,返回struct的解决方案是一个很好的逻辑选择。

在必须返回多个彼此无关的变量的情况下,更好的方法是为结果传递指针,或选择一个值作为“主要答案”并传递其他值的指针。

标准库中的

strtol函数是“混合”方法的一个示例:返回解析后的值,结束指针设置为传递给它的pointe-to-pointer。

答案 2 :(得分:2)

您可以使用指针作为参数间接执行此操作。 myDivide间接返回除法和模数的结果。

#include <stdio.h>
#include <stdlib.h>

void myDivide(int x, int y, int* div, int* mod);

int main(void) {
    int x = 100;
    int y = 42;
    int div, mod;

    myDivide(x, y, &div, &mod);
    printf("%d / %d = %d\n", x, y, div);
    printf("%d %% %d = %d\n", x, y, mod);

    return (0);
}

void myDivide(int x, int y, int* div, int* mod) {
    *div = x/y;
    *mod = x%y;
}