locale variable mit static definieren
-
Guten Abend,
ich habe in einem C Buch gelesen, dass mit static angelegte locale variablen ihren Wert auch nach verlassen der Funktion behlaten. Dazu habe ich folgendes Programm zum Ausprobieren ausgeführt mit unerwartetem Ergebnis:
#include <stdio.h> int Summe(int, int); int main(void) { int k; k=Summe(4,6); //hier sollte 10 ausgegeben printf("%d\n",k); //hier sollte 20 ausgegeben, da Gesamtsumme=10 und wird wegen static nicht //mit 0 initialisiert beim zweiten Aufruf der Funktion Summe printf("%d\n",k); return 0; } int Summe(int a, int b) { static int Gesamtsumme=0; Gesamtsumme=Gesamtsumme+a+b; return Gesamtsumme; }
kann mir jemand helfen ?
danke im Voraus
-
Du Witzbold rufst die Funktion ja auch kein zweites Mal auf.
-
wie könnte ich das Programm ändern, so dass ich den Unterschied wegen static festellen kann
-
wie könnte ich das Programm ändern, so dass ich den Unterschied wegen static festellen kann
-
Indem du die Funktion *trommelwirbel* nochmal aufrufst.
-
Oder so
#include <stdio.h> int Summe(int, int); int k() { return Summe(4,6); } int main(void) { //hier sollte 10 ausgegeben printf("%d\n",k()); //hier sollte 20 ausgegeben, da Gesamtsumme=10 und wird wegen static nicht //mit 0 initialisiert beim zweiten Aufruf der Funktion Summe printf("%d\n",k()); return 0; } int Summe(int a, int b) { static int Gesamtsumme=0; Gesamtsumme=Gesamtsumme+a+b; return Gesamtsumme; }
-
Oh, ich habe noch eine bessere Idee. Aber wehe, Du benutzt irgendwo den Buchstaben 'k' :p
#include <stdio.h> int Summe(int, int); #define k (Summe(4,6)) int main(void) { //hier sollte 10 ausgegeben printf("%d\n",k); //hier sollte 20 ausgegeben, da Gesamtsumme=10 und wird wegen static nicht //mit 0 initialisiert beim zweiten Aufruf der Funktion Summe printf("%d\n",k); return 0; } int Summe(int a, int b) { static int Gesamtsumme=0; Gesamtsumme=Gesamtsumme+a+b; return Gesamtsumme; }
-
danke leute und einen schönen Abend wünsche ich euch
-
Wirdbald schrieb:
Oh, ich habe noch eine bessere Idee. Aber wehe, Du benutzt irgendwo den Buchstaben 'k' :p
...Das nenn' ich mal Elegant!
(Oder sollte ich besser sagen: Hinterfotzig
)