single
Dynamische Allokation des Arrays
Swipe um das Menü anzuzeigen
Bevor wir untersuchen, warum die dynamische Speicherzuweisung notwendig ist, fassen wir kurz die Eigenschaften von statischen und dynamischen Arrays zusammen:
Statisches Array
- Feste Größe: Nach der Deklaration ist die Größe eines statischen Arrays festgelegt und kann zur Laufzeit nicht geändert werden;
- Speicherzuweisung zur Compile-Zeit: Der für ein statisches Array benötigte Speicher wird zur Compile-Zeit zugewiesen.
Dynamische Arrays
- Größenveränderbar: Dynamische Arrays ermöglichen eine Größenanpassung zur Laufzeit und bieten so Flexibilität, um sich an wechselnde Programmanforderungen 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 ein Programm, das den Benutzer auffordert, Leistungswerte für jeden Tag des aktuellen Monats einzugeben.
Dies lässt sich leider nicht mit einem statischen Array realisieren:
main.cpp
12345678910#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; }
Dies führt zu einem Kompilierungsfehler, da day_passed keine konstante Ausdruck ist; er hängt vom Laufzeitwert des aktuellen Tages des Monats ab.
Anstelle eines statischen Arrays muss ein dynamisch allokiertes Array verwendet werden.
Wischen, um mit dem Codieren zu beginnen
Stellen Sie sich vor, Sie arbeiten als Meteorologe und müssen Temperaturmessungen im Tagesverlauf analysieren.
Sie arbeiten mit Zeigern und Funktionen, die dynamisch zugewiesene Datenarrays verarbeiten.
- Initialisieren Sie die Variablen
summit 0,minTempmit dem ersten Element des Arrays undmaxTempmit dem ersten Element des Arrays. - Durchlaufen Sie das Array
tempsmit einerfor-Schleife und dem Indexivon 0 bishours. - Addieren Sie für jedes Element
temps[i]dessen Wert zusum. - Wenn
temps[i]kleiner alsminTempist, weisen Sietemps[i]minTempzu. - Wenn
temps[i]größer alsmaxTempist, weisen Sietemps[i]maxTempzu. - Berechnen Sie die durchschnittliche Temperatur, indem Sie
sumdurchhoursteilen, und speichern Sie das Ergebnis in der Variablenaverage. - Geben Sie die Werte von
minTemp,maxTempundaverageauf der Konsole aus.
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen