📘 Kapitel 4 · Funktionen & Strukturierung

Parameter und
Rückgabewerte

Eingaben übergeben · return · Mehrere Parameter · Rückgabetypen

17 / 30 Units
Ömer
Kapitel 4: Funktionen & Strukturierung ~45 Min. Theorie + Simulator + Quiz + Spickzettel
Ömer
Ömer sagt:

Parameter machen Funktionen flexibel – und Rückgabewerte machen sie nützlich. Eine Funktion max(a, b) ist tausendmal besser als tausend if-Blöcke!

Parameter – Eingaben übergeben

parameter.cC
void quadrat(int n) {        // n = Parameter
    printf("%d²=%d\n", n, n*n);
}
int main() {
    quadrat(5);  // Argument: 5
    quadrat(12); // Argument: 12
}

Rückgabewerte – return

return.cC
int maximum(int a, int b) {
    if (a > b) return a;
    return b;
}
int main() {
    int m = maximum(7, 12);
    printf("Max: %d\n", m);  // 12
}

Typische Muster

SignaturEinsatz
void f()Ausgabe, keine Eingabe, kein Ergebnis
void f(int x)Ausgabe mit Parameter
int f(int x)Berechnung zurückgeben
float f(float a, float b)Komma-Berechnung

Call by Value – Wichtiges Konzept

In C wird beim Funktionsaufruf immer eine Kopie des Wertes übergeben. Änderungen am Parameter innerhalb der Funktion haben keinen Einfluss auf die ursprüngliche Variable.

call_by_value.cC
void verdoppele(int n) {
    n = n * 2;  // ändert nur die lokale Kopie!
}
int main() {
    int x = 5;
    verdoppele(x);
    printf("%d\n", x);  // Immer noch 5!
}
▶ Ausgabe
5

Vorschau: Zeiger (Pointer)

Um den Originalwert wirklich zu verändern, braucht man einen Zeiger (kommt in einem späteren Kapitel):
void verdoppele(int *n) { *n = *n * 2; }
Dann übergibt man die Adresse: verdoppele(&x);

Häufige Fehler

Warnung: Typische Fehler mit Parametern & Rückgabewerten

  • Return ohne Wert in non-void Funktion: int berechne() { return; } – der Compiler erwartet einen Wert nach return. Undefiniertes Verhalten!
  • Falscher Rückgabetyp: Eine int-Funktion die einen float-Wert zurückgibt schneidet die Nachkommastellen ab. Beispiel: int f() { return 3.9f; } ergibt 3.
  • Parameter-Reihenfolge vergessen: Bei float flaeche(float breite, float hoehe) ist der Aufruf flaeche(hoehe, breite) legal aber falsch – C prüft nur den Typ, nicht die Bedeutung.

⚡ Code-Simulator

Schreibe eigene Funktionen und teste sie – der Simulator zeigt printf-Ausgaben:

C Simulator – Unit 17 – Funktionen
▶ Ausgabe
– Klicke AUSFÜHREN –
Ömer
Ömer sagt:

Schreibe eigene Funktionen und ändere die Argumente beim Aufruf. So siehst du direkt wie Funktionen Daten verarbeiten!

🎯 Wissens-Quiz

Frage 1
Was ist der Unterschied zwischen Parameter und Argument?
AKein Unterschied
BParameter steht in der Definition, Argument beim Aufruf
CParameter ist der Wert, Argument der Name
DArgument kommt zuerst
Frage 2
Welcher Rückgabetyp ist korrekt für eine Funktion die float zurückgibt?
Aint
Bvoid
Cfloat
Ddouble
Frage 3
Was macht 'return' in einer Funktion?
ASpringt zu main()
BGibt einen Wert zurück und beendet die Funktion
CGibt nichts zurück
DRuft die Funktion nochmal auf
Frage 4
Wie viele return-Anweisungen kann eine Funktion haben?
AGenau eine
BMaximal zwei
CBeliebig viele
DKeine
Frage 5
Was gibt maximum(5, 5) zurück?
A0
B5
CFehler
D10
Frage 6
Was ist "Call by Value"?
ADie Funktion verändert die Original-Variable direkt
BDie Funktion erhält einen Zeiger auf die Variable
CDer Funktion wird eine Kopie des Wertes übergeben – das Original wird nicht verändert
DDer Rückgabewert wird ignoriert
Frage 7
Was passiert bei int f() { return; }?
ADie Funktion gibt 0 zurück
BDie Funktion gibt nichts zurück – das ist OK
CDas Programm stürzt zur Laufzeit ab
DCompilerfehler – non-void Funktion braucht einen Rückgabewert
Frage 8
Wie viele Werte kann eine Funktion mit return zurückgeben?
ABeliebig viele
BGenau einen
CMaximal zwei
DKeinen – return ist nur für void

📋 Spickzettel

Parameter & Return
Typ Name(Typ par)Parameter-Syntax
return Wert;Rückgabewert
void = kein returnKein Ergebnis
int f(int a,int b)Mehrere Parameter
Häufige Typen
int f(int,int)Ganzzahl-Berechnung
float f(float,float)Komma-Berechnung
void f(int)Ausgabe mit Param
int f(int)Prüfung (0/1)

✅ Checkliste Unit 17

  • Ich kann Funktionen mit Parametern definieren
  • Ich kann Funktionen mit Rückgabewert schreiben
  • Ich kenne den Unterschied zwischen Parameter und Argument
  • Ich verstehe wann return benutzt wird