64. C++ 정적 배열 (int arr[10]
)
1. 개요
1.1 문서 개요
이 문서는 C++에서 사용되는 정적 배열(static array), 특히 int arr[10]
과 같은 형태의 배열 선언과 관련된 개념을 정리합니다. 정적 배열은 메모리 크기가 고정되어 있으며, 컴파일 타임에 배열의 크기와 자료형이 결정됩니다. 이는 메모리 효율성과 성능을 고려한 저수준 프로그래밍에서 기본적인 자료구조로 사용됩니다.
2. 내용
2.1 정적 배열의 정의와 특징
정적 배열은 배열의 크기와 타입이 컴파일 시점에 정해지는 배열 구조입니다. C++에서 정적 배열은 다음과 같은 형식으로 선언합니다:
int arr[10];
이 선언은 정수형 요소 10개를 가지는 배열을 생성하며, 배열은 스택(stack) 메모리 영역에 할당됩니다.
2.1.1 정적 배열의 메모리 구조
정적 배열은 연속된 메모리 블록에 각 요소가 차례대로 저장됩니다. 예를 들어 int arr[4]
는 다음과 같이 메모리에 배치됩니다:
Index | 주소 (예시) | 값 |
---|---|---|
0 | 0x1000 | ? |
1 | 0x1004 | ? |
2 | 0x1008 | ? |
3 | 0x100C | ? |
2.2 초기화와 접근
배열은 선언과 동시에 초기화할 수 있으며, 각 요소는 인덱스를 통해 접근합니다.
2.2.1 선언과 초기화 예시
int arr[5] = {1, 2, 3, 4, 5};
초기화 값이 지정되지 않으면, 나머지 요소는 0으로 자동 초기화됩니다(전역 변수일 경우). 지역 변수의 경우에는 초기화되지 않은 상태로 남을 수 있습니다.
2.2.2 배열 요소 접근
arr[0] = 10;
int x = arr[2];
배열 인덱스는 0부터 시작하며, arr[10]
은 존재하지 않는 인덱스로 접근 시 런타임 오류를 유발할 수 있습니다.
2.3 범위 기반 for문과 정적 배열
C++11부터는 범위 기반 for문을 사용하여 배열의 모든 요소를 순회할 수 있습니다.
int arr[3] = {10, 20, 30};
for (int value : arr) {
std::cout << value << std::endl;
}
이 방식은 배열 순회를 간결하게 표현할 수 있습니다.
3. 마무리
C++ 정적 배열은 컴파일 시점에 메모리 구조가 고정되며, 배열 요소는 연속된 메모리에 저장됩니다. 기본적인 초기화 방식, 요소 접근, 범위 기반 반복 사용 등 정적 배열은 배열 연산의 기반이 되는 핵심 개념입니다.