C++篇 memset() 函数 数组初始化

#include<cstring>
int a[1024];
memset(a,1,sizeof(a));

a数组元素值将全部初始化为16843009,为什么会这样呢?

memset()函数原理是对内存块中字节元素进行初始化,上述代码中每字节将初始化为十六进制下ox01,(1字节=8bit  ox01=0000 0001),int类型为4字节(32bit),故a[i]=ox01 01 01 01转化为十进制为16843009。

所以我们在使用memset()函数时通常将初始化值设为0,即

memset(a,0,sizeof(a));

即使经过计算机内部硬件转化 初始化仍未0。(ox00 00 00 00 == 0)