定義
void *memset(void *s, int c, unsigned long n);
描述
將指針變量 s 所指向的前 n 字節的內存單元用一個“整數” c 替換,注意 c 是 int 型。s 是 void* 型的指針變量,所以它可以為任何類型的數據進行初始化。
例子
# include <stdio.h> # include <string.h> int main(void) { int i; //循環變量 char str[10]; char *p = str; memset(str, 0, sizeof(str)); //只能寫sizeof(str), 不能寫sizeof(p) for (i=0; i<10; ++i) { printf("%d\x20", str[i]); } printf("\n"); return 0; }
根據memset函數的不同,輸出結果也不同,分為以下幾種情況:
memset(p, 0, sizeof(p)); //地址的大小都是4字節 0 0 0 0 -52 -52 -52 -52 -52 -52 memset(p, 0, sizeof(*p)); //*p表示的是一個字符變量, 只有一字節 0 -52 -52 -52 -52 -52 -52 -52 -52 -52 memset(p, 0, sizeof(str)); 0 0 0 0 0 0 0 0 0 0 memset(str, 0, sizeof(str)); 0 0 0 0 0 0 0 0 0 0 memset(p, 0, 10); //直接寫10也行, 但不專業 0 0 0 0 0 0 0 0 0 0
參考:
http://c.biancheng.net/view/231.html