1、memset()函数
作用:为新申请的内存进行初始化。mem是memory的含义,即内存。
尤其适用于数组和结构体等占用内存较大的变量。(尤其是结构体中数据类型多,单个成员分别初始化较为麻烦)
函数原型:
# include <string.h>
void *memset(void *s, int c, unsigned long n);
将s指向的前n个字节的内存单元用一个整数c代替。
例1:初始化数组:
char str[5];
memset(str,0,sizeof(str));
例2:初始化结构体:
typedef struct{
uint32_t a:1;
uint32_t b:2;
uint32_t c:4;
uint32_t d:25;
}IO;
IO test;
memset(&test,0,sizeof(test));
2、memcpy()函数:
作用:从某起始内存地址中拷贝n个字节到目标内存起始地址位置中
#include<string.h>
void *memcpy(void *dest, const void *src, size_t n);
将src指向的n个字节拷贝到dest所指向的内存地址。
例如:
int a=2;
int b;
memcpy(&b,&a,sizeof(a));
3、memcpy()与strcpy()的区别:
strcpy顾名思义:只能复制字符串,并且不需要指定长度,直到遇到复制字符串结束符'\0'才结束,故容易溢出。
memcpy:复制范围广,不仅可以复制字符串,而且可以复制整型,结构体 等任意类型。