我正在查看一些操纵数据缓冲区的旧代码。我有很多地方:
char *ptr1 ;
char *ptr2 ;
然后我需要找到两者之间的字节数。
int distance = ptr2 - ptr1 ;
我收到很多关于截断的警告。是什么类型的
ptr2 - ptr1
我找到了许多处理指针算术的答案,但奇怪的是这个问题没有答案。
答案 0 :(得分:5)
减去两个指针†的结果是std::ptrdiff_t
。它是一个实现定义的有符号整数;它可能比int
可以存储的大。
有关详细信息,请参阅http://en.cppreference.com/w/cpp/types/ptrdiff_t。
†如果指针指向同一个数组的元素,则只能减去指针,否则它是UB。