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

为何接收int指针的C语言函数输出全为0?求技术支持

问题排查与修复

错误1:scanf格式字符串写错

你的scanf调用里把格式符%d写成了&d,这会导致输入无法被正确读取到变量a和b中。格式字符串必须以%开头指定数据类型,正确写法是:

scanf("%d %d", &a, &b);

错误2:未计算绝对差

update函数中,你直接计算*a - *b,但这不是绝对差——如果原始b值大于a,结果会是负数,不符合“绝对差为正数”的需求。需要用abs()函数获取绝对值,同时要包含stdlib.h头文件(abs函数定义在该头文件中)。

额外小问题:printf换行写法错误

原代码中printf直接换行属于语法错误,应该用转义字符\n实现换行。


修正后的完整代码

#include <stdio.h>
#include <stdlib.h> // 引入abs函数的头文件

void update(int *a,int *b) {
    int res1,res2; 
    res1 = *a + *b;
    res2 = abs(*a - *b); // 计算两数的绝对差
    *a = res1; 
    *b = res2; 
}
int main() {
    int a, b;
    int *pa = &a, *pb = &b;
    scanf("%d %d", &a, &b); // 修正格式符错误
    update(pa, pb);
    printf("%d\n%d", a , b); // 修正换行写法
    
    return 0;
}

测试输入7 2,会输出预期的9和5。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:52:12