【发布时间】:2019-10-07 09:31:53
【问题描述】:
我有一个数组,例如:
int M[10] = { 1 };
我原以为M[0]~M[9]都会被1填满,但是当我打印出来的时候却没有,只有M[0]是1,其他都是0。
【问题讨论】:
标签: c++ visual-studio
我有一个数组,例如:
int M[10] = { 1 };
我原以为M[0]~M[9]都会被1填满,但是当我打印出来的时候却没有,只有M[0]是1,其他都是0。
【问题讨论】:
标签: c++ visual-studio
这是一个常见的误解。你经常看到人们写这样的东西
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,您可以使用std::fill 或全部指定。抱歉,不是很清楚吗?您也可以使用 for 循环,但没有理由使用 std::fill