什么是输出?

时间:2015-05-08 05:58:56

标签: c++ arrays pointers

 1. int *a;
 2. a=new int[2];
 3. cin>>a[0];
 4. cout<<a<<"\n";
 5. cout<<&a<<"\n";                
 6. cout<<*a;

第5行的输出是什么? 我知道第4行将给出数组a的第一个元素的地址,第6行将给出数组a的第一个元素的值。但我无法弄清楚第5行的地址是什么。

感谢。

编辑:这是编译后的输出。

  • 4
  • 0x5d2158
  • 0x28fefc
  • 4

4作为输入。 0x5d2158是第4行的输出 0x28fefc是第5行的输出 4是第6行的输出

4 个答案:

答案 0 :(得分:1)

它将给出指针a本身的地址。指针还占用内存中的空间来存储它们指向的实际数据的地址,在这种情况下是整数数组。

答案 1 :(得分:1)

输入的每一行的说明:

  1. int *a;声明指向int
  2. 的指针
  3. a=new int[2];分配大小为2的整数数组,并将第一个元素的地址(索引0)分配给指针a
  4. cin>>a[0];从标准输入读取值并将其分配给数组a的第一个(索引0)元素
  5. cout<<a<<"\n";打印的地址a指向,表示大小为2的整数数组的第一个元素(索引0)的地址
  6. cout<<&a<<"\n";打印存储指针a的地址(即指针在内存中的位置)
  7. cout<<*a;打印值a点,意为 a数组的第一个元素

答案 2 :(得分:0)

它将给出第一个元素的地址。就是这样

答案 3 :(得分:0)

它会给出指针'a'的地址。在图中解释。 a的地址是'0x7fffa28413c8',因此&amp; a的输出是0x7fffa28413c8。 http://i.stack.imgur.com/iPobm.png