C++ C+中的优先顺序+;:&;或者()?

C++ C+中的优先顺序+;:&;或者()?,c++,C++,假设文本是一个由3个字符串组成的数组,那么文本[3]和(&text)[3]之间的区别是什么?[]下标操作符比操作符的&地址有一个更大的值 &text[3]与&(text[3])相同,这意味着访问数组的第4个元素,然后获取该元素的地址。假设数组类似于字符串文本[3],将生成一个字符串*指针,该指针指向数组末尾的1个元素,即类似于std::array或std::vector中的end迭代器 ---------------------------- |弦|弦|弦| ------------------

假设
文本
是一个由3个字符串组成的数组,那么
文本[3]
(&text)[3]
之间的区别是什么?

[]
下标操作符比操作符的
&
地址有一个更大的值

&text[3]
&(text[3])
相同,这意味着访问数组的第4个元素,然后获取该元素的地址。假设数组类似于
字符串文本[3]
,将生成一个
字符串*
指针,该指针指向数组末尾的1个元素,即类似于
std::array
std::vector
中的
end
迭代器

----------------------------
|弦|弦|弦|
----------------------------
^
&文本[3]
另一方面,
(&text)[3]
获取数组本身的地址,生成一个
字符串(*)[3]
指针,然后将该指针增加3整
字符串[3]
数组。因此,再次假设
字符串文本[3]
,则有一个
字符串(*)[3]
指针远远超出数组的结束边界

-------------------------------------------------------------------------------------
|字符串|字符串|字符串|字符串|字符串|字符串|字符串|字符串|字符串|
---------------------------- ---------------------------- ----------------------------
^                                                         ^
&文本[3](&文本)[3]

请阅读有关的信息。“3个字符串数组”可能是很多问题,但是C和C++在这里是很好的阅读。@ USER481301不确定你建议的“DUPE”实际上解决了两个不同指针类型的<代码> [3 ] < /C>操作的差异。只是有用的阅读。不过,答案可以从读数中推断出来。这两个值都不起作用,因为这两个值都指向不属于您分配的内存的位置
&Text[3]
是指向数组末尾之后的元素的指针,在某些情况下可能很有用,但您不应该取消引用它,另一个指针将
文本
视为字符串数组的第一个元素,并访问其中的第四个元素。