1.memcpy函数
memcpy函数是C/C++语言中的一个用于内存复制的函数,声明在 string.h 中(C++是 cstring)。其原型是:
void *memcpy(void *destin, void *source, unsigned n);
作用是:以source指向的地址为起点,将连续的n个字节数据,复制到以destin指向的地址为起点的内存中。
函数有三个参数,第一个是目标地址,第二个是源地址,第三个是数据长度。
使用memcpy函数时,需要注意:
- 数据长度(第三个参数)的单位是字节(1byte = 8bit)。
- 注意该函数有一个返回值,类型是void*,是一个指向destin的指针。
下面是函数原型
-
void *memcpy(void *dst, const void *src, size_t size)
{
char *psrc;
char *pdst;if (NULL == dst || NULL == src)
{
return NULL;
}if ((src < dst) && (char *)src + size > (char *)dst) // 出现地址重叠的情况,自后向前拷贝
{
psrc = (char *)src + size - 1;
pdst = (char *)dst + size - 1;
while (size--)
{
*pdst-- = *psrc--;
}
}
else
{
psrc = (char *)src;
pdst = (char *)dst;
while (size--)
{
*pdst++ = *psrc++;
}
}return dst;
}
-
2.memset函数
-
memset是一个初始化函数,作用是将某一块内存中的全部设置为指定的值。
-
void *memset(void *s, int c, size_t n);
- s指向要填充的内存块。
- c是要被设置的值。
- n是要被设置该值的字符数。
- 返回类型是一个指向存储区s的指针。
使用步骤
1.加入头文件和命名空间
代码如下(示例)
#include <string.h>
2.数组初始化
代码如下(示例):
char str[20];
char *pt = str;
memset(pt, 0, sizeof(str)); //将str数组初始化为0