동적배열 예제

n 목표 C에서 요소는 동일한 형식일 필요는 없습니다. 그러나 배열은 n 개체(예: Cocoa의 다른 컬렉션)만 저장합니다.n 또한 포인터 배열은 다른 배열 및 배열 섹션에 대한 별칭으로 사용될 수 있습니다. 포인터 할당 문은 이러한 별칭을 설정하는 데 사용됩니다. 포인터 연결의 대상(예: 별칭이 호출)은 명시적으로 할당된 다른 배열이거나 포인터에 대해 허용 가능한 대상으로 명시적으로 식별된 정적 또는 자동 배열일 수 있습니다. 포인터 배열의 연결 상태는 ASSOCIATED 내장 함수로 테스트할 수 있습니다. 마지막으로 포인터 배열은 더미 인수 및 구조 구성 요소일 수 있으며 둘 중 어느 것도 할당 가능한 배열에 대해 허용되지 않습니다. 할당 가능한 배열과 포인터 배열 간의 이러한 명백한 유사성을 감안할 때 이러한 두 가지 동적 배열 간의 근본적인 차이점은 무엇이며, 할당 가능한 배열은 포인터 배열이 아닌 언제 사용해야 합니까? 포인터 배열은 할당 가능한 배열의 모든 기능을 종속시키며, 이러한 의미에서 할당 가능한 배열은 항상 필요하지 않은 포인터 배열로 충분합니다. 포인터 배열의 문제는 효율성입니다. 포인터 배열은 항상 명시적 대상을 가리키므로 최적화가 실현 불가능하므로 포인터 할당은 할당 가능한 배열보다 포인터 배열의 최적화를 훨씬 어렵게 만듭니다. 더 제한된 특성과 기능으로 인해 할당 가능한 배열은 `간단`하며 포인터 배열보다 더 효율적일 수 있습니다. 배열의 한 가지 제한사항은 크기가 고정되어 있어 배열이 미리 보유할 요소 수를 지정해야 한다는 것입니다. 배열의 각 숫자에 대해 다른 모든 숫자의 곱을 찾습니다. 당신은 당신이 생각하는 것보다 빨리 그것을 할 수 있습니다! 계속 읽기 » 이 예제에서 삭제 한 후, 나는 NULL에 포인터를 재설정합니다.

반드시 필요한 것은 아니지만 포인터를 사용하면 오류가 발생하므로 매우 좋은 방법입니다. NULL의 일반 기본값인 메모리 위치 0을 사용하려는 시도는 대부분의 운영 체제에서 메모리를 할당하는 방식으로 차단됩니다. 동적 배열은 동적 배열이 백 엔드로 고정 크기 배열을 사용할 수 있지만 배열이 할당될 때 크기가 고정되는 배열인 동적으로 할당된 배열과 는 다이내믹 배열과 동일하지 않습니다. [1] Ada의 Ada.Containers.Vectors 제네릭 패키지는 지정된 하위 유형에 대한 동적 배열 구현을 제공합니다. 시간 동안 각 항목을 복사! 따라서 동적 배열에 항목을 추가할 때마다 새 이중 크기 기본 배열을 만들어야 하므로 추가에는 시간이 걸립니다. 동적 배열은 일반적으로 초기 배열 요소수의 두 배로 초기화됩니다. 이 추가 공간은 추가 요소를 배열에 추가할 수 있도록 합니다. 따라서 다음과 같은 요소인 [1, 2]로 동적 배열을 만들고 싶다면 4개의 공백으로 동적 배열이 만들어집니다. 이 크기는 채울 충분한 요소를 추가할 때까지 유지됩니다. 5 번째 요소를 추가하려고하면 배열의 크기가 두 배가되고 (이제 용량이 8인) 5 번째 요소를 추가합니다. 정적 배열은 스택에 할당되어 유용성을 제한할 수 있습니다.

동적 배열은 힙에 할당되므로 메모리 크기에 의해서만 제한됩니다. 물론 동적 배열과 정적 배열 간의 몇 가지 다른 차이점을 찾을 수 있지만 여기서 결론은 동적 배열이 메모리를 직접 관리해야하기 때문에 사용하기 위해 조금 더 많은 작업이 필요하지만 작업에서 유연성을 추가제공한다는 것입니다. 데이터와 함께.