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

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

我可以发誓我曾经知道一个简单的方法。在我的例子中,我可以使用memset()

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

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

intmyarray[10]={5,5,5,5,5,5,5};

缺少值的元素将被初始化为0:

intmyarray[10]={1,2};//初始化为1,2,0,0,0。。。

因此,这会将所有元素初始化为0:

int myArray[10]={0};//所有元素0

在C++中,空初始化列表也将初始化每个元素到0。
这在C中是不允许的:

int myArray[10]={};//C++中的所有元素0

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

静态int-myArray[10];//所有元素0

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

发表评论