배열 초기화

배열 초기화 :배열도 초기화가 필요하다. 변수를 초기화하지 않으면 쓰레기 값이 들어있는 것과 마찬가지다. 배열도 그 본질이 변수이므로 초기화를 해야 쓰레기 값도 사라지고 자신이 원하는 데이터를 저장할 수 있다.

배열 초기화 방법

  • 배열의 선언과 동시에 초기화를 해야 쉽게 한번에 초기화 절차를 마칠 수 있다. 그렇지 않으면 선언을 한 후에 배열의 요소들에 일일이 접근하여 하나 하나 저장을 하는 고생을 한다. ( 물론 , 필요에 따라 그럴 때도 있긴 하지만 …)
  • 중괄호를 이용하여 초기화를 한다. 배열의 선언은 대 괄호를 사용하였다.
    그러나 선언과 동시에 하는 초기화는 중괄호를 사용한다.
  • 일반적으로 3가지 정도의 초기화 방법이 있다.

배열 초기화 방법 01 (초기 값 순차 할당)

이 방식이 일반적인 방법이다.
배열 요소의 첫 번째 ( 인덱스 값은 0 ) 부터 마지막까지 순차적으로 값을 할당하는 것이다. 아래 예제를 봅시다.

예제

int a [4] = { 1,2,3,4 } ; // 길이가 4인 int 타입의 배열 a를 선언했다.

위와 같이 선언과 초기화를 하면 배열 요소인 a [0] , a [1] , a [2] , a [3] 에 각각 1 ,2 ,3 ,4 가 순차적으로 초기 값으로 할당되게 된다.
배열의 초기화에서 중괄호 부분을 “초기화 리스트”라고 부르기도 한다.

방법 02 (초기 값 부족)

이 방법은 배열의 요소 수보다 초기 값의 수가 부족한 방법이다. 초기 값이 첫 번째 요소부터 할당이 순차적으로 되고 초기 값을 할당 받지 못한 배열 요소들은 자동으로 0 으로 초기화가 된다.
따라서 배열의 길이가 긴 경우 즉, 배열 요소가 많은 경우에 이용할 수 있다.

예제

int a [4] = { 1, 2 } ; // 배열 요소는 4 개 , 할당될 초기 값은 2 개 이다.

위의 예제에서 보듯이 할당될 초기 값이 요소보다 적을 경우에는 왼쪽부터 차례로 값이 할당된다.
a 배열의 요소 a [0] , a [1] 에 차례대로 1 , 2 가 할당되고 나머지 a [2] , a [3] 에는 0 이 할당된다.

방법 03 (배열 길이 생략)

이 방법은 배열의 길이를 생략하고 초기화하는 것이다.
따라서 초기화 리스트의 초기 값 개수 만큼 메모리에 저장 공간을 할당하여 배열 길이를 정한다.

예제

int a [ ] = { 1 , 2 , 3, 4 } // 대 괄호가 비어 있다

위 예제는 배열 요소 수( 배열 길이) 를 생략하고 배열을 선언하고 있다.
이러한 경우에는 컴파일러가 초기 값의 수만큼 배열 요소 수를 정하고 메모리에 저장 공간을 할당한다.
따라서 초기화 리스트의 초기 값이 모두 4 개이므로 a [0] , a [1] , a [2] , a [3] 의 총 4 개의 배열 요소가 생긴다. 그리고 이 배열 요소들의 값으로는 당연히 초기화 리스트의 초기 값들이 순차적으로 할당 된다.
또 다른 예제를 봅시다.

배열 초기화 예제
Example 01
  • 5 행 : int 타입 배열을 일반적인 방법으로 선언하고 동시에 초기화하고 있다.
  • 6 행 : 배열 요소보다 초기 값이 적게 선언하고 초기화하는 방법이다.
  • 7 행 : 배열의 길이를 생략하고 선언과 동시에 초기화 하고 있다.
  • 8 행 : double 타입 배열의 선언과 초기화이다.
  • 9 행 : char 타입 배열의 선언과 초기화를 하고 있다.
  • 11행 ~ 15행 : 중괄호를 이용한 배열의 초기화는 배열 선언과 동시에 한 번만 가능하기 때문에 그 이후에는 배열 요소마다 각각 대입을 해야 한다.