zoukankan      html  css  js  c++  java
  • memcpy、memmove、memset

    void *  memcpy(void * dst, const void * src, size_t count)
    {
        void *res=dst;
    
        while (count--)
        {
            *(char*)dst = *(char*)src;
            dst = (char*)dst + 1;
            src = (char*)src + 1;
        }
    
        return res;
    }
    void *  memmove(void * dst, const void * src, size_t count)
    {
        void *res = dst;
    
        //重叠部分不影响或者不存在重叠
        if (dst <= src || (char*)src + count <= (char*)dst)
        {
            while (count--)
            {
                *(char*)dst = *(char*)src;
                dst = (char*)dst + 1;
                src = (char*)src + 1;
            }
        }
        else
        {
            dst = (char*)dst + count - 1;
            src = (char*)src + count - 1;
            while (count--)
            {
                *(char*)dst = *(char*)src;
                dst = (char*)dst - 1;
                src = (char*)src - 1;
            }
        }
    
        return res;
    }
    void* memset(void* dst, int val, size_t count)
    {
        void* res = dst;
    
        while (count--)
        {
            *(char*)dst = (char)val;
            dst = (char*dst) + 1;
        }
    
        return res;
    }
  • 相关阅读:
    十一作业
    11.20
    11.13 第十二次、
    11.13 第十一次、
    11.06第十次、
    11.06第九次、
    10.30
    10.23
    10.16
    10.9
  • 原文地址:https://www.cnblogs.com/jason1990/p/4663820.html
Copyright © 2011-2022 走看看