为什么可以比较最后一个元素?

时间:2017-01-22 08:59:01

标签: c++ c pointers memory

标准规定:

  

除非两个指针指向同一个数组对象的元素或者指向数组对象的最后一个元素,否则行为是未定义的。

为什么在最后一个元素之后引用一个是有效的?

1 个答案:

答案 0 :(得分:5)

可以计算该指针并仅与其进行比较。原因是它可以用于使用一对指针传递和迭代数组。

如果标准不允许,仅仅存在pend

,以下循环就会表现出未定义的行为
int arr[100] = {0};

for (int *pbegin = arr, *pend = arr + 100; pbegin != pend; ++pbegin)
{
  // do stuff
}

这在C ++中尤其重要,在C ++中,将范围作为"迭代器传递到开头,一个传递到结尾的惯用语"被标准库大量使用。