배열의 기본 개념
배열(Array)은 동일한 자료형의 요소들이 연속된 메모리 공간에 나란히 저장되어 있는 자료구조입니다. 가장 낮은 메모리 주소는 첫 번째 요소에 대응하고, 가장 높은 주소는 마지막 요소에 대응합니다. 배열의 인덱스는 항상 0부터 시작하며, 마지막 인덱스는 '배열 크기 - 1'이 됩니다. 또한 배열의 크기는 반드시 0보다 큰 정수로 지정해야 합니다.
간단한 예를 통해 확인해 보겠습니다.
배열 크기 = 10일 때 첫 번째 인덱스 = 0 마지막 인덱스 = 배열 크기 - 1 = 10 - 1 = 9
다차원 배열이란?
다차원 배열(Multi-dimensional Array)은 말 그대로 '배열의 배열'을 의미합니다. 다차원 배열의 데이터는 표(테이블) 형태로 다루어지며, 실제 메모리에는 행 우선(row-major) 순서로 저장됩니다.
다차원 배열을 선언하는 기본 문법은 다음과 같습니다.
type array_name[array_size1][array_size2] ... [array_sizeN];
각 구성 요소의 의미는 아래와 같습니다.
array_name − 사용자가 배열에 지정하는 임의의 이름입니다.
array_size − 각 차원별 배열의 크기를 나타냅니다.
다차원 배열의 초기화 방법
다차원 배열은 선언과 동시에 중괄호({})를 이용해 초기화할 수 있습니다. 각 행의 요소들을 중괄호로 묶어 순서대로 나열하면 됩니다.
type array_name[array_size1][array_size2] ... [array_sizeN] = { {요소들}, {요소들}, ..., {요소들} };예제 코드
다음은 2행 3열 크기의 2차원 배열을 선언하고 초기화한 후, 모든 요소를 출력하는 예제입니다.
#include <stdio.h>
int main () {
int arr[2][3] = { {5,2,3}, {28,8,30}};
int i, j;
for ( i = 0; i < 2; i++ ) {
for ( j = 0; j < 3; j++ )
printf("arr[%d][%d] = %d\n", i, j, arr[i][j] );
}
return 0;
}실행 결과
arr[0][0] = 5 arr[0][1] = 2 arr[0][2] = 3 arr[1][0] = 28 arr[1][1] = 8 arr[1][2] = 30
코드 설명
위 프로그램에서는 먼저 2행 3열 크기의 2차원 배열을 선언하고 초기화했습니다.
int arr[2][3] = { {5,2,3}, {28,8,30}};이때 첫 번째 중괄호 {5,2,3}은 첫 번째 행의 요소들을, 두 번째 중괄호 {28,8,30}은 두 번째 행의 요소들을 의미합니다.
배열의 모든 요소는 중첩 for 루프를 사용하여 출력됩니다. 바깥쪽 루프는 행(row)을 순회하고, 안쪽 루프는 각 행의 열(column)을 순회하면서 요소 값을 하나씩 화면에 출력합니다.
for ( i = 0; i < 2; i++ ) {
for ( j = 0; j < 3; j++ )
printf("arr[%d][%d] = %d\n", i, j, arr[i][j] );
}