single
Dynamische Toewijzing van de Array
Veeg om het menu te tonen
Voordat we bespreken waarom dynamische toewijzing noodzakelijk is, herhalen we kort de kenmerken van statische en dynamische arrays:
Statische array
- Vaste grootte: eenmaal gedeclareerd, is de grootte van een statische array vast en kan deze tijdens de uitvoering niet worden gewijzigd;
- Geheugentoewijzing tijdens compilatie: het geheugen dat nodig is voor een statische array wordt tijdens de compilatie toegewezen.
Dynamische arrays
- Aanpasbaar formaat: dynamische arrays kunnen tijdens de uitvoering van het programma van grootte veranderen, waardoor flexibiliteit ontstaat om aan veranderende programmavereisten te voldoen;
- Geheugentoewijzing tijdens uitvoering: geheugen voor dynamische arrays wordt toegewezen tijdens de uitvoering van het programma.
De beperkingen van een statische benadering
Beschouw het programma dat de gebruiker vraagt om prestatiescores in te voeren voor elke dag die is verstreken in de huidige maand.
Helaas kunnen we dit niet bereiken met een statische array:
main.cpp
12345678910#include <iostream> #include <ctime> int main() { std::time_t currentTime = std::time(nullptr); int day_passed = std::localtime(¤tTime)->tm_mday; int arr[day_passed]; std::cout << day_passed << std::endl; }
Dit zal een compilatiefout genereren omdat day_passed geen constante expressie is; het hangt af van de runtime-waarde van de huidige dag van de maand.
In plaats van een statische array moet een dynamisch gealloceerde array worden gebruikt.
Swipe to start coding
Stel je voor dat je werkt als meteoroloog die temperatuurmetingen gedurende de dag moet analyseren.
Je werkt met pointers en functies die dynamisch gealloceerde arrays van gegevens manipuleren.
- Initialiseer de variabelen
sumop 0,minTempop het eerste element van de array enmaxTempop het eerste element van de array. - Itereer door de array
tempsmet eenfor-lus met een indexivan 0 tothours. - Tel bij elk element
temps[i]de waarde op bijsum. - Als
temps[i]kleiner is danminTemp, wijs dantemps[i]toe aanminTemp. - Als
temps[i]groter is danmaxTemp, wijs dantemps[i]toe aanmaxTemp. - Bereken de gemiddelde temperatuur door
sumte delen doorhoursen sla deze op in een variabeleaverage. - Print de waarden van
minTemp,maxTempenaveragenaar de console.
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.