我是cpp和学习指针的新手。在练习代码时,我遇到了这个。当我做&(指针)时,它给出另一个内存位置。我想知道这个地址是什么。我假设它是保存ptr的位置。它必须保存在某处,尽管它具有值变量的记忆。
#include<iostream>
using namespace std;
int main()
{
int v =6;
int *ptr;
ptr = &v;
cout << "1: " << ptr << endl;
cout << "2: " << *ptr << endl;
cout << "3: " << &ptr << endl;
return 0;
}
输出: 1:0x29cc6c
2:6
3:0x29cc68
答案 0 :(得分:2)
正确。
输出1是指针的值,它是指向的地址。
输出2是“取消引用”指针,这意味着它是输出1中包含的值(指针指向的位置)。
输出3是存储指针(包含输出1的值)的位置。
答案 1 :(得分:2)
你完全正确:
v
是一个变量,因此&v
是v
存储在内存中的地址; ptr
也是一个变量,因此&ptr
是ptr
存储在内存中的地址。在您的示例中,因为这些变量一个接一个地存储(在本地堆栈上),所以它们的地址相距仅4个字节。