c – 为什么你不能对C中的指针进行按位操作,有没有办法呢?

前端之家收集整理的这篇文章主要介绍了c – 为什么你不能对C中的指针进行按位操作,有没有办法呢?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我读到你不能在指针上做bitmasks,你怎么不能做
指针上的按位操作?

有没有办法达到同样的效果

同样适用于C?

解决方法

你不能做按位指针操作的原因是因为标准说你不能.我认为标准说的原因是因为按位指针操作几乎普遍导致未定义或(最多))实现定义的行为.所以没有什么可以做,这是有用和便携式,不像简单的操作,如加法.

但是你可以用铸造来摆脱它:

#include <stdint.h>

void *ptr1;
// Find page start
void *ptr2 = (void *) ((uintptr_t) ptr1 & ~(uintptr_t) 0xfff)

对于C,只需使用reinterpret_cast而不是C风格的转换.

猜你在找的C&C++相关文章