關於 memcpy() 函式,請先看鏈結。
memcpy() 函式和 memmove() 函式的函式原型如下:
void* memcpy(void * restrict s1, const void * restrict s2, size_t n);
void* memmove(void * s1, const void * s2, size_t n);
兩函式作用相似,都是指標 s2 指向的區域拷貝 n 個位元組至 s1 指向的區域,並且都返回乙個指標指向 s1。
所不同的是 memcpy() 函式的引數帶有關鍵字restrict
(關鍵字 restrict 用於限定指標,告知編譯器,所有修改該指標所指向內容的操作全部都是基於該指標
的,即不存在其它進行修改操作的途徑),在此處可以理解為 memcpy() 函式假設進行拷貝的兩個記憶體區域之間沒有重疊,因此如果兩個記憶體區域存在重疊,
memcpy() 可能出錯。而 memmove() 沒有這樣的假設,其拷貝過程類似於先將所有位元組拷貝至乙個臨時區域,再將其拷貝至目的區域。
對於這兩個函式而言,它們不知道也不關心資料的型別,只負責從乙個位置把給定長度的位元組拷貝到另乙個位置而已。
C語言之memcpy函式
函式原型 void memcpy void dst,const void src,size t n 標頭檔案 include 函式說明 從源src所指的記憶體位址的起始位置開始拷貝n個位元組到dst所指的記憶體位址的起始位置中 引數 1 out dst 目的陣列的首位址 2 in src 源陣列的首...
c語言 mem類函式原始碼
原型 void memcpy void dst,const void src,int count 從記憶體中讀取src字串指定字元個數copy到dst中,其中dst與src記憶體不能重疊,切拷貝以後需要將dst末尾 0 源 include include include copy指定字串 void ...
str函式和mem函式
1 兩函式的標頭檔案都是一樣的 2 str帶頭的函式可以處理字串,遇到null 0 就會停止操作,而mem帶頭的函式則不用,但是它需要指定複製值的長度,以位元組計算 3 常見str帶頭的函式有strlen strcpy strcat strcmp strncpy等,字串查詢。4 常見mem帶頭的函式...