memcpy-memset函数

memcpy函数

memcpy是内存拷贝函数,它的功能是从source的开始位置拷贝size_t num个字节的数据到destination。如果destination存在数据,将会被覆盖。memcpy函数的返回值是destination的指针。memcpy函数定义在string.h头文件里。基本格式是。

void* memcpy(void* destination, const void* source, size_t num);
void* destination 目标内存    const void* source  源内存    size_t num  字节个数

如下举一个例子

#include
#include 
#include 

struct {
    char name[40];
    int age;
}person, person_copy;

int main()
{
    char myname[] = "Pierre de Fermat";
    /*using memcpy to copy string: */
    memcpy(person.name, myname, strlen(myname) + 1);
    person.age = 46;
    /*using memcpy to copy structure:*/
    memcpy(&person_copy, &person, sizeof(person));

    printf("person_copy: %s, %d \n", person_copy.name, person_copy.age);
    return 0;
}

运行结果为:


memset函数

extern void *memset(void *buffer, int c, int count)

其中,buffer:为指针或是数组,c:是赋给buffer的值,count:是buffer的长度。
这个函数在socket中多用于清空数组.如:原型是

memset(buffer, 0, sizeof(buffer))

memset 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’。
例如:

char a[100];
memset(a, ‘/0’, sizeof(a));

memset可以方便的清空一个结构类型的变量或数组。
例如:

struct sample_struct
{
  char csName[16];
  int iSeq;
  int iType;
};

你可能感兴趣的:(memcpy-memset函数)