【发布时间】:2021-10-14 12:23:44
【问题描述】:
int *n=new int;
*n=20;
cout<<n<<endl<<*n<<endl<<&n;
当编译上面的代码时,我得到的输出为
0xa41510 20 0x6ffe08
现在 'n' 和 '&n' 有什么区别。如果新内存分配给'n'那么为什么它的地址不同?
对不起,如果这有点愚蠢。
【问题讨论】:
-
指针也是对象,所以
&n会给你指针本身的地址。n是分配内存的地址。 -
提示:
n和&n当n是指针时的区别(如int*)和@987654328的区别一样@ 和&n当n不是指针时。 -
n是保存new int表达式返回值的变量。&n是该变量的地址。变量的地址是它在内存中的位置,它的值由该位置的内容决定,而不是地址。同样,如果我们使用int x = 2,x将是保存值2的变量,&x将是x的地址(并且极不可能有2的值) .
标签: c++ dynamic-memory-allocation