• 自己实现内存操作函数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()内存移动函数

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

  • 相关阅读:
    day16(链表中倒数第k个结点)
    day15(C++格式化输出数字)
    day14(调整数组顺序使奇数位于偶数前面 )
    day13(数值的整数次)
    day12(二进制中1的个数)
    day11(矩形覆盖)
    day10(跳台阶)
    hadoop 又一次环境搭建
    Hive 学习
    hadoop -工具合集
  • 原文地址:https://www.cnblogs.com/qingjiaowoxiaoxioashou/p/5679952.html
Copyright © 2020-2023  润新知