c# 如何初始化一个大尺寸的缓冲区的所有位上?[副本]

bhmjp9jg  于 2023-05-21  发布在  C#
关注(0)|答案(1)|浏览(159)

此问题已在此处有答案

How to initialize all members of an array to the same value?(26答案)
2小时前关闭
我正在尝试将位图初始化为所有位。我的想法是初始化一个缓冲区大小的数组,然后使用memcpy;然而:

#include <stdio.h>

#define SIZE 5

int main () {
  int i[SIZE] = { ~0 };
  for (int j = 0 ; j < SIZE ; j++) {
    printf("%d\n", i[j]);
  }
  return 0;
}

结果:

-1
0
0
0
0

我的期望是我会看到所有的-1。为什么这不起作用,我如何才能实现我的目标?

pb3skfrl

pb3skfrl1#

这一点:

int i[SIZE] = { ~0 };

只将数组的第一个元素显式初始化为~0。其余的隐式设置为0。
如果你想设置所有的位,你需要使用memset

memset(i, ~0, sizeof i);

相关问题