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 - 简单的 base64 解码不起作用 :(

将 SIGNED 分数转换为 UNSIGNED 定点以进行加法和乘法

c - char 数组中的终止符

c - 如何在 Linux 中读取和写入 fifo(命名管道)?

sql - 出错时从存储过程返回值

c - 将视频文件的每一帧映射到指向原始帧的 .png

vba - 返回值指示通过 ADO/VBA 更新 SQL Server 存储过程的成功/失败

Ruby 方法在执行条件后返回 nil 值

javascript:使用 IF 语句而不是 OR 设置默认值

r - 返回列表总和 : Error: invalid 'type' (list) of argument