single
Dynamisk Allokering af Arrayet
Stryg for at vise menuen
Før vi undersøger, hvorfor dynamisk allokering er nødvendig, lad os hurtigt opsummere egenskaberne ved statiske og dynamiske arrays:
Statisk array
- Fast størrelse: Når et statisk array er erklæret, er størrelsen fast og kan ikke ændres under kørsel;
- Hukommelsesallokering ved kompileringstidspunktet: Den nødvendige hukommelse til et statisk array allokeres ved kompilering.
Dynamiske arrays
- Kan ændres i størrelse: dynamiske arrays muliggør ændring af størrelse under kørsel, hvilket giver fleksibilitet til at tilpasse sig ændrede programkrav;
- Hukommelsesallokering under kørsel: hukommelse til dynamiske arrays allokeres under programudførelse.
Begrænsninger ved en statisk tilgang
Overvej programmet, der beder brugeren om at indtaste præstationsscore for hver dag der er gået i den nuværende måned.
Desværre kan dette ikke opnås ved brug af et 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; }
Dette vil give en kompileringsfejl, fordi day_passed ikke er et konstant udtryk; det afhænger af den aktuelle dags værdi på måneden under kørsel.
Så i stedet for et statisk array skal vi bruge et dynamisk allokeret array.
Swipe to start coding
Forestil dig, at du arbejder som meteorolog og skal analysere temperaturmålinger i løbet af dagen.
Du skal arbejde med pointere og funktioner, der manipulerer dynamisk allokerede arrays af data.
- Initialiser variablerne
sumtil 0,minTemptil det første element i arrayet, ogmaxTemptil det første element i arrayet. - Gennemløb arrayet
tempsved hjælp af enfor-løkke med et indeksifra 0 tilhours. - For hvert element
temps[i], læg dets værdi tilsum. - Hvis
temps[i]er mindre endminTemp, tildeltemps[i]tilminTemp. - Hvis
temps[i]er større endmaxTemp, tildeltemps[i]tilmaxTemp. - Beregn gennemsnitstemperaturen ved at dividere
summedhoursog gem den i variablenaverage. - Udskriv værdierne af
minTemp,maxTempogaveragetil konsollen.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat