memset 函数
memset 函数是计算机中C/C++语言初始化函数。作用是将某一块内存中的内容全部设置为指定的值,这个函数通常为新申请的内存做初始化工作。
memset()函数原型是extern void *memset(void *s,int c,size_t n)
s:指向要填充的内存块;
c:要被设置的值;
n:是要被设置该值的字符数;
返回类型是一个指向存储区s的指针。
memset函数在初始化处理时非常方便,但也有其局限性,比如要注意初始化数值,要注意字节数等等。当然,直接选择用for循环或while循环来进行初始化也是可以的,只不过memset更快捷一点。
memset函数是按照字节对内存块进行初始化,所以不能用它将int数组除初始化为0和-1以外的其他值(除非该值高字节和低字节相同)。其实c的实际范围在0-255,因为memset函数只能取c的后八位给所输入范围的每个字节。
下面的语句是错误的:
int a[4];
memeset(a,1,4);
得到的执行结果为
16843009 0 0 0
正确的语句应为
memset(a,1,16);//int所占内存为4字节的情况
memeset(a,1,sizeof(a));
那为什么呢?
数组a 是整型的,整型占据的内存大小为4Byte,而memset函数还是按照字节为单位进行赋值。
//初始化数组
char str[100];
memset(str,0,100);
//清空结构体类型的变量
typedef struct stu
{
char name[20];
int c;
}stu;
stu st1;
memeset(&st1,0,sizeof(stu));
stu st2;
memset(st2,0,sizeof(stu)*10);
如果结构体中有数组的话,还是需要对数组单独进行初始化处理。