1)名稱:memset()函數 2)別稱:char型初始化函數 3)功能: 將s所指向的某一塊記憶體中的每個位元組的內容全部設置為ch指定的ASCII值,塊的大小由第三個參數指定,這個函數通常為新申請的記憶體做初始化工作 4)用法: void *memset(void *s, char ch, unsig ...
1)名稱:memset()函數
2)別稱:char型初始化函數
3)功能: 將s所指向的某一塊記憶體中的每個位元組的內容全部設置為ch指定的ASCII值,塊的大小由第三個參數指定,這個函數通常為新申請的記憶體做初始化工作
4)用法: void *memset(void *s, char ch, unsigned n);
5)作用:在一段記憶體塊中填充某個給定的值,它是對較大的結構體或數組進行清零操作的一種最快方法。
6)代碼示例:
#include
#include
#include
int main(void)
{
char buffer[] = "Hello world/n";
printf("Buffer before memset: %s/n", buffer);
memset(buffer, '*', strlen(buffer) );
printf("Buffer after memset: %s/n", buffer);
return 0;
}
輸出結果:
Buffer before memset: Hello world
Buffer after memset: ***********
7)memset()的深刻內涵:用來對一段記憶體空間全部設置為某個字元,一般用在對定義的字元串進行初始化為‘memset(a, '/0', sizeof(a));memcpy用來做記憶體拷貝,你可以拿它拷貝任何數據類型的對象,可以指定拷貝的數據長度;例:char a[100],b[50]; memcpy(b, a, sizeof(b));註意如用sizeof(a),會造成b的記憶體地址溢出。strcpy就只能拷貝字元串了,它遇到'/0'就結束拷貝;例:char a[100],b[50];strcpy(a,b);如用strcpy(b,a),要註意a中的字元串長度(第一個‘/0’之前)是否超過50位,如超過,則會造成b的記憶體地址溢出。
參考文獻:搜狗百科,c語言專欄