> 백엔드 개발 > C++ > 동적 배열과 고정 배열의 비교

동적 배열과 고정 배열의 비교

WBOY
풀어 주다: 2024-02-19 10:59:06
원래의
1011명이 탐색했습니다.

동적 배열과 고정 배열의 비교

동적 배열과 정적 배열은 프로그램에서 일반적으로 사용되는 두 가지 다른 유형의 배열입니다. 메모리 관리, 크기 및 사용 유연성 면에서 분명한 차이가 있습니다.

정적 배열은 컴파일 타임에 메모리 공간을 정의하고 할당하는 배열입니다. 크기는 컴파일 타임에 결정되며 수정할 수 없습니다. 정적 배열의 크기는 일반적으로 선언할 때 지정됩니다(예: int arr[10]). 정적 배열을 사용할 때 컴파일러는 고정된 크기의 메모리 공간을 할당하므로 런타임 시 크기가 수정되지 않습니다. 이는 정적 배열의 크기를 동적으로 늘리거나 줄일 수 없음을 의미합니다.

동적 배열은 런타임에 생성되고 소멸되는 배열이며 필요에 따라 크기를 조정할 수 있습니다. 동적 배열의 크기는 컴파일 타임에 결정되지 않지만 런타임에 필요에 따라 메모리 공간이 할당되고 해제됩니다. 동적 배열의 크기는 malloc() 및 realloc()과 같은 특정 함수를 사용하여 동적으로 조정할 수 있습니다. 동적 배열을 사용하면 실제 필요에 따라 배열 크기를 동적으로 조정할 수 있습니다.

다음은 동적 배열과 정적 배열의 차이점을 설명하는 특정 코드 예제입니다.

정적 배열 예제:

#include <iostream>

int main() {
    int arr[5]; // 静态数组声明
    
    for(int i = 0; i < 5; i++) {
        arr[i] = i; // 为静态数组赋值
    }
    
    for(int i = 0; i < 5; i++) {
        std::cout << arr[i] << " "; // 输出静态数组的元素
    }
    
    return 0;
}
로그인 후 복사

여기서 크기 5의 정적 배열 arr이 선언되고 값이 할당됩니다. 정적 배열의 크기는 컴파일 타임에 결정되며 런타임에 수정할 수 없습니다.

동적 배열 예:

#include <iostream>
#include <cstdlib>

int main() {
    int size;
    std::cout << "请输入动态数组的大小:";
    std::cin >> size;
    
    int* arr = (int*) malloc(size * sizeof(int)); // 动态数组的创建
    
    for(int i = 0; i < size; i++) {
        arr[i] = i; // 为动态数组赋值
    }
    
    for(int i = 0; i < size; i++) {
        std::cout << arr[i] << " "; // 输出动态数组的元素
    }
    
    free(arr); // 动态数组的销毁
    
    return 0;
}
로그인 후 복사

여기서는 사용자 입력을 통해 동적 배열의 크기를 구한 후, malloc() 함수를 사용하여 size arr 크기의 int형 동적 배열을 동적으로 생성합니다. 동적 배열의 크기는 입력에 따라 조정될 수 있습니다. 마지막으로 free() 함수를 사용하여 동적 배열이 차지하는 메모리 공간을 해제합니다.

위의 예에서 볼 수 있듯이 동적 배열과 정적 배열의 차이점은 크기를 결정하는 방식과 메모리를 관리하는 방식에 있습니다. 정적 배열의 크기는 컴파일 타임에 결정되며 수정할 수 없는 반면, 동적 배열의 크기는 런타임에 필요에 따라 조정될 수 있습니다. 동적 배열을 생성하고 삭제하려면 메모리 관리를 위한 특정 함수를 사용해야 하는 반면, 정적 배열의 메모리 관리는 컴파일러에 의해 자동으로 처리됩니다. 따라서 실제 응용에서는 특정 요구 사항에 따라 정적 배열을 사용할지 동적 배열을 사용할지 선택해야 합니다.

위 내용은 동적 배열과 고정 배열의 비교의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿