頭文件:#include <string.h>
memset() 函數用來將指定內存的前n個字節設置爲特定的值,其原型爲:
void * memset( void * ptr, int value, size_t num );
參數說明:程序員
- ptr 爲要操做的內存的指針。
- value 爲要設置的值。你既能夠向 value 傳遞 int 類型的值,也能夠傳遞 char 類型的值,int 和 char 能夠根據 ASCII 碼相互轉換。
- num 爲 ptr 的前 num 個字節,size_t 就是unsigned int。
【函數說明】memset() 會將 ptr 所指的內存區域的前 num 個字節的值都設置爲 value,而後返回指向 ptr 的指針。沒法下面這樣初始化,這樣的結果是a被賦值成168430090,168430090.。。。。。。。。。數組
int a[10]; memset(a, 1, sizeof(a));這是由於int由4個字節(說)表示,而且不能獲得數組a中整數的指望值。
但我常常看到程序員使用memset將int數組元素設置爲0或-1。函數int a[10]; int b[10]; memset(a, 0, sizeof(a)); memset(b, -1, sizeof(b));//假設a爲int型數組: memset(a,0x7f,sizeof(a)); //a數組每一個空間將被初始化爲0x7f7f7f7f,緣由是C函數傳參過程當中的指針降級,致使sizeof(a),返回的是一個 something*指針類型大小的的字節數,若是是32位,就是4字節。因此memset按字節賦值。 memset(a,0xaf,sizeof(a)); //a數組每一個空間將被初始化爲0xafafafaf