Zusammenfassung
In dieser Lektion hast du gelernt:
- Eine Funktion ist ein benanntes Stück Code, das du einmal schreibst und so oft ausführen kannst, wie du willst. Wenn du sie änderst, gilt die Änderung für jeden Aufruf.
- Eine Definition einer Funktion hat einen Rückgabetyp, einen Namen, Parameter in Klammern und einen Rumpf in geschweiften Klammern:
int addiere(int a, int b) { ... }.voidals Rückgabetyp bedeutet, dass die Funktion nichts zurückgibt, und(void)in den Klammern, dass sie nichts entgegennimmt. Eine Definition allein führt nichts aus. - Eine Funktion rufst du mit ihrem Namen, den Argumenten in Klammern und einem Semikolon auf:
zeige_linie(5);. Das Programm beginnt inmain, und von dort werden andere Funktionen aufgerufen. Auchprintf,strlenundtouppersind Funktionen. - Der Compiler muss eine Funktion kennen, bevor sie aufgerufen wird: Definiere die Funktion über
mainoder schreibe ihren Prototyp übermain, zum Beispielint addiere(int a, int b);. Sonst bekommst du den Fehlercall to undeclared function. Header-Dateien wiestdio.henthalten die Prototypen von Bibliotheksfunktionen. - Ein Parameter ist eine Variable in der Definition, ein Argument ist ein Wert im Aufruf. Die Argumente gehen der Reihe nach in die Parameter, und ihre Anzahl und Typen müssen passen.
returngibt einen Wert an die Stelle des Aufrufs zurück, sodass du den Aufruf wie einen Wert verwenden kannst:int gesamt = addiere(2, 3) * 2;. Es beendet die Funktion auch sofort. Eine Funktion, die nichtvoidist, muss in jedem Fall einen Wert zurückgeben, sonst lässt sich das Programm hier nicht kompilieren. In einervoid-Funktion beendetreturn;sie vorzeitig.printfzeigt einen Wert nur an; das Programm kann damit nicht weiterarbeiten. Eine Funktion, die etwas berechnet, sollte das Ergebnis zurückgeben und das Ausgeben dem Code überlassen, der sie aufgerufen hat.- Die Variablen einer Funktion und ihre Parameter sind lokal: Sie existieren nur in dieser Funktion, und das gilt auch für
main. Ein Parameter bekommt eine Kopie des Arguments, daher ändert eine Änderung nicht die Variable des Aufrufers. Werte gehen durch die Parameter in eine Funktion hinein und kommen mitreturnheraus. - Ein Array-Parameter wird
int zahlen[]geschrieben, und die Funktion braucht die Anzahl der Elemente als weiteren Parameter. Die Funktion arbeitet mit dem Array des Aufrufers selbst, deshalb bleiben ihre Änderungen. Eine Zeichenkette, die die Funktion nur liest, ist einconst char text[], und die Funktion findet ihr Ende am'\0'. - Die Bibliothek hat fertige Funktionen für Mathematik in
math.h:sqrt,pow,roundundfabs, die eindoublezurückgeben.absfür Ganzzahlen steht instdlib.h.
Als Nächstes kommt das letzte kleine Projekt: geheime Nachrichten, die du mit eigenen Funktionen verschlüsselst und entschlüsselst. Danach, in der Lektion über Zeiger, erfährst du, was Adressen im Speicher sind, wie eine Funktion eine Variable des Codes ändern kann, der sie aufgerufen hat, und warum Arrays nicht kopiert werden.
So schreibst du es:
Anweisungen
- 1
Üben wir. Schreibe über
maineine Funktionist_gerademit einem Parameterzahlvom Typint, die einenboolzurückgibt:true, wenn die Zahl gerade ist, sonstfalse(füge#include <stdbool.h>hinzu). Schreibe darunter eine Funktionzaehle_gerademit zwei Parametern, einem Arrayzahlenund seineranzahl, die zurückgibt, wie viele Elemente des Arrays gerade sind. Verwende darinist_gerade. Gib am Ende vonmain, vorreturn 0;, das Ergebnis vonzaehle_gerade(zahlen, ANZAHL)mit einer Beschriftung aus:Gerade Zahlen: 4. - 2
Schreibe eine Funktion
mittelwertmit denselben zwei Parametern, die den Mittelwert der Elemente alsdoublezurückgibt. Gib ihn unter der vorigen Zeile mit zwei Nachkommastellen aus:Mittelwert: 5.67.