Kursinhalt
C++ Zeiger und Referenzen
C++ Zeiger und Referenzen
Dynamische Zuweisung des Array
Bevor wir untersuchen, warum die dynamische Speicherzuweisung notwendig ist, fassen wir kurz die Merkmale statischer und dynamischer Arrays zusammen:
- Feste Größe: Einmal deklariert, ist die Größe eines statischen Arrays fest und kann zur Laufzeit nicht verändert werden;
- Speicherzuweisung zur Kompilierzeit: Der für ein statisches Array benötigte Speicher wird zur Kompilierzeit zugewiesen.
- Größenanpassbar: Dynamische Arrays ermöglichen die Größenanpassung zur Laufzeit und bieten die Flexibilität, sich an sich ändernde Programm-Anforderungen anzupassen;
- Speicherzuweisung zur Laufzeit: Der Speicher für dynamische Arrays wird während der Programmausführung zugewiesen.
Die Einschränkungen eines statischen Ansatzes
Betrachten Sie das Programm, das den Benutzer auffordert, Leistungswerte für jeden Tag des bisherigen Monats einzugeben.
Leider können wir dies nicht mit einem statischen Array erreichen:
main
#include <iostream> #include <ctime> int main() { std::time_t currentTime = std::time(nullptr); int day_passed = std::localtime(¤tTime)->tm_mday; int arr[day_passed]; std::cout << day_passed << std::endl; }
Hinweis
Dies wird einen Kompilierungsfehler error erzeugen, da day_passed is not a constant expression vom Laufzeitwert des aktuellen Tages des Monats abhängt.
Also statt eines statischen Arrays müssen wir ein dynamisch alloziertes Array verwenden.
Swipe to start coding
- Erstelle ein dynamisches Array mit einer Größe, die der Anzahl der vergangenen Tage entspricht.
- Gib den zugewiesenen Speicher frei.
Lösung
solution
Danke für Ihr Feedback!
Dynamische Zuweisung des Array
Bevor wir untersuchen, warum die dynamische Speicherzuweisung notwendig ist, fassen wir kurz die Merkmale statischer und dynamischer Arrays zusammen:
- Feste Größe: Einmal deklariert, ist die Größe eines statischen Arrays fest und kann zur Laufzeit nicht verändert werden;
- Speicherzuweisung zur Kompilierzeit: Der für ein statisches Array benötigte Speicher wird zur Kompilierzeit zugewiesen.
- Größenanpassbar: Dynamische Arrays ermöglichen die Größenanpassung zur Laufzeit und bieten die Flexibilität, sich an sich ändernde Programm-Anforderungen anzupassen;
- Speicherzuweisung zur Laufzeit: Der Speicher für dynamische Arrays wird während der Programmausführung zugewiesen.
Die Einschränkungen eines statischen Ansatzes
Betrachten Sie das Programm, das den Benutzer auffordert, Leistungswerte für jeden Tag des bisherigen Monats einzugeben.
Leider können wir dies nicht mit einem statischen Array erreichen:
main
#include <iostream> #include <ctime> int main() { std::time_t currentTime = std::time(nullptr); int day_passed = std::localtime(¤tTime)->tm_mday; int arr[day_passed]; std::cout << day_passed << std::endl; }
Hinweis
Dies wird einen Kompilierungsfehler error erzeugen, da day_passed is not a constant expression vom Laufzeitwert des aktuellen Tages des Monats abhängt.
Also statt eines statischen Arrays müssen wir ein dynamisch alloziertes Array verwenden.
Swipe to start coding
- Erstelle ein dynamisches Array mit einer Größe, die der Anzahl der vergangenen Tage entspricht.
- Gib den zugewiesenen Speicher frei.
Lösung
solution
Danke für Ihr Feedback!