void *memset(void *s, int ch, size_t n);(int ch能夠是char或int)ios
將s所指向的某一塊內存中的每一個字節的內容所有設置爲ch指定的ASCII值, 塊的大小由第三個參數指定,這個函數一般爲新申請的內存作初始化工做, 其返回值爲指向S的指針。windows
memset按字節賦值。數組
void *memset(void *s, int ch, size_t n);函數
char
buffer[20];
memset
(buffer,0,
sizeof
(
char
)*20);
strcpy
(buffer,
"123"
);
int some_func(struct something *a) { … … memset(a,0,sizeof(a)); … }
#include "iostream.h" #include "string.h" #include <afx.h> int main(){ char buf[5]; CString str; CString str1; CString str2; memset(buf,0,sizeof(buf)); for(int i = 0; i<5; i++){ str.Format("%d",buf[i]); str1 +=str ; } str2.Format("%d",str1); cout<<str2<<endl; system("pause"); return 0; }
這樣寫,有沒有memset,輸出都是同樣測試
include <iostream> #include <cstring> using namespace std; int main(){ char a[5]; memset(a,'1',5); for(int i = 0;i < 5;i++) cout<<a[i]<<" "; system("pause"); return 0; }
而,以下程序想把數組中的元素值設置成1,倒是不可行的spa
#include <iostream> #include <cstring> #include <windows.h> using namespace std; int main() { int a[5]; memset(a,1,20);//若是這裏改爲memset(a,1,5*sizeof(int))也不能夠,由於memset按字節賦值。 for(int i = 0;i < 5;i++) cout<<a[i]<<" "; system("pause"); return 0; }
memset能夠方便的清空一個結構類型的變量或數組。 如: struct sample_struct { char csName[16]; int iSeq; int iType; }; 對於變量 struct sample_strcut stTest; 通常狀況下,清空stTest的方法: stTest.csName[0]={'\0'}; stTest.iSeq=0; stTest.iType=0; 用memset就很是方便: 1 memset(&stTest,0,sizeof(struct sample_struct)); 若是是數組: struct sample_struct TEST[10]; 則 memset(TEST,0,sizeof(struct sample_struct)*10); 另外: 若是結構體中有數組的話仍是須要對數組單獨進行初始化處理的。
來自百度百科。http://baike.baidu.com/view/982208.htmcode