
// 2025년 10월 23일
오늘은 다차원 배열에 대해 학습했다.
int i;
int arr[5];
i는 int형 크기 1개만큼 메모리 공간을 차지하는 변수다.
arr은 i와 같은 변수 5개를 한꺼번에 선언한 배열이다.
arr은 5개의 연속된 메모리 공간이 하나 있는 1차원 배열이다.
💡 다차원 배열
1차원 배열에 배열을 하나 이상 추가한 2차원, 또는 그 이상의 배열을 의미한다.
동일한 크기의 1차원 배열이 2개 이상 연속되면 이를 2차원 배열이라고 한다.
5개의 연속된 메모리 공간을 가진 배열에 동일한 공간을 가진 배열 하나를 추가하면,
int arr2[2][5];
이렇게 작성하면 된다.
크기를 뒤부터 읽어서 위 코드는 5개의 연속된 메모리 공간으 ㄹ가진 1차원 배열이 2개 있다는 뜻이고, 이 배열의 총 요소는 5 x 2 = 10개이다.
// 2차원 배열의 형식
자료형 배열명[세로크기][가로크기]
3차원 배열도 동일하게 뒤에서부터 크기를 읽고,
int arr4[3][3][3]
이런 형식으로 작성하면 된다.
1차원 배열은 값을 중괄호로 묶고, 쉼표로 구분해 저장한다.
int arr[5] = { 1, 2, 3, 4, 5 };
2차원 배열에서는 값을 한번 더 중괄호로 감싸면 된다.
2차원 이상의 다차원 배열을 선언할 때는, 중괄호 하나가 끝나는 지점마다 줄바꿈해서 가독성을 높이는 것이 좋다.
int arr2[2][5] = {
{ 1, 2, 3, 4, 5 },
{ 1, 2, 3, 4, 5 }
};
3차원 배열에서는 1차원 배열 3개를 중괄호로 묶고, 쉼표로 구분하면 중괄호 3개의 2차원 배열 모양이 되는데, 이 2차원 배열 3개를 다시 중괄호로 묶고, 각 중괄호 안에 값을 넣으면 끝이다.
int arr4[3][3][3] = {
{
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 }
},
{ { 11, 12, 13 },
{ 14, 15, 16 },
{ 17, 18, 19 }
},
{
{ 21, 22, 23 },
{ 24, 25, 26 },
{ 27, 28, 29 }
}
};
💡 크기를 명시하지 않고 다차원 배열 초기화하기
arr 배열은 두 번째 대괄호 속에 있는 2에 의해 2개의 공간으로 이루어진 2차원 배열을 만들게 된다.
즉, 코드에 명시된 가로 크기와 요소의 개수에 따라 첫 번째 대괄호에 해당하는 세로 크기가 자동으로 정해진다.
아래 배열은 요소가 4개이므로 2 x 2 크기의 2차원 배열을 만들게 된다.int arr[][2] = { 1, 2, 3, 4 };
// 접근 형식
배열명[행인덱스][열인덱스]
arr3[4][2] 배열의 모든 요소에 접근해 저장된 값을 출력해보았다.
arr3[4][2] 이므로 바깥쪽 for 문은 4번 반복하고, 안쪽 for 문은 2번 반복한다.
다음과 같이 2차원 배열에 접근해 값을 바꿔 보았다.
출력 결과를 보면,
arr3[3][0] 요소의 값이 7에서 9로,
arr3[3][1] 요소의 값이 8에서 10으로 바뀌었다.
이처럼 2차원 배열에 인덱스로 접근해 값을 바꿀 수 있다.
이처럼 3차원 배열도 인덱스로 접근해 저장된 값을 출력한 수 있다.
배열의 차원 수에 맞춰 for 문 개수가 늘어나니, 3차원 배열에서는 for 문을 3번 사용한다.
위 배열의 크기는 3 x 3 x 3이므로 바깥쪽, 중간, 안쪽 for 문이 0부터 3까지 1씩 증가하도록 하면 된다.
#include <stdio.h>
int main(void)
{
int arr4[3][3][3] =
{
{
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 }
},
{
{ 11, 12, 13 },
{ 14, 15, 16 },
{ 17, 18, 19 }
},
{
{ 21, 22, 23 },
{ 24, 25, 26 },
{ 27, 28, 29 }
}
};
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
for (int k = 0; k < 3; k++)
{
printf("3차원 배열 [%d][%d][%d]의 값 : %d\n", i, j, k, arr4[i][j][k]);
}
printf("\n");
}
printf("\n");
}
return 0;
}
다차원 배열은 배열의 기본 원리를 생각하면 이해하기 쉬운 것 같다.
1차원 배열에서 차원이 하나씩 늘어나는 개념이니, 개념을 확실히 이해하고 학습하니 다차원 배열 파트는 어렵지 않았던 것 같다! 좋다.
이미지 출처 : https://cafe.naver.com/gilbutitbook (길벗 코딩 자율학습단 공식 카페)
그 외의 모든 코딩 화면은 직접 작성하고, 실행하였습니다.