Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C/C++ 배열 완벽 가이드: 선언, 초기화, 요소 접근까지 한눈에

배열(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를 이용해 배열의 각 요소에 순서대로 접근하면서 입력을 받고, 동시에 합계를 누적하는 방식입니다. 배열과 반복문은 실질적으로 항상 함께 사용되므로, 이 예제의 구조를 잘 익혀 두면 앞으로 배열을 다루는 데 큰 도움이 됩니다.