一、memset函数原型
void *memset(void *src, int value, size_t n);这里srs可以是数组名,也可以是指向某一内存空间的指针;
value为要填充的值;
n为要填充的字节数,通常为sizeof(s);
函数的功能:将指针变量 src 所指向的前 n 字节的内存单元用一个“整数” value 替换,注意 value是 int 型。src 是 void* 型的指针变量,所以它可以为任何类型的数据进行初始化。
二、使用步骤
1.加入头文件和命名空间
代码如下(示例):
#include <string.h>
using namespace std;
2.数组初始化
代码如下(示例):
char str[20];
char *pt = str;
memset(pt, 0, sizeof(str)); //将str数组初始化为0
3.自定义类初始化
我们自定义的类或者结构体中,通常会定义 int,char,double等 内置型变量,在构造函数中一句句的将他们初始化为0显得很麻烦,所以可以直接memset(this, 0, sizeof *this);将整个对象的内存全部置为 0。对于这种情形可以很好的工作,但是下面几种情形是不可以这么使用的:1.类含有虚函数表:将破坏虚函数表,后续调用虚函数时将出现异常;
2. 类中含有 C++类型的对象:例如,类中定义了一个 vector 的对象,因为在构造函数体的代码执行之前就对 vector 对象完成了初始化,假设 vector 在它的构造函数里分配了内存,那么我们这么一做就破坏了 vector 对象的内存。
代码如下(示例):
memset(this,0,sizeof(*this))