memset() 函数通过循环逐字节填充指定内存块,将每个字节设置为指定值,适用于填充数组或字符串。参数包括指向内存块的指针、要填充的值和字节数。该函数返回指向已填充内存块的指针,不检查指针有效性,num 为 0 则不填充,超过内存块边界可能导致未定义行为。替代方案包括 malloc() 和 free() 或 std::fill()。

memset() 函数详解
用途:
memset() 函数用于填充一个内存块的指定字节数。
语法:
void *memset(void *ptr, int value, size_t num);
参数:
立即学习“C语言免费学习笔记(深入)”;
- ptr:指向要填充内存块的指针。
- value:要填充的字节值。
- num:要填充的字节数。
返回值:
memset() 返回指向已填充内存块的指针(即 ptr)。
工作原理:
memset() 函数通过使用循环来逐个字节地填充指定的内存块。它将每个字节都设置为 value 参数指定的值。
示例:
// 将一个 10 个字节的数组填充为 0 char arr[10]; memset(arr, 0, sizeof(arr)); // 将一个字符串填充为 'a' char str[] = "Hello"; memset(str, 'a', 5); // 填充前 5 个字符为 'a'
注意事项:
- memset() 不会检查 ptr 指向的位置是否有效,因此在使用前必须确保它指向一个有效的内存地址。
- 如果 num 为 0,则什么也不会填充。
- 如果 num 超过内存块的大小,则函数将超过内存块的边界,这可能会导致未定义的行为。
替代方案:
memset() 函数的替代方案包括:
- malloc() 和 free():分配和释放内存块,并手动填充字节。
- std::fill():C++ 中的函数,用于填充容器或数组。











