Menu
Coddy logo textTech

Wertübergabe (Pass-by-Value)

Teil des Abschnitts Logic & Flow der C-Journey von Coddy — Lektion 25 von 63.

Wenn Sie eine Variable an eine Funktion in C übergeben, erhält die Funktion eine Kopie des Wertes dieser Variablen, nicht die Variable selbst. Dieses grundlegende Konzept wird als pass-by-value bezeichnet.

Folgendes passiert: Wenn Sie eine Variable x mit dem Wert 10 haben und diese an eine Funktion übergeben, erhält die Funktion ihre eigene separate Kopie dieses Wertes. Alle Änderungen, die die Funktion an dieser Kopie vornimmt, wirken sich nicht auf die ursprüngliche Variable in der aufrufenden Funktion aus.

void tryToChange(int num) {
    num = 99;  // Dies ändert nur die Kopie
}

int main() {
    int x = 10;
    tryToChange(x);
    // x ist immer noch 10, nicht 99
    return 0;
}

Dieses Verhalten schützt Ihre ursprünglichen Daten davor, versehentlich durch Funktionen geändert zu werden. Es bedeutet jedoch auch, dass Pass-by-Value nicht funktioniert, wenn Sie möchten, dass eine Funktion den Wert einer Variablen tatsächlich ändert. Das Verständnis dieser Einschränkung ist entscheidend, wenn Sie fortfahren, etwas über Pointer zu lernen und wie diese dieses Problem lösen können.

challenge icon

Aufgabe

Einfach

Schreiben Sie ein C-Programm, das das Konzept der Wertübergabe (Pass-by-Value) demonstriert, indem es versucht, eine Variable innerhalb einer Funktion zu ändern und beobachtet, dass die ursprüngliche Variable unverändert bleibt.

Ihr Programm sollte:

  1. Eine Funktion namens tryToModify erstellen, die einen Integer-Parameter namens number entgegennimmt
  2. Innerhalb der Funktion tryToModify den Wert 50 zum Parameter number addieren
  3. Innerhalb der Funktion tryToModify den geänderten Wert im Format Inside function: [value] ausgeben
  4. In der main-Funktion eine Integer-Variable namens original deklarieren und sie mit dem Wert 25 initialisieren
  5. Den ursprünglichen Wert vor dem Funktionsaufruf im Format Before function call: [value] ausgeben
  6. Die Funktion tryToModify aufrufen und die Variable original als Argument übergeben
  7. Nach dem Funktionsaufruf den Wert von original erneut im Format After function call: [value] ausgeben

Ihre Ausgabe sollte zeigen, dass der Wert der ursprünglichen Variable trotz der Änderung innerhalb der Funktion unverändert bleibt:

Before function call: 25
Inside function: 75
After function call: 25

Diese Herausforderung demonstriert das grundlegende Konzept der Wertübergabe (Pass-by-Value) in C, bei dem Funktionen Kopien von Variablen erhalten und nicht die Variablen selbst. Alle am Parameter innerhalb der Funktion vorgenommenen Änderungen wirken sich nicht auf die ursprüngliche Variable in der aufrufenden Funktion aus.

Spickzettel

In C erhalten Funktionen eine Kopie von Variablenwerten, nicht die Variablen selbst. Dies wird als Wertübergabe (pass-by-value) bezeichnet.

Wenn Sie eine Variable an eine Funktion übergeben, wirken sich alle innerhalb der Funktion vorgenommenen Änderungen nur auf die Kopie aus, während die ursprüngliche Variable unverändert bleibt:

void tryToChange(int num) {
    num = 99;  // Dies ändert nur die Kopie
}

int main() {
    int x = 10;
    tryToChange(x);
    // x ist immer noch 10, nicht 99
    return 0;
}

Dieses Verhalten schützt Ihre ursprünglichen Daten davor, versehentlich durch Funktionen geändert zu werden, bedeutet aber auch, dass die Wertübergabe nicht funktioniert, wenn Sie möchten, dass eine Funktion den Wert einer Variablen tatsächlich ändert.

Probier es selbst

#include <stdio.h>

// TODO: Schreiben Sie hier Ihre tryToModify-Funktion hier

int main() {
    // TODO: Schreiben Sie hier Ihren Code
    // 1. Deklarieren und initialisieren Sie die ursprüngliche Variable
    // 2. Geben Sie den Wert vor dem Funktionsaufruf aus
    // 3. Rufen Sie die tryToModify-Funktion auf
    // 4. Geben Sie den Wert nach dem Funktionsaufruf aus
    
    return 0;
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logic & Flow