배열의 선언과 초기화 — 자료형·배열 이름·크기, 0부터 시작하는 인덱스와 부분 초기화 | 기초 C언어 8.1.1

기초 C언어Chapter 08 배열 › Section 01 1차원 배열

8.1.1 배열의 선언과 초기화

같은 자료형의 값 여러 개를 하나의 이름으로 묶는 배열. 선언 형식과 0부터 시작하는 인덱스, 중괄호 초기화의 세 가지 방식을 비교.

교재 수록 위치
교재
『기초 C언어』 · 이은상 · 부크크 · 364쪽
단원
Chapter 08 배열 › Section 01 1차원 배열 › 배열의 선언과 초기화
쪽수
228p ~ 231p4쪽
세부 내용
배열이란? · 배열 선언하기 · 0부터 시작하는 인덱스 · 배열 초기화 · 배열 크기 자동 계산 · 부분 초기화와 0으로 초기화 · CODE 8.1
학습 목표
배열의 선언 형식과 인덱스 규칙을 이해하고, 세 가지 초기화 방식의 결과를 구분함
영상 목차 · 원하는 부분부터 보기
  1. 0:00 · 강의 소개와 배열의 개념
  2. 1:58 · 배열 선언과 인덱스
  3. 4:40 · 초기화·크기 생략·부분 초기화
  4. 7:52 · 배열의 점수 출력 예제
  5. 10:29 · 핵심 정리

01변수 서른 개 대신 이름 하나교재 228p

  • 앞 장 끝에서 반복문은 배열을 처리하는 데 이어서 쓰인다고 예고. 4.3.3에서 이름을 받으려고 선언한 char name[10];도 문자를 나란히 늘어놓은 배열.
  • 지금까지의 변수는 하나에 값 하나만 저장. 학생 30명의 점수를 score1부터 score30까지 따로 만드는 방식은 매우 비효율적.
  • 배열(Array) — 동일한 자료형의 데이터 여러 개를 하나의 이름으로 묶어 관리하는 자료구조.

02자료형 배열이름[크기];교재 229p

구성의미
자료형각 칸에 저장될 데이터의 종류(int, double 등)
배열 이름배열 전체를 가리키는 이름
[크기]배열을 총 몇 칸으로 만들지 나타내는 요소의 개수
  • int scores[5]; — int형 데이터를 저장할 공간 5개를 연속적으로 할당하고, 그 묶음 전체에 scores라는 이름을 붙이라는 의미.
  • 칸 하나하나에는 이름이 따로 없음. 대신 각 칸을 번호로 구별하는 구조.

030부터 시작하는 인덱스교재 229p

  • 인덱스(Index) — 배열의 각 칸에 접근하기 위해 사용하는 고유한 번호. C언어에서는 항상 0부터 시작.
  • 크기가 5인 scores의 칸은 scores[0]부터 scores[4]까지. 마지막 칸의 번호는 크기보다 1 작은 4.
  • 인덱스는 첫 칸에서 몇 칸 떨어져 있는지를 세는 수. 첫 칸은 0칸 떨어진 자리라서 번호가 0.

scores[5]는 존재하지 않는 칸

존재하지 않는 인덱스로 접근하면 프로그램에 심각한 오류가 발생할 수 있음. C언어는 이런 접근을 미리 막아 주지 않으므로 각별히 주의. 4.3.3에서 %s가 배열의 크기를 따지지 않았던 것과 같은 맥락.

04중괄호로 초기값 지정교재 230p

  • 배열 초기화 — 선언하는 동시에 중괄호 { }를 사용하여 각 칸의 초기값을 지정하는 것. 형식은 자료형 배열이름[크기] = {값1, 값2, 값3, ...};
  • int scores[5] = {90, 85, 100, 77, 92};이면 scores[0]에 90, scores[1]에 85, 마지막 scores[4]에 92를 저장.
  • 다섯 칸은 메모리에 연속으로 붙어 있는 구조. 값은 중괄호 안에 적은 순서대로 인덱스 0의 칸부터 채워짐.

중괄호 목록은 선언하는 줄에서만

중괄호 목록으로 값을 한꺼번에 넣는 방법은 선언과 동시에 쓸 때만 가능. 선언이 끝난 뒤에 배열 전체에 중괄호 목록을 대입하는 것은 불가.

05크기 생략과 부분 초기화교재 230~231p

선언결과
int scores[] = {90, 85, 100, 77, 92};컴파일러가 값의 개수를 세어 크기를 5로 결정
int scores[5] = {90, 85};{90, 85, 0, 0, 0} — 나머지 요소는 0
  • 배열 크기 자동 계산 — 초기화 목록을 제공하는 경우에만 대괄호 안의 크기를 생략 가능. 값을 하나 더 적으면 크기도 6이 되므로 크기와 값 개수가 어긋날 걱정이 없음.
  • 부분 초기화 — 크기보다 적은 수의 초기값을 주면 값을 지정하지 않은 나머지 요소는 모두 자동으로 0. 중괄호 안에 0 하나만 적으면 배열 전체를 0으로 채우기 가능.
  • 반대로 함수 안에서 선언한 배열에 중괄호 목록을 아예 쓰지 않으면, 4.2.1에서 본 쓰레기 값이 칸마다 남을 수 있음.

06CODE 8.1의 결과와 다음 편교재 231p

  • CODE 8.1 — 크기를 생략해 다섯 점수로 초기화한 scores에서 인덱스 0·2·4의 값을 골라 출력하는 예제.
  • 실행 결과는 1번 학생 점수: 90 / 3번 학생 점수: 100 / 5번 학생 점수: 92 세 줄. 학생 번호에서 1을 뺀 수가 인덱스. 상세 코드는 교재 CODE 8.1에서 확인.
  • 이번 편은 배열을 만들고 채우는 데까지. 칸 하나를 골라 읽고 바꾸는 법은 다음 편 8.1.2 배열 요소의 접근에서 다룸.

이 절의 핵심 정리

  1. 배열은 동일한 자료형의 데이터 여러 개를 하나의 이름으로 묶어 관리하는 자료구조이다.
  2. 배열은 자료형, 배열 이름, 대괄호 안의 크기로 선언하며 크기는 요소의 개수를 뜻한다.
  3. 배열의 인덱스는 항상 0부터 시작하므로 크기가 5인 배열의 마지막 인덱스는 4이다.
  4. 초기화 목록을 제공하면 대괄호 안의 크기를 생략할 수 있고 컴파일러가 값의 개수로 크기를 정한다.
  5. 크기보다 적은 수의 초기값을 주면 값을 지정하지 않은 나머지 요소는 0으로 초기화된다.
강의 자료8.1.1 배열의 선언과 초기화 1 / 12

번호를 누르면 해당 장으로 바로 이동합니다 · 방향키 ← → 로도 넘길 수 있습니다
다음 절 · 8.1.2 배열 요소의 접근 교재 232p~233p — 배열이름[인덱스]로 배열의 한 칸을 골라 읽고 바꾸는 방법 ↗

더 자세한 내용은 교재에서

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

댓글

이 블로그의 인기 게시물

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

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