我在 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/