memset函数是C语言中的一个标准库函数,用于将一段内存区域的每个字节都设置为特定的值。
函数原型如下:
void *memset(void *ptr, int value, size_t num);
函数参数:
- ptr:指向要设置的内存区域的指针。
- value:要设置的值,以int类型表示,但实际上会被转换为unsigned char类型。
- num:要设置的字节数。
函数返回值:
- 返回指向被设置的内存区域的指针。
memset函数的作用是将从ptr指针指向的内存地址开始的num个字节都设置为value值。这个函数通常用于初始化内存,也可以用于将某些特定字节的值替换为其他值。
需要注意的是,value参数的取值范围应该在0到255之间,因为被设置的内存区域是以字节为单位的。如果value的值超出了这个范围,则会被截断为0到255之间的值。
另外,memset函数可以用于任何类型的内存区域,例如字符数组、整数数组、结构体等。它可以快速地将内存区域的所有字节都设置为特定的值,是C语言中非常常用的一个函数。
1.memset初始化char数组;
memset本来就是为了char数组初始化诞生的.
例如
memset(arr, 'a', 4);
arr数组前4个字节变为'a';
2.memset初始化整数数组;
赋值 0:
memset(a, 0, sizeof(a));
可以;
赋值 -1:
memset(a, -1, sizeof(a));
可以;
赋值 1:
不可以;
memset函数是按照字节对内存块进行初始化,所以不能用它将int数组出初始化为0和-1之外的其他值
用memset赋较大值:
memset(a, 127, sizeof(a));
数组a的值为2139062143;
用memset赋较小值:
memset(a, 128, sizeof(a));
数组a的值为-2139062144;
(int,范围是-2147483648~2147483647)