只有第一个元素初始化为 1 [重复]

Posted

技术标签:

【中文标题】只有第一个元素初始化为 1 [重复]【英文标题】:Only first element init as 1 [duplicate] 【发布时间】:2019-10-07 09:31:53 【问题描述】:

我有一个数组,例如:

int M[10] =  1 ;

我原以为M[0]~M[9]都会被1填满,但是当我打印出来的时候却没有,只有M[0]是1,其他都是0。

【问题讨论】:

【参考方案1】:

这是一个常见的误解。你经常看到人们写这样的东西

int m[10] =  0 ;

要“将所有元素初始化为0”;但是,实际上这只是将第一个元素初始化为0,其余元素默认初始化(为 0,这就是它起作用的原因)。他们真的可以写int m[10] = ;

你有同样的问题:你只将第一个元素初始化为1,然后其余的默认为0。您可以指定所有参数,也可以使用std::fill

int m[10] =  1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ;
int n[10];
std::fill(std::begin(n), std::end(n), 1);

【讨论】:

如果我需要将所有元素初始化为 1 怎么办?需要一个 for 循环来分配它吗? 如果您需要将所有元素初始化为1,您可以使用std::fill 或全部指定。抱歉,不是很清楚吗?您也可以使用 for 循环,但没有理由使用 std::fill 对不起,我没有注意到。很清楚。

以上是关于只有第一个元素初始化为 1 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何轻松将“双数据类型”的第二个数组元素初始化为-1或0[重复]

在Python中将列表初始化为已知数量的元素[重复]

将C或C99中的结构数组初始化为所有相同的值[重复]

第8章:数组

数组初始化及赋值的方法,memset的使用

为啥memset不能将数组元素初始化为1