2차원 배열 Programming/C 2015. 8. 26. 22:51

2차원 배열 

- 2차원 배열은 1차원 배열과는 다르게 첨자 2 개를 사용하는 배열이다. 같은 데이터형의 변수가 

  행( row )과 열( column )을 나타내는 데 , 첫 번째 첨자는 행을, 두 번째 첨자는 열을 나타낸다.




 Ⅰ. 행과 열

    

 1차원 배열에서는 변수이름 [ 열 ]로 표현했지만 , 2차원 배열에선 변수 이름 [행] [열] 로 표현한다. 옆에 그림과 같이 표현한다.       



Ⅱ.  2차원 배열의 크기


변수이름 [i:n][j:m] 의 크기는 i와 j 가 첫 번째 요소의 행과 열의 첨자이고, n과 m은 마지막 요소의 행과 열의 첨자이다. 

따라서, 배열의 크기를 구하는 공식은 ( n-i+1) x ( m-j+1) 이다.

 

 (ex) 위의 그림 처럼 첫 번째 요소의 행과 열은 [0][0]이므로 i 와 j 는 0이고, 마지막 요소의 행과 열은 [2][1]이므로 n은 2, 

        m은 1이다. 따라서 위의 그림의 배열의 크기는 (2-0+1) x (1-0+1) 으므로 3x2는 6이되어, 

        위 그림의 2차원 배열의 크기는 6이다.



Ⅲ. 2차원 배열의 저장 방식 


2배원 배열에는 행 중심 저장 방식과 열 중심 저장 방식이 있다. 행 중심 저장 방식은 1번째 행,

2번째 행 .. 순으로 저장하고 열 중심 저장 방식은 마찬가지로 1번째 열, 2번째 열.. 식으로 저장 한다.


[그림 7-7] 2차원 배열 요소의 주소

 

☞ 2차원 배열 arr[n][m]에서 첫 번째 요소의 행과 열의 첨자가 a이고 시작주소가 base, 요소의 크기가 size라고 할 때 ,

    arr[i][j]의 주소를 구하는 공식은 다음 과 같다


① 행 중심 저장 방식 

   arr[i][j] 의 주소 = base + (m x (j-a)) x size


② 열 중심 저장 방식 

   arr[i][j] 의 주소 = base + (n x (j-a)) x size


(ex) 위의 사진을 예로 들면 시작 주소는 200이고 각 요소의 크기는 4이니.. ▼


① 행 중심 저장 방식의 arr[2][0]

   200 + (2 x (2-0) + (0-0)) x 4 = 216


② 열 중심 저장 방식의 arr[2][0]

   200 + (3 x (0-0) + (2-0)) x 4 = 208


두 결과 모두 원하는 결과를 출력하고 있다.




                                                                                   sourced by "NAVER"

'Programming > C' 카테고리의 다른 글

Stack과 Queue  (0) 2015.08.26
Call-by-value 와 Call-by-reference  (0) 2015.08.26
동적 할당  (0) 2015.08.26
[ Project ] Pascal  (0) 2015.08.26
포인터 ( Pointer )  (0) 2015.06.14