Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Dynamisk Allokering af Arrayet | Dynamisk Hukommelsesallokering
C++ Pointers og Referencer
Sektion 4. Kapitel 3
single

single

bookDynamisk 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

main.cpp

copy
12345678910
#include <iostream> #include <ctime> int main() { std::time_t currentTime = std::time(nullptr); int day_passed = std::localtime(&currentTime)->tm_mday; int arr[day_passed]; std::cout << day_passed << std::endl; }
Note
Bemærk

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.

Opgave

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.

  1. Initialiser variablerne sum til 0, minTemp til det første element i arrayet, og maxTemp til det første element i arrayet.
  2. Gennemløb arrayet temps ved hjælp af en for-løkke med et indeks i fra 0 til hours.
  3. For hvert element temps[i], læg dets værdi til sum.
  4. Hvis temps[i] er mindre end minTemp, tildel temps[i] til minTemp.
  5. Hvis temps[i] er større end maxTemp, tildel temps[i] til maxTemp.
  6. Beregn gennemsnitstemperaturen ved at dividere sum med hours og gem den i variablen average.
  7. Udskriv værdierne af minTemp, maxTemp og average til konsollen.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 3
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

some-alt