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
相关产品推荐
相关产品推荐

