[英]What does this C++ pointer syntax mean?
假设data
是指向向量使用的 memory 数组的直接指针。
那么, &data[index]
是什么意思呢?
我猜data[index]
是指向 position index
处数组特定元素的指针,但是&data[index]
是该指针的地址吗?
从计算类型开始。
假设data
是一个T*
; 指向T
数组的第一个元素的指针。
那么data[index]
是一个T
,并且那个T
是数组的一个元素。
由于data[index]
是一个T
, &data[index]
是一个T*
; 它是指向数组元素data[index]
的指针。
此外,如果data
是一个指针, data[index]
相当于*(data + index)
,所以&data[index]
相当于&*(data + index)
, &*
相互抵消,你留下&data[index] == data + index
。
&x
是x
的地址。 x
可以是数组中的元素。 如果data
是向量data()
(指向向量内部数组的第一个元素的指针),则data[index]
是该向量index
处的元素。
是的, &data[index]
是指向向量index
处的元素的指针。
下标operator[]
的优先级高于operator&
的地址。 因此,由于运算符优先级&data[index]
等价于(分组为):
&(data[index]) //this is equivalent to the expression &data[index]
这意味着上面是指向数组index
处的元素的指针。 这是因为data[index]
为我们提供了索引index
处的元素,因此应用运算符&
的地址将为我们提供指向该元素的指针。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.