C 언어 | 배열 | 다차원 배열


테이블와 같은 행과 열로 이루어진 2차원 배열을 예로 여러 차원으로 구성된 다차원 배열을 선언하는 방법을 소개한다.

다차원 정보

정보는 물리적인 기억 장치에는 일렬로 배치되어 있지만, 논리적(개념적)으로 항상 일렬이라고 할 수 없다. 예를 들어, 테이블와 같은 데이터를 관리하는 것을 생각해 보자. 정보는 일렬이 아니다. 테이블는 행과 열을 가지고 있다. 즉, 가로와 세로라는 2차원 정보가 배치되어 있는 것이다.

이 경우에도 일반 배열로 관리할 수 없다. 이는 2차원 배열을 생성하여, 보다 직관적으로 테이블에 액세스할 수 있을 것이다. 배열의 요소가 배열인 배열을 다차원 배열이라고 한다. 다차원 배열은 다음과 같이 선언한다.

다차원 배열의 선언

형태 변수명[1차원 요소 수][2차원 요소 수] ...

이와 같이, 다차원 배열의 선언에 []를 차수만 기술하고, 각 차원의 요소 수(크기)를 지정한다. 다차원 배열 변수에 액세스하는 방법은 1차원 배열과 마찬가지로, 각 차원의 인덱스를 지정하면 된다. 다차원 배열 인덱스 수식은 가장 왼쪽에서 오른쪽으로 접근된다.

실제 세계에서 다차원 배열형의 정보가 많이 있다. 버스나 기차의 좌석 관리와 오셀로 게임과 장기 등의 테이블 게임의 비교적 큰 정보는 이처럼 어떤 식으로든 분류되기 때문에 논리적으로 분할된 정보를 처리하려면 다차원 배열를 사용하면 편리하다.

코드1

#include <stdio.h>

int main() {
 int iArray[2][2];

 iArray[0][0] = 10;
  iArray[0][1] = 100;
 iArray[1][0] = 1000;
  iArray[1][1] = 10000;

 printf("0,0 = %d : 0,1 = %d\n" , iArray[0][0] , iArray[0][1]);
 printf("1,0 = %d : 1,1 = %d\n" , iArray[1][0] , iArray[1][1]);

 return 0;
}

이 프로그램은 각 차원이 두 가지 요소를 가진 2차원 배열을 정의하고 있다. 이 배열은 2 × 2 개의 요소, 즉 4개의 int 형 변수를 저장하는 영역을 메모리에 할당한다. 코드1을 보면 알 수 있듯이 확실히 iArray 배열 변수는 4개의 숫자를 저장하고있는 것을 확인할 수 있다. 이 프로그램의 iArray 배열 변수는 논리적으로 다음과 같은 구조로 되어 있다.

표1 - iArray 배열의 내용

[][0] [][1]
[0][] 10 100
[1][] 1000 10000

다차원 배열은 그렇게 자주 사용되는 것은 아니다. 대부분의 정보 처리는 1차원 배열로 제공할 수 있다. 그러나 3차원 그래픽 등의 분야에서는 4차원 배열이 사용되는 경우도 있다. 차원 수가 많아지면 당연히 사용하는 메모리의 용량도 늘어나기 때문에 분별적인 범위에서 메모리를 사용하도록 한다.