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