Mafa Dev
다차원 배열 본문
배열은 배열 요소들을 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 |
2 |
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 |
o |
n |
g |
|
G |
i |
l |
|
D |
o |
n |
g |
\0 |
|
|
|
|
|
|
[1] |
C |
o |
m |
p |
u |
t |
e |
r |
|
D |
e |
p |
a |
r |
t |
m |
e |
n |
t |
\0 |
[2] |
S |
e |
o |
l |
|
K |
o |
r |
e |
a |
\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 |