gpt4 book ai didi

c++ - 非数组类型的 "one-past-the-end"指针是 C++ 中的有效概念吗?

转载 作者:IT老高 更新时间:2023-10-28 21:51:51 26 4
gpt4 key购买 nike

C++ 标准 [sec 5.7] 说:

If both the pointer operand and the result point to elements of the same array object, or one past the last element of the array object, the evaluation shall not produce an overflow; otherwise, the behavior is undefined.

那么,我是否正确地假设除了数组之外的其他类型的指针是未定义的?

例如:

int a = 0;
vector<int> v(&a, (&a)+1);

上面的代码片段编译和工作得很好(使用 g++),但它有效吗?

最佳答案

不,这是合法的。 5.7(4) - 引用前的一段 - 说:“出于这些运算符的目的,指向非数组对象的指针与指向长度为 1 的数组的第一个元素,其元素类型为对象的类型。"

关于c++ - 非数组类型的 "one-past-the-end"指针是 C++ 中的有效概念吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14505851/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com