|
||||||
학생들의 성적 점수를 읽어들여서 컴퓨터의 기억공간에 저장시킨다고 생각해보자. 지금까진 다룬 변수는 단지 한 개의 값만을 저장할 수 있었다. 따라서 학생 수가 10명이면, 10개의 변수가 필요할 것이다. 다음은 학생 수가 5일 때, 성적을 읽어들이는 함수이다. readScore1()은 한 개의 scanf()문을 사용하여, 한꺼번에 5개의 성적을 읽어들인다. 반면에, readScore2()는 사용자에게 프롬프트를 제시하고, 한 개씩 성적을 읽어들인다. 두 번째 버전이 사용자에게 친숙한 인터페이스를 제공할 것이다.
readScore2()의 코드를 자세히 살펴보면, 성적을 읽어들이기 위해서 printf()와 scanf()가 반복적으로 사용되는 것을 알 수 있다. 6주차 강의의 1장에서 다루었듯이, 이와 같이 반복되는 코드는 반복 구조를 사용하여 효과적으로 표현될 수 있을 것 같다. 그러나 scanf()에서 사용되는 변수이름이 모두 달라서 반복 구조를 사용하는 것이 어렵다. readScore()의 두 버전에서 사용되고 있는 5개의 변수 s1, s2, s3, s4, s5를 생각해보자. 이들 변수에 저장되는 값은 성적 점수이고, 따라서 값의 타입, 범위, 사용 용도 등이 모두 동일하다는 것을 알 수 있다. C 언어는 이와 같이 같은 종류의 데이터 항목들에 대해서 동일한 변수 이름을 부여하면서도, 데이터 항목별로 처리할 수 있는 방법을 갖는 배열의 데이터 구조를 제공한다. 배열의 데이터 구조는 유사한 데이터들을 다루는데 매우 용이한 구조여서, C 언어뿐만 아니라 다른 대부분의 고급 언어에서도 제공되고 있다. 배열(array)은 데이터 항목들의 집합으로, 다음 두 가지의 특징을 갖는다.
위의 관점으로부터 앞으로, 배열을 순서대로 나열되어 있는 상자들의 집합으로 생각한다. 여기서 각 상자는 배열에 속한 한 개의 데이터 항목을 포함한다. 배열에 속한 각 데이터 항목을 원소(element)라 부른다. 다음은 5개의 원소를 갖는 배열을 보여준다.
여러분은 C 프로그램에서 배열을 생성하기 위해서, 배열 원소의 타입과 배열 크기를 알려야 한다.
|
|
|