动态分配中的内存地址

时间:2011-10-04 03:04:45

标签: c++ memory-management

#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不同?虽然它是动态分配,但我不明白为什么内存地址不同。我尝试了多个值;这是同一件事。为了简单起见,我在这里使用了一个值。

2 个答案:

答案 0 :(得分:4)

&something是指针本身的内存地址(嘿,它需要在某个地方存储该值!),而&something[0]是存储你的东西的实际内存的地址。

答案 1 :(得分:2)

something是一个指针。 &something是该指针的地址。 &something[0]是指针指向的第一个元素的地址,它与指针的地址完全不同。 something是指针的值,它也是指向的元素的地址。

我确信此主题之前已被多次讨论过,我希望我能做到公正。