single
Dynamisk 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
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 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.
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.
- Initialiser variablene
sumtil 0,minTemptil det første elementet i arrayet, ogmaxTemptil det første elementet i arrayet. - Iterer gjennom arrayet
tempsved å bruke enfor-løkke med en indeksifra 0 tilhours. - For hvert element
temps[i], legg verdien tilsum. - Hvis
temps[i]er mindre ennminTemp, tildeltemps[i]tilminTemp. - Hvis
temps[i]er større ennmaxTemp, tildeltemps[i]tilmaxTemp. - Beregn gjennomsnittstemperaturen ved å dele
sumpåhoursog lagre det i variabelenaverage. - Skriv ut verdiene til
minTemp,maxTempogaveragetil konsollen.
Løsning
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår