강좌 & 팁
배열(2)
배열은 사용자가 의미상의 연관이 있는 동일한 자료형에 속한 여러개의 자료들을 묶어 하나의 이름으로 정의한 자료형이다.
예를 들어 50명으로 구성된 한 학급의 시험 성적을 관리하는 프로그램을 보자. 각 학생의 시험 성적을 50개의 독립된 정수형 변수로 나타내었을 때 평균값을 구하고 성적을 등수대로 출력하는 프로그램을 보자
int score1. score2, ...... score50;
scanf (%d %d ......%d",score1,score2....... score50);
sum = score1 + score2 + ....... score50;
average = sum /50
50개의 int형 변수를 이용하면 변수선언이 길어지고 프로그램이 복잡해진다.
만약 학생이 10000명이면 더욱 복잡해지고 코딩 하기가 어려워 진다.
이럴 경우 배열을 사용하여 프로그램을 작성하면, 간단하면서 변수의 연관성을 나타낼 수 있다.
위의 변수 선언은 다음과 같이 할 수 있다
int score[50];
배열의 각 원소는 대괄호의 색인으로 나타낸다. 첫 번째 원소는 score[0], 두 번째 원소는 score[1]이 된다. 여기서 벼열은 크기가 [50]으로 선언되었다. C언어에서는 배열의 색인은 항상 0부터 시작이므로 배열의 마지막 원소의 색인은 49가 된다.
배열의 각 원소는 int 형 자료를 담을 수 있는 4바이트의 크기를 가진다.
사용은
score[0] = 100;
score[4] = score[0] -10;
다음 예제로 배열을 사용하여 성적의 평균을 구하는 것을 보자
#include <stdio.h>
int main()
{
int score[10], i, sum = 0;
float average;
for(i = 0; i < 10; i++)
{
printf(" enter a score [%d]: " ,i);
scanf("%d", &score[i]);
}
for (i = 0; i < 10; i ++)
{
sum += score[i];
}
average = float( sum / 10);
printf("average score is : %f\n", average);
return0;
}
score[i]
배열의 색인으로 정수형 변수를 사용할 수 있다. 그리고
score[i +2]로도 나타낼 수 있다.
위의 예제에서 배열의 크기가 10이었다. 만약 score[12] 는 배열 크기의 범위를 벗어나는데 C언어에서는 배열 색인의 경계를 검사하지 않으므로 프로그램을 그냥 실행하므로 범위를 벗어난 메모리 영역에 접근을 하게 되므로 위험한 결과를 초래할 수 있다.
scanf("%d", &score[i]);
배열의 원소를 키보드를 통하여 읽을 때 다른 변수들처럼 배열의 원소 앞에 주소 연산자 &를 붙인다.
배열을 사용한 변수를 for 문을 사용하여 일괄적으로 처리 한 위의 예제는 배열의 장점을 잘 나타낸다.