如果arr是数组,C ++中*&arr和*&arr [0]有什么区别?

问题描述 投票:-1回答:1

假设我有一个称为arr的整数数组。我试图了解*&arr*&arr[0]之间的区别。

[我读到在C ++中,arr本质上是指向数组中第一个元素的指针,而&arr是指向整个数组的指针。他们俩都返回相同的地址,我明白了。然后,如果我输入*&arr[0],则返回第一个元素,即arr[0]处的值。但是,如果我输入*&arr,则返回arr[0]的地址。我的问题是,为什么当我使用*&arr时,返回的是地址而不是第一个元素?逻辑将指示,由于运算符*返回值,因此人们希望*&arr返回第一个元素而不是地址。

谢谢。

c++ arrays pointers c++17 dereference
1个回答
-1
投票

一个是int &表达式,另一个是int (&) [N]表达式,对于某些大小N

我在C ++中读到,arr本质上是一个指针

把那本书扔掉。这是不精确的危险。 arr可以立即转换为指针,但绝对不是指针。

他们俩都返回相同的地址

但不是同一类型。

我的问题是,为什么当我使用*&arr时,返回的是地址,而不是第一个元素?

因为已取消引用数组的指针。如果在需要指针的上下文中使用*&arr,它将像其他数组表达式一样衰减为1。

© www.soinside.com 2019 - 2024. All rights reserved.