为什么x和&x对于数组是相同的

use*_*399 0 c++ reference

让我们看一下下面的例子

int x[10];
cout<<x<<endl;
cout<<&x<<endl; //both couts are same.


int x;
cout<<x<<endl;
cout<<&x<<endl; //last two couts are different.
Run Code Online (Sandbox Code Playgroud)

这可能是什么原因?

Ben*_*ley 6

在第一种情况下,

cout << x << endl;
Run Code Online (Sandbox Code Playgroud)

数组x衰减到指向其第一个元素的指针.所以你看到了那个地址.在第二种情况:

cout << &x << endl;
Run Code Online (Sandbox Code Playgroud)

您正在查看阵列的地址.这恰好与数组的第一个元素的地址相同,尽管它指的是包含所有元素的更大空间.它不一定要打印相同,但在你的实现(以及我曾经使用的每个实现),它确实.

当您int在下一节中处理单个时,第一种情况不会衰减到指针,它只是打印整数的值.当您将其更改为时&x,您明确要求该整数的地址.