可參考:
memset()是char型初始化函數。
一. 頭文件:<string.h> 或 <memory.h>
二. 函數原型:void *memset(void *s, int ch, size_t n);
函數功能:將s所指向的某一塊內存中的前n個字節的內容全部設置為ch指定的ASCII值, 第一個值為指定的內存地址,塊的大小由第三個參數指定,這個函數通常為新申請的內存做初始化工作, 其返回值為指向s的指針,它是對較大的結構體或數組進行清零操作的一種最快方法。
三. 使用:
memset(結構體/數組名 , 用於替換的ASCII碼對應字符 , 前n個字符 );
memset(結構體/數組名 , "用於替換的字符“ , 前n個字符 );
函數解釋:將s中的前n個字節用ch替換並且返回s
函數作用:在一段內存塊中填充某一個給定的值,常用於較大的對結構體和數組的清零操作。
例子1:
#include<iostream> //#include"string.h" using namespace std; int main() { char str[10]; str[9] = 'w'; memset(str,97,9); for(int i=0;i<10;i++){ cout<<str[i]<<" "; } return 0; }
輸出:a a a a a a a a a w
說明:使用memset似乎不需要使用額外的頭文件。
例子2:
#include<iostream> //#include"string.h" using namespace std; int main() { char str[10]; str[9] = 'w'; memset(str,97,sizeof(char)*10); for(int i=0;i<10;i++){ cout<<str[i]<<" "; } return 0; }
輸出:a a a a a a a a a a
例子3:
#include<iostream> using namespace std; int main() { char str[10]; memset(str,65,sizeof(str)-3); for(int i=0;i<10;i++){ cout<<str[i]<<" "; } return 0; }
輸出:A A A A A A A
四. 幾個注意事項:轉自此文 (講解詳細,可多看幾遍)
1.memset是以字節為單位,初始化內存塊。
2.當結構體類型中包含指針時,在使用memset初始化時需要小心。
3.當結構體或類的本身或其基類中存在虛函數時,也需要謹慎使用memset。(筆試中碰到過類似的題,貌似是找錯)