Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Dynamisk Allokering av Array | Dynamisk Minnetildeling
C++-Pekere og Referanser
Seksjon 4. Kapittel 3
single

single

bookDynamisk Allokering av Array

Sveip for å vise menyen

Før vi ser nærmere på hvorfor dynamisk allokering er nødvendig, la oss raskt oppsummere egenskapene til statiske og dynamiske arrayer:

Statisk array

  • Fast størrelse: Når en statisk array er deklarert, er størrelsen fast og kan ikke endres under kjøring;
  • Minneallokering ved kompilering: Minnet som kreves for en statisk array blir allokert ved kompilering.

Dynamiske arrayer

  • Dynamisk størrelse: dynamiske arrayer kan endre størrelse under kjøring, noe som gir fleksibilitet til å tilpasse seg endrede programkrav;
  • Minneallokering under kjøring: minne for dynamiske arrayer blir allokert under programutførelse.

Begrensningene ved en statisk tilnærming

Tenk på et program som ber brukeren om å skrive inn ytelsesscore for hver dag som har gått i inneværende måned.

Dessverre kan vi ikke oppnå dette ved å bruke 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
Merk

Dette vil føre til en kompilasjonsfeil fordi day_passed ikke er et konstant uttrykk; det avhenger av kjøretidsverdien til den nåværende dagen i måneden.

Så i stedet for et statisk array må vi bruke et dynamisk allokert array.

Oppgave

Sveip for å begynne å kode

Tenk deg at du jobber som meteorolog og må analysere temperaturmålinger gjennom dagen.

Du skal arbeide med pekere og funksjoner som manipulerer dynamisk allokerte matriser av data.

  1. Initialiser variablene sum til 0, minTemp til det første elementet i arrayet, og maxTemp til det første elementet i arrayet.
  2. Iterer gjennom arrayet temps ved å bruke en for-løkke med en indeks i fra 0 til hours.
  3. For hvert element temps[i], legg verdien til sum.
  4. Hvis temps[i] er mindre enn minTemp, tildel temps[i] til minTemp.
  5. Hvis temps[i] er større enn maxTemp, tildel temps[i] til maxTemp.
  6. Beregn gjennomsnittstemperaturen ved å dele sumhours og lagre det i variabelen average.
  7. Skriv ut verdiene til minTemp, maxTemp og average til konsollen.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 3
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

some-alt