指针算术的类型

时间:2016-04-07 03:50:06

标签: c++

我正在查看一些操纵数据缓冲区的旧代码。我有很多地方:

char *ptr1 ;
char *ptr2 ;

然后我需要找到两者之间的字节数。

int distance = ptr2 - ptr1 ;

我收到很多关于截断的警告。是什么类型的

 ptr2 - ptr1

我找到了许多处理指针算术的答案,但奇怪的是这个问题没有答案。

Pointer Arithmetic

1 个答案:

答案 0 :(得分:5)

减去两个指针†的结果是std::ptrdiff_t。它是一个实现定义的有符号整数;它可能比int可以存储的大。

有关详细信息,请参阅http://en.cppreference.com/w/cpp/types/ptrdiff_t

†如果指针指向同一个数组的元素,则只能减去指针,否则它是UB。