본문 바로가기

데이터구조

데이터구조 7차시: 배열, 다차원 배열, array, multi dimensional array

반응형


배열 (Array)에 대한 복습

데이터구조에서 

배열을 많이 사용하기 때문에

이쯤에서 한 번쯤

복습해 보는 것이 좋겠다.


배열은,

같은 데이터형 (data type)을 갖는 

여러 개의 변수들을 손 쉽게 만들 수 있는 방법이다.


int a[6];

배열을 선언할 때는

맨 앞에 데이터형을 쓰고,; 위에서는 int

그 다음에 그 배열의 이름을 붙이고; 위에서는 a

마지막에 몇 개를 만들 것인가를 [ ] 안에 지정한다.; 위에서는 6개


이 때 생기는 6개 배열변수들의

이름은 아래와 같다.

이렇게 번호를 이름삼아 부르는 데, 이 번호를 index 라고 한다.

a[0], a[1], ... a[5]


index는 0부터 시작

이걸 절대 잊지 말아야 한다.

사람들이 물건을 셀 때는

첫 번째, 두 번째, ... 이렇게 1을 기준으로 하지만,

C언어에서는

0  번째, 1 번째,... 이렇게 0이 기준이 된다.


index는 n-1에서 끝

이것도 절대 잊지 말아야 한다.

배열 크기가 n일 때,

마지막 index는 당연히 n-1이 된다.

왜냐면, 0부터 시작했으니.


배열 (Array) 해부

배열은 메모리 상의 연속된 공간에 위치하게 된다.

쉽게 얘기하면,

크기 n인 배열을 선언하면,

n개의 배열변수들이

메모리 상의 연속된 위치에 생기게 된다는 것이다.

서로 서로 떨어질 수가 없다.

일심동체인 것이다.

아래 프로그램을 보자.

크기 6인 int 배열을 만들고,

각 배열변수들의 주소를 출력해보면

'4' 바이트 간격으로 모두 연속된 것을 볼 수 있다.

예를 들어,

a[0]는 16진수 주소 279138에 있고, 4 바이트를 차지한다. 왜냐면 int니까.

그러면

a[1]은 16진수 주소 27913c부터 시작한다. 이런 식이다.


이번에는 char배열을 예로 프로그램을 보자

크기 6인 char배열을 만들었고,

각 배열변수의 주소를 이번에는 10진수로 출력해 보았다. 

1바이트 단위로 증가하는 것을 볼 수 있다.

왜냐면, char가 1바이트이니까.


정리하자면,

배열을 선언하면, 각 배열변수들은 연속된 메모리 공간에 위치한다.

바꿔 말하면,

배열은 메모리에 그 만한 연속공간이 있을 때만 만들 수 있다. 


다차원 배열 (Multi-dimensional Array)

2차원 배열을 생각해보면

다차원 배열이 뭔지 금방 알 수 있다.

2차원 배열은 지도를 떠올리면 금방 이해된다.

또는 지뢰찾기 같은거,,,



2차원 배열은 행과 열 개수만큼의 공간이 만들어진다.

예를 들어, 2x2 배열이면 모두 4개의 배열변수가 만들어진다.

이 때도 index는 0부터 시작이다.

그리고 각 배열변수의 이름은 

두 개 index의 조합으로 나타내어 진다.

int a[2][2];

a[0][0], a[0][1], a[1][0], a[1][1]


3차원 배열

이거는 큐브를 생각하면 된다.

그리고,

3차원 배열은 x, y, z축으로 이루어진 공간을

생각하면 되는데,

예를 들어, 2x2x2 배열이면 모두 8 개의 배열변수가

만들어지고,

배열변수는 3개 index의 조합으로 이름이 지어진다.


int a[2][2][2];

a[0][0][0], a[0][0][1], ...., a[1][1][1] : 모두 8개


다차원배열의 비밀

2차원 배열이면 메모리 상에 2차원으로 생길 줄 알았지?

3차원 배열이면 메모리 상에 3차원이 만들어 지고,,

그러면 4차원은 어떻게 하려고,,


다차원 배열은 

다 뻥이다.

몇 차원이고 간에

메모리상에는 1차원 배열처럼 생긴다.

증명이 필요하다구? 


아래 프로그램을 보자.

3차원 배열 a[2][2][2]를 만들었다.

만약, 이게 진짜로 3차원이면,

주소가 연속이면 안되고, 위층, 아래층 이렇게 나와야 한다.

그런데,

결과를 보면 모두 1바이트 단위로 인접해 있음을 알 수 있다.


다차원 배열, 다 소용없는기라.

그기 다 사기인기라.

결국 1차원 짜릴, 그리 뻥치고 다닌기라.





배열에 대해서 설명합니다.



반응형