C함수와 배열

다차원 배열

행렬처럼 보이는 C 다차원 배열의 선언, 초기화, 순회 방식과 메모리 배치를 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

c
int scores[2][3] = {
    {90, 80, 70},
    {88, 77, 66}
};

설명

  • C의 다차원 배열은 배열 안에 배열이 들어 있는 구조로 이해하면 됩니다.
  • 메모리에는 행 우선 순서로 이어서 저장되므로, scores[0] 다음에 scores[1] 행이 옵니다.
  • 인덱스 수는 차원 수와 같아야 하며, 각 차원의 길이는 선언 시점에 중요합니다.
  • 중첩 반복문으로 순회하는 패턴이 가장 흔하고, 행렬 계산이나 테이블 데이터에서 자주 등장합니다.

짧은 예제

c
#include <stdio.h>

int main(void) {
    int grid[2][3] = {{1, 2, 3}, {4, 5, 6}};

    for (int row = 0; row < 2; row += 1) {
        for (int col = 0; col < 3; col += 1) {
            printf("%d ", grid[row][col]);
        }
        printf("\n");
    }
    return 0;
}

빠른 정리

항목설명
int a[2][3]2행 3열 정수 배열
행 우선 저장첫 번째 행 전체 뒤에 다음 행이 이어짐
초기화중첩 중괄호로 각 행을 나눠 적는 편이 읽기 좋음
중첩 반복문행과 열을 차례로 순회하는 기본 패턴
함수 전달뒤쪽 차원 크기를 알아야 인덱싱이 가능함

주의할 점

다차원 배열을 함수로 넘길 때는 마지막 차원 크기를 생략할 수 없습니다. 컴파일러가 메모리 간격을 알아야 arr[i][j]를 계산할 수 있기 때문입니다.