如何正确使用memset初始化bool类型数组?
bool数组用memset初始化为false的正确方式
这两种写法都正确,最终效果完全一致,核心区别只是计算数组总字节数的方式不同:
- 第一种写法
memset(arr,0,sizeof(arr)):直接通过sizeof(arr)获取整个数组的总字节大小,代码更简洁健壮——如果后续修改数组的长度(比如把10改成20),不需要手动调整第三个参数,编译器会自动计算正确的大小,不容易出错。 - 第二种写法
memset(arr,0,sizeof(bool) * 10):手动计算数组总字节数(单个bool的字节数 × 元素个数),这种写法需要保证乘法里的数字10和数组的实际长度严格一致,要是后续改了数组长度却忘了改这里的数字,就会出现初始化不完整的问题。
另外补充一点:用memset传第二个参数0是完全安全的,因为C++标准明确规定false对应的底层数值就是0,不管编译器把bool实现为1字节还是其他大小,只要字节内容是0,就会被解析为false。
内容的提问来源于stack exchange,提问作者user1063364
相关产品推荐
相关产品推荐

