single
Osoitin 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
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).
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.
- Toteuta funktiossa
createAndPrint2DArraydynaaminen 2D-taulukko kokonaisluvuista annetulla rivien ja sarakkeiden määrällä. - Täytä taulukko arvoilla, jotka lasketaan kaavalla
row * columns + column, jolloin jokainen alkio on yksilöllinen ja riippuu sijainnistaan. - Tulosta taulukko konsoliin taulukkomuodossa.
- Vapauta kaikki dynaamisesti varattu muisti oikein käyttämällä
delete[]jokaiselle riville ja lopuksi osoitin-taulukolle itselleen.
Ratkaisu
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme