• 自己实现内存操作函数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++) != '')

                         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()内存移动函数

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

  • 相关阅读:
    690. 员工的重要性
    91. 解码方法
    153. 寻找旋转排序数组中的最小值
    81. 搜索旋转排序数组 II
    33. 搜索旋转排序数组
    80. 删除有序数组中的重复项 II
    5708. 统计一个数组中好对子的数目
    高精度除法
    易闻app
    2021.4.13
  • 原文地址:https://www.cnblogs.com/qingjiaowoxiaoxioashou/p/5679952.html
Copyright © 2020-2023  润新知