我需要将数组的所有值设置为1。我一直在尝试使用以下代码执行此操作:
int bulbSwitch(int n) {
int bulbs[n];
memset(bulbs, 1, n * sizeof(int));
...
但是,调试器显示数组中的所有值实际上都设置为16843009.如果没有memset
,则数组值看似随机,正整数。为什么会这样,我该如何解决?
答案 0 :(得分:3)
memset
将内存的每个字节设置为您指定的值。平台上的int
显然是4个字节。因此,您要将int
的每个字节设置为1.
也就是说,对于每个int
,代码都有效地执行:
bulbs[i] = 0x01010101;
十进制的值恰好是16843009
。
这意味着您不应该使用memset
而是使用简单的循环来设置数组的每个元素。