memset 一般使用“0”初始化内存单元,通常是给数组或结构体进行初始化,或清空数组或结构体。
memset 函数声明为:
void
其功能是将 str 中当前位置后面的 n 个字节 (typedef unsigned int size_t )用 c 替换并返回 str 。
这里一定要注意:memset 函数是按字节对内存块进行初始化的。
对于 char 型的数组,可以将其初始化为任意一个字符。
但对于 int 型的数组,由于 memset 函数按字节对内存块进行初始化,所以不能用它将 int 数组初始化为 0 和 -1 之外的其他值。
如下图所示,memset 赋值为 -1 或 0,最后的结果是正确的:
但使用memset赋值为-1和0以外的值,最终的结果并不是期望值。比如赋值为1,则如下图所示:
因为 memset 是对每个字节进行赋值的,一个 int 为4字节,那么 memset 赋值时为二进制则为:
00000001 00000001 00000001 00000001 = 16843009