頭文件:#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