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

为何打印变量地址而非值?能否通过地址访问打印变量值?

问题解答

你的代码只是把num的地址赋值给了int类型的变量address,直接打印address当然会输出地址本身。要通过地址访问变量的值,核心是用指针解引用运算符*——这和scanf的逻辑类似:scanf用地址是为了往对应内存写值,而要读地址对应的值,就得用*来“解引用”这个地址。

下面是两种正确的写法:

方式1:直接对地址解引用

int num = 2029;
printf("\n%d", *&num);

这里&num是num的内存地址,*运算符会访问该地址指向的内存,取出里面存储的2029。

方式2:用指针变量存储地址后解引用

注意别再用int存地址了,应该用对应类型的指针(比如int*),否则在64位系统中可能因为地址长度和int不匹配导致截断问题:

int num = 2029;
int *address = #  // 用int*类型存储int变量的地址
printf("\n%d", *address);  // 解引用指针,获取变量的值

简单说,只要拿到变量的地址,通过*地址的形式就能访问到地址对应的变量值,完全可以像scanf那样不用变量名直接操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:55:35