假设我有一个称为arr
的整数数组。我试图了解*&arr
和*&arr[0]
之间的区别。
[我读到在C ++中,arr
本质上是指向数组中第一个元素的指针,而&arr
是指向整个数组的指针。他们俩都返回相同的地址,我明白了。然后,如果我输入*&arr[0]
,则返回第一个元素,即arr[0]
处的值。但是,如果我输入*&arr
,则返回arr[0]
的地址。我的问题是,为什么当我使用*&arr
时,返回的是地址而不是第一个元素?逻辑将指示,由于运算符*
返回值,因此人们希望*&arr
返回第一个元素而不是地址。
谢谢。
一个是int &
表达式,另一个是int (&) [N]
表达式,对于某些大小N
。
我在C ++中读到,
arr
本质上是一个指针
把那本书扔掉。这是不精确的危险。 arr
可以立即转换为指针,但绝对不是指针。
他们俩都返回相同的地址
但不是同一类型。
我的问题是,为什么当我使用
*&arr
时,返回的是地址,而不是第一个元素?
因为已取消引用数组的指针。如果在需要指针的上下文中使用*&arr
,它将像其他数组表达式一样衰减为1。