single
Dynamisk Allokering af Pointer til Pointer
Stryg for at vise menuen
En pointer til pointer, betegnet som dobbeltpointer (**).
Dette er en pointer der indeholder hukommelsesadressen til en anden pointer. Kort sagt er det en variabel, hvis værdi er adressen til en anden pointer. Dette koncept kan virke komplekst i starten, men det giver en effektiv mekanisme til avanceret dynamisk hukommelsesallokering.
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 pointer til et heltal (
int*); - ptr2: er en dobbeltpointer til et heltal (
int**).
Dynamisk allokering af et todimensionelt array
Hvis du vil oprette et todimensionelt array dynamisk (under kørsel), skal du bruge en pointer til en pointer til rækkerne.
Derefter initialiseres hver række med et dynamisk array (som i det forrige kapitel)
Swipe to start coding
Forestil dig, at du arbejder med et regnearksprogram, hvor du skal oprette en tabel med tal dynamisk.
I denne opgave skal du arbejde med dynamiske todimensionelle arrays og øve både allokering og frigivelse af hukommelse.
- Inde i funktionen
createAndPrint2DArrayskal du dynamisk allokere et 2D-array af heltal med det givne antal rækker og kolonner. - Udfyld arrayet med værdier beregnet som
row * columns + column, så hvert element er unikt og afhænger af dets position. - Udskriv arrayet til konsollen i tabelformat.
- Frigiv korrekt al dynamisk allokeret hukommelse ved at bruge
delete[]for hver række og derefter for selve arrayet af pointere.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat