memset的實驗
阿新 • • 發佈:2017-10-23
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的實驗