lokale Variable als return-wert
-
Hallo,
im K&R ist folgendes Beispielprogramm zur Erklaerung von Funktionen:
#include <stdio.h> int power(int m, int n); main() { int i; for(i = 0; i < 10; ++i) printf("%d %d %d\n", i, power(2,i), power(-3,i)); return 0; } int power(int base, int n) { int i, p; p = 1; for(i = 1; i <= n; ++i) p = p * base; return p; }
Eine Sache, die ich nicht daran verstehe, ist, wie die Variable
p, die eigentlich lokal in der Funktion power() definiert ist, dem
Hauptprogramm uebergeben werden kann. Eigentlich ist es doch ein
Gluecksspiel, ob diese Variable nach Beenden der Funktion noch
vorhanden ist oder nicht. Wo ist mein Denkfehler?Danke fuer Antworten
-
Es wird der Wert der Variablen p zurückgegeben, keine Referenz auf sie. In der Tat wäre es undefiniertes Verhalten, wenn da
int *power(...) { int p; ... return &p; /* KAWUMM! */ }
stünde.
-
gigg schrieb:
Eine Sache, die ich nicht daran verstehe, ist, wie die Variable
p, die eigentlich lokal in der Funktion power() definiert ist, dem
Hauptprogramm uebergeben werden kann. Eigentlich ist es doch ein
Gluecksspiel, ob diese Variable nach Beenden der Funktion noch
vorhanden ist oder nicht. Wo ist mein Denkfehler?Es wird nicht die Variable selbst zurückgegeben (die existiert in der Tat nach der Funktion nicht mehr), sondern der Wert der Variablen.
-
Alles klar.
Vielen Dank fuer die Antworten