여행을 개발하다

Array(배열) - 2차원 배열의 정적할당 본문

BackEnd/C++

Array(배열) - 2차원 배열의 정적할당

yhtragramming 2019. 5. 10. 22:53

안녕하세요!

 

오늘 포스팅 할 내용은 '2차원 배열의 정적할당'입니다.

 

지난 시간에는 인수들을 단순 열거하는 1차원 배열에 대해서 이야기했습니다.

 

오늘은 하나의 배열이 여러 개의 배열을 인수로 갖고 있는,

즉 가로와 세로축이 있는 2차원 배열의 정적 할당은 어떻게 이루어지는지 알아보겠습니다.


1. 2차원 정적 배열의 선언

2차원 배열은 '배열들의 배열'이라고 생각하시면 이해하기 쉽습니다.

즉, 배열의 인수가 '배열'이 되는 것이지요.

 

1차원 정적 배열을 선언했던 것처럼, 배열의 크기를 적어주기만 하면 됩니다.

다만 행과 열의 크기가 모두 지정되어야 한다는 점을 주의하셔야 합니다.

 

예를 들어, 5행 5열의 2차원 배열을 선언하기 위해서는 다음과 같이 코딩하면 되겠습니다.

'자료형 배열명[행의 크기][열의 크기]'

이와 동시, 컴퓨터 내부에서는 다음과 같은 메모리 할당이 일어나겠죠?

2. 2차원 정적 배열의 초기화

배열의 초기화는 선언과 동시에 하는 방법과 선언 후 초기화하는 방법으로 나누어집니다.

 

예제로, 다음과 같은 배열을 한 번 만들어보죠. 선언과 동시 초기화는 막노동(?) 같기도 합니다.

 

크기가 정해진 2차원 배열(1차원 배열도 포함)은 이미 할당한 범위보다 적은 인수가 입력될 경우,

0으로 값이 입력되기 때문에 프로그램 실행에는 전혀 문제가 없습니다.

 

하지만, 배열의 크기를 넘어가는 수의 인수를 입력한다면 실행에 문제가 생깁니다.

 

5 * 4 배열을 선언해 놓고 열의 크기를 넘어가는 인수를 하나만 더 입력해도,

위와 같이 빨간 줄로 에러가 발생합니다.

 

하지만 5번째 행처럼 할당한 배열의 크기보다 적은 인수를 입력하면 0으로 출력될 뿐,

프로그램의 실행에는 전혀 문제가 없습니다.

 

그런데, 선언과 동시에 초기화...

너무 불편하죠...

 

그래서 이제는 for문을 이용하여 선언 후 초기화를 시켜보겠습니다.

여기서 다중 for문의 중요성이 다시 한 번 부각됩니다 ㅎㅎㅎ

 

시작 숫자인 1을 정수형 변수 k에 담고, 1씩 증가시키며 각 배열의 방에 넣어주겠습니다.

 

그리고 배열의 각 인수를 출력해보겠습니다.

보기 좋게 tab 크기로 간격도 벌려주겠습니다.

 

배열의 인수들이 보기 좋게 출력됩니다.

 


지금까지 '2차원 배열의 정적할당'에 알아보았습니다.

 

다음 시간에는 2차원 배열의 동적할당과 응용 예제에 대해 알아보겠습니다.

 

감사합니다!!

Comments