c - 如何从 C 中的函数返回多个值?

标签 c return-value

如果我有一个生成结果 int 和结果 string 的函数,我如何从函数中返回它们?

据我所知,我只能返回一个东西,由函数名前面的类型决定。

最佳答案

我不知道你的 string 是什么,但我假设它管理自己的内存。

您有两个解决方案:

1:返回一个struct,其中包含您需要的所有类型。

struct Tuple {
    int a;
    string b;
};

struct Tuple getPair() {
    Tuple r = { 1, getString() };
    return r;
}

void foo() {
    struct Tuple t = getPair();
}

2:使用指针传递值。

void getPair(int* a, string* b) {
    // Check that these are not pointing to NULL
    assert(a);
    assert(b);
    *a = 1;
    *b = getString();
}

void foo() {
    int a, b;
    getPair(&a, &b);
}

您选择使用哪一个在很大程度上取决于您更喜欢哪种语义的个人偏好。

关于c - 如何从 C 中的函数返回多个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53727424/

相关文章:

c - 定义函数的最大数量

c - 为什么我的代码中出现段错误?

c++ - 如何返回std::pair的内容?

debugging - 如何检查GDB中函数的返回值?

vb6 - 如何从函数返回值

c++ - 手动删除函数返回的指针

c - 在 c 中的 HTTP 响应中使用 fread() 提供文本/html 文件

c - 在没有条件语句的情况下找到更大的数字

c - 使用字符数组进行动态分配

java - 方法返回类型来实现多个接口(interface) - 再次