函式介紹
void *memset(void *s, int ch, size_t n);
函式解釋:將s中前n個位元組 (typedef unsigned int size_t)用 ch 替換並返回 s 。
memset:作用是在一段記憶體塊中填充某個給定的值,它是對較大的結構體或陣列進行清零操作的一種最快方法[1]。
memset置零 memset(&address,0,sizeof(address));
#include
#include
#include
int main(void)
輸出結果:
buffer before memset: hello world
buffer after memset: ************
也不一定就是把內容全部設定為ch指定的ascⅱ值,而且該處的ch可為int或者其他型別,並不一定要是char型別。例如下面這樣:
int array[5] = ;
for(int i = 0; i < 5; i++)
cout for(int k = 0; k < 5; k++) cout 1 4 3 5 2 0 0 0 0 0 後面的表大小的引數是以位元組為單位,所以,對於int或其他的就並不是都乘預設的1(字元型)了。而且不同的機器上int的大小也可能不同,所以最好用sizeof()。 要注意的是,memset是對位元組進行操作, 所以上述程式如果改為 int array[5] = ; for(int i = 0; i < 5; i++) cout for(int k = 0; k < 5; k++) cout 1 4 3 5 2 16843009 16843009 16843009 16843009 16843009 為什麼呢? 因為memset是以位元組為單位就是對array指向的記憶體的4個位元組進行賦值,每個都用ascⅱ為1的字元去填充,轉為二進位制後,1就是00000001,佔乙個位元組。乙個int元素是4位元組,合一起就是 00000001000000010000000100000001 就等於16843009,就完成了對乙個int元素的賦值了。 所以用memset對非字元型陣列賦初值是不可取的! 例如有乙個結構體some x,可以這樣清零: memset(&x,0,sizeof(some)); 如果是乙個結構體的陣列some x[10],可以這樣: memset(x,0,sizeof(some)*10); memset函式詳細說明 void *memset(void *s,int c,size_tn) 總的作用:將已開闢記憶體空間 s 的首 n 個位元組的值設為值 c。 c語言memset 函式 將記憶體的前n個位元組設定為特定的值 標頭檔案 include memset 函式用來將指定記憶體的前n個位元組設定為特定的值,其原型為 void memset void ptr,intvalue,size tnum 引數說明 ptr 為要操作的記憶體的指標。value 為... 1 名稱 memset 函式 2 別稱 char型初始化函式 3 功能 將s所指向的某一塊記憶體中的每個位元組的內容全部設定為ch指定的ascii值,塊的大小由第三個引數指定,這個函式通常為新申請的記憶體做初始化工作 4 用法 void memset void s,char ch,unsigned ... memset 原型 extern void memset void buffer,int c,int count 用法 i nclude 功能 把buffer所指記憶體區域的前count個位元組設定成字元c。說明 返回指向buffer的指標。可用array.clear實現 c sharp view ...C語言的memset 函式
c語言memset()函式
C 中的memset實現