개발자 데뷔!

[C/C++ 3.2] 1차원 배열 초기화 본문

프로그래밍 언어/C

[C/C++ 3.2] 1차원 배열 초기화

물꼮이 2022. 3. 11. 22:02

* 배열 초기화 방법 간단히 한번에 정리 !!!!! **************


1차원 배열 초기화

 

숫자 0 으로 초기화하기

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

 

'0 이 아닌 다른 수'로 초기화 하기 

 * '0 이 아닌 다른 수'로 배열의 모든 요소를 한번에 초기화 하는 방법은 없다!!

 * ex) int arr[] = {4}; 와 같은 방식으로 arr[] 배열의 모든 요소값을 숫자 4로 초기화 할수는 없다!!! 

 - 다음과 같은 방식으로, for문 등을 활용해 요소 하나하나에 접근해 값을 넣어주어야 한다.

int arr[4];
for (int i = 0; i < 4; i++) {
	arr[i] = 5;
}

 

모두 다른 수로 초기화 하기

int arr[4] = {3,1,2,5};

 

int arr[] = {3,1,2,5};

 - 아래 코드처럼, arr의 size를 [ ] 안에 지정하지 않고 비워두더라도, 

   우변에서 정의한 배열의 크기에 맞게 자동으로 size가 설정된다. 

  (* 물론 배열의 모든 요소를 하나하나 직접 정의한 이 같은 경우에만 가능하다)

 


char 문자로 초기화하기

char arr[3] = { 'm','i','n' };

 - 작은 따옴표로 한 글자씩 입력

 


마지막 index에 접근 

arr[-1]
=> arr의 주소 + sizeof(int) * -1 의 위치에 접근한다.

 

* '0 이 아닌 다른 수'로 배열의 모든 요소를 한번에 초기화 하는 방법은 없다!!

 * ex) int arr[] = {4}; 와 같은 방식

 

 


배열의 빈자리 

 - 초기화 후 값을 입력하지 않은 배열의 남은 자리에는,

   NULL값이 아닌 [쓰레기값]이 채워져 있다! 

 - 즉, 값이 들어간 위치를 찾을 때,  !=NULL로 찾으면 안됨

 - 즉, arr[3] = {0} 이라도 사용해 빈 곳을 NULL값으로 채워주는 것이 좋다. 

 

 - NULL로 배열을 채워놓는다면, 다음과 같은 조건문( == NULL)에서

   NULL /  0 / \0 을 모두 똑같이 NULL로 받아들인다.

// 배열의 빈자리 2
	if (arr[i][j] == NULL)				// 그런데 여기 조건문 쓸 땐, NULL이든, 0 이든, \0이든, 똑같이 옳게 받아들임
		cout << 0;
	else 
		cout << arr[i][j];			// 0이 아닌 NULL로 채워놨기 때문에, 이것만 쓰면 빈칸은 출력 안됨

 

즉, arr[] = {} 으로 초기화를 해줘야지만

    다음과 같은 조건을 걸었을 때,  break문이 정상작동 될 수 있다 

if (arr[idx] == '\0')
	break;