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

函数中指针操作未达预期:变量累加输出异常求助

问题分析与修复

你的代码核心错误在于指针操作不当:在test2函数中,你直接对指针变量sumador执行加法,这只会改变指针本身的内存地址,完全没有修改它指向的sum变量的值。

修正后的代码

#include <stdio.h>

void test() {
    int sum = 0; // 初始化变量,避免未定义的垃圾值
    test2(&sum);
    printf("%d", sum);
}

void test2(int *sumador) {
    int i;
    for(i = 0; i < 10; i++) {
        *sumador += i; // 解引用指针,修改指向的变量值
    }
}

int main() {
    test();
}

关键修改说明

  • *sumador += i:通过*解引用指针,才能访问到指针指向的sum变量,实现累加操作。如果直接操作sumador,只是在移动指针的指向位置,和目标变量毫无关系。
  • int sum = 0:未初始化的局部变量会包含随机垃圾值,初始化后能保证累加从0开始,结果符合预期(最终输出45,也就是0到9的和)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:35:21