Pointer in C?

3 Antworten

Naja. Also die Funktion briefkasten gibt einen Wert zurück. Dieser Wert muss allerdings einer Variablen zugewiesen werden.

Wenn du

brief = briefkasten();

aufrufst, wird der Wert, den die Funktion briefkasten zurückliefert in der Variablen brief gespeichert.

wenn du nur

briefkasten();

aufrufst, wird auch ein Wert zurückgegeben (also die 0), aber dieser Wert verpufft sozusagen, weil keine Zuweisung stattfindet.

Du kannst also beide Möglichkeiten nutzen. Du kannst entweder die Adresse reingeben und den Wert innerhalb der Funktion ändern. Oder du kannst ein Konstrukt nutzen wie

brief = briefkasten();

welches den Wert durch den Rückgabewert ändert. Es gibt andere Programmiersprachen, wie z.B. Java, die auf Pointer verzichten, da kann man beispw. die Adresse einer Variablen nicht einfach übergeben und die Variable dann innerhalb der Funktion ändern. Dort geht nur

brief = briefkasten();

sowas. C bietet dir also mehrere Möglichkeiten, die allerdings auch dazu führen können, dass der Code eben schwerer verständlich ist oder Fehler eher auftauchen. :)

LuisBuzZ 
Fragesteller
 10.09.2020, 00:14

Danke für die super Erklärung :)

1
int res=briefkasten(&brief);
printf("res: %d, brief: %d\n",res, brief);

Du scheinst ganz grundlegende Verständnisprobleme zu haben, wie Funktionsaufrufe funktionieren.

Vergleiche:

y=2x

y wird der Wert in Abhängigkerit von x zugewiesern, schreiben wir es um: f(x)=2x.

int f(int x){
    return 2*x;
}

[main]
int y=f(12);

der Rückgabewert der Briefkastenfunktion wird nie genutzt