zoukankan      html  css  js  c++  java
  • strcpy,memcpy,memset函数实现

     strcpy 实现,只能拷贝字符串

    char* strcpy(char* des,const char* source)
    {
      char* r=des;  
    assert((des != NULL) && (source != NULL));
     while((*des++ = *source++)!='');
     return r;
    }

    memcpy 实现,注意目的地址和源地址重合的情况,以及强制类型转换

    void *myMemCopy(void *dest,const void *src,size_t count)
    {
        char *pDest=(char *)(dest);
        const char *pSrc=(const char *)(src);
    
        //目的地址和源地址重叠,从源地址的末尾方向开始拷贝
         if( pDest>pSrc && pDest<pSrc+count )
        {
            pDest = pDest + count-1;
            pSrc = pSrc + count-1;
            while(count--){
                *pDest-- = *pSrc--;
            }
        }
        //目的地址和源地址不重叠,从源地址的开始方向拷贝
        else
        {
            while(count--){
                 *pDest++ = *pSrc++;
            }
        }
    
        return pDest;
    }

    memset函数

    memset()的函数, 它可以一字节一字节地把整个数组设置为一个指定的值。

    memset()函数在mem.h头文件中声明,它把数组的起始地址作为其第一个参数

    void* memset(void* s, int c, size_t n)
    {
    assert(str != NULL);    
    unsigned char* p = (unsigned char*) s;
        while (n > 0) {
        *p++ = (unsigned char) c;
        --n;
        }
        return s;
    }
  • 相关阅读:
    mysql缓存
    复杂映射
    SQL 映射的 XML 文件
    xml配置文件
    从xml中构建sqlSessionFactory
    eclipse使用时jar不在libraries
    去掉不用的工作空间
    javac找不到或无法加载主类 com.sun.tools.javac.Main,
    文本,布局,样式
    (常用)re模块
  • 原文地址:https://www.cnblogs.com/NeilZhang/p/6368368.html
Copyright © 2011-2022 走看看