#include#include#include#include/* 下標法 */
void * mymemcpy(void * _dst, const void * _src, size_t _size)
/* 為什麼要轉換型別,型別決定步長 */
char *pdst = _dst; /* 型別轉換,為什麼轉成 char*? 因為資料在記憶體是以位元組為單位的,所以這樣具有通用性 */
char *psrc = _src;
for (int i = 0; i < _size; i++)
return _dst;
}/* 指標法 */
void * pmemcpy(void * _dst, const void * _src, size_t _size)
// int i = 0;
// for (char *pdst = _dst, *psrc = _src; i < _size; pdst++,i++)
for (char *pdst = _dst, *psrc = _src; psrc < ((char *)_src) + _size; pdst++) // 注意下: psrc < ((char *)_src) + _size; 這個條件,要對 應前後的變數
return _dst;
}void main()
; int *p = malloc(sizeof(int)* 5);
//memcpy(p, a, 40);
//mymemcpy(p, a, 40);
pmemcpy(p, a, 40);
for (int i = 0; i < 5; i++)
printf("\n");
char str[10] = "shanghai";
char *pstr = malloc(sizeof(char)*(strlen(str) + 1)); //+1:是因為 strlen();只計算字元,不算 \0 在內。
//memcpy(pstr, str, strlen(str) + 1);
//mymemcpy(pstr, str, strlen(str) + 1);
pmemcpy(pstr, str, strlen(str) + 1);
printf("%s\n", pstr);
system("pause");
}
memcpy函式的實現
前段時間去面試自己比較喜歡的乙個工作,面試的哥們讓我實現void memcpy void to,const void from,size t count 這個函式。沒做出來,掛了。感到非常不爽。回來研究了一下。找著了幾個不同版的實現,貼出來。首先對這個函式做一些說明。include void mem...
memcpy函式實現
1.原型 void memcpy void dest,const void src,size t size 標頭檔案 include 功能 由src所指記憶體區域複製size個位元組到dest所指記憶體區域。memcpy 時就需要考慮位址 重疊的情況。2.記憶體布局情況 1 源位址和目的位址不重疊 ...
memcpy 函式實現
memcpy函式的作用 將由src指向位址為起始位址的連續n個位元組的資料複製到以dest指向位址為起始位址的空間內,函式返回乙個指向dest的指標。想必大多數人在面試時被要求寫 memcpy的實現,很不幸,我也吃過這個虧 這種題要是寫的一塌糊塗後面完全沒戲 所以還是得提前準備一下,不然就只能呵呵了...