Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Dynamisk Allokering av Pekare till Pekare | Dynamisk Minnesallokering
C++-Pekare och Referenser
Avsnitt 4. Kapitel 4
single

single

bookDynamisk Allokering av Pekare till Pekare

Svep för att visa menyn

En pekare till pekare, betecknad som dubbelpekare (**).

Detta är en pekare som innehåller minnesadressen till en annan pekare. Enkelt uttryckt är det en variabel vars värde är adressen till en annan pekare. Detta koncept kan verka komplicerat till en början, men det ger en kraftfull mekanism för att hantera avancerad dynamisk minnesallokering.

Syntax

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: är en pekare till en integer (int*);
  • ptr2: är en dubbelpekare till en integer (int**).

Dynamisk allokering av en tvådimensionell array

Om du vill skapa en tvådimensionell array dynamiskt (vid körtid) måste du använda en pekare till en pekare för raderna.

Därefter initieras varje rad med en dynamisk array (som i föregående kapitel)

Uppgift

Swipe to start coding

Föreställ dig att du arbetar med ett kalkylprogram där du behöver skapa en tabell med siffror dynamiskt.

I denna uppgift kommer du att arbeta med dynamiska tvådimensionella arrayer och öva på både allokering och frigöring av minne.

  1. Inuti funktionen createAndPrint2DArray, allokera dynamiskt en 2D-array av heltal med det angivna antalet rader och kolumner.
  2. Fyll arrayen med värden beräknade som row * columns + column, så att varje element är unikt och beror på sin position.
  3. Skriv ut arrayen till konsolen i tabellformat.
  4. Frigör korrekt allt dynamiskt allokerat minne med hjälp av delete[] för varje rad och sedan för själva arrayen av pekare.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 4
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

some-alt