【函數原型】:void *memset(void *ptr, int value, size_t n)
【頭檔案】:#include <string.h>
【函數說明】:此函數将ptr所指向的某一塊記憶體中的每一位元組的内容全部設定為第二個參數value指定的ASCLL值,塊的大小由第三個參數指定,這個函數通常為新申請的記憶體做初始化工作。
【參數】:1)ptr:為要操作的記憶體的首位址。
2)value:為要設定的值,即可以向value傳遞int類型的值,也可以傳遞char類型的值,int和char可以根據ASCLL嗎互相轉換。
3)n:為ptr的前n個位元組,size_t是unsigned int類型。
注:參數value雖聲明為int類型,但必須是unsigned char類型,是以範圍在0~255之間。
memset函數的用法:
1)memset函數常用于記憶體初始化。如:
char str[100];
memset(str, 0 , 100);
2)memset函數用來對一段記憶體空間全部設定為某一個字元,一般用在對定義的字元串的初始化:
char a[100];
memset(a, '\0', sizeof(a));
3)memset函數可以友善的清空一個結構體類型的變量和數組。如:
struct sample_struct
{
char name[20];
int seq;
int type;
};
struct sample_struct test; //定義結構test
struct sample_struct test_arr[10]; //定義結構體數組test_arr
memset(&test, 0, sizeof(structsample_struct)); //清除結構體變量test
memset(test_arr, 0, sizeof(structsample_struct)*10); //清除結構體數組test_arr