当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《为什么可以比较最后一个元素?》经验,为你挑选了1个好方法。

标准规定:

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

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



1> StoryTeller ..:

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

如果标准不允许,那么仅仅存在以下循环就会表现出不确定的行为 pend

int arr[100] = {0};

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

这在C++中尤为重要,其中标准库大量使用将范围作为"开头的迭代器和一个结尾"的惯用法.


@wulfgarpro在编写标准时,一个过去的指针很有用,并且已经在所有现有的实现上工作.当你不止一个时,这不是很有用,并且有些实现会破坏它(尽管你可能需要超过两个结束时)或者表现出标准无法描述的方式(例如再次指向`arr`,所以标准化没有意义.
推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有