다차원 배열 Multidimensional Arrays
배열의 요소는 배열을 포함하여 모든 자료형일 수 있다. 배열을 가진 배열을 다차원 배열(multidimensional array)이라고 한다.
int arArray[2][4];
위 배열은 2개의 첨자를 가지고 있으므로 2차원 배열이다.
2차원 배열에서 첫 번쨰(왼쪽) 첨자는 row(행)으로 생각하고 두 번째(오른쪽) 첨자를 column(열)로 생각하는게 편리하다.
이것을 행-우선(row-major)순위라고 한다
간단하게 생각한다면 학교를 기준으로 몇반(첫 번째 첨자), 몇번(두 번쨰 첨자) 라고 생각하면 이해가 쉬울것이다.
위의 2차원 배열을 다음과 같이 배열이 된다
[0][0] [0][1] [0][2] [0][3]
[1][0] [1][1] [1][2] [1][3]
[2][0] [2][1] [2][2] [2][3]
2차월 배열에 접근을 하고싶다면 두 개의 첨자를 사용하면 된다.
int arArray[1][2] = 5;
2차원 배열 초기화 (Initializing two-dimensional arrays)
int arArray[2][4] =
{
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
각각의 숫자 집합이 행을 나타내는 중첩된 중괄호를 사용하는게 가장 보기 쉽다.
일부 컴파일러에서는 내부 중괄호를 생략이 가능하지만, 가독성을 위해 생략하지 않는게 좋다.
C++에서는 초기화 목록보다 적은 초기화 값이 있으면 나머지 요소는 0으로 초기화가 되다.
int arArray[2][4] =
{
{1,2}, // 1,2,0,0
{5,6,7}, // 5,6,7,0
{9,10,11,12} // 9,10,11,12
};
초기화 목록이 있는 2차원 배열은 왼쪽 첨자가 생략 가능하다.
컴파일은 배열 길이가 몇인지 계산이 가능하다.
int arArray[][4] =
{
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
};
이와 같이 첫 번째, 두 번째 첨자 둘다 없는 경우는 허용이 되지 않는다
int arArray[][] =
{
{1,2,3,4},
{5,6,7,8},
};
배열의 길이를 명시적으로 선언하는 경우에만 작동한다. 그렇지 않으면 1행이 있는 2차원 배열이 되어버린다.
예시를 하나 만들어 보았다. ( 구구단 )
#include <iostream>
int main()
{
const int nSize1 = 10;
const int nSize2 = 10;
int arArray[nSize1][nSize2]{};
int nMultiply{};
for (int i = 1; i < nSize1; i++)
{
for (int j = 1; j < nSize2; j++)
{
arArray[i][j] = j;
nMultiply = i * arArray[i][j];
printf("%d * %d = %d\n", i, arArray[i][j], nMultiply);
}
}
}
참조 글
'예습' 카테고리의 다른 글
[예습] 10월 7일 예습 (1) | 2024.10.08 |
---|---|
[예습] 9월 30일 예습 정리 (0) | 2024.10.01 |
[예습] 9월 23일 예습 (0) | 2024.09.23 |
[예습] 9월 2일 예습 (0) | 2024.09.02 |
[예습] 8월 26일 예습 (0) | 2024.08.26 |