Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Dynamisk Allokering av Arrayen | Dynamisk Minnesallokering
C++-Pekare och Referenser
Avsnitt 4. Kapitel 3
single

single

bookDynamisk 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

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
Notering

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.

Uppgift

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.

  1. Initiera variablerna sum till 0, minTemp till det första elementet i arrayen och maxTemp till det första elementet i arrayen.
  2. Iterera genom arrayen temps med en for-loop med ett index i från 0 till hours.
  3. För varje element temps[i], addera dess värde till sum.
  4. Om temps[i] är mindre än minTemp, tilldela temps[i] till minTemp.
  5. Om temps[i] är större än maxTemp, tilldela temps[i] till maxTemp.
  6. Beräkna medeltemperaturen genom att dividera sum med hours och lagra det i en variabel average.
  7. Skriv ut värdena för minTemp, maxTemp och average till konsolen.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 3
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

some-alt