Nagie's DevStory

[C] 29. 다차원 배열 본문

Programming/C

[C] 29. 다차원 배열

Nagie 2023. 9. 25. 21:59
728x90

일차원 배열과 이차원 배열의 확장되는 개념이지만 잘 사용하진 않는다.

 

다차원 배열은 기존의 이차원 배열의 기본 구성인 행(Row), 열(Column)에서 면(Side)이 추가되는 개념이며

 

이 역시 사람이 접근하기 편하게 하기 위해 고안된 것이다. 실제 메모리 공간에선 하나의 연속된 공간으로 구성된다.

 

이차원 배열의 상상도

 

다차원 배열의 선언 방법은 아래와 같다.

 

 

//다차원 (3차원)배열 선언방법

int MyArr[5][5][5];

//int MyArr[면의 개수][행의 개수][열의 개수];

 

 

위의 작성법대로 int MyArr[5] [5] [5];를(을) 선언한다면 아래의 사진처럼 메모리 공간이 구성된다고 생각하면 된다.

 

거대한 큐브 모양처럼 말이다.

 

 

3차원 배열

 

다차원 배열 역시 기존의 일차원 배열과 이차원 배열처럼 초기화가 가능하다.

 

다만 배열 선언과 동시에 초기화하는 방법이 아래의 코드처럼 상당히 번거로워진다.

 

 

int MyArr[2][2][2] = { {{1,2} , {3,4} } , { {5,6} , {7,8} };

int MyArr[][2][2] = { {1,2,3,4} , {5,6,7,8} };

int MyArr[][2][2] = { 1,2,3,4,5,6,7,8 };

 

또한 이차원 배열에서 행의 길이를 명시 안 해 줘도 열의 길이를 기준으로 컴파일러가 알아서 처리해 줬던 것처럼

 

다차원(3차원) 배열 역시 면의 길이를 명시해 주지 않아도 행과 열의 길이를 기준으로 컴파일러가 알아서 처리 해준다.

 

다만 면의 길이만 명시하지 않아도 되는 거지 행이나 열의 길이를 명시하지 않아도 되는 건 아니니 주의해야 한다.

 

그리고 다차원 배열은 3차원까지만 선언할 수 있는 게 아닌 사용자가 원하는 만큼 차원을 늘릴 수 있으나

 

근본적으로 이러한 접근은 하지 않는 게 좋다.

 

좌 : int MyArr[5][5][5][5]; 의 상상도  /  우 : int MyArr[5][5][5][5][5];의 상상도

 

저런 메모리 공간에서 내가 원하는 데이터를 실수 없이 완벽하게 꺼내올 자신이 있다면

 

한 번쯤은 개인 프로젝트에서 써볼 만하지만 팀 작업을 한다면 사용하지 말자...

728x90
Comments