Erklärung static

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Abend,


    Mein Name lautet CIBERKILLER.
    Und zwar bräuchte ich mal eine Erklärung von euch!


    Ich bräuchte eine Gewissheit für diese 2 Variablen Typen!
    Also wie ich in der Wiki auf Englisch nachgelesen habe (Mein Englisch ist schlecht ;) ), ist new für eine Globale Variable da und static für eine Lokale.
    Aber was genau ist nun der unterschied zwischen new & static?


    Bringt einer der 2 Variablen Typen vorteile im gegensatz zum anderen oder wieso sollte es für mich einen Grund geben static zu verwenden?


    z.B


    Was wäre allgemein besser: static Float:pos[4]; oder new Float:pos[4];


    Würde mich freuen wenn mir einer Gewissheit gibt



    Mit freundlichen Grüßen,


    CIBERKILLER.

  • Also Prinzipiell ist static für eine Zwischenspeicherung seines alten Wertes da ?


    Du kannst es als normale Variable verwenden.
    Der eigentliche Sinn ist eigentlich anders gedacht.
    Stell dir vor du willst zählen, wie oft das Command '/test' eingegeben wird.
    //OnPlayerCommandText:
    if(strcmp("/test",cmdtext,true))
    {
    static j;
    j++;
    printf("Das Command wurde nun %d mal eingegeben", j);
    }


    Diesen "Effekt" könntest du sonst nur mit einer globalen local erreichen.
    L.G.


    /e: Der Fall entscheidet, welche Variable besser geeignet ist.

  • Ah okay, vielen Dank endlich weis ich mal static so macht.


    Ich hätte noch eine Frage zu einem anderen Variablen Typen, und zwar "const".


    Also nach meinem Wissen ist der Variablen Typ const für eine Konstante Variable gedacht eine die man nicht manuell bearbeiten kann.
    Oder irre ich mich da?

  • Beitrag von Slash™ ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Um genau zu sein wird eine mit static deklarierte Variable nicht auf dem Stack gespeichert (im Stack werden lokale Variablen usw. gespeichert, die nach dem Verlassen des Gültigkeitsbereichs gelöscht werden).
    Welchen Effekt du damit erzielen kannst wurde schon oben gesagt.

    Main: CPU: Intel Core i5-4440 @ 3,10 GHz | CPU-Cooling: Matterhorn -PURE- | RAM: 16GB Crucial Ballistix Sport DDR3-1600 DIMM CL9-9-9-24 |
    Motherboard: ASRock B85M Pro4 | GPU: Sapphire Radeon R9 390X Nitro 8GB GDDR5 |

    SSD: Samsung SSD 840 Evo 500GB | Power Supply: 550 Watt Corsair CS Series Modular 80+ Gold | Case: beQuiet! Silent Base 800


    As I walk through the valley of the shadow of death
    I take a look at my life and realize there's nothin' left.

  • static kann sogar noch mehr.


    Angenommen wir haben ein Include, sollte man da Variablen mit static deklarieren, da sie dann vom Gamemode aus nicht aufgerufen werden können.


    Dadurch verhindert man z.B. doppelte Variablennamen-Nutzung ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S