개발자 데뷔!

[C/C++ 3.3] 2차원 배열 초기화 본문

프로그래밍 언어/C

[C/C++ 3.3] 2차원 배열 초기화

물꼮이 2022. 3. 11. 22:02

다음 문장을 소리내어 3번 읽는다.

종 횡
가로 세로
row col 
행 렬

이렇듯 '가로'를 의미하는 말이 먼저,  그 뒤 '세로'를 의미하는 단어가 뒤따라 오는 것이 자연스럽고 익숙하다. 

처음 2중 for문으로 2차원 배열에 접근 할 때 가장 헷갈리는것이 각 index가 '행'과 '열' 중 무엇을 가리키는가.. 이다.

앞으로 2중 for문을 구현할 때, 우리는 헷갈리지 않게 항상 이 순서를 유지하기로 약속한다. 

i j
행[row] 열[col]

 

i, j 는 각각 행,렬을 나타내는 index


2차원 배열 초기화

2차원 배열의 선언 기본 꼴은 다음과 같다.

자료형 배열이름[행개수][열개수];
int arr[2][3];

 이럴 경우 행이 2개, 열이 3개인 int 타입 2차원 배열 arr가 생성된다.

 

숫자 0 으로 초기화 하기

int arr[2][3] = {};
int arr[2][3] = {0};
int arr[2][3] = {0,0,0,0,0,0}
int arr[2][3] = {{0,0,0}, {0,0,0}}

* char arr[5][5] = { 0 };  // NULL로 채운 다는 뜻 ! 0으로 채우는 거 아님 **

   맞음???

'0 이 아닌 다른 수'로 초기화 하기

 * '0 이 아닌 다른 수'로 배열의 모든 요소를 한번에 초기화 하는 방법은 없다!!

 - for문 등을 활용해 요소 하나하나에 접근해 값을 넣어주거나, 직접 하나씩 요소를 정의해 주어야 한다. 

int arr[2][3] = { {3,1,1},{2,3,2} };
int arr2[3][2] = { {9,8},{7,1},{3,4} };

 


문자 2차원 배열 초기화 하기

char arr[4][3] ={ 'D','A','D','Q','W','Q','A','S','D','A','S','D' };