为什么在C++中数组 *(&array)给出数组第一个元素地址[duplicate]

0qx6xfy6  于 2023-01-22  发布在  其他
关注(0)|答案(1)|浏览(130)
    • 此问题在此处已有答案**:

What is the difference between *&arr and *&arr[0] in C++, if arr is an array?(3个答案)
Difference between a and &a in C++ where a is an array(4个答案)
Difference between &a, *(&a) and ((&a))(3个答案)
*& With Respect to Pointers in C++(4个答案)
5小时前关门了。
当我们在C++中运行这个代码时:

int main(){
    int array[5] = {1,2,3,4,5};
    cout << *(&array);
}

为什么要打印array的第一个元素的地址?我以为(&array)会给出array的第一个元素的地址,*(&array)会给出那个地址里面的值,因为我们在指针上使用了解引用*操作符。
但是,它显示了array的第一个元素的地址。
拜托,谁能告诉我为什么会这样?

c6ubokkw

c6ubokkw1#

这里有很多事情很容易给予人偏头痛,所以让我们试着从一个简单得多的方法来看待它。让我们只说你有:

int p;

然后,很容易理解:*&pp是一样的,获取某个地址,然后解引用它,会把你带回到你开始的地方,你什么都没有完成。

*(&array);

这是完全相同的事情:*&arrayarray或数组中第一个值的地址。

相关问题