memset()没有将vales设置为一个

时间:2016-05-31 01:04:58

标签: c arrays memset

我需要将数组的所有值设置为1。我一直在尝试使用以下代码执行此操作:

int bulbSwitch(int n) {
    int bulbs[n];
    memset(bulbs, 1, n * sizeof(int));
    ...

但是,调试器显示数组中的所有值实际上都设置为16843009.如果没有memset,则数组值看似随机,正整数。为什么会这样,我该如何解决?

1 个答案:

答案 0 :(得分:3)

memset将内存的每个字节设置为您指定的值。平台上的int显然是4个字节。因此,您要将int的每个字节设置为1.

也就是说,对于每个int,代码都有效地执行:

bulbs[i] = 0x01010101;

十进制的值恰好是16843009

这意味着您不应该使用memset而是使用简单的循环来设置数组的每个元素。