頭檔案:#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
