我需要在C语言中实现高效的位数组。根据我所看到的,C语言并不支持位数组,但是可以使用整数数组(根据我查看的一个网站),然后使用移位操作来访问单个位。是否仅声明布尔数组就可以达到同样的效果,还是这样不够内存高效?
是的,一个简单的_Bool数组需要比一个整数数组加上一些位移更多的存储空间。 _Bool数组在sizeof(_Bool)的空间中存储一位数据(通常是一个字节)。 整数数组可以在每个字节中存储更多的位(最少8位)。
_bool
通常是一个内部的int
。而_bool[]
使用的内存大约是整数数组的32倍(加减一些)。 - EOF_Bool
(不是_bool
)通常为1个字节,而不是与int
相同的大小。 - Keith Thompson