자료구조

[자료구조] 13 다차원배열

juju824 2020. 10. 3. 23:34

📌 다차원 배열 (multi-dimensional array)

2차원 이상의 배열 

ex) A[10][9][8] => 선언된 총 배열원소의 개수는 10 * 9 * 8 = 720

✔️ 행 우선 순서 row-major

✔️ 열 우선 순서 column-major

행 우선 열 우선
A[0][0] A[0][0]
A[0][1] A[1][0]
A[1][0] A[2][0]
A[1][1] A[0][1]
A[2][0] A[1][1]
A[2][1] A[2][1]

👉 int A[3][2] 일 경우 

열 우선 순위는 가장 왼쪽 차원의 인덱스 값이 증가

행 우선 순위는 가장 오른쪽 차원의 인덱스 값이 증가 

 

 

✔️ 배열의 표현 및 주소는

base address a,  각 원소의 s 바이트 할당, 

👉 A[n][m]으로 선언된 2차원 배열에서 A[i][j]의 메모리 상 주소 표현

&A[i][j] = a + ( i * m + j ) * s

 

👉 A[n0][n1][n2]으로 선언된 3차원 배열에서 A[i][j][k]의 메모리 상 주소 표현

&A[i][j][k] = a + ( ( i * n1 * n2 ) +(  j * n2 ) + k ) * s

...

👉 A[n0][n1][n2]...[nm-1] 배열에서

&(A[i0]i1][i2]...[im-1]) = a + { ( i0 * n1 * n2 * n3 ... * nm-1 ) + ( i1 * n2 * n3 * ... * nm-1 ) +...

                                      ( im-2 * nm-1) + ( im-1 ) } * sizeof (원소 자료형)

@여기서 n1, n2,... nm-1에서의 1,2,m-1은 '밑'을 의미