memcpy函式、memmove函式
1、都是以位元組為基本單位操作;
2、查詢msdn對二者的解釋:
memcpy函式:
(1)copies characters between buffers.(
在緩衝區之間複製字元)
(重疊區域中的原始源位元組在被覆蓋之前被複製。使用memmove處理重疊區域)
memmove函式:
(1)moves one buffer to another.(將乙個緩衝區移動到另乙個緩衝區)
)3、根據上述解釋模擬實現memcpy函式和memmove函式
#include#include#include#include//模擬實現memcpy:以位元組位基本操作單位
//賦值數字節長度的記憶體;以空指標型別來接收
void *my_memcpy(void *des, const void *src, int size)
return des;
}//模擬實現memmove
void *my_memmove(void *des, const void *src, int size)
} else
} return des;
}int main()
關於實現memmove函式考慮的記憶體重疊問題
4、**測試memmove、memcpy函式
memmove函式:有考慮記憶體重疊問題
char src[10] = "qweasdz";
int size = strlen(src) + 1;
char des[20];
//printf("%s\n", memmove(src + 1, src, size));//列印結果:qweasdz//說明:返回拷貝的值
//memmove(des, src, size);
//printf("%s\n", src);//列印結果:qweasdz
//memmove(src, src + 1, size);
//printf("%s\n", src);//列印結果:weasdz
memmove(src + 1, src, size);//第五種情況
printf("%s\n", src);//結果為:qqweasdz
memcpy函式:測試顯示memcpy函式也考慮了記憶體重疊問題
char src[10] = "qweasdz";
int size = strlen(src) + 1;
char des[20];
//memcpy(des, src, size);
//printf("%s\n", src);//列印結果:qweasdz
//memcpy(src, src + 1, size);
//printf("%s\n", src);//列印結果:weasdz
memcpy(src + 1, src, size);//第5種情況
printf("%s\n", src);//結果為:qqweasdz
5、使用c函式時,需要考慮記憶體重疊問題,還是去使用memmove函式。 C 函式 函式指標
區域性變數不能作為預設實參。作為預設實參的名字在函式宣告所在的作用於內解析,而這些名字的求值過程發生在函式呼叫時 sz wd 80 char def sz ht string screen sz ht sz wd,char def string window screen 呼叫screen ht,8...
C 函式 函式過載
如果同一作用域內的幾個函式名字相同但形參列表不同,我們稱之為過載函式。void print const char cp void print const int beg,const int end void print const int ia,size t size 這些函式接受的形參型別不一樣,...
C 介面函式(c中呼叫c 函式extern)
一 在c 的標頭檔案中 需要包含 ifdef cplusplus extern c endif在c 的cpp檔案中需要包含該函式的實現 const char dmnmsagentgetfirstpeerid const char dmnmsagentgetnextpeerid 二 在c的.c檔案中對...