【发布时间】:2022-07-22 18:27:35
【问题描述】:
我遇到了这个问题,我不明白为什么
当我尝试这个时:
int* a = new int{5};
std::cout << a << '\n' << &a;
输出是:a 有地址,而 &a 有不同的地址,这是为什么?
&a 和 a 不是应该有相同的地址 5 吗?
你写的时候我就知道了
int b = 6;
std::cout << &b;
这将输出6的地址
但在第一个代码中它有不同的地址,这是否意味着指针有 2 个地址?还是什么?
感谢阅读
【问题讨论】:
-
a本身就是一个对象并且有一个地址,所以&a给出了a的地址,而a给出了指向动态分配的int的指针。 -
a是一个int*指向int的指针。&a是一个int**一个指向int的指针。 -
指针和其他变量一样。它们具有一定的价值,并且存储在某个地方。
-
尝试同时打印
*a和*&a,您会发现它们非常不同。或查看typeid(a).name()和typeid(&a).name()。
标签: c++ pointers memory-address