//非全局情况
char p[10]={'1'};
int pp[10]={1};
char d[10];
memset(d,'1',sizeof(d));
PS:全局情况下int默认初始值为0,double默认初始值为0
非全局情况int默认都是垃圾值
使用以上赋值方法得出的结果是:
1
1 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1
曾经的我!一直天真的以为使用第一、第二种初始化方法时,会给数组中的每个元素都赋上初始值!然而!并不是!
C/C++不支持数组的整体赋值,可以在声明数组时整体初始化,无论数组有多大,全部初始化为0的操作很简单,如int a[100]={0};可将a的100个元素全部置为0,但若要将其全部赋为其他值,则不行,即上述的第二种赋值方法。
若要整体赋其他初始值,直接用memset、fill、for循环即可,只要别用第一种办法就行(手动狗头!
除了for循环的手动赋值,memset和fill函数也是两种不错的选择;
但是它俩有点细微的差别:
-
memset
函数(一般只能用来填充char
型数组)- 按照字节填充某字符
- 在头文件
<cstring>
里面 - 使用方法memset(数组名,要填充的内容,单元大小)
-
fill
函数(可以赋值任何)- 按照单元赋值,将一个区间的元素都赋同一个值
- 在头文件
<algorithm>
里面 - 使用方法:fill(起始地址,结束地址, 要填入的内容);