2022年6月20日星期一

C memset

 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時綁定多個資料型態或是陣列時,可以快速初始化或是清除資料

參考資料


沒有留言:

發佈留言

打賞按讚