int *i = new int;
cout << &i << endl << i;
delete i;
i = 0;
我得到了这个输出:
0031FB2B
0057C200
为什么有2个不同的地址?不是&amp;引用动态指针的地址和i本身指针的地址,它应该是相同的地址?
答案 0 :(得分:5)
&i
是指针的地址。这是存储new
返回的值的位置。 i
是指针本身的值,这是new
返回的值。
只是为了完整性,* i是指向的整数的值,此时此值是未初始化的,但这是您实际数据的去向。