2차원 배열은 표처럼 보이지만 한 줄 메모리에 저장된다
C++의 int matrix[3][4]는 행 0을 모두 저장한 뒤 행 1,
행 2 순서로 이어 붙입니다.
논리적으로 보는 3행 4열 표
행/열
0
1
2
3
row 0
[0][0]
[0][1]
[0][2]
[0][3]
row 1
[1][0]
[1][1]
[1][2]
[1][3]
row 2
[2][0]
[2][1]
[2][2]
[2][3]
실제 메모리 순서
0[0][0]
1[0][1]
2[0][2]
3[0][3]
4[1][0]
5[1][1]
6[1][2]
7[1][3]
8[2][0]
9[2][1]
10[2][2]
11[2][3]
offset = row * 열개수 + col
예: matrix[1][2]는 1 * 4 + 2 = 6번째 칸입니다.
행
큰 묶음입니다. 한 행이 끝나야 다음 행으로 갑니다.
열
같은 행 안에서 왼쪽부터 오른쪽으로 이어집니다.
주소 계산
열 개수를 알아야 다음 행의 시작 위치를 계산할 수 있습니다.