study/C언어

다차원 배열(2차원 배열, 3차원 배열)

IT공부 2019. 12. 17. 18:16
반응형

다차원 배열은 1차원 그 이상의 배열입니다. 

 

그 배열 중에 2차원 배열과 3차원 배열이 다차원 배열에 속합니다.

 

int arr[4];          //길이가 4인 1차원 int형 배열 

int arr[4][4];      //가로가 4, 세로가 4인 2차원 int형 배열 

int arr[4][4][4];  //가로가 4, 세로가 4, 높이가 4인 3차원 int형 배열 

 

 

1-1 그림

이러한 개념이라고 보시면 됩니다. 

 

1) 2차원배열

말 그대로 가로 세로를 가진 배열이라고 보시면 됩니다. 

 

2차원 배열 선언 방식

자료형 배열 이름[세로 길이][가로길이];

예) int arr [3][4];

 

"int arr [2][4]"이라는 배열을 선언했다고 가정을 해본다고 합시다.

 

위의 그림처럼 배열이 생성이 됩니다. 이 배열을 초기화해보겠습니다. 

 

위와 같이 초기화하게 되면 위의 사진처럼 배열이 초기화되는 것을 보실 수 있습니다. 

 

 

간단한 c언어 예제를 보여드리겠습니다.

#include <Turboc.h>
#define MAX_ROW 3
#define MAX_COL 3

int i,j;

void arr_print(const int(*arr)[MAX_COL]){
	for(i = 0; i < MAX_ROW; i++){
		for(j = 0; j < MAX_COL; j++){
			printf("%d", arr[i][j]);
			
		}
		printf("\n");
	}
	printf("\n");
}


int main(){
	const int arr1[MAX_ROW][MAX_COL] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
	const int arr2[MAX_ROW][MAX_COL] = { {1 }, {2, 3}, {4, 5, 6} };
	const int arr3[MAX_ROW][MAX_COL] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
	
	arr_print(arr1);
	arr_print(arr2);
	arr_print(arr3);
	
	
	return 0;
}

2차원 배열을 매개변수로 사용할 때는 위의 코드와 같이 " 자료형 (*배열 이름)[2차원 배열에서 가로길이] "를 넣어서 2차원 배열을 만들어 줍니다.  

2) 3차원 배열

테트리스를 사용할 때 3차원 배열을 사용하기도 하는데요 

 

블록을 3차원 배열을 이용하여 생성합니다. 

이런 식으로 선언을 해주고 테트리스 게임에서 블록 모양을 바꾸는 것이 3차원 배열을 이용해서 할 수 있다는 것을 알 수 있습니다.  그리고 배열을 탐색하여 1을 " ㅁ "로 바꿔주는 함수와 바닥에 닿을 때 그 바꾼 " ㅁ "만 땅에 닿게 하는 함수들을 선언해서 테스리스를 만듭니다. 

 

간단한 예제를 보겠습니다. 

#include <stdio.h>
  
int main() {
	int i, j, k; 
    const int arr[4][4][4] = {
        {{0,0,0,0},
		{0,1,0,0},
		{0,1,0,0},
		{0,1,1,0}},
		
		{{0,0,0,0},
		{0,1,1,1},
		{0,1,0,0},
		{0,0,0,0}},
        
		{{0,0,0,0},
		{0,1,1,0},
		{0,0,1,0},
		{0,0,1,0}},
		
		{{0,0,0,0},
		{0,0,1,0},
		{1,1,1,0},
		{0,0,0,0}}
    };
    
	for(i = 0; i < 4; i++) {
        for(j = 0; j < 4; j++) {
            for(k = 0; k < 4; k++) {
                if(arr[j][i][k] == 1)
                    printf("■");
                else
                    printf("  ");
            }
            printf(" ");
        }
        printf("\n");
    }
    return 0;
}

앞서 설명한 3차원 배열을 사용하여 출력하였습니다. 

 

3차원 배열을 매개변수로 사용할 때도 2차원 배열과 비슷합니다. 

 

" 자료형 (*배열)[3차원 배열에서 세로 길이][3차원 배열에서 가로길이] " 로 사용합니다. 

'study > C언어' 카테고리의 다른 글

[C언어] 주석처리  (0) 2019.12.20
[C언어] 1. HelloWorld  (0) 2019.12.20
[C언어] 테트리스  (0) 2019.12.20
[C언어] 2차원 배열 회전 알고리즘  (0) 2019.12.17
C언어로 야구게임 만들기  (0) 2019.12.16