1、頭文件
C語言:#include<string.h>
C++:#include<cstring>
2、memset
函數原型
void * memset(void * Dst, int Val, size_t Size);
函數的功能:在一段內存塊中填充某個給定的值,它是對較大的結構體或數組進行清零操作的一種最快方。
注意事項
第一:memset函數按字節對內存塊進行初始化,所以不能用它將int數組初始化爲0和-1之外的其他值(除非該值高字節和低字節相同)。
第二:函數中Val實際範圍應該在0~~255,因爲該函數只能取ch的後八位賦值給你所輸入的範圍的每個字節,比如int a[5]賦值memset(a,-1,sizeof(int )*5)與memset(a,511,sizeof(int )*5) 所賦值的結果是一樣的都爲-1;因爲-1的二進制碼爲(11111111 11111111 11111111 11111111)而511的二進制碼爲(00000000 00000000 00000001 11111111)後八位都爲(11111111),所以數組中每個字節,因此無論ch多大隻有後八位二進制有效,而後八位二進制的範圍在(0~255)中。
3、memcpy
函數原型
void * memcpy(void * Dst,const void * Src,size_t Size);
函數的功能:從源內存地址的起始位置開始拷貝Size個字節到目標內存地址中,即從源Src中拷貝n個字節到目標Dst中。
注意事項:
1.source和destin所指的內存區域可能重疊,但是如果Src和Dst所指的內存區域重疊,那麼這個函數並不能夠確保source所在重疊區域在拷貝之前不被覆蓋。而使用memmove可以用來處理重疊區域。函數返回指向Dst的指針。
2.如果目標數組Dst本身已有數據,執行memcpy()後,將覆蓋原有數據(最多覆蓋Size)。如果要追加數據,則每次執行memcpy後,要將目標數組地址增加到你要追加數據的地址。
注意:Src和Dst都不一定是數組,任意的可讀寫的空間均可
4、memcmp
函數原型
int memcmp(const void * Buf1,const void * Buf2,size_t Size);
函數的功能:把存儲區 Buf1和存儲區 Buf2 的前 Size 個字節進行比較,該函數是按字節比較的。
返回值 < 0 |
Buf1小於 Buf2 |
返回值 > 0 |
Buf2 小於 Buf1 |
返回值 = 0 |
Buf1等於 Buf2 |
4、memmov
void * memmove(void * Dst, const void * Src, size_t Size);
函數的功能:用於拷貝字節,如果目標區域和源區域有重疊的話,memmove能夠保證源串在被覆蓋之前將重疊區域的字節拷貝到目標區域中,但複製後源內容會被更改。但是當目標區域與源區域沒有重疊則和memcpy函數功能相同。