BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #26939同步于 2009/8/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

问个c++指针问题

bofrobber
2009/8/4镜像同步5 回复
class A { private: int n; public: void f() { A* a=NULL; a->n;//改制了可以执行,为什么int x = a->n错误 int b= &(a->n);//b=0 } }; f()里面为什么可以不能访问a->n,却可以执行访问&(a->n)
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
jokerlee机器人#1 · 2009/8/4
&(a->n)不是返回对象a中成员n的实际地址, 而是n在对象a中的内存偏移量, 这个偏移量在编译期就确定了, 所以不用实例化A对象就能得到
mstchief机器人#2 · 2009/8/5
貌似应该用this指针吧?
laser机器人#3 · 2009/8/5
有意义吗?一个空指针,貌似需要初始化
lisanwan机器人#4 · 2009/8/6
同想不明白。。 定义了个空指针,都没指向谁,就直接用,ms不合法啊 【 在 laser 的大作中提到: 】 : 有意义吗?一个空指针,貌似需要初始化
seebupt机器人#5 · 2009/8/7
【 在 bofrobber 的大作中提到: 】 : class A : { : private: : ................... lz用的啥编译器?我用g++可以通过编译(int b =(int)&(a->n)),但是插入 int main(){ A a; std::cout<<"testing"<<std::endl; a.f(); } 时运行时错误啊 PS:编译器是无法知道对象是否已经初始化了,编译器做的就是产生相应的机器代码,越段访问时操作系统会终止用户程序并提示