void *memset(void *, int, size_t);
用某種位元組內容覆寫一段連續記憶體空間(維基百科說明)
memset(記憶體空間,填入數值,幾個);
遙想當年剛接觸C語言的時候,如果知道這個函式就不會傻傻地用For 迴圈把陣列資料還原了,話不多說,我們直接看下面程式碼,讓你快速明白兩者間的差異。
新手程式碼
/*This file use to record string.h library*/
#include <string.h>
#include <stdio.h>
#define ArraySize 10
int main()
{
int NumArray[ArraySize]={0,1,2,3,4,5,6,7,8,9};
int i = 0;
printf("Array value\n");
for(i = 0;i<ArraySize;i++)
printf("NumArray[%d]:%d\n",i,NumArray[i]);
printf("Clear Array\n");
for(i = 0;i<ArraySize;i++)
NumArray[i] = 0;
printf("After Clear Array\n");
for(i = 0;i<ArraySize;i++)
printf("NumArray[%d]:%d\n",i,NumArray[i]);
return 0;
}
有經驗者的程式碼
/*This file use to record string.h library*/
#include <string.h>
#include <stdio.h>
#define ArraySize 10
int main()
{
int NumArray[ArraySize]={0,1,2,3,4,5,6,7,8,9};
int i = 0;
printf("Array value\n");
for(i = 0;i<ArraySize;i++)
printf("NumArray[%d]:%d\n",i,NumArray[i]);
printf("Clear Array\n");
memset(NumArray,0,sizeof(NumArray));
printf("After Clear Array\n");
for(i = 0;i<ArraySize;i++)
printf("NumArray[%d]:%d\n",i,NumArray[i]);
return 0;
}
為甚麼用memset呢?主要是方便快速,再者,以後如果使用struct時綁定多個資料型態或是陣列時,可以快速初始化或是清除資料
參考資料
沒有留言:
發佈留言