為什麼memset函式不能初始化int函式
阿新 • • 發佈:2018-11-07
memset函式是以位元組為單位賦值的,int是四個位元組,所以給int初始化還用memset就會出錯,看下實驗吧
首先,下邊這個是給字元型陣列賦值,因為字元型陣列每個元素都佔一位元組,所以可以爭取的輸出陣列元素
#include<stdio.h>
#include<string.h>
int main(){
char arr[5];
memset(arr,'1',sizeof(arr));
for(int i=0;i<5;i++)
printf("%c ",arr[i]);
printf("\n");
return 0;
}
但是,初始化int型陣列時候就會出錯
#include<stdio.h>
#include<string.h>
int main(){
int arr[5];
memset(arr,1,sizeof(arr));
for(int i=0;i<5;i++)
printf("%d ",arr[i]);
printf("\n");
return 0;
}
很明顯,並不是我們想要的答案,因為memset在初始化arr陣列時以位元組賦值,所以最終陣列中每個元素為01010101(16進位制),即十進位制的16843009,所以輸出就會有問題