Page 84 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 84

앞 그림의  c 에서 볼 수 있는 4행 3열인 2차원 배열의 선언과 내부 구조를 나타낸 것이 그림

                   2-18입니다. 다차원 배열의 선언은 가장 마지막으로 모은 요소 개수(2차원 배열의 경우는 행의
                   수)를 맨 앞쪽에 놓습니다.



                   다음 그림 2-18을 통해 다시 정리하면 배열 a의 요소는 a[0], a[1] a[2] a[3]로 총 4개입니다.
                   그리고 각 요소(a[n])는 int형이 3개가 모인 int[3]형입니다. 즉, 배열 a 요소의 요소가 int형입

                   니다.


                            열의 개수(요소의 요소 개수)

                                                         a[0][0]
                    int a[4][3];                                   a[0]의 요소는 3개
                                              a[0]       a[0][1]
                                                         a[0][2]
                          행의 개수(a의 요소 개수)
                                                         a[1][0]   a[1]의 요소는 3개
                                              a[1]       a[1][1]
                                                         a[1][2]
                               a의 요소는 4개
                                                         a[2][0]   a[2]의 요소는 3개
                                              a[2]       a[2][1]
                     2차원 배열의 요소는 1차원 배열
                                                         a[2][2]
                                                         a[3][0]   a[3]의 요소는 3개
                                              a[3]       a[3][1]
                                                         a[3][2]
                                                                   구성 요소는 모두 12개입니다.
                                          [그림 2-18] 4행 3열의 2차원 배열


                   배열이 아닌 차원까지 분해한 요소를 이 책에서는 ‘구성 요소’라고 하겠습니다. 각 구성 요소
                   에 접근하는 식은 첨자 연산자[]를 이어 쓴 a[i][j]입니다. 물론 2차원 배열에서도 인덱스가 0

                   부터 시작하는 규칙은 1차원 배열과 같습니다. 배열 a의 구성 요소는 a[0][0], a[0][1] a[0]
                   [2], …, a[3][2]로 모두 12개입니다.



                   1차원 배열과 마찬가지로 다차원 배열의 모든 요소(전체 구성 요소)는 메모리에 일직선으로 나
                   란히 줄지어 있습니다. 구성 요소의 순서는 먼저 뒤쪽의 인덱스가 차례대로 커지고, 그런 다
                   음 앞쪽의 인덱스가 커집니다. 즉, 다음 순서와 같습니다.


                     a[0][0]  a[0][1]  a[0][2]  a[1][0]  a[1][1]  a[1][2]  …  a[3][1]  a[3][2]




                   그러므로 a[0][2] 바로 다음에 a[1][0]이 오고 a[2][2] 바로 다음에 a[3][0]이 옵니다.




                   84   C 알고리즘
   79   80   81   82   83   84   85   86   87   88   89