배열의 이해

언어로그/C/C++ 2011. 3. 27. 20:53



1. 배열이란?
프로그램이 필요한 이유 중의 하나는 많은 양의 데이터를 처리하기 위해서이다.  
그중에서도 동일한 형태를 갖는 다수의 데이터를 다루기 위해 배열을 사용할 수 있다.  배열은 연속적인 메모리 공간에
할당된 동일한 데이터 타입을 갖는 변수들의 묶음이다.  

int array[3];

위와 같은 선언은 4바이트의 메모리가 연속적으로 3개가 할당되어 총 12바이트의 메모리가 생성된다. 
이 때 array 라는 배열의 식별자에는 할당된 메모리의 시작주소가 할당된다.  즉 포인터 상수이다. 
이렇게 할당된 메모리 공간에 배열의 식별자를 사용하여 접근할 수 있다. 


배열의 첨자를 사용하여 접근하는 방법
scanf("%d %d %d \n", &array[0], &array[1], &array[2] );


배열 식별자(포인터 상수)를 사용하여 접근하는 방법
scanf("%d %d %d \n", array,  array + 1, array + 2 );



2. 배열의 초기화
배열 또한 일반적인 변수와 동일한 초기화 규칙을 따른다. 지역변수로 선언된 배열은 기본으로 쓰레기값으로 초기화되며, 
전역변수로 선언된 경우는 0으로 초기화 된다.  배열의 선언과 초기화를 다음과 같이 할 수 있다. 

int array[3] = { 10 , 20, 30 };   // 명시적으로 요소의 개수와 각 초기값을 설정   
int array[] = { 10, 20 , 30 };     // 초기값의 수에 따라 요소의 수가 결정됨      
int array[3] = { 10 };           // 첫요소만 10으로, 나머지는 0 으로 초기화됨       
int array[3] = { 0 };           // 모든 요소를 0으로 초기화    

특히 마지막 문장은 다수의 요소를 갖는 배열을 초기화 할 때 유용한 구문이다. 
int array[100] = { 0 };

'언어로그 > C/C++' 카테고리의 다른 글

문자열 조작함수 직접 구현하기  (2) 2011.04.29
라인 입출력 함수  (0) 2011.03.27
배열의 이해  (0) 2011.03.27
기억부류(Storage Class) / 변수  (0) 2011.03.27
전역변수와 지역변수  (0) 2011.03.27
함수의 이해  (0) 2011.03.27