본문 바로가기

C

([C언어] 11강) 2차원 배열

이번 강좌에서는 저번 강좌에 이어서

2차원 배열에 대해 공부해볼까 합니다.

우리는 그냥 배열을 배우면서 아래와 같은 그림을 보았습니다.

이런식으로 이루어진 배열을 1차원 배열 또는 배열 이라고 부릅니다

 

자 그럼 배열을 이용해 게임 맵을 만든다고 칩시다.

0은 지나갈수 있는길

1은 지나갈수 없는길

이런식으로 게임 맵을 만들어보겠습니다

 

 

자 이런식으로 게임 맵이 완성되었네요 그림으로 치면

이런식의 맵이 되겠네요!

 

아무튼! 이 맵에 대한 정보를 배열에 넣으려고 합니다

물론

이 숫자를 한줄로 정렬해서

00000000011111111101100000000110111111111000000000

이렇게 해도 표현 가능하겠지만 보시다 싶이 뭐가 더 보기 편한가요?

한줄보단 여러줄로 하는게 더 편하죠..

그래서 존재하는 기능이 2차원배열입니다

 

2차원배열이란 1차원배열이 가로줄 한줄의 배열이였다면

그 1차원배열을 세로줄로 나열한 배열이라고 보시면 됩니다

그림으로 보자면!

이런식의 배열을 세로가 4, 가로가 5인 크기의 2차원배열 이라고 보시면 되겠네요!

 

그럼 이제 2차원 배열을 만드는 법을 알아볼까요?

 

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

이런식으로 하시면 됩니다!

 

사용은 1차원 배열처럼 똑같이 사용하되

세로 몇번째인덱스인지 가로 몇번째인덱스인지를 정해줘야합니다.

 

 

또! 선언과 함께 할당을 동시에 할수있나요?

할수있습니다! 예를들어 아까 처음에 보여드렸던 게임 맵을 코드로 표현하자면

int arr[5][10] = {
        {0,0,0,0,0,0,0,0,0,1},
        {1,1,1,1,1,1,1,1,0,1},
        {1,0,0,0,0,0,0,0,0,1},
        {1,0,1,1,1,1,1,1,1,1},
        {1,0,0,0,0,0,0,0,0,0} 
    };

이렇게 할수있습니다!

 

 

자 그럼 이번에도 문제를 몇개 내보겠습니다

 

이런식의 2차원배열 arr이 있다고 칩시다.

아래의 값을맞춰보세요

 

1. arr[3][4]

2. arr[0][0]

3. arr[2][1]

4. arr[1][3]

 

 

 

정답은 바로 밑에서 공개할테니 한번씩 다 풀어보신후 확인해주세요!!!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

정답

 

1. 12

2. 20

3. 5  

4. 16

 

 

 

 

 

수고하셨습니다! 다음에는 define과 하드코딩에 대해 배울게요!