重写memcpy()

    技术2026-08-24  10

    /*************************        重写 memcpy *************************/

    #include #include

    void * mymemcpy(void *dest,const void *sour,unsigned int n);

    int main(int argc,char *argv[]) {     const char * str = "hello world";     char array[20] ="12345 world";

        //memset(array,0,20);     mymemcpy(array,str,6);     printf("%s/n",array);     return 0; }

    /*     1:输入输出参数均为void *     2: unsigned int 避免出现负数     3: const修饰,保持只读属性,但编译会警告 */

    void * mymemcpy(void *dest,void *sour,unsigned int n) {      /*      利用unsigned char,避免在向有符号字符转换中出错      tmpdest,tmpsour 都是防止改变其对应内存的地址          dest必须保存,用于返回原地址      */     unsigned char * tmpdest = dest;     unsigned char * tmpsour = sour;      assert ((tmpdest!=NULL) && (tmpsour!=NULL));     while ( n-- > 0)     {         *tmpdest++ = *tmpsour++;     }     return dest;    }   

    最新回复(0)