single
Dynamisk 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
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)
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.
- Inuti funktionen
createAndPrint2DArray, allokera dynamiskt en 2D-array av heltal med det angivna antalet rader och kolumner. - Fyll arrayen med värden beräknade som
row * columns + column, så att varje element är unikt och beror på sin position. - Skriv ut arrayen till konsolen i tabellformat.
- 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
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal