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

指针间赋值的作用及相关代码输出的困惑咨询

关于指针赋值的两个疑问解答

一、指针赋值到底发生了什么?

咱们先把这个核心概念掰明白:指针本身就是个存储内存地址的变量。当你执行p = q这种指针赋值操作时,并不是把q指向的变量的值复制给p指向的变量,而是直接把q里面存的那个内存地址,完完整整复制到p里。

换句话说,赋值之后:

  • p和q这两个指针变量,现在存储的是同一个内存地址
  • 它们指向了同一块内存空间(也就是同一个变量)
  • 后续不管通过*p还是*q去修改值,都是在改同一块内存里的内容

二、逐行分析你的代码,明确输出结果

先把你的代码用代码块贴出来:

int x; 
int y; 
int *p = &x; 
int *q = &y; 
x = 35; 
y = 46; 
p = q; 
*p = 78; 
cout << x << " " << y << endl; 
cout << *p << " " << *q << endl;

咱们一步步拆解每一步的变化:

  1. int x; int y;:在内存中创建两个整型变量x和y,各自有独立的内存地址
  2. int *p = &x;:指针p存储x的地址,此时p指向x,*p等价于x
  3. int *q = &y;:指针q存储y的地址,此时q指向y,*q等价于y
  4. x = 35;:x的值变为35,此时*p也是35
  5. y = 46;:y的值变为46,此时*q也是46
  6. p = q;:关键一步!把q里存储的y的地址复制给p,现在p不再指向x了,和q一起指向y的内存地址
  7. *p = 78;:因为p现在指向y,所以这行等价于y = 78,此时y的值更新为78,*q也会变成78(因为q也指向y),而x的值还是35,完全没被改动

所以最终的输出结果是:

35 78
78 78

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 16:07:32