1. 程式人生 > >memset的實驗

memset的實驗

ring mem tex ems har ont struct 數組 pan

 

關於memset的實驗

  實驗一:memset對char數組賦初值

#include<iostream>
using namespace std;
int main()
{
    char a[110];
    memset(a,1,sizeof(a));
    for(int i=0;i<110;i++)
    cout<<a[i];//輸出一堆1
    return 0;
}

  例:memset(a,1,sizeof(a))

  結果:直接輸出對應的ASCII表

    輸出一堆笑臉?what?

  結論:char數組中,可以用memset任意賦初值

  


 實驗二:memset對int類型數組賦初值

#include<iostream>
using namespace std;
int main()
{
    int a[110];
    memset(a,-1,sizeof(a));
    for(int i=0;i<110;i++)
    cout<<a[i];//輸出一堆-1
    return 0;
}

  例:memset(a,0,sizeof(a))

  輸出一堆0

  錯誤的情況:

  例:memset(a,1,sizeof(a))

   輸出一堆亂七八糟的數

  經多次實驗,只有0和-1可以給int數組賦初值;

  結論:在int數組中,memset只能用來賦值0和-1


 實驗三:對結構體用memset初始化

#include<iostream>
using namespace std;
struct a
{
    int a;
    char b;
}a[110];
int main()
{
    memset(a,1,sizeof(a));
    for(int i=0;i<110;i++)
    cout<<a[i].a;//輸出亂七八糟的數字
    for(int i=0;i<110;i++)
    cout<<a[i].b;//輸出1
    
return 0; }

  例:如上

  實驗結論:memset對結構體的初始化相當於分別對結構體內部的各個成分進行初始化,錯誤與否與結構體內的變量類型有關;

  實驗四:對bool數組用memset初始化

  

#include<iostream>
using namespace std;
int main()
{
    bool a[110];
    memset(a,1,sizeof(a));
    for(int i=0;i<110;i++)
    cout<<a[i];
    return 0;
}

  樣例:如上

  經多次實驗,bool類型用memset初值賦為正數時可行,負數時不可行

  結論:memset對bool類型賦初值只能賦值為正數

  附:memset的頭文件為<cstring>!!!!!

memset的實驗