`memset` 函数是 C 语言标准库中的一个实用函数,用于设置内存块的内容。它可以用来初始化数组或结构体,或者清零一段内存。下面是 `memset` 函数的一个具体使用例子:
函数原型
void *memset(void *s, int c, size_t n);
- *s*:指向要填充的内存块的指针。
- *c*:要写入的值,这个值会被转换为无符号字符。
- *n*:要填充的字节数。示例代码
案列代码1:
#include <stdio.h>
#include <string.h>
int main() {
// 定义一个字符数组
char str[20] = "Hello, World!";
// 使用 memset 函数将数组的前 10 个字节设置为 'X'
memset(str, 'X', 10);
// 打印修改后的数组
printf("Modified string: %s\n", str);
return 0;
}
代码解释:
1. 定义字符数组:
char str[20] = "Hello, World!";
这里定义了一个字符数组 `str`,初始内容为 `"Hello, World!"`。
2. 使用 `memset` 函数:
memset(str, 'X', 10);
`str`:指向数组的指针。
`'X'`:要写入的字符,会被转换为无符号字符。
`10`:要填充的字节数。
这行代码将数组 `str` 的前 10 个字节设置为 `'X'`。由于 `str` 的总长度是 20 个字节,所以后面的 10 个字节保持不变。
3. 打印修改后的数组:
printf("Modified string: %s\n", str);
这行代码打印修改后的数组内容。
输出结果
Modified string: XXXXXXXXXXXXld!
- 前 10 个字节被设置为 `'X'`。
- 后面的内容保持不变。
其他应用场景
- 初始化数组:
int arr[10];
memset(arr, 0, sizeof(arr)); // 将数组初始化为 0
- 清零内存:
char buffer[256];
memset(buffer, 0, sizeof(buffer)); // 清零整个缓冲区
- 设置特定值:
struct {
int id;
char name[50];
} record;
memset(&record, 0, sizeof(record)); // 将结构体初始化为 0
`memset` 函数是一个非常灵活的工具,可以用于各种内存操作,包括初始化、清零和设置特定值。