小编MAD*_*ood的帖子

C指针上的位移位?

我正处于这个C项目的中间,我希望能够提高内存效率.在几种情况下,我使用我写的动态数组结构的void*s来保存位.我希望使用所有64位(在这种情况下)位.

我很快意识到你实际上无法对指针进行任何操作.所以我的解决方案如下:

void *p;
((unsigned long)p) << 4;
((unsigned long)p) & 3;
Run Code Online (Sandbox Code Playgroud)

这可以完成工作,但仅仅因为在我的计算机上,long和指针的大小相等.在所有(或大多数)架构中都会出现这种情况吗?

而我真正的问题:是否有更正确的方法对指针进行位操作? 我曾经认为这种方法在C中有点常见(将位打包成空格*),但我可能会弄错...

c pointers bitwise-operators

9
推荐指数
2
解决办法
1万
查看次数

标签 统计

bitwise-operators ×1

c ×1

pointers ×1