作用:在一段記憶體中填充某個給定的值,注意填充時是按照位元組順序填充的,而不是按照元素填充。
此方法是對較大的結構體和陣列進行清零操作的一種有效方法。
函式形式:memset(void *buffer,int c,size_t n)
buffer是需要設定的記憶體的開始位址;c是期望填充值;n是需要填充的位元組數。
例1:乙個inta[10]型變數,則memset(a,100,sizeof(int))此操作後,元素a[0]的每個位元組的值都是100,即0x64,二進位制表示:01100100,所以元素a[0]為0x64646464,二進位制表示:01100100 01100100 01100100 01100100
void main()
output
before: this is a test of the memset function
after: **** is a test of the memset function
memset用來對一段記憶體空間全部設定為某個字元,一般用在對定義的字串進行初始化為' '或'\0';
例:char a[100];
memset(a, '\0', sizeof(a));
memset可以方便地清空乙個結構體型別的變數或陣列。
如:struct sample_struct
;對於變數
struct sample_strcut sttest;
一般情況下,清空sttest的方法:
sttest.csname[0]='\0';
sttest.iseq=0;
sttest.itype=0;
用memset就非常方便:
memset(&sttest,0,sizeof(struct sample_struct));
如果是陣列:
struct sample_struct test[10];
則memset(test,0,sizeof(struct sample_struct)*10);
memcpy 用來做記憶體拷貝,你可以拿它拷貝任何資料型別的物件,可以指定拷貝的資料長度。
例:char a[100],b[50]; memcpy(b, a, sizeof(b));
注意如果用memcpy(b,a,sizeof(a)),很可能會造成b的記憶體位址溢位。
strcpy就只能拷貝字串了,它遇到'\0'就結束拷貝。
例:char a[100],b[50];strcpy(a,b);如用strcpy(b,a),要注意a中的字串長度(第乙個『\0』之前)是否超過50位,如超過,則會造成b的記憶體位址溢位。
str也可以用用個引數的strncpy(a,b,n)
memset,記憶體初始化函式
include void memset void s,int c,unsigned long n 函式的功能是 將指標變數 s 所指向的前 n 位元組的記憶體單元用乙個 整數 c 替換,注意 c 是 int 型。s 是 void 型的指標變數,所以它可以為任何型別的資料進行初始化。memset 的作...
memset函式 記憶體初始化介紹
memset函式詳細說明 收藏 1。void memset void s,int c,size t n 總的作用 將已開闢記憶體空間 s 的首 n 個位元組的值設為值 c。2。例子 include void main 3。memset 函式常用於記憶體空間初始化。如 char str 100 mem...
memset函式初始化
對於絕大多數編譯器來講,char namekey 15 與memset namekey,0x0,sizeof namekey 或memset namekey,0 sizeof namekey 這三個是一樣的。但是有的編譯器,char namekey 15 只將namekey 0 給賦值為 0 其他成...