single
Dynamische Toewijzing van Pointer naar Pointer
Veeg om het menu te tonen
Een pointer naar pointer, aangeduid als dubbele pointer (**).
Dit is een pointer die het geheugenadres van een andere pointer bevat. Simpel gezegd is het een variabele waarvan de waarde het adres is van een andere pointer. Dit concept lijkt in eerste instantie complex, maar biedt een krachtig mechanisme voor het werken met geavanceerde dynamische geheugenallocatie.
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: is een pointer naar een integer (
int*); - ptr2: is een dubbele pointer naar een integer (
int**).
Dynamische Allocatie van een Tweedimensionale Array
Als je een tweedimensionale array dynamisch wilt aanmaken (tijdens runtime), moet je een pointer naar een pointer gebruiken voor de rijen.
Vervolgens initialiseer je elke rij met een dynamische array (zoals in het vorige hoofdstuk)
Swipe to start coding
Stel je voor dat je werkt met een spreadsheettoepassing waarin je een tabel met getallen dynamisch moet aanmaken.
In deze opdracht werk je met dynamische tweedimensionale arrays en oefen je zowel met allocatie als deallocatie van geheugen.
- Maak binnen de functie
createAndPrint2DArraydynamisch een 2D-array van gehele getallen aan met het opgegeven aantal rijen en kolommen. - Vul de array met waarden berekend als
row * columns + column, zodat elk element uniek is en afhankelijk van zijn positie. - Print de array in tabelvorm naar de console.
- Geef al het dynamisch gealloceerde geheugen correct vrij met behulp van
delete[]voor elke rij en vervolgens voor de array van pointers zelf.
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.