我在 C 中有一个大数组(如果有区别,不是 C++ )。 我想初始化相同值的所有成员。
我可以发誓我曾经知道一个简单的方法来做到这一点。我可以memset()在我的情况下使用,但是没有一种内置于 C 语法中的方法吗?
memset()
除非该值为 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。这在 C中是不允许的:
int myArray[10] = {}; // all elements 0 in C++
请记住,如果未指定初始化程序,则具有静态存储持续时间的对象将初始化为 0:
static int myArray[10]; // all elements 0
而且“0”并不一定意味着“所有位为零”,因此使用上述方法比 memset() 更好、更便携。(浮点值将被初始化为 +0,指向空值的指针等)