C++ Dynamische Zuordnung von Arrays mit Beispiel
โก Intelligente Zusammenfassung
C++ Die dynamische Allokation von Arrays erklรคrt, wie man Arrays zur Laufzeit auf dem Heap allokiert, ihre Grรถรe รคndert und sie lรถscht. Lessons deckt die Muster fรผr Neuinstallation, Lรถschen[], Initialisierung, Kopieren, Grรถรenรคnderung und sicheres Speichern ab.

Was ist ein dynamisches Array?
Ein dynamisches Array รคhnelt einem regulรคren Array, seine Grรถรe kann jedoch wรคhrend der Programmlaufzeit geรคndert werden. DynamArray-Elemente belegen einen zusammenhรคngenden Speicherblock.
Sobald ein Array erstellt wurde, kann seine Grรถรe nicht mehr geรคndert werden. Ein dynamisches Array ist jedoch anders. Ein dynamisches Array kann seine Grรถรe auch dann vergrรถรern, wenn es gefรผllt ist.
Bei der Erstellung eines Arrays wird ihm eine vorgegebene Menge an Speicher zugewiesen. Dies ist bei einem dynamischen Array nicht der Fall, da es seine Speichergrรถรe bei Bedarf um einen bestimmten Faktor vergrรถรert.
Faktoren, die die Leistung dynamischer Arrays beeinflussen
Die anfรคngliche Grรถรe des Arrays und sein Wachstumsfaktor bestimmen seine Leistung. Beachten Sie die folgenden Punkte:
- Wenn ein Array eine geringe Grรถรe und einen geringen Wachstumsfaktor aufweist, wird der Speicher hรคufiger neu zugewiesen. Dadurch wird die Leistung des Arrays verringert.
- Wenn ein Array eine groรe Grรถรe und einen hohen Wachstumsfaktor aufweist, verfรผgt es รผber einen groรen Teil ungenutzten Speichers. Aus diesem Grund kรถnnen Grรถรenรคnderungsvorgรคnge lรคnger dauern. Dies verringert die Leistung des Arrays.
Das neue Schlรผsselwort
In C++kรถnnen wir mit dem Schlรผsselwort new ein dynamisches Array erstellen. Die Anzahl der zuzuweisenden Elemente wird in eckigen Klammern angegeben. Dem sollte der Typname vorangestellt werden. Die angeforderte Anzahl von Elementen wird zugewiesen.
Syntax
Das neue Schlรผsselwort hat die folgende Syntax:
pointer_variable = new data_type;
Die Zeigervariable ist der Name der Zeigervariable.
Der Datentyp muss ein gรผltiger C++ Datentyp.
Das Schlรผsselwort gibt dann einen Zeiger auf das erste Element zurรผck. Nachdem wir das dynamische Array erstellt haben, kรถnnen wir es mit dem Schlรผsselwort delete lรถschen.
Beispiel 1:
#include<iostream> using namespace std; int main() { int x, n; cout << "Enter the number of items:" << "\n"; cin >>n; int *arr = new int[n]; cout << "Enter " << n << " items" << endl; for (x = 0; x < n; x++) { cin >> arr[x]; } cout << "You entered: "; for (x = 0; x < n; x++) { cout << arr[x] << " "; } return 0; }
Ausgang:
Hier ist ein Screenshot des Codes:
Code Erlรคuterung:
- Fรผgen Sie die iostream-Header-Datei in unser Programm ein, um sie zu verwenden Funktionen.
- Fรผgen Sie den std-Namespace in unser Programm ein, um seine Klassen zu verwenden, ohne ihn aufzurufen.
- Rufen Sie die Funktion main() auf. Die Programmlogik sollte im Hauptteil der Funktion hinzugefรผgt werden.
- Deklarieren Sie zwei ganzzahlige Variablen x und n.
- Geben Sie einen Text auf der Konsole aus, der den Benutzer auffordert, den Wert der Variablen n einzugeben.
- Lesen Sie Benutzereingaben von der Tastatur und weisen Sie sie der Variablen n zu.
- Deklarieren Sie ein Array zur Aufnahme von insgesamt n Ganzzahlen und weisen Sie es der Zeigervariablen *arr zu.
- Drucken Sie eine Nachricht, die den Benutzer auffordert, n Elemente einzugeben.
- Verwenden Sie eine for-Schleife, um eine Schleifenvariable x zu erstellen, um die vom Benutzer eingegebenen Elemente zu durchlaufen.
- Lesen Sie die vom Benutzer eingegebenen Elemente und speichern Sie sie im Array arr.
- Ende des Kรถrpers des for-Schleife.
- Drucken Sie einen Text auf der Konsole.
- Verwenden Sie eine for-Schleife, um eine Schleifenvariable x zu erstellen, um die Elemente des Arrays zu durchlaufen.
- Geben Sie die im Array mit dem Namen arr enthaltenen Werte auf der Konsole aus.
- Ende des Kรถrpers der for-Schleife.
- Das Programm muss bei erfolgreichem Abschluss einen Wert zurรผckgeben.
- Ende des Hauptteils der main()-Funktion.
HINWEIS: Im obigen Beispiel kann der Benutzer wรคhrend der Laufzeit eine beliebige Grรถรe fรผr das Array angeben. Dies bedeutet, dass die Grรถรe des Arrays zur Laufzeit bestimmt wird.
Initialisierung dynamisch zugewiesener Arrays
Es ist einfach, ein dynamisches Array auf 0 zu initialisieren.
Syntax:
int *array{ new int[length]{} };
In der obigen Syntax gibt die Lรคnge die Anzahl der Elemente an, die dem Array hinzugefรผgt werden sollen. Da wir das Array auf 0 initialisieren mรผssen, sollte dieses leer bleiben.
Wir kรถnnen ein dynamisches Array mithilfe einer Initialisierungsliste initialisieren. Lassen Sie uns ein Beispiel erstellen, das dies demonstriert.
Beispiel 2:
#include <iostream> using namespace std; int main(void) { int x; int *array{ new int[5]{ 10, 7, 15, 3, 11 } }; cout << "Array elements: " << endl; for (x = 0; x < 5; x++) { cout << array[x] << endl; } return 0; }
Ausgang:
Hier ist ein Screenshot des Codes:
Code Erlรคuterung:
- Binden Sie die iostream-Header-Datei in unser Programm ein, um dessen Funktionen zu nutzen.
- Fรผgen Sie den std-Namespace in unser Programm ein, um seine Klassen zu verwenden, ohne ihn aufzurufen.
- Rufen Sie die Funktion main() auf. Die Programmlogik sollte im Hauptteil der Funktion hinzugefรผgt werden.
- Deklarieren Sie eine ganzzahlige Variable mit dem Namen x.
- Deklarieren Sie ein dynamisches Array mit dem Namen array unter Verwendung einer Initialisierungsliste. Das Array enthรคlt 5 ganzzahlige Elemente. Beachten Sie, dass wir den Operator โ=โ zwischen der Arraylรคnge und der Initialisierungsliste nicht verwendet haben.
- Drucken Sie einen Text auf der Konsole. Das Endl ist ein C++ Schlรผsselwort, das Zeilenende bedeutet. Es bewegt den Cursor zum nรคchsten Satz.
- Verwenden Sie eine for-Schleife, um die Array-Elemente zu durchlaufen.
- Drucken Sie den Inhalt des Arrays mit dem Namen array auf der Konsole aus.
- Ende des Kรถrpers der for-Schleife.
- Das Programm muss bei erfolgreichem Abschluss einen Wert zurรผckgeben.
- Ende des Hauptteils der main()-Funktion.
Grรถรenรคnderung von Arrays
Die Lรคnge eines dynamischen Arrays wird wรคhrend der Zuordnungszeit festgelegt.
Aber, C++ verfรผgt รผber keinen integrierten Mechanismus zum รndern der Grรถรe eines Arrays, nachdem es zugewiesen wurde.
Sie kรถnnen diese Herausforderung jedoch meistern, indem Sie dynamisch ein neues Array zuweisen, die Elemente kopieren und dann das alte Array lรถschen.
Beachten Sie: Da diese Technik fehleranfรคllig ist, sollten Sie sie vermeiden.
Arrays dynamisch lรถschen
Ein dynamisches Array sollte aus dem Computerspeicher gelรถscht werden, sobald sein Zweck erfรผllt ist. Die delete-Anweisung kann Ihnen dabei helfen. Der freigegebene Speicherplatz kann dann zur Aufnahme eines weiteren Datensatzes genutzt werden. Auch wenn Sie das dynamische Array nicht aus dem Computerspeicher lรถschen, wird es automatisch gelรถscht, sobald das Programm beendet wird.
Hinweis:
Um ein dynamisches Array aus dem Computerspeicher zu lรถschen, sollten Sie delete[] anstelle von delete verwenden. Das [] weist die CPU an, mehrere Variablen statt einer Variablen zu lรถschen. Die Verwendung von delete anstelle von delete[] beim Umgang mit einem dynamischen Array kann zu Problemen fรผhren. Beispiele fรผr solche Probleme sind Speicherlecks, Datenbeschรคdigung, Abstรผrze usw.
Beispiel 3:
#include<iostream> using namespace std; int main() { int x, n; cout << "How many numbers will you type?" << "\n"; cin >>n; int *arr = new int[n]; cout << "Enter " << n << " numbers" << endl; for (x = 0; x < n; x++) { cin >> arr[x]; } cout << "You typed: "; for (x = 0; x < n; x++) { cout << arr[x] << " "; } cout << endl; delete [] arr; return 0; }
Ausgang:
Hier ist ein Screenshot des Codes:
Code Erlรคuterung:
- Binden Sie die iostream-Header-Datei in unser Programm ein, um deren Funktionen nutzen zu kรถnnen.
- Fรผgen Sie den std-Namespace in unser Programm ein, um seine Klassen zu verwenden, ohne ihn aufzurufen.
- Rufen Sie die Funktion main() auf. Die Programmlogik sollte im Hauptteil der Funktion hinzugefรผgt werden.
- Deklarieren Sie zwei Variablen x und n vom Datentyp Integer.
- Drucken Sie einen Text auf der Konsole. Der Text fordert den Benutzer auf, die Anzahl der einzugebenden Zahlen anzugeben.
- Lesen Sie Benutzereingaben von der Tastatur. Der Eingabewert wird der Variablen n zugewiesen.
- Deklarieren Sie eine Zeigervariable *arr. Das Array arr reserviert etwas Speicher, um insgesamt n Ganzzahlen zu speichern.
- Drucken Sie eine Meldung auf der Konsole, die den Benutzer auffordert, n Zahlen einzugeben.
- Erstellen Sie eine For-Schleife und die Schleifenvariable x, um รผber die vom Benutzer eingegebenen Zahlen zu iterieren.
- Liest die vom Benutzer eingegebenen Zahlen und speichert sie im Array arr.
- Ende des Kรถrpers der for-Schleife.
- Drucken Sie einen Text auf der Konsole.
- Verwenden Sie eine for-Schleife und die Schleifenvariable x, um den Inhalt des Arrays arr zu durchlaufen.
- Geben Sie die Werte des Arrays arr auf der Konsole aus.
- Ende des Kรถrpers der for-Schleife.
- Drucken Sie eine leere Zeile auf der Konsole.
- Geben Sie den Speicher des Arrays arr frei.
- Das Programm gibt einen Wert zurรผck, wenn es erfolgreich abgeschlossen wurde.
- Ende des Hauptteils der main()-Funktion.






