C 프로그래밍 · 3 min read · Nov 19, 2025
리눅스 C 프로그래밍 튜토리얼 24부 - 다차원 배열

이 진행 중인 C 프로그래밍 튜토리얼 시리즈를 따라오고 있다면, 배열의 개념에 대해 알고 있을 것입니다. 간단히 요약하자면, 배열은 동일한 유형의 여러 값을 연속 저장소에 저장하는 데 사용됩니다.
C의 다차원 배열
예를 들어, 다음은 5개의 숫자를 저장할 수 있는 정수 배열입니다.
int arr[5]배열에 저장된 값은 배열 이름과 해당 인덱스 값을 사용하여 쉽게 접근할 수 있습니다. 인덱스는 0부터 시작하므로, 배열에서 두 번째 요소에 접근하고 싶다면 다음과 같이 할 수 있습니다:
arr[1]다음 프로그램은 사용자로부터 5개의 정수를 입력받아 배열에 저장한 후, 다시 사용자에게 출력합니다.
#include
int main()
{
int arr[5],i;
printf("5개의 정수 값을 입력하세요\n");
for(i=0;i<5;i++)
scanf("%d",&(arr[i]));
printf("다음 값을 입력했습니다:\n");
for(i=0;i<5;i++)
printf("%d\n",arr[i]);
return 0;
} 이러한 유형의 배열은 단일 차원 배열로 알려져 있습니다. 그렇습니다, 다차원 배열도 존재합니다 - 이차원 배열, 삼차원 배열 등등. 예를 들어, 다음은 이차원 배열입니다:
int arr[2][3]이 배열은 2개의 행과 3개의 열로 구성된 2-D 숫자 테이블로 시각화할 수 있습니다 - 다음과 같은 형태입니다:
x x x
x x x 따라서 이 배열은 총 6개의 요소를 담을 수 있습니다. 배열이 담을 수 있는 총 요소 수는 배열 선언에서 인덱스를 곱하여 쉽게 계산할 수 있습니다. 예를 들어, ‘arr’의 경우 배열의 용량은 2x3으로 계산할 수 있으며, 이는 6과 같습니다.
초기화 부분으로 넘어가면, ‘arr’과 같은 2-D 배열은 다음과 같이 초기화할 수 있습니다:
int arr [2][3] = {1,2,3,4,5,6}위의 초기화는 이러한 값을 2-D 배열로 시각화하기 어렵게 만들기 때문에, 선택할 수 있는 또 다른 (즉, 더 나은) 방법이 있습니다. 여기 있습니다:
int arr [2][3] = { {1,2,3}, {4,5,6} };이제 숫자 1,2,3이 한 행에 있고, 4,5,6이 다른 행에 있다는 것을 쉽게 시각화할 수 있습니다. 여기 있습니다:
1 2 3
4 5 6C에서 2-D 배열을 다루는 방법에 대해, 다음은 사용자로부터 이 6개의 값을 입력받아 2-D 배열 ‘arr’에 저장한 후, 최종적으로 사용자에게 다시 출력하는 작은 프로그램입니다:
#include
int main()
{
int arr[2][3],i,j;
printf("2x3 배열의 값을 입력하려고 합니다\n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("\n 행 %d 및 열 %d에 저장할 값을 입력하세요 :: ",i,j);
scanf("%d",&arr[i][j]);
}
}
printf("\n 다음 값을 입력했습니다:\n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("\n 행 %d 및 열 %d = %d\n",i,j,arr[i][j]);
}
}
return 0;
} 그리고 출력은 다음과 같습니다:
2x3 배열의 값을 입력하려고 합니다
행 0 및 열 0에 저장할 값을 입력하세요 :: 1
행 0 및 열 1에 저장할 값을 입력하세요 :: 2
행 0 및 열 2에 저장할 값을 입력하세요 :: 3
행 1 및 열 0에 저장할 값을 입력하세요 :: 4
행 1 및 열 1에 저장할 값을 입력하세요 :: 5
행 1 및 열 2에 저장할 값을 입력하세요 :: 6
다음 값을 입력했습니다:
행 0 및 열 0 = 1
행 0 및 열 1 = 2
행 0 및 열 2 = 3
행 1 및 열 0 = 4
행 1 및 열 1 = 5
행 1 및 열 2 = 6그래서 이것은 이차원 배열에 대한 기본 정보였습니다. 삼차원 배열은 어떨까요? 같은 방식으로, 삼차원 배열도 정의하고 초기화할 수 있습니다. 예를 들어:
int arr[2][3][4]이 배열을 어떻게 시각화할 수 있을까요? 음, 우리가 살고 있는 삼차원 세계를 생각하고, 서로 수직인 세 가지 차원을 시각화해 보세요. 그렇게 하면 이 배열의 세 차원이 맞아 들어갑니다.
24개의 요소(2x3x4)의 용량을 가진 이 배열은 다음과 같이 초기화할 수 있습니다:
int x[2][3][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} }
};그리고 다음은 3-D 배열을 사용하는 C 프로그램입니다:
#include
int main()
{
int arr[2][3][4],i,j,k;
printf("2x3x4 배열의 값을 입력하려고 합니다\n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
for(k=0;k<4;k++)
{
printf("\n arr[%d][%d][%d]에 저장할 값을 입력하세요 :: ",i,j,k);
scanf("%d",&arr[i][j][k]);
}
}
}
printf("\n 다음 값을 입력했습니다:\n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
for(k=0;k<4;k++)
{
printf("\n arr[%d][%d][%d] = %d\n",i,j,k,arr[i][j][k]);
}
}
}
return 0;
} 결론
이 튜토리얼에서는 다차원 배열의 개념에 대해 논의함으로써 기존의 배열에 대한 이해를 확장했습니다. 이 튜토리얼에서 사용된 예제를 시스템에서 시도해 보시고 (새로운 예제를 만들어 보시기 바랍니다) 이러한 배열이 어떻게 작동하는지 더 잘 이해하시기 바랍니다. 의문이나 질문이 있는 경우 아래에 댓글을 남겨주세요.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.