C 언어
동적 배열은 일반 배열과 매우 유사하지만 프로그램 런타임 중에 크기를 수정할 수 있습니다. DynamArray 요소는 연속적인 메모리 블록을 차지합니다.
배열이 생성되면 크기를 변경할 수 없습니다. 그러나 동적 배열은 다릅니다. 동적 배열은 채워진 후에도 크기를 확장할 수 있습니다.
어레이를 생성하는 동안 미리 정해진 양의 메모리가 할당됩니다. 동적 배열은 필요할 때 특정 요소만큼 메모리 크기를 늘리기 때문에 그렇지 않습니다.
이 C++ 튜토리얼에서 배우게 될 것입니다.
어레이의 초기 크기와 성장 요인에 따라 성능이 결정됩니다. 다음 사항에 유의하십시오.
C++에서는 new 키워드를 사용하여 동적 배열을 만들 수 있습니다. 할당할 항목의 수는 한 쌍의 대괄호 안에 지정됩니다. 유형 이름이 이 앞에 와야 합니다. 요청한 항목 수만큼 할당됩니다.
새 키워드는 다음 구문을 사용합니다.
pointer_variable = new data_type;
pointer_variable은 포인터 변수의 이름입니다.
data_type은 유효한 C++ 데이터 유형이어야 합니다.
그런 다음 키워드는 첫 번째 항목에 대한 포인터를 반환합니다. 동적 배열을 생성한 후 delete 키워드를 사용하여 삭제할 수 있습니다.
#include<iostream> using namespace std; int main() { int x, n; cout << "Enter the number of items:" << "\n"; cin >>n; int *arr = new int(n); cout << "Enter " << n << " items" << endl; for (x = 0; x < n; x++) { cin >> arr[x]; } cout << "You entered: "; for (x = 0; x < n; x++) { cout << arr[x] << " "; } return 0; }
출력:
다음은 코드의 스크린샷입니다.
코드 설명:
참고:위의 예에서 사용자는 런타임 중에 어레이의 크기를 지정할 수 있습니다. 이는 배열의 크기가 런타임 중에 결정됨을 의미합니다. .
동적 배열을 0으로 초기화하는 것은 쉽습니다.
구문:
int *array{ new int[length]{} };
위의 구문에서 길이는 배열에 추가할 요소의 수를 나타냅니다. 배열을 0으로 초기화해야 하므로 비워 두어야 합니다.
초기화 목록을 사용하여 동적 배열을 초기화할 수 있습니다. 이를 보여주는 예를 만들어 보겠습니다.
#include <iostream> using namespace std; int main(void) { int x; int *array{ new int[5]{ 10, 7, 15, 3, 11 } }; cout << "Array elements: " << endl; for (x = 0; x < 5; x++) { cout << array[x] << endl; } return 0; }
출력:
다음은 코드의 스크린샷입니다.
코드 설명:
동적 배열의 길이는 할당 시간 동안 설정됩니다.
그러나 C++에는 할당된 배열의 크기를 조정하는 내장 메커니즘이 없습니다.
그러나 새 배열을 동적으로 할당하고 요소를 복사한 다음 이전 배열을 지우면 이 문제를 극복할 수 있습니다.
참고:이 기술은 오류가 발생하기 쉬우므로 피하십시오.
목적이 달성되면 동적 배열을 컴퓨터 메모리에서 삭제해야 합니다. delete 문은 이를 수행하는 데 도움이 될 수 있습니다. 해제된 메모리 공간은 다른 데이터 세트를 저장하는 데 사용할 수 있습니다. 단, 컴퓨터 메모리에서 동적 배열을 삭제하지 않더라도 프로그램이 종료되면 자동으로 삭제됩니다.
참고:
컴퓨터 메모리에서 동적 배열을 삭제하려면 delete 대신 delete[]를 사용해야 합니다. []는 하나의 변수가 아닌 여러 변수를 삭제하도록 CPU에 지시합니다. 동적 배열을 처리할 때 delete[] 대신 delete를 사용하면 문제가 발생할 수 있습니다. 이러한 문제의 예로는 메모리 누수, 데이터 손상, 충돌 등이 있습니다.
#include<iostream> using namespace std; int main() { int x, n; cout << "How many numbers will you type?" << "\n"; cin >>n; int *arr = new int(n); cout << "Enter " << n << " numbers" << endl; for (x = 0; x < n; x++) { cin >> arr[x]; } cout << "You typed: "; for (x = 0; x < n; x++) { cout << arr[x] << " "; } cout << endl; delete [] arr; return 0; }
출력:
다음은 코드의 스크린샷입니다.
코드 설명:
C 언어
동일한 유형의 요소에 대한 고정 크기 순차 컬렉션을 저장할 수 있는 일종의 데이터 구조를 배열합니다. 배열은 데이터 모음을 저장하는 데 사용되지만 종종 배열을 같은 유형의 변수 모음으로 생각하는 것이 더 유용합니다. number0, number1, ..., number99와 같은 개별 변수를 선언하는 대신 숫자와 같은 하나의 배열 변수를 선언하고 숫자[0], 숫자[1], ..., 숫자[99]를 사용하여 표현합니다. 개별 변수. 배열의 특정 요소는 인덱스에 의해 액세스됩니다. 모든 배열은 연속적인 메모리 위치로 구성됩니다. 가장
배열은 동일한 유형의 요소에 대한 고정 크기 순차 컬렉션을 저장합니다. 배열은 데이터 모음을 저장하는 데 사용되지만 배열을 인접한 메모리 위치에 저장된 동일한 유형의 변수 모음으로 생각하는 것이 더 유용합니다. number0, number1, ..., number99와 같은 개별 변수를 선언하는 대신 숫자와 같은 하나의 배열 변수를 선언하고 숫자[0], 숫자[1], ..., 숫자[99]를 사용하여 표현합니다. 개별 변수. 배열의 특정 요소는 인덱스에 의해 액세스됩니다. 모든 배열은 연속적인 메모리 위치로 구성됩니다. 가장 낮은