- LiFePO4 Speicher Test         
Ergebnis 1 bis 5 von 5

Thema: Static int Problem

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2006
    Ort
    Hamburg
    Alter
    38
    Beiträge
    199

    Static int Problem

    Anzeige

    Praxistest und DIY Projekte
    Moin. Ich hab grade ein echtes Problem. Denk schon seit einiger zeit drüber nach, aber ich komme auf kein ergebniss. Erstmal das Programm:

    #include <stdio.h>

    int zaehlen ()
    {
    static int zahl=0;
    zahl++;
    return zahl;
    }

    main ()
    {
    int i, ergebnis;
    for (i=1; i<=12; i++)
    ergebnis = zaehlen();
    printf ("\n'ergebniss' hat den Wert %i", ergebnis);
    }

    Es kommt die ausgabe " 'ergebniss' hat den Wert 12 "
    Wenn ich statt "static int" einfach nur "int" nehme, kommt "1" als ergebniss raus. Das verstehe ich nicht. Ich weiß auch noch gar nicht so genau wie man mit static int umgeht. Kann mir das jemand erklähen?

    Dankeschön schonmal.

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Das ist doch ganz einfach und in jedem C Buch beschrieben,

    ohne static wird wie Variable jedesmal neu erzeugt um beim verlassen der Funktion zerstört.
    Mit static behält sie ihren Wert und ist bei jedem Funktionsaufruf verfügbar.

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    12.01.2007
    Beiträge
    93
    static heisst das die variable statisch auf dem stack liegen bleibt.

    vorzugsweise wirds sowas in ner ISR genutzt wenn ma die variable weiter benützen will. sie ist aber jedoch nur local benutzbar, sprich nur in der funktion oder auch in dem modul in der du sie als static definiert hast.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2006
    Ort
    Hamburg
    Alter
    38
    Beiträge
    199
    Dachte ich auch, aber dann müsste dieses Prog hier ja auch gehen, so wie ich mir das gedacht hab:

    #include <stdio.h>

    int wert()
    {
    static int zahl=0;
    return zahl;
    }

    main ()
    {
    int x, y;

    printf ("\nZahl 1 eingeben:");
    scanf ("%i", & x);
    printf ("\nZahl 1 und wert sind: %i\n", x+wert() );
    x+wert() = wert()

    printf ("\nZahl 2 eingeben:");
    scanf ("%i", & y);
    printf ("Zahl 2 und wert sind: %i\n", y+wert() );
    }

    Ich wollte erreichen, das man eine Zahl eingibt, "wert()" diese Zahl dann annimmt und die 2. Zahl dann drauf addiert. Nur mal um zu sehen, das "wert()" die Zahl behält.
    Kommt aber ne Fehlermeldung

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2006
    Ort
    Hamburg
    Alter
    38
    Beiträge
    199
    Habs endlich begriffen. Man kann ja nicht "wert ()" eine Zahl zuweisen. "wert()" ist ja nur die funktion, die die Variable "zahl" endhält.
    \/

    Naja, manchmal dauerts bei mir halt ein bisschen länger.
    Trotzdem danke!!!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests