bcopy和memcpy、bzero和memset、bcmp和memcmp的差別

1. 關係

(1)頭文件都爲:#include

2. 詳細比較

(1)memset
原 型:

void *memset(void *s, char ch, unsigned n);

功 能:將s所指向的某一塊內存中的每個字節的內容全部設置爲ch指定的ASCII值。即將指定的內存,以字節爲單位,置爲ch所代表的內存形式。
塊的大小由第三個參數指定,這個函數通常爲新申請的內存做初始化工作。
最常見的用途是對struct做初始化工作。
例如:
memset(結構體的地址,0,sizeof(結構體)) ;
注 意:第二個數字也可以是int型,然後截取該int變量的最低字節。作爲複製的二進制模板。所以第二個字節最常見的是0全部置零 或 -1全部置1。

(2)bzero
原 型:

extern void bzero(void *s, int n);

功 能:將以地址s開頭的的前n個字節爲零。
說 明:bzero無返回值。bzero只能在linux下調用

(3)memcpy
原 型:

extern void *memcpy(void *dest, void *src, unsigned int count);

功 能:由src所指內存區域複製count個字節到dest所指內存區域,可以拷貝任何數據類型。
說 明:src和dest所指內存區域不能重疊,函數返回指向dest的指針

(4)strcpy
原 型:

extern char *strcpy(char *dest,char *src);

功 能:把src所指由NULL結束的字符串複製到dest所指的數組中。
說 明:src和dest所指內存區域不可以重疊且dest必須有足夠的空間來容納src的字符串。

(5)bcopy
原 型:

extern void bcopy(const void *src, void *dest, int n);

功 能:將字符串src的前n個字節複製到dest中
說 明:bcopy不檢查字符串中的空字節NULL,函數沒有返回值。
注 意: 目標和源的位置與memcpy和strcpy不同。

(6)bcmp
原 型:

extern int bcmp(const void *s1, const void *s2, int n);

功 能:比較字符串s1和s2的前n個字節是否相等
說 明:如果s1=s2或n=0則返回零,否則返回非零值。bcmp不檢查NULL。

(7)memcmp
原 型:

extern int memcmp(void *buf1, void *buf2, unsigned int count);

功 能:比較內存區域buf1和buf2的前count個字節。
說 明:當buf1

發佈了30 篇原創文章 · 獲贊 36 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章