Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Osoitin Osoittimeen Dynaaminen Varaus | Dynaaminen Muistinvaraus
C++-Osoittimet ja Viittaukset
Osio 4. Luku 4
single

single

bookOsoitin Osoittimeen Dynaaminen Varaus

Pyyhkäise näyttääksesi valikon

Osoitin osoittimeen, merkittynä kaksoisosoittimena (**).

Tämä on osoitin, joka sisältää toisen osoittimen muistiosoitteen. Yksinkertaisesti sanottuna se on muuttuja, jonka arvo on toisen osoittimen osoite. Tämä käsite voi aluksi vaikuttaa monimutkaiselta, mutta se tarjoaa tehokkaan tavan käsitellä kehittynyttä dynaamista muistinvarausta.

Syntaksi

main.cpp

main.cpp

copy
12345678910111213
#include <iostream> int main() { int x = 10; int *ptr1 = &x; int **ptr2 = &ptr1; // Accessing values using double pointer std::cout << "Address stored in ptr2 (address of ptr1): " << ptr2 << std::endl; std::cout << "Address stored in ptr1 (address of x): " << *ptr2 << std::endl; std::cout << "Value of x: " << **ptr2 << std::endl; }
  • ptr1: osoitin kokonaislukuun (int*);
  • ptr2: kaksoisosoitin kokonaislukuun (int**).

Kaksiulotteisen taulukon dynaaminen varaus

Jos haluat luoda kaksiulotteisen taulukon dynaamisesti (ajonaikaisesti), sinun täytyy käyttää osoitinta osoittimeen riveille.

Tämän jälkeen alustetaan jokainen rivi dynaamisella taulukolla (kuten edellisessä luvussa).

Tehtävä

Swipe to start coding

Kuvittele työskenteleväsi taulukkolaskentaohjelmassa, jossa sinun täytyy luoda taulukko numeroista dynaamisesti.

Tässä tehtävässä työskentelet dynaamisten kaksiulotteisten taulukoiden kanssa ja harjoittelet sekä muistin varaamista että vapauttamista.

  1. Toteuta funktiossa createAndPrint2DArray dynaaminen 2D-taulukko kokonaisluvuista annetulla rivien ja sarakkeiden määrällä.
  2. Täytä taulukko arvoilla, jotka lasketaan kaavalla row * columns + column, jolloin jokainen alkio on yksilöllinen ja riippuu sijainnistaan.
  3. Tulosta taulukko konsoliin taulukkomuodossa.
  4. Vapauta kaikki dynaamisesti varattu muisti oikein käyttämällä delete[] jokaiselle riville ja lopuksi osoitin-taulukolle itselleen.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 4
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

some-alt