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 6

C에서 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;  
}

결론

이 튜토리얼에서는 다차원 배열의 개념에 대해 논의함으로써 기존의 배열에 대한 이해를 확장했습니다. 이 튜토리얼에서 사용된 예제를 시스템에서 시도해 보시고 (새로운 예제를 만들어 보시기 바랍니다) 이러한 배열이 어떻게 작동하는지 더 잘 이해하시기 바랍니다. 의문이나 질문이 있는 경우 아래에 댓글을 남겨주세요.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.