배열의 선언과 초기화 — 자료형·배열 이름·크기, 0부터 시작하는 인덱스와 부분 초기화 | 기초 C언어 8.1.1
기초 C언어Chapter 08 배열 › Section 01 1차원 배열
8.1.1 배열의 선언과 초기화
같은 자료형의 값 여러 개를 하나의 이름으로 묶는 배열. 선언 형식과 0부터 시작하는 인덱스, 중괄호 초기화의 세 가지 방식을 비교.
영상 목차 · 원하는 부분부터 보기
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 배열 요소의 접근에서 다룸.
이 절의 핵심 정리
- 배열은 동일한 자료형의 데이터 여러 개를 하나의 이름으로 묶어 관리하는 자료구조이다.
- 배열은 자료형, 배열 이름, 대괄호 안의 크기로 선언하며 크기는 요소의 개수를 뜻한다.
- 배열의 인덱스는 항상 0부터 시작하므로 크기가 5인 배열의 마지막 인덱스는 4이다.
- 초기화 목록을 제공하면 대괄호 안의 크기를 생략할 수 있고 컴파일러가 값의 개수로 크기를 정한다.
- 크기보다 적은 수의 초기값을 주면 값을 지정하지 않은 나머지 요소는 0으로 초기화된다.
강의 자료8.1.1 배열의 선언과 초기화
1 / 12
번호를 누르면 해당 장으로 바로 이동합니다 · 방향키 ← → 로도 넘길 수 있습니다

댓글
댓글 쓰기