#include <iostream>
int main()
{
int anything[] = {5};
int *something = new int;
*something = 5;
std::cout << &anything << "==" << &anything[0] << "==" << anything << std::endl;
std::cout << &something << "!=" << &something[0] << "==" << something << std::endl;
}
为什么&something
中的内存地址与&something[0]
和something
不同?虽然它是动态分配,但我不明白为什么内存地址不同。我尝试了多个值;这是同一件事。为了简单起见,我在这里使用了一个值。
答案 0 :(得分:4)
&something
是指针本身的内存地址(嘿,它需要在某个地方存储该值!),而&something[0]
是存储你的东西的实际内存的地址。
答案 1 :(得分:2)
something
是一个指针。 &something
是该指针的地址。 &something[0]
是指针指向的第一个元素的地址,它与指针的地址完全不同。 something
是指针的值,它也是指向的元素的地址。
我确信此主题之前已被多次讨论过,我希望我能做到公正。