포인터와 동적 배열
Coddy C++ 여정의 로직과 흐름 섹션에 포함된 레슨 — 56개 중 56번째.
챌린지
쉬움유연한 숫자 저장 및 처리 시스템을 구축하여 동적 메모리 관리를 시연하는 프로그램을 작성하세요. 이 챌린지는 동적 배열, 메모리 할당, 배열 조작 및 적절한 메모리 해제에 대한 이해도를 테스트합니다.
다음과 같은 입력이 제공됩니다:
- 저장할 정수의 개수를 나타내는 정수
size - 동적 배열에 저장될
size개의 정수들
프로그램은 다음을 수행해야 합니다:
- 입력에서 크기를 읽습니다.
- 지정된 크기로
new[]를 사용하여 정수 배열을 동적으로 할당합니다. - 입력에서 정수들을 읽어 동적으로 할당된 배열에 저장합니다.
- 배열에 있는 모든 숫자의 합계를 계산합니다.
- 배열에서 최댓값을 찾습니다.
- 지정된 형식으로 결과를 출력합니다.
delete[]를 사용하여 메모리를 적절하게 해제합니다.
다음과 같은 정확한 출력 형식을 사용하세요:
Array size: [size]
Sum: [sum_of_all_numbers]
Maximum: [maximum_value]동적 메모리 할당을 사용하면 사용자 입력에 따라 런타임에 크기가 결정되는 배열을 생성할 수 있다는 점을 기억하세요. new int[size]를 사용하여 배열을 할당하고, 배열 표기법 array[index]를 사용하여 요소에 접근합니다. 배열 사용을 마친 후에는 반드시 delete[] array를 호출하여 할당된 메모리를 해제하고 메모리 누수를 방지해야 합니다. 배열은 힙(heap)에 존재하며 명시적으로 해제할 때까지 유지됩니다.
직접 해보기
#include <iostream>
using namespace std;
int main() {
// 배열의 크기를 읽습니다
int size;
cin >> size;
// TODO: 여기에 코드를 작성하세요
// 1. new[]를 사용하여 배열을 동적으로 할당하세요
// 2. 정수들을 읽어서 배열에 저장하세요
// 3. 모든 숫자의 합계를 계산하세요
// 4. 최댓값을 찾으세요
// 5. delete[]를 사용하여 메모리 할당을 해제하는 것을 잊지 마세요
// 결과 출력 (실제 변수로 대체하세요)
cout << "Array size: " << size << endl;
cout << "Sum: " << /* 합계 변수 */ << endl;
cout << "Maximum: " << /* 최댓값 변수 */ << endl;
return 0;
}