一、包含于头文件
#include <memory.h>
二、用法
函数原型:void* memset(void *s,int c,size_t n)
作用:将指针变量s所指向的地址,前n个字节用 ‘ c ’ 来初始化
#include <memory.h> int main() { char arr1[] = "abcdefg"; memset(arr1, 'm', 3); printf("%s\n", arr1); return 0; }
运行结果
三、注意
memset函数不能用来将整型数组初始化为除 0 和 -1 以外的数字
因为memset函数是一个字节一个字节地去初始化,因为 0 和 -1 的高字节与低字节都相同
0的16进制表示为:0x 00 00 00 00
-1的16进制表示为:0x FF FF FF FF
每一位为4bit,每两位则为1字节
假设原来整型数组为 int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
memset(arr,2,sizeof(int))初始化前4个字节
若初始化为2,16进制表示为0x 00 00 00 02
初始化前:00 00 00 01
初始化后:02 02 02 02 (初始化只用到初始化内容的1个字节,即02)
0x 02 02 02 02 = 33686018
则初始化后数组变为 { 33686018,2,3,4,5,6,7,8,9,10 }
#include <memory.h> int main() { int arr2[10] = { 1,2,3,4,5,6,7,8,9,10 }; memset(arr2, 2, sizeof(int)); int i = 0; while (i < 10) { printf("%d ", arr2[i]); i++; } return 0; }
运行结果