void *memset(void *ptr, int value, size_t num);
返回值:void*
ptr:一段空间的起始地址
value:给这段空间赋的初始值
num:这段空间的字节数。
注意:该函数对空间进行初始化时,是一个字节一个字节进行的初始化,这一点尤为注意。
作用:通常用于对数组、结构体或一段内存空间进行初始化。
对结构体进行初始化:
typedef struct {
int a;
float b;
double c;
}TEST;
int main()
{
TEST test;
memset(&test, 0, sizeof(TEST));
printf("%d\n", test.a);
printf("%f\n", test.b);
printf("%lf\n", test.c);
return 0;
}
输出结果:
0
0.000000
0.000000
注意:结构体中不能有指针形式的变量,否则会报错
对数组进行初始化
int main()
{
int a[3];
memset(a, 0, sizeof(a));
for (int i = 0; i < 3; i++)printf("%d ", a[i]);
return 0;
}
输出:0 0 0
对堆空间进行初始化:
int main()
{
int* tmep = (int*)malloc(sizeof(int) * 5);//开辟5个int型空间
memset(tmep, 0, 5 * 4);//初始化的时候是一个字节一个字节的初始化的,因此每个字节都要初始为0
for (int i = 0; i < 5; i++)printf("%d ", *(tmep + i));
return 0;
}
输出结果:0 0 0 0 0
注意:用memset进行初始化的时候,我们一般初始化为0或为-1。