You need to enable JavaScript to run this app. C语言传指针给函数未得到预期值:调用testing后num输出随机数如何解决
优惠活动
大模型
产品
解决方案
定价
更多

C语言传指针给函数未得到预期值:调用testing后num输出随机数如何解决

问题原因
  • C语言的函数参数默认采用值传递规则,你传入testing函数的指针参数number,本质是main函数中num变量地址的临时副本。你在testing内执行number = #仅修改了这个临时指针变量本身的指向,完全不会对main中的num变量产生任何影响。
  • 你在testing内定义的int num = 12是栈区局部变量,函数执行结束后对应的栈空间会被系统回收,即使你能把这个地址传回主函数,后续访问也属于非法的内存访问。
  • 目前main中的num变量从未被初始化赋值,属于未定义的局部变量,所以打印出来的是栈内存中残留的随机数值。
解决方法

你的需求是通过传入的指针修改其指向的变量的值,正确操作是直接对指针做解引用赋值,而非修改指针本身的指向。修改后的正确代码如下:

int testing(int *number)  {
   // 对指针指向的内存空间直接赋值,对应修改main中num变量的值
   *number = 12;
   return 0;
}


int main() {
   int num;
   testing(&num);
   printf("The number is: %d", num);
   return 0;
}

修改后运行程序会正常输出The number is: 12。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 05:06:03