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

时间:2011-10-20 06:33:40

标签: c++ pointers

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

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

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

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

1 个答案:

答案 0 :(得分:13)

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

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

如果两个指针不符合该约束条件,则根本无法保证。