C++ 배열의 선언, 초기화, 요소 접근, 조작 방법을 실전 코드 예제로 상세히 다룹니다.
C++에서 배열은 **같은 타입의 요소들을 고정 크기로 저장하는 단일 변수**입니다. 예: 27명 학생의 성적을 한 배열에 저장:
double grade[27];
grade는 최대 27개 double 값을 담습니다. 배열 선언 후 크기와 요소 타입은 변경 불가.
C++ 배열 선언
dataType arrayName[arraySize];
예:
int x[6];
해설:
int – 요소 타입
x – 배열 이름
6 – 요소 개수
C++ 배열 요소 접근
각 요소는 0부터 시작하는 **인덱스**로 식별됩니다. 접근/수정 문법:
// 배열 요소 접근 문법
array[index];
위 x 배열 예:
핵심 포인트
인덱스는 0부터 시작 (x[0]이 첫 요소)
크기 n 배열의 마지막 인덱스는 n-1 (여기선 x[5])
배열 요소는 연속된 메모리 주소에 저장. int가 4바이트라면 x[0]이 2120d면 x[1]은 2124d, x[2]는 2128d...
C++ 배열 초기화
선언과 동시에 초기화 가능:
// 선언과 초기화 동시
int x[6] = {19, 10, 8, 17, 9, 15};
크기를 생략하면 컴파일러가 유추:
int x[] = {19, 10, 8, 17, 9, 15};
제공된 요소 수가 배열 크기보다 적으면 나머지는 C++에서 0으로 초기화됩니다.
배열 요소 삽입 및 출력
int mark[5] = {19, 10, 8, 17, 9};
// 4번째 요소 변경
mark[3] = 9;
// 사용자 입력받아 3번째 위치 저장
cin >> mark[2];
// i번째 위치에 입력 저장
cin >> mark[i-1];
// 첫 요소 출력
cout << mark[0];
// i번째 요소 출력
cout >> mark[i-1];
예제 1: 배열 요소 출력
#include <iostream>
using namespace std;
int main() {
int numbers[5] = {7, 5, 6, 12, 35};
cout << "The numbers are: ";
// 범위 기반 for 루프로 출력
for (const int &n : numbers) {
cout << n << " ";
}
cout << "\nThe numbers are: ";
// 전통적 for 루프로 출력
for (int i = 0; i < 5; ++i) {
cout << numbers[i] << " ";
}
return 0;
}
실행 결과
The numbers are: 7 5 6 12 35
The numbers are: 7 5 6 12 35
두 루프 모두 같은 결과. 범위 기반 루프는 읽기 전용일 때 선호되며 불필요한 복사 방지.
참고:const int &n은 참조 전달로 복사 방지, 실수 수정 방지해 int n보다 효율적.
예제 2: 사용자 입력을 배열에 저장
#include <iostream>
using namespace std;
int main() {
int numbers[5];
cout << "Enter 5 numbers: " << endl;
// 사용자 입력을 배열에 저장
for (int i = 0; i < 5; ++i) {
cin >> numbers[i];
}
cout << "The numbers are: ";
// 배열 요소 출력
for (int n = 0; n < 5; ++n) {
cout << numbers[n] << " ";
}
return 0;
}
실행 결과
Enter 5 numbers: 11 12 13 14 15
The numbers are: 11 12 13 14 15
예제 3: 배열 요소의 합과 평균
#include <iostream>
using namespace std;
int main() {
double numbers[] = {7, 5, 6, 12, 35, 27};
double sum = 0;
double count = 0;
double average;
cout << "The numbers are: ";
// 범위 기반 루프로 순회하며 합계 계산
for (const double &n : numbers) {
cout << n << " ";
sum += n;
++count;
}
cout << "\nTheir Sum = " << sum << endl;
average = sum / count;
cout << "Their Average = " << average << endl;
return 0;
}
실행 결과
The numbers are: 7 5 6 12 35 27
Their Sum = 92
Their Average = 15.3333
컴파일 타임에 크기를 모를 때 범위 기반 루프가 순회를 어떻게 단순화하는지 보여줍니다.
C++ 배열 경계 밖 접근
크기 10 배열의 유효 인덱스는 0~9입니다. 10 이상 접근 시 **미정의 행동(Undefined Behavior)** 발생, 크래시나 데이터 손상 유발 가능.