模擬實現 memcpy memmove 函式

2021-08-13 16:11:28 字數 1325 閱讀 2560

#include#include#include#includevoid *my_memcpy(void *dest,const void *src,int count)

return ret;

}int main()

; int arr2[10] = ;

int count_1 = sizeof(arr1)/sizeof(arr1[0]);

int count_2 = sizeof(arr2);

my_memcpy(arr1,arr2,count_2); //陣列拷貝

for(;i < count_1;i++)

printf("\n");

system("pause");

return 0;

}

在回答上面提出的問題之前,這裡先提出乙個概念---記憶體重疊,當上題中的 arr1 在記憶體中的整體位置比 arr2 在記憶體中的整體位址高或者低時,這是我們說二者不存在記憶體重疊問題,這裡的高或低對我們函式實現拷貝功能無任何影響;反之,我們已經建立了記憶體重疊的概念;二者出現記憶體重疊時,當 arr1 的位置高於 arr2 時,由 memcpy 函式的實現過程中發現此時能完成我們預期的拷貝工作,當 arr1 的位置低於 arr2 時,不難發現用 memcpy 函式處理得不到我們想要的結果,下面的 memmove 函式能彌補該函式在這種情況下的不足。
memmove 函式說明:msdn 中對該函式原型和返回值的描述為:函式原型:void *memmove( void *dest, const void *src, size_tcount);返回值:memmovereturns the value of dest.
#include#include#includevoid *my_memmove(void *dest,const void *src,int count)

} else

} return ret;

}int main()

; char *src = "hello word!";

int count = strlen(src) + 1;

printf("%s",my_memmove(dest,src,count));

system("pause");

return 0;

}

注: memcpy 和 memmove 函式不僅可以處理字串,還能處理陣列。

模擬實現Spring IOC

通過在類上標註 registration 註冊進容器,injection從容器注入物件 容器類 public class springcontainer else bean.setbeanclass c mappropsmap new hashmap 處理注入屬性 field props c.get...

模擬實現strcmp

函式簡介 原型 int strcmp const char s1,const char s2 所在標頭檔案 string.h 功能 比較字串s1和s2。一般形式 strcmp 字串1,字串2 說明 當s1注意不是 1 當s1 s2時,返回值 0 當s1 s2時,返回正數 注意不是1 如下 int m...

模擬實現strncat

模擬實現strncat 在系統庫函式中,存在strncat這個函式,它用於字串的追加,就是在乙個字串後面再追加乙個字串,它的函式原型為 char strncat char strdest,const char strsource,size t count 在其中,strdest為目標字串,strso...