我只想了解输出指针的不同之处。
让我说我有:
int x = 100;
int*p = &x;
以下各项会做什么?
cout << p << endl;
cout << *p << endl;
cout << &p << endl;
答案 0 :(得分:3)
cout << p << endl; // prints the adress p points to,
// that is the address of x in memory
cout << *p << endl; // prints the value of object pointed to by p,
// that is the value of x
cout << &p << endl; // prints the address of the pointer itself
答案 1 :(得分:3)
int*p = &x;
创建一个指针p
,指向变量x
。指针实际上是作为一个变量实现的,它保存了它所指向的内存地址。在这种情况下,您将获得以下内容。出于此示例的目的,假设x存储在0x1000处,p存储在0x1004处:
cout << p << endl;
将打印x
(0x1000)。cout << *p << endl;
将取消引用指针,因此将打印x(100)的值。cout << &p << endl;
获取p
的地址。请记住,指针本身就是变量。因此,它将打印0x1004。