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

为何C语言代码中变量a的输出结果为40?

为什么变量a的输出结果是40?

先看给出的C代码:

int a;
int *p=&a;
a = 20;
*p = 40;
printf("%d",a);

输出结果为40,具体原因拆解如下:

  • int a;:声明了一个整型变量a,系统为它分配了一块内存空间,但此时里面的值未定义。
  • int *p=&a;:声明了一个整型指针变量p,&a是取地址运算符,用来获取变量a的内存地址,这行代码把a的地址赋值给p,意味着p现在指向了a所在的内存空间。
  • a = 20;:直接给变量a赋值20,此时a的内存里存储的值变成了20。
  • *p = 40;:*在这里是解引用运算符,作用是访问指针p指向的内存空间中的值。因为p指向的就是a的内存,所以这行代码本质上就是修改a所在内存里的值,把之前的20替换成了40。
  • printf("%d",a);:打印变量a的值,此时a已经被修改为40,所以最终输出40。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:55:15