1. 程式人生 > >為什麼memset函式不能初始化int函式

為什麼memset函式不能初始化int函式

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,所以輸出就會有問題