自己实现内存操作函数memset(),memcmp(),memcpy(),memmove()

1.memset()内存设置函数(初始化)

void *my_memset(void* dest, int c, size_t count)

{

      assert(dest != NULL);

      char *pdest = (char *)dest;

      while (count-->0)

     {

           *pdest++ = c;

     }

     return dest;

}

2.memcmp()内存比较函数

int my_memcmp(const char* str1, const char* str2, size_t count)

{

      assert(str1 != NULL&&str2 != NULL);

      const char *pstr1 = str1;

      const char *pstr2 = str2;

      int result = 0;

      while (count-- > 0)

     {

            if ((result=*pstr1++-*pstr2++) != '\0')

                     break;

     }

       if (result > 0)

            result = 1;

       else if (result < 0)

            result = -1;

return result;

}

3.memcpy()内存拷贝函数

内存拷贝函数是出题率最高的,在实现时需注意内存覆盖的问题

void *my_memcpy(void* dest, const void* src, size_t count)

{

       assert(dest != NULL&&src != NULL);

       char* pdest =(char*) dest;

       const char* psrc =(const char*) src;

       if (psrc > pdest || pdest >= psrc + count)

       {

              while (count--)

              *pdest++ = *psrc++;

       }

       else

       {

               while (count--)

               {

                     *(pdest + count) = *(psrc + count);

              }

       }

return dest;

}

4.memmove()内存移动函数

 

   内存移动函数的实现方法完全跟内存拷贝函数实现方法一样,但在使用中还是有细小差别的。但在这里我们就不详细论述他们的差别了。

posted @ 2016-07-18 08:14  请叫我小小兽  阅读(349)  评论(0编辑  收藏  举报