[C] 배열 초기화

최지원·2023년 11월 1일
0

알고리즘

목록 보기
6/7

배열 요소를 모두 0으로 초기화

int arr[10]={0};
int arr[10]={0,};

배열 요소를 모두 1로 초기화

int arr[10]={1,};               //(X)

=> 결과는 {1, 0, 0, 0, ...}

올바른 초기화

memset(arr,0,sizeof(arr));      //(O)
memset(arr,-1,sizeof(arr));     //(O)

memset(배열이름, 초기화할 정수, 배열개수 * 배열의 자료형); //1byte씩 초기화 시킨다.

🌟단, 1은 배열이 반드시 char형 이어야만 1로 초기화 가능


why?

0은 1byte에서 0000 0000
4byte로는 0000 0000 0000 0000 0000 0000 0000 0000

-1은 1byte에서 1111 1111
4byte로는 1111 1111 1111 1111 1111 1111 1111 1111

0과 -1은 1byte씩 읽든, 4byte씩 읽든 결과가 같다. 하지만

1은 1byte에서 0000 0001
4byte로는 0000 0000 0000 0000 0000 0000 0000 0001

이므로 1byte씩 읽는 memset으로는 4byte인 int형을 읽었을 때 1로 초기화가 되지 못한다.
따라서 char형 배열로만 1로 초기화가 가능하다.

profile
@JiwonChoi0805

0개의 댓글