c언어 배열의 선언과 사용(1차원 배열)

이전에는 배열을 사용하기 앞서 함수의 사용법과 do ~ while을 사용한 반복문에 대해서 공부했습니다. do ~ while의 예제 소스중에서 국어, 수학, 영어, 사회, 과학 5개의 과목을 계속해서 입력받을 수 있는 프로그램을 만들어봤습니다. 간단하게 만들기 위해 변수명은 i, j, k, l, m으로 5개의 변수를 생성했었습니다. 이번에는 각각의 변수를 선언하는 것이 아니라 배열변수 1개를 만들어 하나에 배열에 공간을 쪼개어 사용하는 방법에 대해서 공부해보겠습니다. 

 

배열(Array)이란? 

같은 형태(자료형)의 많은 데이터를 반복해서 처리할때 쉽고 빠르게 처리하기 위해 메모리에 연속적으로 저장한 뒤에 쪼개어 사용하는 방법을 말합니다.

 

예를 들어 학교에서 학급을 관리하는 프로그램을 만든다고 생각해봅시다!.

void main(){
int class_1_1, class_1_2, class_1_3 ~~~~~~~~~~ class_1_13;
}

학급마다 몇명의 학생들이 있는지 관리하는 프로그램에서 배열을 사용하지 않는다면 만약 한 학년당 13반까지 있다고 가정했을때 Class_0_0변수를 1학년부터 3학년까지 모두 39개의 변수를 선언해 주어야 합니다. 이렇게 아주 많은 양의 데이터를 처리해야 하는 경우에 배열 사용은 코드를 아주 쉽고 깔끔하게 만들어줍니다. 

 

1차원 배열의 선언과 초기화 

1차원 배열의 선언은 배열의 자료형 -> 배열명 -> [배열의 길이]로 선언할 수 있습니다. 

 

메모리에 선언될때 int형의 4Byte 메모리 블럭이 한번에 연속되어 선언이 되어지고 각각의 메모리 블럭의 시작은 배열명[0]부터 시작하게 됩니다. 

 

int array[10];

array[0] = 1;
array[1] = 2;
array[2] = 3;

배열 10개를 선언하고 각각의 배열에 값을 대입하는 방식으로 배열을 사용할 수 있습니다. 

선언과 동시에 초기화! 

int array[5]={1,2,3,4,5}   //5개의 배열길이를 지정하고 각각의 배열에 1,2,3,4,5를 대입한다
int array[]={1,2,3,4}     //각각의 배열에 1,2,3,4를 대입하고 배열의 길이는 대입하는 개수만큼 배열의 크기가 결정된다.
int array[5]={1,2}       // 5개의 배열 길이를 지정하고 순서에 따라서 1,2를 대입하고 나머지 배열에는 0으로 초기화 한다.

배열도 변수와 마찬가지로 선언과 동시에 초기화 하는것이 가능합니다. 배열을 선언과 동시에 최기화할때에는 중괄호{}를 사용해 각각의 배열의 값을 초기화시켜주면 됩니다.  선언과 동시에 초기화 하는 방법을 하나씩 보도록 하겠습니다. 

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

배열길이 5의 배열을 만들고 각각 1,2,3,4,5를 대입했을때 각각의 배열에 저장되는 결과는 아래와 같습니다.

array[0] = 1;
array[1] = 2;
array[2] = 3;
array[3] = 4;
array[4] = 5;

 

int array[]={1,2,3,4}

배열의 길이를 선언하지 않고 초기값을 입력하게 되면 {1,2,3,4} 대입하는 개수 만큼 배열의 길이가 결정됩니다. 위에서는 배열에 1,2,3,4를 대입하기 때문에 배열의 길이는 4가 됩니다 만약 대입하는 개수가 10개로 {1,2,3,4,5,6,7,8,9,0} 선언했다면 배열의 길이는 10이 되게 됩니다. 

 

int array[5] = {1,2}

 배열의 길이는 5로 지정했는대 대입한 값은 2개라면 어떻게 될까?? 

배열의 앞에서부터 데이터를 채워주고 나머지 배열은 모두 0으로 초기화 됩니다. 

 

배열 선언시 주의사항
int a = 5;   //변수 a에 5를 대입 
int array[a]; // array배열에 길이를 변수 a로 지정

배열의 길이는 무조건 상수를 사용해야 합니다. 위처럼 변수를 지정하고 변수를 배열의 길이에 넣어서 사용하게 되면 컴파일 오류를 발생시키게 됩니다. 

 

※코드 E0028 식에 상수 값이 있어야 합니다. 

 

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

배열의 선언과 동시에 초기화 할때는 한 줄에서 모두 이루어져야 한다. int array[5]를 선언한 뒤에 다시 array[5]에 초기화를 시키는 경우에는컴파일 오류를 발생시키게 됩니다. 

 

※코드 E0029 식이 필요합니다.

 

자 이렇게 1차원 배열의 선언과 초기화에 대해서 공부해봤습니다. 다음에는 2차원 배열의 선언과 초기화에 대해서 한번알아보도록 하겠습니다. 

댓글

Designed by JB FACTORY