Back to Blog

memset函数用法

#工作

参数说明:

  • s: 指向要填充的内存区域的指针。
  • c: 要设置的值。尽管声明为 int 类型,但实际上只有其低八位(即一个字节)会被用来填充内存。这个值会被解释为 unsigned char
  • n: 要填充的字节数。

memset 函数返回指向内存区域 s 的指针。

memset 的核心秘密:字节操作

memset 函数最关键的特性是它按字节进行操作。这意味着它不会识别数据类型(如 intfloat 或结构体),也不会将第二个参数的完整 int 值作为整体赋给每个元素。相反,它会取出 c 参数的低八位,然后将这个字节值重复地写入 s 指向的内存区域的每一个字节,共写入 n 次。

正是因为这种字节操作的特性,memset 在初始化数组时存在一定的局限性,尤其当数组元素是多字节类型时,如果不理解这一点,很容易导致错误的初始化结果。

常见初始化场景与误区解析

我们通过几个具体的例子来演示 memset 的行为,并分析其背后的原理。假设我们有一个 int 类型的数组 a