1 函数原型
memset():填充内存块,函数原型如下:
void * memset ( void * ptr, int value, size_t num );
cstring库描述如下:
Fill block of memory
1. Sets the first num bytes of the block of memory pointed by ptr to the specified value (interpreted as an unsigned char).
- memset()函数:
(1)将指针ptr所指向的内存块的前num个字节设置为指定的值value; - 注意事项
(1)memset()函数并不检查内存块的内容或边界,它简单地根据提供的字节数和值来覆盖内存;必须确保内存块有足够的空间来存储num个字节的数据。
2 参数
memset()函数由三个参数ptr、value和num:
- 参数ptr是指向要填充的内存块的指针,类型为void*;
- 参数value是要设置的值,类型为int;尽管value是 int 类型,但是实际只取value的低8位(模256),将value由int型转换为unsigned char型;
- 参数num是要设置的字节数,类型为size_t。
cstring库描述如下:
ptr
1. Pointer to the block of memory to fill.
value
1. Value to be set. The value is passed as an int, but the function fills the block of memory using the unsigned char conversion of this value.
num
1. Number of bytes to be set to the value.
2. size_t is an unsigned integral type.
3 返回值
memset()函数的返回值类型为void*型:
- 返回指向要填充的内存块的指针ptr。
cstring库描述如下:
1. ptr is returned.
4 示例
4.1 示例1
示例代码如下所示:
int main() {
//
int numbers[6] = { 0 };
//
memset(numbers, 0x12, sizeof(numbers));
//
for (int i = 0; i < 6; i++) {
printf("%#x\n", numbers[i]);
}
//
return 0;
}
代码运行结果如下图所示:
4.2 示例2
示例代码如下所示:
int main()
{
//
char arr_s[10] = "aaaaaaaaa";
//
printf("设置前:%s\n", arr_s);
//
memset(arr_s, 'b', 5);
//
printf("设置后:%s\n", arr_s);
//
return 0;
}
代码运行结果如下图所示: