본문 바로가기
카테고리 없음

[C++] C++ 배열

by codingbird1234 2024. 10. 2.
#include <iostream>

int main() {
    int numbers[5] = {1, 2, 3, 4, 5};
    int sum = 0;
    
    // 배열의 모든 요소의 합 계산
    for (int i = 0; i < 5; i++) {
        sum += numbers[i];
    }
    
    std::cout << "Sum of elements: " << sum << std::endl;
    
    return 0;
}

이번 시간에는 C++에서의 배열을 알아보겠습니다.

 

배열(Array)같은 자료형의 데이터를 연속된 메모리 공간에 저장하는 자료 구조입니다.

여러 데이터를 한 번에 처리할 수 있는 효율적인 방법입니다.

C++에서 배열은 고정된 크기를 가지고 있으며, 각 요소는 인덱스를 통해 접근할 수 있습니다.

배열은 프로그램에서 여러 값을 저장하고 처리할 때 매우 유용하며, 반복문과 함께 사용하기에 좋습니다.

 

1. 배열의 선언과 초기화

(1) 배열의 선언

배열을 선언할 때는 배열에 저장할 데이터의 자료형과 배열의 이름, 배열의 크기를 지정해야 합니다.

배열의 크기는 고정되어 있으며, 선언 시에 반드시 정해져야 합니다.

자료형 배열이름[배열크기];

 

실제 코드 예시는 아래와 같습니다.

int numbers[5];  // 5개의 정수형 요소를 담을 수 있는 배열 선언

 

 

(2) 배열의 초기화

배열을 선언함과 동시에 초기화할 수 있습니다. 초기화는 중괄호 {} 안에 값을 나열하는 방식으로 이루어집니다.

아래는 예시입니다.

int numbers[5] = {1, 2, 3, 4, 5};  // 배열 선언과 동시에 초기화

 

 

(3) 크기를 명시하지 않는 초기화

배열을 선언할 때 크기를 명시하지 않고 초기화할 수도 있습니다.

이 경우 컴파일러는 초기화 목록의 크기에 맞춰 배열의 크기를 자동으로 설정합니다.

아래는 예시입니다.

int numbers[] = {1, 2, 3, 4, 5};  // 배열의 크기는 5로 자동 설정

 

 

 

2. 배열 요소 접근과 사용

배열의 각 요소는 인덱스를 사용하여 접근할 수 있습니다.

배열의 첫 번째 요소는 인덱스 0에서 시작하며, 마지막 요소는 배열 크기보다 1 작은 인덱스를 가집니다.

 

#include <iostream>

int main() {
    int numbers[5] = {1, 2, 3, 4, 5};
    
    // 배열의 요소에 접근하여 출력
    std::cout << "First element: " << numbers[0] << std::endl;  // 인덱스 0: 첫 번째 요소
    std::cout << "Last element: " << numbers[4] << std::endl;   // 인덱스 4: 마지막 요소
    
    return 0;
}

 

위 코드에서 numbers[0]는 첫 번째 요소인 1을 출력하고, numbers[4]는 마지막 요소인 5를 출력합니다.

 

 

(1) 배열 요소 수정

배열의 요소는 인덱스를 통해 값을 변경할 수 있습니다.

#include <iostream>

int main() {
    int numbers[5] = {1, 2, 3, 4, 5};
    
    numbers[2] = 10;  // 세 번째 요소 값을 10으로 변경
    
    std::cout << "Updated third element: " << numbers[2] << std::endl;
    
    return 0;
}

 

위 코드에서 배열의 세 번째 요소를 10으로 변경한 후, 그 값을 출력합니다.

 

 

3. 배열과 반복문

배열은 반복문과 결합하여 처리할 때 매우 유용합니다.

배열의 각 요소에 반복적으로 접근하거나 수정할 수 있습니다.

가장 일반적으로 for문을 사용하여 배열의 모든 요소를 처리합니다.

 

(1) 배열의 모든 요소 출력하기

#include <iostream>

int main() {
    int numbers[5] = {1, 2, 3, 4, 5};
    
    // 배열의 모든 요소를 출력
    for (int i = 0; i < 5; i++) {
        std::cout << "Element at index " << i << ": " << numbers[i] << std::endl;
    }
    
    return 0;
}

 

 

(2) 배열 요소의 합 구하기

#include <iostream>

int main() {
    int numbers[5] = {1, 2, 3, 4, 5};
    int sum = 0;
    
    // 배열의 모든 요소의 합 계산
    for (int i = 0; i < 5; ++i) {
        sum += numbers[i];
    }
    
    std::cout << "Sum of elements: " << sum << std::endl;
    
    return 0;
}

 

 

 

4. 2차원 배열

C++에서는 2차원 배열을 사용하여 행과 열로 데이터를 관리할 수 있습니다.

2차원 배열은 주로 행렬이나 테이블과 같은 데이터를 표현할 때 사용됩니다.

 

(1) 2차원 배열 선언과 초기화

int matrix[3][3] = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

 

(2) 2차원 배열 요소 접근

#include <iostream>

int main() {
    int matrix[3][3] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };
    
    // 2차원 배열의 요소에 접근하여 출력
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            std::cout << "Element at (" << i << ", " << j << "): " << matrix[i][j] << std::endl;
        }
    }
    
    return 0;
}

 

 

 

5. 배열의 한계와 주의점

배열을 사용할 때 몇 가지 한계를 이해하는 것이 중요합니다.

  • 고정된 크기: 배열의 크기는 선언 시에 고정되며, 실행 중에는 크기를 변경할 수 없습니다. 크기가 동적으로 변해야 하는 경우 동적 메모리 할당을 고려해야 합니다.
  • 배열 범위 초과: 배열의 인덱스를 사용할 때, 배열의 크기를 초과하여 접근하면 정의되지 않은 동작이 발생합니다. 항상 배열의 크기를 고려하여 올바른 인덱스로 접근해야 합니다.
int numbers[5] = {1, 2, 3, 4, 5};
std::cout << numbers[5];  // 잘못된 접근, 인덱스 범위 초과

 

 

 

 

 

결론

배열은 C++에서 동일한 자료형의 데이터를 효율적으로 관리할 수 있는 중요한 자료 구조입니다.

배열은 선언, 초기화, 인덱스를 통한 접근이 가능하며, 반복문과 결합하여 효율적으로 데이터를 처리할 수 있습니다.

또한 2차원 배열을 사용하면 행과 열 구조로 데이터를 관리할 수 있습니다.

 

하지만 배열은 크기가 고정되어 있고, 범위 초과 문제를 주의해야 합니다.

배열의 한계를 극복하기 위해 동적 메모리 할당표준 라이브러리 컨테이너(std::vector) 등의 활용을 배워나가면 더욱 유연한 프로그램을 작성할 수 있습니다.