1) 배열의 활용 예제

배열의 사용법

배열은 일반적인 변수와 비슷한 형태로 선언하고 사용하는데 대괄호[]를 사용하는 점이 다릅니다.

먼저 다음과 같이 배열을 선언합니다.

int num[4];

그러면 num[0]num[1]num[2]num[3]라는 4개의 num이 생성됩니다.

이때 1~4가 아니라 0~3으로 생성되는 이유는 C언어에서 자료형이 갖는 범위를 생각해보면 이해할 수 있습니다.

28=25628=256만큼의 크기를 갖는 자료형은 -128 ~ 127까지의 수를 표현하는데 이는 0을 표현하기 위해 양수 자리를 하나 사용하기 때문입니다.

그리고 배열에 num[0] = 3과 같이 일일이 값을 넣어도 되지만, 초기화 할 때 좀 더 편한 방법이 있습니다.

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

만약 모든 성분을 0으로 초기화 하고 싶다면 다음과 같은 생략 표현을 쓸 수 있습니다.

int num[4] = {0, };

배열을 선언하는 경우에 한해 다음과 같이 길이를 생략할 수 있습니다.

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

그러면 C언어가 알아서 num[4]라고 생각합니다.

배열을 사용하는 이유

그런데 어차피 num[2]와 같이 사용할 바에 그냥 num2로 선언하면 되는 것이 아닐까요?

물론 선언을 조금 더 짧게 할 수 있는 것도 장점이지만, 변수를 통해 접근할 수 있다는 장점이 있습니다.

예를 들어 배열에 저장된 값 중 양수의 개수를 세는 프로그램을 생각해봅시다.

int num[10] = {1, 3, 6, -3, 4, -1, 0, -5, -5, 7}
int i = 0, positive = 0;

for (i = 0; i < 10; i++)
{
    if (num[i] > 0)
    {
        positive++;
    }
}

printf("양수는 %d개입니다.\n", positive);

결과

양수는 5개입니다.

만약 이를 일일이 num1부터 num10까지 변수를 만들어 검사해야 한다면 소스코드를 읽을때도 복잡하고 수정하기도 까다롭습니다.

이렇듯 num[i]와 같은 접근에 배열이 유용하게 사용됩니다.


예제를 연습해 봅시다

01   #include <stdio.h>
02   #include <stdlib.h>
03   #define MAX 5
04
05   int _tmain(int argc, _TCHAR* argv[])
06   {
07       int i;  
08       int grade[MAX];
09       
10       for(i = 0; i < MAX; i++)
11          grade[i] = rand() % 100;
12
13       for(i = 0; i < MAX; i++)
14          printf("grade[%d]=%d\n", i, grade[i]);
15
16       system("pause");
17       return 0;
18   }