single
Dynamisk Allokering av Arrayen
Svep för att visa menyn
Innan vi undersöker varför dynamisk allokering är nödvändig, låt oss snabbt repetera egenskaperna hos statiska och dynamiska arrayer:
Statisk array
- Fast storlek: när en statisk array deklareras är dess storlek fast och kan inte ändras under körning;
- Minnesallokering vid kompilering: minnet som krävs för en statisk array allokeras vid kompilering.
Dynamiska arrayer
- Storleksändringsbar: dynamiska arrayer kan ändra storlek under körning, vilket ger flexibilitet att anpassa sig till förändrade programkrav;
- Minnesallokering vid körning: minne för dynamiska arrayer allokeras under programmets exekvering.
Begränsningar med en statisk metod
Tänk på ett program som ber användaren att mata in prestationspoäng för varje dag som har passerat under innevarande månad.
Tyvärr kan vi inte uppnå detta med en statisk 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; }
Detta kommer att generera ett kompileringsfel eftersom day_passed inte är ett konstant uttryck utan beror på det aktuella dagens värde vid körning.
Så istället för en statisk array måste vi använda en dynamiskt allokerad array.
Svep för att börja koda
Föreställ dig att du arbetar som meteorolog och behöver analysera temperaturavläsningar under dagen.
Du kommer att arbeta med pekare och funktioner som hanterar dynamiskt allokerade arrayer av data.
- Initiera variablerna
sumtill 0,minTemptill det första elementet i arrayen ochmaxTemptill det första elementet i arrayen. - Iterera genom arrayen
tempsmed enfor-loop med ett indexifrån 0 tillhours. - För varje element
temps[i], addera dess värde tillsum. - Om
temps[i]är mindre änminTemp, tilldelatemps[i]tillminTemp. - Om
temps[i]är större änmaxTemp, tilldelatemps[i]tillmaxTemp. - Beräkna medeltemperaturen genom att dividera
summedhoursoch lagra det i en variabelaverage. - Skriv ut värdena för
minTemp,maxTempochaveragetill konsolen.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal