Skocz do zawartości

Zmienna globalna a zmienna statyczna


Muzzik
# CSH External VIP Project

Masz dosyć problemów z czynnikiem zaufania w CS2 lub notorycznymi banami?

Sprawdź CSH External VIP Project.


Więcej informacji  

Rekomendowane odpowiedzi

static-zmienna statyczna ulokowana w danym obszarze pamięci przechowywana w nim przez cały czas działania programu(tak jak globalna). Różnica między zmienną globalną a zmienną lokalną statyczną jest taka, że zmienna static zadeklarowana wewnątrz funkcji jest widoczna tylko w niej, podam przykład

 

 

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "static"
#define VERSION "1.0"
#define AUTHOR "grankee"


public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    jedynka()
    dwojka()
    jedynka()
    jedynka()
    dwojka()
    dwojka()
}
public jedynka()
{
    static liczba //domyślnie zmienna statyczna zawsze przyjmuje wartość początkową 0
        liczba=liczba+2
    client_print(1,print_chat,"zmienna liczba z funkcji jedynka ma wartosc:%d",liczba)
}
public dwojka()
{
    static liczba2
        liczba2++
    client_print(1,print_chat,"zmienna liczba z funkcji dwojka ma wartosc:%d",liczba2)
}
w rezultacie graczowi o id=1 zostanie wyprintowane

 

zmienna liczba z funkcji jedynka ma wartosc:2
zmienna liczba z funkcji dwojka ma wartosc:1
zmienna liczba z funkcji jedynka ma wartosc:4
zmienna liczba z funkcji jedynka ma wartosc:6
zmienna liczba z funkcji dwojka ma wartosc:2
zmienna liczba z funkcji dwojka ma wartosc:3
Jak zapewne zauważyliście "przydomek" static sprawia, że zmienna zadeklarowana wewnątrz funkcji mimo iż jest lokalna nie przestaje istnieć w momencie gdy kończy się jej zakres ważności.

 

Czyli z polskiego na nasze to będzie tak: po każdym wykonaniu się funkcji wartość zmiennej zadeklarowanej jako static zostaje zamrożona, aż do momentu kolejnego wykonania tej funkcji, wtedy jest odmrażana i ma taką wartość jak miała w momencie zamrożenia.

 

W tym miejscu przypominam, że pluginy ładowane są co mapę i aby zachować wartość zmiennej na następną mapę niezbędny jest zapis do pliku.

 

Zmienna globalna jest widziana przez cały czas wykonywania kodu, jednak widziana w każdym miejscu programu co często jest zbędne, dlatego jeśli chcemy zmienną widzieć tylko w danym zakresie kodu, ale tak by przy następnym wykonywaniu go zmienna "wiedziała" jaką ostatnio miała wartość i takową posiadała to używamy zmiennej static.

 

 

 

Źródło amxx.pl

Zapraszam na mojego twittera:

@Muzzikx

Odnośnik do komentarza

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Regulamin. Polityka prywatności