Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Dynamische Allokation von Zeigern auf Zeiger | Dynamische Speicherzuweisung
Üben
Projekte
Quiz & Herausforderungen
Quizze
Herausforderungen
/
C++-Zeiger und Referenzen
Abschnitt 4. Kapitel 4
single

single

bookDynamische Allokation von Zeigern auf Zeiger

Swipe um das Menü anzuzeigen

Ein Pointer auf einen Pointer, bezeichnet als Doppelzeiger (**).

Dies ist ein Zeiger, der die Speicheradresse eines anderen Zeigers speichert. Einfach ausgedrückt ist es eine Variable, deren Wert die Adresse eines anderen Zeigers ist. Dieses Konzept mag zunächst komplex erscheinen, bietet jedoch eine leistungsstarke Möglichkeit für fortgeschrittene dynamische Speicherverwaltung.

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: ist ein Zeiger auf einen Integer (int*);
  • ptr2: ist ein doppelter Zeiger auf einen Integer (int**).

Dynamische Allokation eines zweidimensionalen Arrays

Wenn ein zweidimensionales Array zur Laufzeit dynamisch erstellt werden soll, muss für die Zeilen ein Zeiger auf einen Zeiger verwendet werden.

Anschließend wird jede Zeile mit einem dynamischen Array initialisiert (wie im vorherigen Kapitel).

Aufgabe

Wischen, um mit dem Codieren zu beginnen

Stellen Sie sich vor, Sie arbeiten mit einer Tabellenkalkulationsanwendung, in der Sie eine Tabelle mit Zahlen dynamisch erstellen müssen.

In dieser Aufgabe arbeiten Sie mit dynamischen zweidimensionalen Arrays und üben sowohl die Allokation als auch die Freigabe von Speicher.

  1. Innerhalb der Funktion createAndPrint2DArray soll ein zweidimensionales Array von Ganzzahlen mit der angegebenen Anzahl von Zeilen und Spalten dynamisch alloziert werden.
  2. Füllen Sie das Array mit Werten, die als row * columns + column berechnet werden, sodass jedes Element eindeutig ist und von seiner Position abhängt.
  3. Geben Sie das Array in tabellarischer Form auf der Konsole aus.
  4. Geben Sie anschließend sämtlichen dynamisch allozierten Speicher korrekt frei, indem Sie delete[] für jede Zeile und für das Array der Zeiger selbst verwenden.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 4
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

some-alt