Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Dynamisk Allokering af Pointer til Pointer | Dynamisk Hukommelsesallokering
C++ Pointers og Referencer
Sektion 4. Kapitel 4
single

single

bookDynamisk 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

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: 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)

Opgave

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.

  1. Inde i funktionen createAndPrint2DArray skal du dynamisk allokere et 2D-array af heltal med det givne antal rækker og kolonner.
  2. Udfyld arrayet med værdier beregnet som row * columns + column, så hvert element er unikt og afhænger af dets position.
  3. Udskriv arrayet til konsollen i tabelformat.
  4. Frigiv korrekt al dynamisk allokeret hukommelse ved at bruge delete[] for hver række og derefter for selve arrayet af pointere.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 4
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

some-alt