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

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

概述我读到你不能在指针上做bitmasks,你怎么不能做 指针上的按位 *** 作? 有没有办法达到同样的效果? 同样适用于C? 你不能做按位指针 *** 作的原因是因为标准说你不能.我认为标准说的原因是因为按位指针 *** 作几乎普遍导致未定义或(最多))实现定义的行为.所以没有什么可以做,这是有用和便携式,不像简单的 *** 作,如加法. 但是你可以用铸造来摆脱它: #include <stdint.h>void *ptr1 我读到你不能在指针上做bitmasks,你怎么不能做
指针上的按位 *** 作?

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

同样适用于C?

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

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

#include <stdint.h>voID *ptr1;// Find page startvoID *ptr2 = (voID *) ((uintptr_t) ptr1 & ~(uintptr_t) 0xfff)

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

总结

以上是内存溢出为你收集整理的c – 为什么你不能对C中的指针进行按位 *** 作,有没有办法呢?全部内容,希望文章能够帮你解决c – 为什么你不能对C中的指针进行按位 *** 作,有没有办法呢?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1253708.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存