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<stdio.h>
#include <string.h>
#include <stdlib.h>

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;
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 8,743评论 0 6
  • 多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原...
    LZM轮回阅读 6,102评论 0 12
  • 最全的iOS面试题及答案 iOS面试小贴士 ———————————————回答好下面的足够了-----------...
    zweic阅读 7,607评论 0 73
  • 史上最全的iOS面试题及答案 iOS面试小贴士———————————————回答好下面的足够了----------...
    Style_伟阅读 7,102评论 0 35
  • ———————————————回答好下面的足够了---------------------------------...
    恒爱DE问候阅读 5,696评论 0 4