为何在C/C++中无法通过该方式将数组所有元素赋值为2?
为什么数组
int a[16] = {2};只初始化第一个元素为2? 这是C++(以及C语言)的标准规定:当你用花括号初始化数组时,若只提供了部分元素的值,剩余未明确赋值的元素会被自动初始化为0。你写的int a[16] = {2};只给数组的第一个元素a[0]赋值为2,剩下的15个元素自然就被默认初始化为0了。
如果想把数组所有元素都设为2,可以用以下几种方法:
- 方法一:用循环逐个赋值
int a[16]; for (int i = 0; i < 16; ++i) { a[i] = 2; }
- 方法二:C++11及以上版本,用
std::fill(需要包含<algorithm>头文件)
#include <algorithm> int a[16]; fill(begin(a), end(a), 2);
- 方法三:用C++11引入的
std::array,自带填充方法
#include <array> std::array<int, 16> a; a.fill(2);
内容的提问来源于stack exchange,提问作者a b
相关产品推荐
相关产品推荐

