C++中某些类型的指针之间的距离有什么限制?

What's the restriction on distance between pointers of certain type in C++?

本文关键字:什么 距离 指针 类型 C++ 之间      更新时间:2023-10-16

假设我有两个指向类型T:的指针

T* first = ...// whatever
T* second = ... //whatever else

我能确定这两个指针之间的距离永远不会超过吗:

((size_t)(-1))/sizeof(T)

如果两个指针都指向同一数组中的元素,或者指向同一个数组末尾后的一个元素,则只能计算两个指针之间的距离(从另一个指针减去一个指针(。

如果两个指针满足该约束,那么是的,两个指针之间的差的绝对值不能超过((size_t)(-1)) / sizeof(T),因为size_t必须足够宽,以字节表示任何对象的大小。

如果这两个指针不满足这个约束,那么就根本无法保证。