Static je klíčové slovo používané v programovacím jazyce C. Lze jej použít s proměnnými i funkcemi, tj. můžeme deklarovat statickou proměnnou i statickou funkci. Běžná proměnná je omezena na rozsah, ve kterém je definována, zatímco rozsah statické proměnné je v celém programu.
Statické klíčové slovo lze použít v následujících situacích:
Když je globální proměnná deklarována pomocí klíčového slova static, pak je známá jako statická globální proměnná. Je deklarován v horní části programu a jeho viditelnost je v celém programu.
Když je funkce deklarována pomocí statického klíčového slova známého jako statická funkce. Jeho životnost je po celou dobu programu.
Když je lokální proměnná deklarována pomocí klíčového slova static, pak je známá jako statická lokální proměnná. Paměť statické lokální proměnné je platná v celém programu, ale rozsah viditelnosti proměnné je stejný jako u automatických lokálních proměnných. Když však funkce změní statickou lokální proměnnou během prvního volání funkce, bude tato upravená hodnota dostupná také pro další volání funkce.
Když jsou členské proměnné deklarovány pomocí klíčového slova static ve třídě, pak se to nazývá statické členské proměnné. Mohou k nim přistupovat všechny instance třídy, nikoli konkrétní instance.
Členská funkce třídy deklarovaná pomocí klíčového slova static je známá jako statická metoda. Je přístupný pro všechny instance třídy, nikoli pro konkrétní instanci.
Pojďme to pochopit na příkladu.
#include int main() { printf('%d',func()); printf(' %d',func()); return 0; } int func() { int count=0; // variable initialization count++; // incrementing counter variable return count; }
Ve výše uvedeném kódu je volána funkce func(). Ve funkci func() se proměnná count aktualizuje. Jakmile funkce dokončí své provádění, paměť proměnné count bude odstraněna. Pokud nechceme počet odstranit z paměti, pak musíme proměnnou počet použít jako statickou. Pokud proměnnou deklarujeme jako statickou, pak proměnná nebude odstraněna z paměti, ani když funkce dokončí své provádění.
Výstup
1 1
Statická proměnná
Statická proměnná je proměnná, která přetrvává svou hodnotu napříč různými voláními funkcí.
Syntax
Syntaxe statické proměnné je uvedena níže:
static data_type variable_name;
Podívejme se na jednoduchý příklad statické proměnné.
#include int main() { printf('%d',func()); printf(' %d',func()); return 0; } int func() { static int count=0; count++; return count; }
Ve výše uvedeném kódu jsme proměnnou počet deklarovali jako statickou. Při volání funkce func() se hodnota count aktualizuje na 1 a během dalšího volání funkce se hodnota proměnné count stane 2. Můžeme tedy říci, že hodnota statické proměnné přetrvává ve volání funkce .
Výstup
1 2
Statická funkce
Jak víme, že nestatické funkce jsou ve výchozím nastavení globální, znamená to, že k funkci lze přistupovat i mimo soubor, ale pokud funkci deklarujeme jako statickou, omezuje to rozsah funkce. Statická funkce je přístupná pouze v rámci souboru.
myliverriclet
Statická funkce by vypadala takto:
static void func() { printf('Hello javaTpoint'); }
Rozdíly b/w statické a globální proměnné
Globální proměnné jsou proměnné, které jsou deklarovány mimo funkci. Tyto globální proměnné existují na začátku programu a jejich rozsah zůstává až do konce programu. Lze k němu přistupovat i mimo program.
Statické proměnné jsou omezeny na zdrojový soubor, ve kterém jsou definovány, tj. nejsou přístupné pro ostatní zdrojové soubory.
Jak statické, tak globální proměnné mají statickou inicializaci. Statická inicializace zde znamená, že pokud proměnné nepřiřadíme žádnou hodnotu, pak bude ve výchozím nastavení proměnné přiřazena hodnota 0.
Rozdíly č/b statická lokální a statická globální proměnná
Statická globální proměnná
Pokud je proměnná deklarována se statickým klíčovým slovem mimo funkci, pak je známá jako statická globální proměnná. Je přístupný po celou dobu programu.
Statická lokální proměnná
Proměnná s klíčovým slovem static je deklarována uvnitř funkce známé jako statická lokální proměnná. Rozsah statické lokální proměnné bude stejný jako u automatických lokálních proměnných, ale její paměť bude dostupná po celou dobu provádění programu. Když funkce změní hodnotu statické lokální proměnné během jednoho volání funkce, pak zůstane stejná i během dalšího volání funkce.
Vlastnosti statické proměnné
Vlastnosti statické proměnné jsou následující:
- Paměť statické proměnné je alokována v rámci statické proměnné.
- Jeho paměť je dostupná v celém programu, ale rozsah zůstane stejný jako u automatických lokálních proměnných. Své
- hodnota bude přetrvávat napříč různými voláními funkcí.
- Pokud proměnné nepřiřadíme žádnou hodnotu, pak výchozí hodnota bude 0.
- Ke globální statické proměnné nelze přistupovat mimo program, zatímco ke globální proměnné lze přistupovat z jiných zdrojových souborů.