函数中指针操作未达预期:变量累加输出异常求助
问题分析与修复
你的代码核心错误在于指针操作不当:在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
相关产品推荐
相关产品推荐

