C-프로그래밍 3D Array, 3차원 배열 배우기!


이전에 배웠던 1D array와 2D Array를 복습해봅시다.


1D array(1차원 배열)은 row(행)이 하나인 배열이라고 생각하면 된다고 했습니다.

Row(행)이 하나이기 때문에 단순히 int Array[10] = {0}; 이렇게 초기화와 동시에 선언해줄 수 있다고 했습니다.


반면에 2D array(2차원 배열)은 row(행)가 2개인 배열이라고 생각하면 된다고 했는데요.

Row(행)이 두 개이기 때문에 int Array[2][3] = {0}; 이런식으로 선언과 초기화가 동시에 가능할 것입니다.


ex) [ 1D - Array] 

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

for(i=0; i<10; i++){

printf(" %4d", Array[i]);

}


result : 1   2   3   4   5   6   7   8   9   10


ex) [2D - Array]

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


for(i=0; i<2; i++){

for(j=0; j<3; j++){

printf("%4d", Array[i][j]);

 }

printf("\n");

}

result : 1   2   3

    4   5   6


이런 식으로 출력됨을 알 수 있습니다.


이제 부터 조금 어렵습니다! 드디어 3D-Array 3차원 배열인데요,

사실 3차원 배열부터는 사용할 일이 거의 없습니다.

3차원 배열을 생각할 때 쉽게 생각하려면

1차원 배열이 선이었다면, 2차원 배열은 면이고, 3차원 배열은 부피(?), 라고 생각하면 되겠습니다.

1차원 배열에서 row(행)이 여러개 추가된게 2차원 배열이었으니,

3차원 배열은 1차원 배열에서 하나 더 추가 되어야 겠지요?


ex) 1D-Array int array[10];

{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

ex) 2D-Array int array[2][3];

{{1, 2, 3}, {4, 5, 6}};

ex) 3D-Array int array[2][2][3];

{ { {1, 2, 3}, {4, 5, 6} }, { {1, 2, 3}, {4, 5, 6} } };


얼핏 보기에는 조금 어렵죠? 1차원 배열이 위 같이 선언되었다면, 요소가 10개인 1차원 배열이 하나 선언되었다고 생각하면 됩니다.

2차원 배열이 위 같이 선언되었다면 3개 짜리 요소를 가진 행이 두 개 있다. 라고 생각하면 쉬울 듯 합니다.

3차원 배열은 뒤에서부터 생각하면 쉬울 것 같은데요, 3개짜리 요소를 가진 행 두개가 두 개 있다. 라고 생각하면 쉽죠?


[2][2][3] 이니까, 3개 짜리 요소를 가진 행 2개가 2번 있다!

{{1, 2, 3}, {4, 5, 6}}, {{1, 2, 3}, {4, 5, 6}}

이렇게 되는 겁니다!


3차원 배열은 사실 쓰일 일이 많이 없다는게 함정입니다.(Karnaugh map(K-Map)에서도 6-Variables 부터는 잘 안 쓰이는 것 처럼 말입니다.)


고생하셨습니다.


나중에 더욱 더 품격있는 강의로 돌아오겠습니다.

Happy Studies!

+ Recent posts