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

C++指针动态分配地址疑问:为何指向变量地址不同?

问题解答

你混淆了「值拷贝」和「指针指向变量地址」这两个操作的区别,咱们一步步理清楚:

  • 首先,int* pointer = new int; 这行代码做的是:在堆内存里申请了一块能存int类型数据的空间,然后把这块空间的地址存在pointer这个指针变量里。此时pointer指向的是堆上的全新地址,和random_number没有关联。
  • 然后*pointer = random_number; 这行是值拷贝操作:它把random_number变量里存储的数值,复制了一份,然后放到pointer指向的那块堆内存空间里。整个过程没有改变pointer的指向,只是修改了它指向的内存里的内容。
  • 如果你想让pointer直接指向random_number的地址,那应该写:
    pointer = &random_number; // 注意:这样之前用new申请的堆内存会泄漏,记得先delete
    
    这时候pointer保存的就是random_number的地址,二者地址就一致了。

简单总结:你现在的代码是把变量的值复制到指针指向的内存,不是让指针指向变量本身,所以地址自然不一样。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 20:12:01