首页 > 解决方案 > 指针算术规则中的“可能假设”是什么意思?

问题描述

在指针算术 ( 的标准规范中[expr.add]/4.2,我们有:

否则,如果P指向具有n 个元素 ([dcl.array])的数组对象的数组元素i ,则表达式and (其中的值为j)指向if 0的(可能是假设的)数组元素i + j ≤ i + j ≤ n并且表达式指向if 0 ≤ i - j ≤ n的(可能是假设的)数组元素i - jxP + JJ + PJxP - Jx

这里的“可能假设”是什么意思?该段落已经将结果指针限制在数组范围内。好吧,包括一个过去的插槽。这就是它所指的吗?

标签: c++pointerslanguage-lawyerpointer-arithmetic

解决方案


是的,它是一个过去的“元素”。

[basic.compound]/3: [..]出于指针算术 ([expr.add]) 和比较 ([expr.rel], [expr.eq]) 的目的,在n 个x元素的数组的最后一个元素末尾之后的指针被认为是等效于指向假设数组元素n的指针,并且类型不是数组元素的对象被认为属于具有一个类型元素的数组。[..]xTT


推荐阅读