You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中如何将多个函数的变量传递至另一函数

实现方案:将三个校验函数的返回值传递给result并判断访问权限

第一步:修正校验函数的返回类型

你的checkPOS2函数声明为void但尝试返回int值,这会导致编译错误。需要将checkPOS、checkPOS1、checkPOS2的返回类型都改为int,确保它们能正确返回各自的校验结果(0表示正确,1表示错误)。

修正后的checkPOS2代码:

int checkPOS2(struct Node* n, int pos, int alg, int input) {
    int ret3;

    for (int i = 0; i < pos - 1; i++) {
        n = n->next;
    }

    if (input == n->data[alg]) {
        printf("Numero certo (");
        printf("%d", n->data[0]);
        printf("%d", n->data[1]);
        printf("%d)", n->data[2]);
        ret3 = 0;
    } else {
        printf("Numero errado (");
        printf("%d", n->data[0]);
        printf("%d", n->data[1]);
        printf("%d)", n->data[2]);
        ret3 = 1;
    }
    return ret3;
}

第二步:修改result函数接收三个校验结果

让result函数接收三个int类型参数,计算它们的总和后判断访问权限:

void result(int ret1, int ret2, int ret3) {
    int total = ret1 + ret2 + ret3;
    if (total == 0) {
        printf("Acesso Permitido!");
    } else {
        printf("Acesso Negado!");
    }
    printf(" | 校验结果总和:%d", total);
}

第三步:调用方式

在需要触发校验和权限判断的地方,先调用三个校验函数获取返回值,再传递给result:

// 假设已完成Node初始化及参数准备
int ret1 = checkPOS(/* 传入对应参数 */);
int ret2 = checkPOS1(/* 传入对应参数 */);
int ret3 = checkPOS2(n, pos, alg, input);

// 传递三个结果到result函数
result(ret1, ret2, ret3);

不推荐的方案:全局变量

虽然可以用全局变量存储ret1、ret2、ret3,让result直接读取,但这种方式会增加代码耦合度,不利于后期维护和调试,尤其是在多线程场景下容易引发问题,因此优先选择参数传递的方式。

内容的提问来源于stack exchange,提问作者john

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 16:20:49