배열(array)은 같은 타입의 요소들이 순차적으로 나열된 자료 구조입니다. 배열은 여러 개의 데이터를 하나의 이름으로 저장하는 데 사용되지만, 실무에서는 '같은 타입 변수들의 모음'으로 이해하는 것이 훨씬 유용합니다.
예를 들어 number0, number1, ..., number99처럼 변수를 일일이 선언하는 대신, numbers라는 배열 하나만 선언한 뒤 numbers[0], numbers[1], ..., numbers[99] 형태로 각 값을 다룰 수 있습니다. 배열의 특정 요소는 인덱스(index)를 통해 접근합니다.
또한 모든 배열은 메모리상에 연속된 공간에 할당됩니다. 가장 낮은 주소가 첫 번째 요소에 해당하고, 가장 높은 주소가 마지막 요소에 해당한다는 점도 기억해 두면 좋습니다.
배열 선언하기
배열을 선언하려면 요소의 타입(type)과 배열의 크기(arraySize)를 아래 형식으로 지정합니다.
type arrayName [ arraySize ];
크기를 지정한 배열 선언
이러한 형태를 1차원 배열(single-dimension array)이라고 부릅니다. arraySize는 반드시 0보다 큰 정수 상수여야 하며, type에는 유효한 C++ 데이터 타입이면 무엇이든 사용할 수 있습니다. 예를 들어 double 타입의 요소 10개를 담는 balance라는 배열을 선언하려면 다음과 같이 작성합니다.
double balance[10];
배열 요소란? 그리고 접근 방법
배열에 저장된 개별 데이터를 요소(element)라고 합니다. 각 요소는 인덱스를 사용해 접근할 수 있으며, 인덱스는 0부터 시작합니다.
예를 들어 mark라는 배열을 선언했다면, 첫 번째 요소는 mark[0], 두 번째 요소는 mark[1], 세 번째 요소는 mark[2]와 같은 식으로 접근합니다. 즉, n번째 요소에 접근하려면 인덱스 n-1을 사용해야 합니다.
C++에서 배열 초기화하는 방법
1) 크기를 지정하고 요소를 함께 초기화
int mark[5] = {19, 10, 8, 17, 9};2) 크기를 생략하고 초기화 값으로 배열 선언
int mark[] = {19, 10, 8, 17, 9};두 경우 모두 컴파일러가 초기화 값의 개수를 바탕으로 배열 크기를 결정하므로 결과는 동일합니다. 초기화 후 각 요소의 값은 다음과 같습니다.
mark[0] = 19
mark[1] = 10
mark[2] = 8
mark[3] = 17
mark[4] = 9
배열 요소 삽입하고 출력하기
인덱스를 이용하면 특정 위치의 값을 읽거나 새로운 값을 대입할 수 있습니다.
int mark[5] = {19, 10, 8, 17, 9}
// 네 번째 요소를 9로 변경
mark[3] = 9;
// 사용자 입력을 받아 세 번째 요소에 저장
cin >> mark[2];
// 사용자 입력을 받아 (i+1)번째 요소에 저장
cin >> mark[i];
// 배열의 첫 번째 요소 출력
cout << mark[0];
// i번째 요소 출력
cout << mark[i-1];주의: 배열 범위를 벗어난 인덱스(예: mark[5])에 접근하면 정의되지 않은 동작(undefined behavior)이 발생할 수 있습니다. C++는 배열 경계를 자동으로 검사하지 않으므로 항상 유효한 인덱스 범위(0 ~ 크기-1) 내에서 접근해야 합니다.
예제: 사용자 입력 5개 숫자의 합 구하기
다음은 배열을 사용해 사용자가 입력한 5개의 숫자를 저장하고, 그 합계를 계산하는 C++ 프로그램입니다.
입력
Enter 5 numbers:
3
4
5
4
2
출력
Sum = 18
전체 소스 코드
#include <iostream>
using namespace std;
int main() {
int numbers[5], sum = 0;
cout << "Enter 5 numbers: ";
for (int i = 0; i < 5; ++i) {
cin >> numbers[i];
sum += numbers[i];
}
cout << "Sum = " << sum << endl;
return 0;
}
이 프로그램은 for 반복문과 함께 배열을 활용하는 대표적인 패턴을 보여줍니다. 반복문의 인덱스 변수 i를 이용해 배열의 각 요소에 순서대로 접근하면서 입력을 받고, 동시에 합계를 누적하는 방식입니다. 배열과 반복문은 실질적으로 항상 함께 사용되므로, 이 예제의 구조를 잘 익혀 두면 앞으로 배열을 다루는 데 큰 도움이 됩니다.