본문 바로가기
공부/C언어

[C언어] 다차원 배열 개념과 활용 정리

by 현구원 2025. 5. 15.
반응형

C언어에서 배열은 데이터를 효율적으로 저장하고 처리할 수 있도록 도와주는 기본적인 자료구조입니다. 그중에서도 다차원 배열은 2차원 표나 3차원 공간 데이터를 다룰 때 매우 유용합니다. 이번 글에서는 다차원 배열의 개념부터 선언 및 초기화 방법까지 차근차근 정리해보겠습니다.


🔍 I. 다차원 배열이란?

  • C언어는 4차원 이상의 배열 선언도 문법상 허용하지만, 현실적으로는 2차원 혹은 3차원 배열까지만 사용하는 것이 일반적입니다.
  • 다차원 배열은 데이터를 표 형식(2차원) 또는 **공간 구조(3차원)**로 저장하는 데 사용됩니다.

✅ 배열 선언 예시

배열 차원 선언 방식
1차원 int arrOneDim[10]; 정수 10개를 저장하는 배열
2차원 int arrTwoDim[5][5]; 가로 5 × 세로 5의 표
3차원 int arrThreeDim[3][3][3]; 가로 × 세로 × 높이 모두 3의 공간 배열
 

 

🔍 II. 2차원 배열

📌 선언 방식

type arr[행의 갯수][열의 갯수]; // 예: int arr[3][4];
  • 행은 세로 방향, 열은 가로 방향입니다.
  • 예: arr[2][3] = 10; 은 3행 4열 중 3행 4열 위치에 10 저장을 의미합니다.

🧠 메모리 구조

  • 2차원 배열도 메모리상에서는 1차원적인 구조로 저장됩니다.
  • 즉, 컴파일러가 내부적으로 arr[i][j]를 적절히 1차원 주소로 환산합니다.

✅ 초기화 예시

int arr[3][3] = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};
  • 명시적으로 각 행을 나누어 초기화하는 방식입니다.
int arr[3][3] = { {1}, {4, 5}, {7, 8, 9} };
  • 부족한 요소는 자동으로 0으로 초기화됩니다.
  • 예: arr[0][1], arr[0][2], arr[1][2]는 0입니다.
int arr[3][3] = {1, 2, 3, 4, 5, 6, 7};
  • 행과 열 순서대로 자동 초기화, 부족한 값은 0으로 채워짐.

📝 배열 크기 생략 초기화

int arr1[][4] = {
    {1, 2, 3, 4},
    {5, 6, 7, 8}
};  // O
  • **세로 크기(행 개수)**는 생략 가능.
  • int arr1[ ][ ] = {...}; 형태는 ❌ 컴파일 오류 발생.

 

🔍 III. 3차원 배열

📌 선언 방식

type arr[높이][행의 갯수][열의 갯수];
  • 예: int arr[2][3][4];는 총 2 × 3 × 4 = 24개의 요소를 가지는 배열입니다.
  • 높이(Z)행(Y)열(X) 순으로 인덱싱됩니다.

🔧 사용 예시

int arr[2][2][2] = {
    {
        {1, 2},
        {3, 4}
    },
    {
        {5, 6},
        {7, 8}
    }
};
  • 위 예시는 2개의 층, 각 층에 2행 2열 구조를 가진 배열입니다.

예제

문제1

가로의 길이가 9, 세로의 길이가 3인 int형 2차원 배열을 선언하여 구구단 중 2단, 3단, 4단을 저장하자. 그리고 제대로 저장이 되었는지 확인하기 위한 출력을 진행하는 예제를 작성해보자.

문제2

위 그림의 형태대로 배열 A와 배열 B를 선언하자. 그리고 배열 A는 선언과 동시에 그림에서 명시하는 대로 초기화를 진행하자! 그리고 배열 B도 위 그림에서 보이는 대로 초기화를 진행하되, 반드시 배열 A에 저장된 값을 이용해서 초기화를 진행해야 한다.

문제3

성적관리 프로그램을 작성하자. 과목은 국어, 영어, 수학, 국사 이렇게 네 과목이고 학생은 철희, 철수, 영희, 영수 이렇게 네 사람이다. 프로그램 사용자로부터 이 네 사람의 네 과목 점수를 입력 받는다. 그리고 미리 선언해 놓은 배열에 그 값을 저장해야 한다. 저장이 끝났다면, 개인별 총점과 과목별 총 점을 계산해서 각각 마지막 열과 행에 저장해야한다. 그리고 마지막에는 저장된 값의 검증을 위한 출력을 보여야 한다.


 정리하자면, C언어에서 다차원 배열은 단순한 데이터 저장을 넘어 구조화된 데이터 처리에 매우 유용한 도구입니다. 특히 2차원 배열은 표 형태 데이터, 3차원 배열은 공간 좌표나 시간축 데이터 등에서 자주 활용됩니다.

 

 

반응형