指针输出

时间:2014-04-03 19:07:10

标签: c++ pointers

我只想了解输出指针的不同之处。

让我说我有:

int x = 100;
int*p = &x; 

以下各项会做什么?

cout << p << endl;
cout << *p << endl;
cout << &p << endl;

2 个答案:

答案 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。