memcpy函式更自己的實現

2021-07-12 00:01:26 字數 1221 閱讀 1479

#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的實現,很不幸,我也吃過這個虧 這種題要是寫的一塌糊塗後面完全沒戲 所以還是得提前準備一下,不然就只能呵呵了...