Mafa Dev

다차원 배열 본문

C언어/유용한 것

다차원 배열

마파_ 2013. 3. 6. 01:50

배열은 배열 요소들을 2차원 , 3차원으로 만들어서 2차원 배열 , 3차원 배열을 나타낼 수 있습니다. 즉 2차원 배열은 배열의 배열이고 , 3차원 배열은 배열의 배열의 배열입니다. 2차원 이상의 배열을 다차원 배열이라고 합니다.

 

 

 

다차원 배열의 선언

 

2차원 배열은 배열의 배열이므로 선언 방법이 1차원 배열과 같은 형식이면서 늘어난 만큼 []를 더 추가하고 그 안에 배열의 크기를 넣어줍니다.

 

    자료형 배열 이름 [배열 크기][배열 크기] 

 

2차원 배열은 차수가 2므로 2개의 배열 크기가 필요합니다. 배열의 구조를 논리적으로 표현 할 때 첫번째 배열의 크기는 행의 개수가 되고 두번째 배열 크기는 열의 개수가 됩니다. 따라서 첫번째 배열 크기에 대한 인덱스는 행번호가 되고 두번째 배열크기에 대한 인덱스는 열의 크기가 됩니다.

 

int mafa[2][3]을 표로 봅시다.

 

 

 열 번호 0

 열 번호 1 

 열 번호 2

 행 번호 0 

 mafa[0][0]

  mafa[0][1] 

mafa[0][2] 

 행 번호 1

 mafa[1][0]

 mafa[1][1]

mafa[2][2] 

 

 

 

다차원 배열의 초기화

 

다차원 배열도 1차원 배열과 마찬가지로 초기값을 가질 수 있습니다. 초기값의 지정 형태는 다차원 배열이 배열의 배열이라는 것을 생각하며 초기값을 구분하여 지정하거나 1차원 배열처럼 초기값 리스트를 지정하여 순서대로 배열 요소의 초기값으로 설정되도록 합니다.

 

int mafa[2][3] = {{ 1,2,3 } , { 4,5,6 }}; 또는

int mafa[2][3] = { 1,2,3,4,5,6 }; 이렇게 초기화가 가능합니다.

 

 

 [0]

[1] 

[2] 

[0]

 1

 3

 [1]

 4

 5

 6

 

1차원 배열과 마찬가지로 배열 크기를 생략하고 초기값을 지정할 수 있는데 , 생략할 수 있는 배열의 크기는 첫 번째에서만 가능합니다.

 

int mafa[][3] = {{ 1,2,3 } , { 4,5,6 }}; 또는

int mafa[][3] = { 1,2,3,4,5,6 };

이렇게 가능합니다.

 

3차원 배열의 초기화도 2차원 배열과 마찬가지 방법으로 지정합니다.

 

int mafa[2][3][4] = {{ 1,2,3,4 },

                              { 5,6,7,8 },

                              { 9,10,11,12 },

 

                              { 13,14,15,16 },

                              { 17,18,19,20 },

                              { 21,22,23,24 }

                             };

 

 

문자 다차원 배열

 

문자 배열 역시 다차원 배열이 가능합니다.

 

   char mafa[3][20];

위와 같이 선언하면 3개의 배열 요소가 있고 , 각 배열 요소에는 20개의 문자를 넣을 수 있는 2차원 문자 배열을 사용할 수 있습니다. 2차원 문자 배열에 문자열을 넣어봅시다.

 

    char c[3][20] = { "Hong Gil Dong",

                              "Computer Department",

                              "Seoul Korea"

                            };

 

또는 문자열 복사 함수인 strcpy()를 사용하여 문자열을 지정할 수도 있습니다.

 

    strcpy( c[0] , "Hong Gil Dong" );

    strcpy( c[1] , "Computer Department" );

    strcpy( c[2] , "Seoul Korea" );

 

이렇게 초기화하여 만든 2차원 문자 배열 c에 대한 논리적 구조는 다음과 같다.

 

  

[0] 

[1] 

[2] 

[3] 

[4] 

[5] 

[6] 

[7] 

[8] 

 [9]

 [10]

 [11]

 [12]

 [13]

 [14]

 [15]

 [16]

 [17]

 [18]

 [19]

 [0]

 H

 

 

 D

\0 

 

 

 

 

 

 

 [1]

 C

o

 

\0 

 [2]

 S

 e

 

\0 

 

 

 

 

 

 

 

 

 

'C언어 > 유용한 것' 카테고리의 다른 글

파일입출력 feof , fseek , fgetc  (0) 2013.10.22
구조체  (0) 2013.03.07
#define 과 const 선언의 차이점  (0) 2013.02.20
포인터 대상의 const 선언  (0) 2013.01.23
서식문자의 종류와 그 의미  (0) 2013.01.17