欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于memcpy和memmove的一點(diǎn)重要說(shuō)明

 更新時(shí)間:2016年12月22日 09:56:52   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇關(guān)于memcpy和memmove的一點(diǎn)重要說(shuō)明。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

今天看到書(shū)上降到memcpy和memmove的區(qū)別才突然發(fā)現(xiàn)原來(lái)兩者之間有如此區(qū)別,以前只知道這兩個(gè)函數(shù)是

實(shí)現(xiàn)同樣的功能,沒(méi)有接觸到其不同。

memcpy和memmove在MSDN的定義如下:

從兩者的聲明來(lái)看的確沒(méi)有區(qū)別,我們來(lái)看這樣一個(gè)例子

當(dāng)我們需要將char* src="abcde"這個(gè)字符串全部copy到dest中然而src與dest在內(nèi)存中大概是這樣存在的:

內(nèi)存地址   低------>高

src   dest
1  2  3  4  5   6
[ a ][ b ][ c ][ d ][ e ][ '\0' ][ ][ ][ ][ ][ ][ ][ ]

src地址為內(nèi)存1,目的地址為內(nèi)存2此時(shí)很明顯內(nèi)存出現(xiàn)了重疊,當(dāng)我們拷貝字符a到第三個(gè)內(nèi)存位置的時(shí)

a將覆蓋src內(nèi)存中的第三個(gè)字符 這種情況在memcpy未定義然而memmove卻給出了正確的處理方式

解決方法,試想當(dāng)我們先將dest地址移動(dòng)dest+n-1同時(shí)src地址移動(dòng)src+n-1這樣再?gòu)膕rc的最后一個(gè)元素開(kāi)

始逐個(gè)向前拷貝到dest中就完美的避免了內(nèi)存重疊導(dǎo)致的元素覆蓋問(wèn)題呢

下面我們根據(jù)memcpy和memmove給出自己的實(shí)現(xiàn):

#include <iostream>
using namespace std;

void *memcopy( void *dest, const void *src, size_t count )
{
  if(dest==NULL||src==NULL)
    return NULL;
  char* Dest=(char*)dest;
  const char* Src=(char*)src;
  
  int i=0;
  
  while(i<count)
  {
    *Dest++=*Src++;
    i++;
  }
  
  return dest;
}

void *memmove(void *dest,const void *src,size_t count )
{
  if(dest==NULL||src==NULL)
    return NULL;

  char* Dest=(char*)dest;
  const char* Src=(char*)src;
  
  int i=0;
  if(src>dest)
  {
    while(i<count)//正向拷貝
    {
      *Dest++=*Src++;
      i++;
    }
  }
  else
  {
    Dest=Dest+count-1;//反向拷貝
    Src=Src+count-1;

    while(i<count)
    {
      *Dest--=*Src--;
      i--;
    }
  }

  
  
  return dest;
}



void main()
{
  char dest[80];
  memset(dest,'\0',80);
  char* src="memcpyteststring";
  int n;
  cout<<"How many char you want to copy from src to dest(memcpy): ";
  cin>>n;
  cout<<"The dest string is: "<<(char*)memcopy(dest,src,n)<<endl;
  cout<<"How many char you want to copy from src to dest(memcpy): ";
  cin>>n;
  cout<<"The dest string is: "<<(char*)memmove(dest,src,n)<<endl;
  return;
}

運(yùn)行截圖:

以上就是小編為大家?guī)?lái)的關(guān)于memcpy和memmove的一點(diǎn)重要說(shuō)明全部?jī)?nèi)容了,希望大家多多支持腳本之家~

相關(guān)文章

  • C語(yǔ)言實(shí)現(xiàn)最全自動(dòng)售貨機(jī)

    C語(yǔ)言實(shí)現(xiàn)最全自動(dòng)售貨機(jī)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)最全自動(dòng)售貨機(jī),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C語(yǔ)言中時(shí)間戳轉(zhuǎn)換成時(shí)間字符串的方法

    C語(yǔ)言中時(shí)間戳轉(zhuǎn)換成時(shí)間字符串的方法

    在PE格式里有個(gè)字段是文件的創(chuàng)建時(shí)間戳,我想把轉(zhuǎn)成字符串,今天小編給大家分享一段代碼,可以比較直觀的看出,需要的的朋友參考下
    2017-02-02
  • C語(yǔ)言如何實(shí)現(xiàn)圖片文件的復(fù)制

    C語(yǔ)言如何實(shí)現(xiàn)圖片文件的復(fù)制

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言中實(shí)現(xiàn)圖片文件的復(fù)制的相關(guān)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12
  • C語(yǔ)言堆與二叉樹(shù)的順序結(jié)構(gòu)與實(shí)現(xiàn)

    C語(yǔ)言堆與二叉樹(shù)的順序結(jié)構(gòu)與實(shí)現(xiàn)

    堆是計(jì)算機(jī)科學(xué)中一類特殊的數(shù)據(jù)結(jié)構(gòu)的統(tǒng)稱,通常是一個(gè)可以被看做一棵完全二叉樹(shù)的數(shù)組對(duì)象。而堆排序是利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計(jì)的一種排序算法。本文將詳細(xì)介紹堆與二叉樹(shù)的順序結(jié)構(gòu)與實(shí)現(xiàn),需要的可以參考一下
    2022-05-05
  • 一篇文章帶你入門C語(yǔ)言:數(shù)組

    一篇文章帶你入門C語(yǔ)言:數(shù)組

    這篇文章主要介紹了C語(yǔ)言中數(shù)組的一些基本知識(shí)小結(jié),其中重點(diǎn)是對(duì)于數(shù)組的內(nèi)存分配相關(guān)方面的知識(shí)整理,需要的朋友可以參考下
    2021-08-08
  • ubuntu中打開(kāi)終端的三種解決方法

    ubuntu中打開(kāi)終端的三種解決方法

    本篇文章是對(duì)ubuntu中打開(kāi)終端的三種方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 淺談C語(yǔ)言之字符串處理函數(shù)

    淺談C語(yǔ)言之字符串處理函數(shù)

    下面小編就為大家?guī)?lái)一篇淺談C語(yǔ)言之字符串處理函數(shù)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-08-08
  • C++使struct對(duì)象擁有可變大小的數(shù)組(詳解)

    C++使struct對(duì)象擁有可變大小的數(shù)組(詳解)

    下面小編就為大家?guī)?lái)一篇C++使struct對(duì)象擁有可變大小的數(shù)組(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • 解讀C++編程中類模板的三種特化

    解讀C++編程中類模板的三種特化

    這篇文章主要介紹了C++編程中類模板的三種特化,需要的朋友可以參考下
    2016-01-01
  • c++中ref的作用示例解析

    c++中ref的作用示例解析

    這篇文章主要為大家介紹了c++中ref的作用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04

最新評(píng)論