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

C/C++ 다차원 배열 초기화 방법 완벽 정리

이번 튜토리얼에서는 C/C++ 프로그램에서 다차원 배열(multidimensional array)을 초기화하는 방법에 대해 알아보겠습니다.

다차원 배열 선언의 기본 규칙

다차원 배열을 선언할 때 중요한 규칙이 하나 있습니다. 바로 가장 왼쪽(첫 번째) 차원의 크기는 비워둘 수 있지만, 나머지 모든 차원의 크기는 반드시 명시해야 한다는 점입니다.

컴파일러는 초기화 목록을 보고 첫 번째 차원의 크기를 자동으로 추론할 수 있기 때문입니다. 하지만 두 번째 차원 이후의 크기를 알아야 메모리 상에서 각 행(row)의 경계를 계산할 수 있으므로, 나머지 차원은 생략이 불가능합니다.

예제 코드

다음 예제를 통해 실제로 어떻게 동작하는지 확인해 보겠습니다.

#include<stdio.h>
int main(){
    int a[][2] = {{1,2},{3,4}};
    printf("%lu", sizeof(a));
    getchar();
    return 0;
}

실행 결과

16

코드 설명

위 예제에서 배열 a는 첫 번째 차원의 크기를 비워두고 선언되었습니다. 초기화 목록에 {1,2}{3,4}, 즉 두 개의 행이 존재하므로 컴파일러는 자동으로 배열의 크기를 int a[2][2]로 결정합니다.

실행 결과가 16인 이유는 다음과 같습니다.

  • 배열은 2행 × 2열 = 총 4개의 int 요소를 가집니다.
  • 일반적인 시스템에서 int는 4바이트이므로, 4 × 4바이트 = 16바이트가 됩니다.

정리

다차원 배열을 초기화할 때는 첫 번째 차원만 생략 가능하며, 나머지 차원은 반드시 지정해야 한다는 점을 기억하세요. 이 규칙은 C와 C++ 모두에 동일하게 적용됩니다. 생략된 첫 번째 차원은 초기화 요소의 개수를 기반으로 컴파일러가 자동으로 계산해 줍니다.