我正在看一些操纵数据缓冲区的旧代码.我有很多地方:
char *ptr1 ;
char *ptr2 ;
Run Code Online (Sandbox Code Playgroud)
然后我需要找到两者之间的字节数.
int distance = ptr2 - ptr1 ;
Run Code Online (Sandbox Code Playgroud)
我收到很多关于截断的警告.是什么类型的
ptr2 - ptr1
Run Code Online (Sandbox Code Playgroud)
我已经找到了许多处理指针算法的答案,但奇怪的是,这个特定问题并不是答案.
减去两个指针†的结果是a std::ptrdiff_t.它是一个实现定义的有符号整数; 它可能比int可以存储的更大.
有关更多信息,请参见http://en.cppreference.com/w/cpp/types/ptrdiff_t.
†如果指针指向同一数组的元素,则只能减去指针,否则它是UB.
| 归档时间: |
|
| 查看次数: |
910 次 |
| 最近记录: |