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時綁定多個資料型態或是陣列時,可以快速初始化或是清除資料
參考資料
沒有留言:
發佈留言