Deklaration, Typ und Rückgabe
Aus der vorherigen Lektion wurde der grundlegende Aufbau von Funktionen vermittelt:
main.c
123456func_type func_name(arguments_placeholder) { // The core functionality of the function // The resulting outcome after function execution return function_output; }
Deklaration
Vor der Verwendung einer Funktion muss diese deklariert werden. Das Aufrufen einer Funktion vor ihrer Deklaration führt zu einem Fehler.
Eine Funktion kann entweder gleichzeitig mit ihrer Definition deklariert werden (wie oben dargestellt) oder durch ein Prototyp, auf das am Ende dieses Abschnitts als Bonus eingegangen wird.
Funktionstypen und Rückgabewerte
Der Typ der Funktion informiert den Compiler über den Datentyp des Funktionsergebnisses. Wenn beispielsweise unsere Funktion die Summe von zwei Ganzzahlen berechnet, erwarten wir als Ergebnis eine Ganzzahl.
main.c
12345678int sumFunction() { int number1 = 6; int number2 = 10; int result = number1 + number2; return result; }
Eine Nichtübereinstimmung zwischen dem Datentyp und dem Rückgabetyp kann dazu führen, dass die Funktion (oder sogar das gesamte Programm) fehlerhaft arbeitet.
main.c
12345678int sumFunction() { double number1 = 6.985; double number2 = 231.465; double result = number1 + number2; return result; // This will lead to an incorrect result }
Beim Addieren von Nicht-Ganzzahlwerten wird ein präzises Ergebnis erwartet. Aufgrund von Typinkonsistenzen ist das Resultat jedoch fehlerhaft.
main.c
1234567891011121314151617#include <stdio.h> int func() { double number1 = 6.985; // Not `int` nubmer double number2 = 231.765; // Not `int` number double result = number1 + number2; return result; // Output of function } int main() { // Call and immediately printing the result of our function printf("Expected Result is 238.75, but result is %d\n", func()); return 0; }
Zwei Hauptfaktoren führen zu diesem Fehler:
- Falscher Rückgabetyp (sollte
doublesein); - Falscher Formatbezeichner (
%d) in der Funktionprintf()(sollte%fsein).
Die korrekte Version wäre:
main.c
1234567891011121314151617#include <stdio.h> double func() { double number1 = 6.985; // `int` nubmer double number2 = 231.765; // `int` number double result = number1 + number2; return result; // Output of function } int main() { // Print the result of our function printf("Expected Result is 238.75, and result is %f\n", func()); return 0; }
Dies bedeutet, dass das Ergebnis der Funktion direkt Variablen/Arrays zugewiesen oder sogar an andere Funktionen übergeben werden kann. Ein Beispiel hierfür ist die Verwendung des Ergebnisses mit der Funktion printf in den oben genannten Szenarien.
Der Formatbezeichner für Gleitkommazahlen ist %f.
Es ist ebenfalls erwähnenswert, dass eine Funktion mehrere return-Anweisungen enthalten kann, wobei jede unter unterschiedlichen Bedingungen aktiviert wird.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Can you explain more about function prototypes?
What happens if I use the wrong return type in my function?
Can you give an example of a function with multiple return statements?
Awesome!
Completion rate improved to 2.63
Deklaration, Typ und Rückgabe
Swipe um das Menü anzuzeigen
Aus der vorherigen Lektion wurde der grundlegende Aufbau von Funktionen vermittelt:
main.c
123456func_type func_name(arguments_placeholder) { // The core functionality of the function // The resulting outcome after function execution return function_output; }
Deklaration
Vor der Verwendung einer Funktion muss diese deklariert werden. Das Aufrufen einer Funktion vor ihrer Deklaration führt zu einem Fehler.
Eine Funktion kann entweder gleichzeitig mit ihrer Definition deklariert werden (wie oben dargestellt) oder durch ein Prototyp, auf das am Ende dieses Abschnitts als Bonus eingegangen wird.
Funktionstypen und Rückgabewerte
Der Typ der Funktion informiert den Compiler über den Datentyp des Funktionsergebnisses. Wenn beispielsweise unsere Funktion die Summe von zwei Ganzzahlen berechnet, erwarten wir als Ergebnis eine Ganzzahl.
main.c
12345678int sumFunction() { int number1 = 6; int number2 = 10; int result = number1 + number2; return result; }
Eine Nichtübereinstimmung zwischen dem Datentyp und dem Rückgabetyp kann dazu führen, dass die Funktion (oder sogar das gesamte Programm) fehlerhaft arbeitet.
main.c
12345678int sumFunction() { double number1 = 6.985; double number2 = 231.465; double result = number1 + number2; return result; // This will lead to an incorrect result }
Beim Addieren von Nicht-Ganzzahlwerten wird ein präzises Ergebnis erwartet. Aufgrund von Typinkonsistenzen ist das Resultat jedoch fehlerhaft.
main.c
1234567891011121314151617#include <stdio.h> int func() { double number1 = 6.985; // Not `int` nubmer double number2 = 231.765; // Not `int` number double result = number1 + number2; return result; // Output of function } int main() { // Call and immediately printing the result of our function printf("Expected Result is 238.75, but result is %d\n", func()); return 0; }
Zwei Hauptfaktoren führen zu diesem Fehler:
- Falscher Rückgabetyp (sollte
doublesein); - Falscher Formatbezeichner (
%d) in der Funktionprintf()(sollte%fsein).
Die korrekte Version wäre:
main.c
1234567891011121314151617#include <stdio.h> double func() { double number1 = 6.985; // `int` nubmer double number2 = 231.765; // `int` number double result = number1 + number2; return result; // Output of function } int main() { // Print the result of our function printf("Expected Result is 238.75, and result is %f\n", func()); return 0; }
Dies bedeutet, dass das Ergebnis der Funktion direkt Variablen/Arrays zugewiesen oder sogar an andere Funktionen übergeben werden kann. Ein Beispiel hierfür ist die Verwendung des Ergebnisses mit der Funktion printf in den oben genannten Szenarien.
Der Formatbezeichner für Gleitkommazahlen ist %f.
Es ist ebenfalls erwähnenswert, dass eine Funktion mehrere return-Anweisungen enthalten kann, wobei jede unter unterschiedlichen Bedingungen aktiviert wird.
Danke für Ihr Feedback!