鱼C论坛

 找回密码
 立即注册
查看: 3479|回复: 5

知道地址如何访问该地址的值?

[复制链接]
发表于 2012-3-14 12:18:49 | 显示全部楼层 |阅读模式
10鱼币
假设我知道 int i 存了一个地址,那有什么方法可以访问到这个地址里存的值?

或者换个问题:知道一个类里的第一个成员类型是int(如class T{public int x;}A;,A是一个类变量), 但是不知道这个成员的名字(不知道是x,还是y,还是z),那有什么办法可以访问到A.x 吗?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-3-14 12:18:50 | 显示全部楼层
本帖最后由 仰望天上的光 于 2012-3-14 13:42 编辑

  1. #include <iostream>
  2. using namespace std;
  3. class Test{
  4. int x;
  5. int y;
  6. public:
  7. Test( int a, int b ):x(a),y(b){}
  8. };
  9. int main(){
  10. Test t(1,2);
  11. int *p = reinterpret_cast<int*>(&t);
  12. cout<<*p<<endl;//print  t.x
  13. cout<<p[1]<<endl;//print t.y
  14. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-3-14 12:31:34 | 显示全部楼层
address->x 或者(*address).x
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-3-14 13:13:08 | 显示全部楼层
你概念有点不通
成员变量地址是非共享
只有成员函数地址是共享
也就是A B C各个i变量地址不同
但是a.fun b.fun c.fun地址相同
你想问得问题想访问A.x  你已经说了是A.x了。。
A怎么可能不知道
你知道B.x也不可能知道A.x的地址
当然你要这么想
int i;
int j;
i地址是j地址+4我也没办法
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-3-14 13:43:34 | 显示全部楼层
其中,cout<<*p<<endl;//print  t.x

也可写为cout<<p[0]<<endl;//print  t.x
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-3-14 16:39:18 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-12 02:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表