본문 바로가기
C++/기본

[C++] 9. 배열

by 위니밍 2025. 3. 29.
반응형
📌 요약: 배열 선언 | 인덱스 | 고정 배열 vs 동적 배열 | 다차원 배열 | 반복 활용 | 배열 길이 | 주의사항

📦 배열 (Array)

배열은 같은 자료형의 데이터를 연속된 메모리 공간에 저장하는 구조입니다.
각 개별 데이터를 요소(element)라고 하며, 인덱스를 통해 접근합니다.

✅ 배열 선언 및 초기화
const int count = 5;

int array[count];                      // 길이 5인 int 배열 선언
int numbers[3] = { 1, 3, 5 };          // 초기화 [0:1 | 1:3 | 2:5]
int ints[] = { 5, 7, 9, 8 };           // 길이 자동 계산됨 (4개)
🔍 인덱스(Index)

배열 요소에 접근할 때는 [] 하위 연산자를 사용하며, 인덱스는 0부터 시작합니다.

cout << "numbers[0] : " << numbers[0] << endl;  // 1
cout << "numbers[2] : " << numbers[2] << endl;  // 5
📏 배열의 길이 구하기
int length = sizeof(numbers) / sizeof(numbers[0]);
cout << "배열의 길이 : " << length << endl;
📎 고정 배열과 동적 배열

배열은 컴파일 시 크기가 고정되지만, 동적할당을 통해 런타임 시 크기를 지정할 수도 있습니다.

// 고정 배열
int array1[5];
const int LENGTH = 5;
int array2[LENGTH];

//int temp = 3;
//int array3[temp];  // ❌ 사용 불가

// 동적 배열
int size = 10;
int* array3 = new int[size];

// 메모리 해제
delete[] array3;
⚠️ 배열 사용 시 주의사항

배열 인덱스는 범위를 초과하면 프로그램 오류나 메모리 손상을 유발할 수 있습니다.

array[-1] = 20;  // ❌ 위험
array[6] = 10;   // ❌ 배열 크기 초과
🧮 다차원 배열

배열의 요소로 배열을 포함하면 2차원 이상 배열이 됩니다.

// 2차원 배열
int matrix[3][4]; 

/*
[0][0] [0][1] [0][2] [0][3]
[1][0] [1][1] [1][2] [1][3]
[2][0] [2][1] [2][2] [2][3]
*/

int table[3][2] = {
    {0,1},
    {2,3},
    {4,5}
};

// 3차원 배열
int cube[2][3][4]; // 총 2*3*4 = 24개
🔁 배열과 반복문

배열 인덱스를 반복문으로 활용하면 모든 요소를 효율적으로 순회할 수 있습니다.

int scores[] = { 84, 92, 76, 81, 56 };
int length = sizeof(scores) / sizeof(scores[0]);
int sum = 0;

for (int i = 0; i < length; i++) {
    sum += scores[i];
    cout << i << "번째 스코어 : " << scores[i] << endl;
}

cout << "total score : " << sum << endl;
🖨️ 2차원 배열 출력 예제
const int rows = 3;
const int cols = 4;

int array[rows][cols] = {
    {1,2,3,4},
    {5,6,7,8},
    {9,10,11,12}
};

for (int i = 0; i < rows; i++) {
    for (int j = 0; j < cols; j++) {
        cout << array[i][j] << " ";
    }
    cout << endl;
}
반응형

'C++ > 기본' 카테고리의 다른 글

[C++] 11. 구조체(2)  (0) 2025.03.29
[C++] 10. 구조체(1)  (0) 2025.03.29
[C++] 8. 메모리 속성  (0) 2025.03.29
[C++] 7. 메모리  (0) 2025.03.29
[C++] 6. 포인터  (0) 2025.03.29