2차원 배열 초기화하기 — 중첩 중괄호, 행 크기 생략, 일부 요소 초기화와 중괄호 생략 | 기초 C언어 8.2.1-2
기초 C언어Chapter 08 배열 › Section 02 2차원 배열
8.2.1-2 2차원 배열 초기화하기
바깥쪽 중괄호는 전체 표, 안쪽 중괄호는 각 행. 선언과 함께 2차원 배열을 채우는 다섯 가지 방법과 1차원 초기화와의 짝을 비교.
영상 목차 · 원하는 부분부터 보기
01이미 한 번 본 초기화교재 239p
- 앞 편의 CODE 8.5는 scores[2][3]을 중괄호 안의 중괄호로 채운 꼴. 이번 편은 선언과 함께 값을 채우는 방법을 다섯 가지로 정리.
- 8.1.1의 1차원 초기화 세 가지가 2차원에서 각각 짝을 이룸. 기본 형식과 중첩 중괄호 생략은 2차원에서 새로 보는 내용.
| 1차원 배열 (8.1.1) | 2차원 배열의 짝 |
|---|---|
| 배열 초기화 | ② 모든 요소 초기화하기 |
| 배열 크기 자동 계산 | ③ 행의 크기 생략하기 |
| 부분 초기화와 0으로 초기화 | ④ 일부 요소만 초기화하기 |
02① 기본 형식 — 중괄호가 두 겹교재 239p
- 교재의 비유로는 엑셀 표의 각 행에 데이터를 한 줄씩 채워 넣는 과정.
- 형식은 자료형 배열이름[행_크기][열_크기] = { {첫 번째 행 값들}, {두 번째 행 값들}, ... };
- 바깥쪽 큰 중괄호는 전체 표(배열)를 감싸고, 안쪽의 작은 중괄호는 표의 각 행에 들어갈 값들을 묶는 역할.
03② 모든 요소 초기화하기교재 239~240p
- 행의 개수만큼 안쪽 중괄호를 사용하여 각 행의 값을 모두 지정하는 방법. 가장 직관적이고 일반적인 방법.
- scores[3][3]에 {85, 92, 78}, {90, 88, 95}, {76, 95, 80} 세 묶음을 적으면 세 개의 행을 의미. 첫 묶음은 scores[0] 행으로 들어가 scores[0][0], scores[0][1], scores[0][2]에 차례대로 저장.
- 두 번째와 세 번째 묶음도 각각 scores[1], scores[2] 행에 저장. 묶음 하나가 행 하나라서 어느 값이 어느 학생의 것인지 바로 보이는 구조.
04③ 행의 크기 생략하기교재 240p
- 값을 모두 명시하면 int scores[][3]처럼 행의 크기를 비워 둘 수 있음. 컴파일러가 안쪽 중괄호의 개수를 세어 행의 크기를 결정.
- 열의 크기는 반드시 명시. 데이터가 추가되거나 삭제될 때 행의 크기를 직접 고칠 필요가 없어 편리할 수 있음.
열의 크기를 비울 수 없는 까닭
열의 크기를 알아야 한 행이 몇 칸에서 끝나고 다음 행이 어디서 시작하는지 컴파일러가 판단 가능. 그래서 행의 크기만 생략할 수 있고 열의 크기는 그대로 적어야 함.
05④ 일부 요소만 초기화하기교재 240~241p
- 배열의 크기보다 적은 수의 값을 적으면 나머지 값은 자동으로 0. arr[3][3]에 {1, 2}, {4} 두 묶음만 적은 교재 예가 대표적.
- 결과는 행 0이 1, 2, 0, 행 1이 4, 0, 0, 행 2가 0, 0, 0. 아무 값도 지정하지 않은 마지막 행은 모두 0.
- 안쪽 중괄호가 행의 경계를 지켜 주므로 4가 행 0의 빈칸으로 올라가지 않고 행 1의 첫 칸에 들어감.
06⑤ 중첩 중괄호 생략하기와 다음 편교재 241p
- 안쪽 중괄호 없이 int scores[3][3] = {85, 92, 78, 90, 88, 95, 76, 95, 80};처럼 한 줄로 나열하면 scores[0][0]부터 scores[2][2]까지 첫 행부터 순서대로 채워짐. 결과는 ②와 동일.
- 칸마다 값을 채우는 법은 여기까지. 모든 칸을 하나씩 방문하는 법은 다음 편 8.2.2 중첩 반복문을 이용한 2차원 배열 처리에서 다룸.
가능하지만 권장하지 않는 방법
중첩 중괄호 생략은 가독성을 떨어뜨리고 실수를 유발하기 쉬움. ④처럼 일부만 채우려고 1, 2, 4를 한 줄로 적으면 4가 행 1이 아니라 행 0의 셋째 칸에 들어감.
이 절의 핵심 정리
- 2차원 배열 초기화에서 바깥쪽 중괄호는 전체 배열을, 안쪽 중괄호는 각 행의 값들을 묶는다.
- 행의 개수만큼 안쪽 중괄호를 적어 모든 요소를 지정하는 방법이 가장 일반적이다.
- 값을 모두 명시하면 행의 크기는 생략할 수 있지만 열의 크기는 반드시 적어야 한다.
- 배열의 크기보다 적은 수의 값을 적으면 지정하지 않은 요소는 0으로 초기화된다.
- 안쪽 중괄호를 생략하면 첫 행부터 순서대로 채워지지만 실수하기 쉬워 권장하지 않는다.
강의 자료8.2.1-2 2차원 배열 초기화하기
1 / 11
번호를 누르면 해당 장으로 바로 이동합니다 · 방향키 ← → 로도 넘길 수 있습니다

댓글
댓글 쓰기