Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어 다차원 배열 완벽 정리: 개념, 선언 문법부터 예제 코드까지

배열(Array)은 여러 개의 관련된 데이터를 하나의 공통된 이름으로 묶어 저장하는 자료 구조입니다. 같은 자료형의 값들을 연속된 메모리 공간에 순서대로 보관할 수 있어, 반복문과 함께 사용하면 대량의 데이터를 효율적으로 처리할 수 있습니다.

배열 선언 문법

배열을 선언하는 기본 문법은 다음과 같습니다.

datatype array_name [size];

예를 들어 int a[5];처럼 선언하면 정수형 변수 5개를 담을 수 있는 배열이 생성됩니다.

배열의 종류

배열은 차원의 수에 따라 크게 세 가지로 분류할 수 있습니다.

  • 1차원 배열(One-dimensional array)
  • 2차원 배열(Two-dimensional array)
  • 다차원 배열(Multi-dimensional array)

배열의 초기화 방법

C 언어에서 배열은 두 가지 방식으로 초기화할 수 있습니다.

  • 컴파일 시간 초기화: 코드 작성 단계에서 중괄호 { } 안에 값을 직접 나열하여 초기화합니다.
  • 런타임 초기화: 프로그램 실행 중 사용자 입력 등을 통해 배열 요소에 값을 할당합니다.

다차원 배열(Multi-dimensional Array)이란?

  • C 언어는 3차원 또는 그 이상의 배열도 허용합니다.
  • 배열이 가질 수 있는 차원의 정확한 상한은 컴파일러마다 다르며, 컴파일러가 결정합니다.

다차원 배열 선언 문법

다차원 배열을 선언하는 일반적인 문법은 다음과 같습니다.

datatype arrayname [size1] [size2] ----- [sizen];

예시:

  • 3차원 배열 선언 − int a[3][3][3];

이 배열이 담을 수 있는 전체 요소의 개수는 각 차원 크기의 곱으로 계산됩니다.
요소 개수 = 3 × 3 × 3 = 27개

다차원 배열 예제 프로그램 1

다음은 3차원 배열을 선언하고 중첩 반복문으로 모든 요소를 출력하는 C 프로그램입니다.

#include<stdio.h>
main ( ){
   int a[2][2][2] = {1,2,3,4,5,6,7,8};
   int i,j,k;
   printf ("elements of the array are");
   for ( i=0; i<2; i++){
      for (j=0;j<2; j++){
         for (k=0;k<2; k++){
            printf("%d", a[i][j][k]);
         }
      }
   }
}

실행 결과

Elements of the array are :
1 2 3 4 5 6 7 8

다차원 배열 예제 프로그램 2

이번에는 학생 데이터를 저장하는 3차원 배열을 활용한 예제입니다. 각 인덱스가 의미하는 바는 다음과 같습니다.

  • 첫 번째 인덱스(tab): 반(그룹)
  • 두 번째 인덱스(row): 학생
  • 세 번째 인덱스(col): 과목 점수
#include<stdio.h>
int main(){
   int tab, row, col;
   int students[3][3][2] = { { {1, 2}, {4, 5}},{ {2, 4}, {3, 5} },{ {7,8},{9,3}}};
   for (tab = 0; tab < 3; tab++){
      for (row = 0; row < 3; row++){
         for (col =0; col < 2; col++){
            printf("students[%d][%d][%d]= %d\n", tab, row, col,
            students[tab][row][col]);
         }
      }
   }
   return 0;
}

실행 결과

students[0][0][0]= 1
students[0][0][1]= 2
students[0][1][0]= 4
students[0][1][1]= 5
students[0][2][0]= 0
students[0][2][1]= 0
students[1][0][0]= 2
students[1][0][1]= 4
students[1][1][0]= 3
students[1][1][1]= 5
students[1][2][0]= 0
students[1][2][1]= 0
students[2][0][0]= 7
students[2][0][1]= 8
students[2][1][0]= 9
students[2][1][1]= 3
students[2][2][0]= 0
students[2][2][1]= 0

출력 결과에서 값이 0으로 표시되는 부분은 초기화 목록에 해당 인덱스의 값이 제공되지 않았기 때문입니다. C 언어에서는 명시적으로 초기화되지 않은 배열 요소가 자동으로 0으로 채워지므로, 이러한 결과가 나타나는 것입니다.