memset()函數(shù)可以對大內(nèi)存的分配進行很方便的操作(初始化),所謂“初始化”,當(dāng)然是指將你定義的變量或申請的空間賦予你所期望的值,例如語句int i=0;就表明定義了一個變量i,并初始化為0;如果int j=5;就表明定義了一個變量j,并初始化為5。
但是對于大塊兒內(nèi)存的分配,這種方法當(dāng)然不行,例如int arr[100];定義了數(shù)組arr,包含100個元素,如果你寫成int arr[100]=0;想將數(shù)組全部內(nèi)容初始化為0,是不行的,連編譯都不能通過。這種情況的初始化,有兩種方法,一種是一個一個的初始化,如for(int i=0;i<100;i++)arr[i]=0;就完成了數(shù)組的初始
如for(int i=0;i<100;i++)arr[i]=0;就完成了數(shù)組的初始化。另一種方法,就是使用memset:一個語句就夠了:--memset(arr,0,sizeof(int)*100);
各參數(shù)解釋如下:arr是數(shù)組的首地址,0就是要講這些地址的內(nèi)容賦值為0,sizeof(int)求出int類型的長度,乘以100就表示arr數(shù)組的整個長度。
當(dāng)然,如果用malloc分配的內(nèi)存,一般只能使用memset來初始化了,用第一種初始化方法明顯不合適。
舉例:
#include <memory.h> //我試了一下,C語言這么用,C++還可以用<cstring>
#include <stdio.h>
void main( void )
{
char buffer[] = "This is a test of the memset function";
printf( "Before: %s\n", buffer );
memset( buffer, '*', 4 );
printf( "After: %s\n", buffer );
}
輸出:
Before: This is a test of the memset function
After: **** is a test of the memset function
|