版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37407587/article/details/84673056
要初始化一个整型数组为0的时候, 我们通常可以这样写
int num[100] {0};
但是初始化这个整型数组为其他值的时候, 是否能这样写呢?
int num[100] {1};
printf
打印下结果会发现是不可行的, 只有num[0]
被初始化为1, 其他元素均为0.
那么 为什么写0
的时候就是对的呢?
原因是因为对于列表初始化而言, 当列表中的元素少于数组元素的时候, 编译器会将后面的元素全部填为0, 所以初始化为0其实就是将数组的第一个元素初始化后, 利用编译器的这个功能将剩余的元素都初始化为0.
那么要初始化为其他值的时候, 应该怎么做?
- 使用memset函数: memset函数是string.h中的一个函数, 其写法是
memset(point_of_begin, value, size_of_item_to_fill);
这种方法的速度较快, 但是要注意到, 其初始化的时候是按字节初始化, 因此, 通常只能用它来初始化整型数组为-1和0 - 使用fill函数, fill函数是algorithm中的一个函数, 其写法是
#include<algorihtm>
fill(begin_point, end_point, value);
注意到, begin和end的区间是左闭右开, 同时, 这两个值对于数组来说是指针, 对于容器来说是迭代器, fill方法可以填充大多数数据类型,包括自定义的数据类型.