single
Dynamisk Allokering av Peker til Peker
Sveip for å vise menyen
En peker til peker, betegnet som dobbel peker (**).
Dette er en peker som inneholder minneadressen til en annen peker. Enkelt sagt er det en variabel hvis verdi er adressen til en annen peker. Dette konseptet kan virke komplisert i starten, men gir en kraftig mekanisme for avansert dynamisk minneallokering.
Syntaks
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: er en peker til et heltall (
int*); - ptr2: er en dobbeltpeker til et heltall (
int**).
Dynamisk allokering av et todimensjonalt array
Hvis du ønsker å opprette et todimensjonalt array dynamisk (under kjøring), må du bruke en peker til en peker for radene.
Deretter initialiserer du hver rad med et dynamisk array (som i forrige kapittel)
Swipe to start coding
Tenk deg at du arbeider med et regnearkprogram hvor du må opprette en tabell med tall dynamisk.
I denne oppgaven skal du arbeide med dynamiske todimensjonale arrayer og øve på både allokering og frigjøring av minne.
- Inne i funksjonen
createAndPrint2DArray, alloker dynamisk en 2D-array av heltall med gitt antall rader og kolonner. - Fyll arrayen med verdier beregnet som
row * columns + column, slik at hvert element er unikt og avhenger av sin posisjon. - Skriv ut arrayen til konsollen i tabellformat.
- Frigi korrekt alt dynamisk allokert minne ved å bruke
delete[]for hver rad og deretter for selve arrayen av pekere.
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