gpt4 book ai didi

c++ - 为什么指针地址的输出不同?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:10:49 27 4
gpt4 key购买 nike

我对一个程序感到困惑考虑我们有一个像下面这样的类:

#ifndef SOMECLASS
#define SOMECLASS
class SomeClass
{
public:
SomeClass();
SomeClass(int);
~SomeClass();
void foo(const int&);
}
#endif

及其实现....

所以在主函数中:

int main(int argc, char **argv){
SomeClass* smc=new SomeClass();
cout<<smc<<"--"<<&smc<<"--"<<&*smc;
}

我的输出如下:

0xf66210----0x7ffd622a34f0----0xf66210

为什么smc和&smc和&*smc有区别?注意 smc 和 &*smc 是相等的。

我正在使用 ubuntu(14.04_x64) 和+cmake(2.18)+gcc(4.8.4)

最佳答案

smc是指针smc的值,也就是smc所指向的地址。

&smc 是指针smc 本身的地址。

&*smcsmc指向的地址(被指向的是*smc),所以是与 smc 相同。

关于c++ - 为什么指针地址的输出不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32424969/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com