Static je kľúčové slovo používané v programovacom jazyku C. Dá sa použiť s premennými aj funkciami, t.j. môžeme deklarovať statickú premennú aj statickú funkciu. Bežná premenná je obmedzená na rozsah, v ktorom je definovaná, zatiaľ čo rozsah statickej premennej je v celom programe.
Statické kľúčové slovo možno použiť v nasledujúcich situáciách:
Keď je globálna premenná deklarovaná so statickým kľúčovým slovom, potom je známa ako statická globálna premenná. Je deklarovaný v hornej časti programu a jeho viditeľnosť je v celom programe.
Keď je funkcia deklarovaná so statickým kľúčovým slovom známym ako statická funkcia. Jeho životnosť je počas celého programu.
Keď je lokálna premenná deklarovaná so statickým kľúčovým slovom, potom je známa ako statická lokálna premenná. Pamäť statickej lokálnej premennej je platná v celom programe, ale rozsah viditeľnosti premennej je rovnaký ako pri automatických lokálnych premenných. Keď však funkcia modifikuje statickú lokálnu premennú počas prvého volania funkcie, potom bude táto upravená hodnota dostupná aj pre ďalšie volanie funkcie.
Keď sú členské premenné deklarované so statickým kľúčovým slovom v triede, potom je to známe ako statické členské premenné. Môžu k nim pristupovať všetky inštancie triedy, nie konkrétna inštancia.
Členská funkcia triedy deklarovaná so statickým kľúčovým slovom je známa ako statická metóda. Je prístupný pre všetky inštancie triedy, nie pre konkrétnu inštanciu.
Poďme to pochopiť na príklade.
#include int main() { printf('%d',func()); printf(' %d',func()); return 0; } int func() { int count=0; // variable initialization count++; // incrementing counter variable return count; }
Vo vyššie uvedenom kóde sa volá funkcia func(). Vo funkcii func() sa premenná count aktualizuje. Hneď ako funkcia dokončí svoje vykonávanie, pamäť premennej počtu sa odstráni. Ak nechceme počet odstrániť z pamäte, potom musíme premennú počet použiť ako statickú. Ak premennú deklarujeme ako statickú, potom sa premenná neodstráni z pamäte ani keď funkcia dokončí svoje vykonávanie.
Výkon
1 1
Statická premenná
Statická premenná je premenná, ktorá si zachováva svoju hodnotu pri rôznych volaniach funkcií.
Syntax
Syntax statickej premennej je uvedená nižšie:
static data_type variable_name;
Pozrime sa na jednoduchý príklad statickej premennej.
#include int main() { printf('%d',func()); printf(' %d',func()); return 0; } int func() { static int count=0; count++; return count; }
Vo vyššie uvedenom kóde sme premennú počet deklarovali ako statickú. Keď sa zavolá funkcia func(), hodnota count sa aktualizuje na 1 a pri ďalšom volaní funkcie sa hodnota premennej count stane 2. Preto môžeme povedať, že hodnota statickej premennej pretrváva vo volaní funkcie .
Výkon
1 2
Statická funkcia
Keďže vieme, že nestatické funkcie sú predvolene globálne, znamená to, že k funkcii je možné pristupovať aj mimo súboru, ale ak funkciu deklarujeme ako statickú, obmedzuje to rozsah funkcie. K statickej funkcii je možné pristupovať iba v rámci súboru.
Statická funkcia bude vyzerať takto:
static void func() { printf('Hello javaTpoint'); }
Rozdiely čiernobielej statickej a globálnej premennej
Globálne premenné sú premenné, ktoré sú deklarované mimo funkcie. Tieto globálne premenné existujú na začiatku programu a ich rozsah zostáva až do konca programu. Dá sa k nemu dostať aj mimo programu.
Statické premenné sú obmedzené na zdrojový súbor, v ktorom sú definované, t.j. nie sú prístupné pre ostatné zdrojové súbory.
Statické aj globálne premenné majú statickú inicializáciu. Statická inicializácia tu znamená, že ak premennej nepriradíme žiadnu hodnotu, potom bude premennej štandardne priradená hodnota 0.
Rozdiely čiernobielej statickej lokálnej a statickej globálnej premennej
Statická globálna premenná
Ak je premenná deklarovaná so statickým kľúčovým slovom mimo funkcie, potom je známa ako statická globálna premenná. Je prístupný počas celého programu.
Statická lokálna premenná
Premenná so statickým kľúčovým slovom je deklarovaná vo vnútri funkcie, ktorá je známa ako statická lokálna premenná. Rozsah statickej lokálnej premennej bude rovnaký ako pri automatických lokálnych premenných, ale jej pamäť bude dostupná počas celého vykonávania programu. Keď funkcia upraví hodnotu statickej lokálnej premennej počas jedného volania funkcie, potom zostane rovnaká aj počas nasledujúceho volania funkcie.
Vlastnosti statickej premennej
Nasledujú vlastnosti statickej premennej:
- Pamäť statickej premennej je alokovaná v rámci statickej premennej.
- Jeho pamäť je dostupná v celom programe, ale rozsah zostane rovnaký ako pri automatických lokálnych premenných. Jeho
- hodnota bude pretrvávať pri rôznych volaniach funkcií.
- Ak premennej nepriradíme žiadnu hodnotu, predvolená hodnota bude 0.
- Ku globálnej statickej premennej nie je možné pristupovať mimo programu, zatiaľ čo ku globálnej premennej je možné pristupovať prostredníctvom iných zdrojových súborov.