2차원 배열 초기화하기 — 중첩 중괄호, 행 크기 생략, 일부 요소 초기화와 중괄호 생략 | 기초 C언어 8.2.1-2

기초 C언어Chapter 08 배열 › Section 02 2차원 배열

8.2.1-2 2차원 배열 초기화하기

바깥쪽 중괄호는 전체 표, 안쪽 중괄호는 각 행. 선언과 함께 2차원 배열을 채우는 다섯 가지 방법과 1차원 초기화와의 짝을 비교.

교재 수록 위치
교재
『기초 C언어』 · 이은상 · 부크크 · 364쪽
단원
Chapter 08 배열 › Section 02 2차원 배열 › 2차원 배열 초기화하기
쪽수
239p ~ 241p3쪽
세부 내용
2차원 배열 초기화 기본 형식 · 모든 요소 초기화하기 · 행의 크기 생략하기 · 일부 요소만 초기화하기 · 중첩 중괄호 생략하기
학습 목표
2차원 배열 초기화의 다섯 가지 방법을 구분하고, 각 방법이 배열에 값을 채우는 결과를 설명함
영상 목차 · 원하는 부분부터 보기
  1. 0:00 · 강의 소개와 초기화 방법
  2. 1:23 · 중첩 중괄호와 전체 초기화
  3. 4:18 · 행 크기 생략
  4. 5:21 · 부분 초기화와 남은 칸의 값
  5. 7:27 · 안쪽 중괄호 생략과 방법 비교
  6. 9:38 · 핵심 정리

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의 셋째 칸에 들어감.

이 절의 핵심 정리

  1. 2차원 배열 초기화에서 바깥쪽 중괄호는 전체 배열을, 안쪽 중괄호는 각 행의 값들을 묶는다.
  2. 행의 개수만큼 안쪽 중괄호를 적어 모든 요소를 지정하는 방법이 가장 일반적이다.
  3. 값을 모두 명시하면 행의 크기는 생략할 수 있지만 열의 크기는 반드시 적어야 한다.
  4. 배열의 크기보다 적은 수의 값을 적으면 지정하지 않은 요소는 0으로 초기화된다.
  5. 안쪽 중괄호를 생략하면 첫 행부터 순서대로 채워지지만 실수하기 쉬워 권장하지 않는다.
강의 자료8.2.1-2 2차원 배열 초기화하기 1 / 11

번호를 누르면 해당 장으로 바로 이동합니다 · 방향키 ← → 로도 넘길 수 있습니다
다음 절 · 8.2.2 중첩 반복문을 이용한 2차원 배열 처리 교재 242p~244p — 바깥쪽 for 문은 행, 안쪽 for 문은 열을 제어하는 2차원 배열 순회 ↗

더 자세한 내용은 교재에서

이 글은 『기초 C언어』 239p~241p의 내용을 강의 영상에 맞춰 핵심만 간추린 요약입니다. 각 개념의 상세한 설명과 예제, 실습 코드, 임용시험 기출문제 풀이는 교재에서 다루고 있습니다.

댓글

이 블로그의 인기 게시물

2007년 국가직 9급 기계일반 기출문제 풀이

기계공작법 연습문제 130문 | 임용 기출 영상·교재 쪽수 바로가기