single
Dynaaminen Varaaminen
Pyyhkäise näyttääksesi valikon
Dynaaminen muistinvaraus tarkoittaa new- ja delete-operaattoreiden käyttöä. Näiden operaattoreiden avulla voit varata muistia muuttujille ja taulukoille ajonaikaisesti, mikä tarjoaa enemmän joustavuutta kuin staattinen muistinvaraus.
-
new: operaattori, jota käytetään dynaamisesti varaamaan muistia oliolle tai olioiden taulukolle ajonaikana; -
delete: operaattori, jota käytetään vapauttamaan muistia, joka on aiemmin varattunew-operaattorilla.
Osoitin, joka osoittaa dynaamisesti varattuun muistiin, tallennetaan tyypillisesti pinoon, mutta itse muisti varataan keosta.
Luodaksesi kokonaislukumuuttujan dynaamisesti sinun täytyy käyttää osoitinta yhdessä new-avainsanan kanssa.
int *dynamicInteger = new int;
Dynaamisesti varatun muistin vapauttamiseen käytetään delete-operaattoria:
delete dynamicInteger;
Tee tästä itsellesi sääntö: kun käytät new-operaattoria muistin varaamiseen, käytä aina delete-operaattoria sen vapauttamiseen myöhemmin.
Dynaamisesti varatut taulukot
Kun varaat muistia taulukoille dynaamisesti, käytä new[]-operaattoria, ja kun vapautat dynaamisesti varatun taulukon muistin, käytä delete[]-operaattoria.
Dynaamisesti varatun muistin poistamatta jättäminen voi johtaa muistivuotoihin, jolloin ohjelma säilyttää muistia, jota ei enää käytetä.
Pyyhkäise aloittaaksesi koodauksen
Kuvittele, että työskentelet opettajana ja sinun täytyy laskea opiskelijaryhmän keskiarvo.
Työskentelet myös osoittimien ja funktioiden kanssa, jotka käsittelevät dynaamisesti varattuja taulukoita.
- Luo dynaamisesti varattu taulukko
gradesopiskelijoiden arvosanojen tallentamista varten. - Käytä
fillRandomGrades-funktiota täyttääksesi taulukon satunnaisilla arvosanoilla väliltä 60–100. - Täydennä
calculateAverage-funktio niin, että se:- Alustaa muuttujan
sumarvoon 0. - Käy taulukon läpi
for-silmukalla. - Lisää jokaisen arvosanan
sum-muuttujaan. - Palauttaa keskiarvon jakamalla kokonais
sumopiskelijoiden määrällä.
- Alustaa muuttujan
- Muista vapauttaa varattu muisti käyttämällä
delete[]ohjelman lopussa muistivuotojen välttämiseksi.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme