概述
memset是计算机中C语言初始化函数(一般位于string.h头文件中)。作用是将某一块内存中的内容全部设置为指定的值(以byte为单位), 这个函数通常为新申请的内存做初始化工作。
void *memset(void *s, int ch, size_t n);
函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。
memset()函数原型是extern void *memset(void *buffer, int c, int count) buffer:为指针或是数组,c:是赋给buffer的值,count:是buffer的长度.
备注:ch实际范围应该在0~~255,因为该函数只能取ch的后八位赋值给你所输入的范围的每个字节。
举例
#include<stdio.h>
int main(void) {
int data[10];
memset(data,1,sizeof(data));
for(int i = 0; i < 10; i++){
printf("%d\t",data[i]);
}
return 0;
}
16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009 16843009
解释:1对应0x01,0x01010101 = 16843009
#include<stdio.h>
int main(void) {
int data[10];
memset(data,60000,sizeof(data));
for(int i = 0; i < 10; i++){
printf("%d\t",data[i]);
}
return 0;
}
1616928864 1616928864 1616928864 1616928864 1616928864 1616928864 1616928864 1616928864 1616928864 1616928864
解释:60000对应0xEA60,0x60606060 = 1616928864
#include<stdio.h>
int main(void) {
int data[10];
memset(data,-1,sizeof(data));
for(int i = 0; i < 10; i++){
printf("%d\t",data[i]);
}
return 0;
}
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1
解释:-1对应0xFF,0xFFFFFFFF = -1