Zusammenfassung
In dieser Lektion hast du gelernt:
- Bei der Übergabe als Wert bekommt eine Funktion eine Kopie des Arguments. Ändert sie die Kopie, bleibt die Variable des aufrufenden Codes gleich. Das gilt auch für Vektoren.
- Eine Referenz ist ein weiterer Name für eine vorhandene Variable. Ein Parameter mit
&hinter dem Typ (int& punktestand,std::vector<int>& ergebnisse) lässt die Funktion die Variable oder den Vektor ändern, die du ihr übergibst. Der Aufruf sieht aus wie gewohnt, und das Argument muss eine Variable sein. - Über Referenzen kann eine Funktion mehrere Ergebnisse auf einmal zurückgeben oder zwei Variablen tauschen.
- In der Schleife
for (int zahl : zahlen)istzahleine Kopie des Elements. Um die Elemente in der Schleife zu ändern, schreibefor (int& zahl : zahlen)oder verwende eine Schleife mit Index. constbedeutet, dass sich der Wert nicht ändern darf. Eine konstante Referenz (const std::vector<int>& zahlen,const std::string& name) übergibt einen Vektor oder Text ohne Kopie, und die Funktion kann ihn nicht ändern.- Jede Variable hat eine Adresse im Speicher, die du mit
&xbekommst. Ein Zeiger (int* p = &x;) enthält eine Adresse, und mit*pliest und änderst du die Variable, auf die er zeigt. - In einer Deklaration sind
&und*Teil des Typs: eine Referenz und ein Zeiger. In einem Ausdruck ist&xdie Adresse einer Variablen und*pdie Variable, auf die der Zeiger zeigt. - Eine Funktion mit einem
int*-Parameter wird mit einer Adresse aufgerufen:fuegePunktHinzu(&punktestand). nullptrbedeutet, dass ein Zeiger nirgendwohin zeigt. Wenn ein Zeigernullptrsein kann, prüfe ihn, bevor du ihn verwendest.- Bevorzuge Referenzen. Verwende einen Zeiger, wenn du „nichts“ brauchst oder ihn auf eine andere Variable umlenken willst.
Damit hast du alle Themen des Kurses durch. In der nächsten Lektion, dem Abschlussprojekt, schreibst du Schritt für Schritt ein größeres Programm und verwendest alles, was du im Kurs gelernt hast: Variablen, Bedingungen, Vektoren, Schleifen, Funktionen und Referenzen.
So schreibst du es:
Anweisungen
- 1
Üben wir. Der Vektor
ergebnisseenthält die Ergebnisse eines Tests, und die Lehrerin addiert zu jedem einen Bonus. Schreibe eine FunktionbonusHinzufuegenmit zwei Parametern: dem Vektorergebnisse, den die Funktion ändert, und der Zahlbonus. Die Funktion addiert den Bonus zu jedem Ergebnis, aber kein Ergebnis darf über 100 Punkte kommen: Alles, was höher wäre, wird zu100. Rufe sie vor der Ausgabeschleife mit dem Bonus10auf. Das Programm gibt55,82,100,48und76aus, eines pro Zeile. - 2
Schreibe eine Funktion
findeMinMax, die den Vektor als konstante Referenz und zwei Referenzen aufintbekommt,niedrigsterundhoechster. Sie speichert darin das niedrigste und das höchste Ergebnis, „gibt“ also zwei Werte auf einmal „zurück“. Speichere zuerst in beiden das erste Element des Vektors. Erstelle am Ende vonmainzwei Variablen, übergib sie der Funktion und gib sie aus:Niedrigster: 48, höchster: 100.