[C++]實現memcpy
void memcpy(void *pDst ,void *pSrc ,size_t length)
{
char *dst=static_cast<char*>(pDst); //轉換成char*
char *src=static_cast<char*>(pSrc);
if ((src==nullptr)||(dst==nullptr)) //判斷是否為野指標
{
/* code */
return;
}
//分段討論,判斷dst和區間(src,src+length)的位置關係
//地址不重疊,
//(1)dst<src,dst在src前面,此時即便dst尾部和src的頭部有部分重疊也無所謂,只需要從src的頭部複製到尾部即可
//(2)dst>src+length,只需要從src的頭部複製到尾部即可
if (dst<src || dst>src+length)
{
/* code */
for (int i = 0; i < length; ++i)
{
/* code */
*dst++=*src++;
}
}
else //地址重疊,(3)src <= dst <= src+length,此時需要從尾部開始複製
{
dst=dst+length-1; //定位到尾部
src=src+length-1;
for (int i = length; i >=0 ; i--) //從尾部開始複製
{
/* code */
dst[i]=src[i];
}
}
}
相關文章
- memcpy,memmove的實現memcpy
- 實現c中memcpy函式memcpy函式
- [C練習]實現memcpy原型函式memcpy原型函式
- memmove和memcpy函式的區別及實現memcpy函式
- memcpymemcpy
- C語言-記憶體函式的實現(一)之memcpyC語言記憶體函式memcpy
- memmove和memcpy 以及strcmp strcpy幾個庫函式的實現memcpy函式
- memset()&&memcpy&&strcpymemcpy
- C++ binder 實現C++
- 命令模式(c++實現)模式C++
- 堆排序(實現c++)排序C++
- 堆排序c++實現排序C++
- strcpy與memcpy的區別memcpy
- 享元模式(c++實現)模式C++
- 中介者模式(c++實現)模式C++
- 橋接模式(c++實現)橋接模式C++
- 模板方法模式(c++實現)模式C++
- 狀態模式(c++實現)模式C++
- 字典樹及其C++實現C++
- 折半查詢(C++實現)C++
- C++程式設計實現C++程式設計
- LinkBlockedQueue的c++實現BloCC++
- hanoi漢諾塔C++實現C++
- C++實現蛇形矩陣C++矩陣
- C++實現單例模式C++單例模式
- C++實現工廠模式C++模式
- 單例模式c++實現單例模式C++
- c++ web框架實現之靜態反射實現C++Web框架反射
- 貝葉斯實現文字分類C++實現文字分類C++
- C++“隱藏實現,開放介面”的實現方案C++
- C中memcpy使用注意事項memcpy
- strcpy,strncpy,memcpy,memmove,memset函式memcpy函式
- C++ 實現Golang裡的deferC++Golang
- 迴圈佇列C++實現佇列C++
- FastASR——PaddleSpeech的C++實現ASTC++
- C++實現Prim演算法C++演算法
- 邱奇數的C++實現C++
- DES密碼的C++實現密碼C++