c - 如何将数组的所有成员初始化为相同的值?

标签 c arrays initialization array-initialize

我在 C 中有一个大数组(如果有区别,则不是 C++)。我想初始化相同值的所有成员。

我可以发誓我曾经知道一个简单的方法来做到这一点。在我的例子中,我可以使用 memset(),但是没有一种内置在 C 语法中的方法可以做到这一点吗?

最佳答案

除非该值为 0(在这种情况下,您可以省略初始化程序的某些部分 并且相应的元素会被初始化为0),没有简单的方法。

不过,不要忽视显而易见的解决方案:

int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };

缺失值的元素会被初始化为0:

int myArray[10] = { 1, 2 }; // initialize to 1,2,0,0,0...

所以这会将所有元素初始化为 0:

int myArray[10] = { 0 }; // all elements 0

在 C++ 中,一个空的初始化列表也会将每个元素初始化为 0。 这是 not allowed用 C 直到 C23:

int myArray[10] = {}; // all elements 0 in C++ and C23

请记住,如果没有,具有静态存储持续时间的对象将初始化为 0 指定了初始值设定项:

static int myArray[10]; // all elements 0

而且“0”并不一定意味着“所有位为零”,所以使用上面的是 比 memset() 更好、更便携。 (浮点值将是 初始化为 +0,指向空值的指针等)

关于c - 如何将数组的所有成员初始化为相同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/201101/

相关文章:

c - 逗号运算符 , 的作用是什么?

c - 将 char 数组反序列化为 int 和 int[] 以及 struct?

c - qsort记录(char数组)按降序排列

c++ - 如何禁止分配给不引用变量?

c++ - C/C++ 私有(private)数组在头文件中初始化

c - 在c中初始化字符串数组的不同方法

c - 运行时错误 : null pointer passed as argument 1, 被声明为永远不会为空

c - C 中的运算符重载

c - 找到数组中最常用的字符?

javascript - 返回与 JSON 数组中的计数相同的值,Javascript