C언어 다차원 배열 2차원 및 3차원 예제

C언어 다차원 배열이란 배열의 집합을 말합니다. 2차원 배열은 1차원 배열이 2차원 배열 개수 만큼 존재합니다. n차원 배열은 n-1 차원 배열이 n개 만큼 존재합니다.

C언어 다차원 배열

배열이 변수의 집합인 것 처럼 다차원 배열은 배열의 집합입니다.

int 배열명[n차원 배열 개수]...[3차원 배열 개수][2차원 배열 개수][1차원 배열 개수];

2차원 배열

2차원 배열이란 1차원 배열의 개수가 2차원 배열의 개수 만큼 존재하는 집합을 말합니다.

int x[2][4] = { {1, 2, 3, 4}, {5, 6, 7, 8} };

차원을 계산할 때에는 뒤에서 부터 계산합니다. int x[2][4];의 의미는 1차원 배열 4개가 2차원으로 2개 만큼 나열되었다는 뜻입니다. 총 4 x 2 = 8개의 배열이 생성되었습니다.

c-multi-dimentional-array-1

배열의 각 칸은 2차원일 경우 배열 원소의 번호가 두 개 붙습니다.

c-multi-dimentional-array-2

int x[2][4];

x[0][0] = 1;
x[0][1] = 2;
x[0][2] = 3;
x[0][3] = 4;

x[1][0] = 5;
x[1][1] = 6;
x[1][2] = 7;
x[1][3] = 8;

3차원 배열

3차원 배열은 2차원 배열로 구성된 집합이 3차원 배열의 개수만큼 존재하는 상태를 말합니다.

int x[3][2][4] =
{
  { {1, 2, 3, 4}, {5, 6, 7, 8} },
  { {9, 10, 11, 12}, {13, 14, 15, 16} },
  { {17, 18, 19, 20}, {21, 22, 23, 24} }
};
int x[3][2][4];

x[0][0][0] = 1;
x[0][0][1] = 2;
x[0][0][2] = 3;
x[0][0][3] = 4;

x[0][1][0] = 5;
x[0][1][1] = 6;
x[0][1][2] = 7;
x[0][1][3] = 8;

x[1][0][0] = 9;
x[1][0][1] = 10;
x[1][0][2] = 11;
x[1][0][3] = 12;

x[1][1][0] = 13;
x[1][1][1] = 14;
x[1][1][2] = 15;
x[1][1][3] = 16;

x[2][0][0] = 17;
x[2][0][1] = 18;
x[2][0][2] = 19;
x[2][0][3] = 20;

x[2][1][0] = 21;
x[2][1][1] = 22;
x[2][1][2] = 23;
x[2][1][3] = 24;

n차원 배열

int x[3][2][4][5][6];
  • 1차원 배열(1 x 3)이 2차원으로 x 5개만큼 있습니다.
  • 2차원 배열(6 x 5)이 3차원으로 x 4개 만큼 있습니다.
  • 3차원 배열(6 x 5 x 4)이 4차원으로 x 2개 만큼 있습니다.
  • 4차원 배열(6 x 5 x 4 x 2)이 5차원으로 x 3개 만큼 있습니다. 모양은 알 수 없지만 총 배열 개수는 240개입니다.
  • 5차원 배열(6 x 5 x 4 x 2 x 3)의 모양은 알 수 없지만, 총 배열 개수는 720개입니다.

2차원은 평면(가로 x 세로), 3차원은 공간(가로 x 세로 x 높이)로 표현할 수 있지만 4차원 이상은 표현이 어렵습니다. 하지만 배열을 통해서 그 양은 예상할 수 있습니다.