www.amapro.cz & David Bazala [Programování]

Otevře webové stránky AmaPro


Otevře hlavní stránku společnosti AmaPro
Internetové stránky určené pro studenty středních a vysokých odborných škol.


amapro.cz/odkazy Projekt eliminuje vyhledávání klíčových slov na komerčních stránkách a v e-schopech.



Nový projekt AmaPro

static

 

Jedná se o příkaz k určení modifikátoru paměťové třídy. Tento příkaz před proměnnou a jejím typem dává překladači informaci jak s danou proměnnou naložit v době překladu a optimalizace. Pokud máme záměr použít paměťovou třídu static, musíme ji vždy uvést. Překladač nám zpravidla vždy vyhoví.

 

Paměťová třída static je překladačem alokovaná v datové části paměti a od počátku alokace existuje (na rozdíl od auto) až do konce programu. Proměnná static si ponechává poslední hodnotu až do doby další modifikace. Static má ještě tu vlastnost, že při absenci konstruktoru či explicitní inicializaci inicializuje hodnotu na 0, NULL nebo prázdný znak. Static je vhodné používat jako globální proměnné. Jinak akceptuje viditelnost blokové hierarchie a to i když existuje.

 

Formát modifikátoru paměťové třídy static:

 

static int nazev    => static int nazev = 0;

 

Pokud neexistuje konstruktor proměnné, nastaví se implicitně na 0, NULL nebo prázdný znak. Explicitně lze hodnotu inicializovat dle povoleného rozsahu pro daný datový typ.

 

Specifika paměťové třídy static

 

Některé překladače implementují řádek

static int a,b,c;

jako proměnnou a static a zbytek b a c jako auto. Je proto bezpečnější deklarovat static proměnné individuálně.

static int a;

static int b;

static int c;

 

PŘÍKLAD: static_1

int vlastni(void)                                                  //hlavička nové funkce, vrací int, nevstupuje nic

{                                                                             //počátek bloku příkazu pro vlastni

static int x;                                                           //alokuje v datové oblasti 4 Byte

x=random(200);                                   //volá funkci random a výsledek ukladá do vyhrazené datové oblasti

return x;                                                                //ze zásob. bere původní odsk. adresu a ukazatele do datové oblasti

}                                                                            //konec bloku příkazu pro vlastni

//------------------------------------------------------

int main(int argc, char* argv[])                         //povinná hlavička konzolové aplikace

{                                                                            //počátek hlavního bloku příkazů

for(int i=0;i<10;i++)                                            //alokuje 4 Byte jako int v zásobníku (implicitně auto)

   {                                                                         //začátek těla příkazu for

   cout<<vlastni()<<endl;                                  //do výstupního proudu vstupuje výsledek volané funkce

   }                                                                         //konec těla příkazu for

getchar();                                                             //čekání na entr

return 0;                                                               //výstup z konzolové aplikace

}                                                                            //konec hlavního bloku příkazů

 

Program demonstruje použití příkazu static při alokaci paměťového prostoru pro proměnnou x. Proměnná i, která zaujme své místo (resp.4 byte) v zásobníku, bude z cyklu for. V těle cyklu for je volání funkce vlastní() (subrutiny), která způsobí alokaci 4 Byte v datové oblasti. Do nich funkce random zapíše náhodné hodnoty a příkaz return ukazuje na místo oněch 4 Byte v datové oblasti. Za returnem končí funkce vlastní() ale nikoliv existence proměnné x (respektive 4 Byte v datové oblasti). V cyklu for je volání cout, do niž vstupuje výsledek z volané funkce vlastní(). Výsledek je odvozen od ukazatele posledního return. Tedy na 4 Byte v datové oblasti. Vše proběhne 10x, ale proměnná x nebude alokována ale jen modifikována. Informace o tom kolikrát se již tak stalo bude též uložená v zásobníku jako proměnná int i. Po ukončení těla příkazu for  tato alokace zanikne, ale alokace pro x zanikne až po ukončení programu.

 

 

 



Abecední seznam všech článků Vyhledání pojmů ve článcích




CSS html vlasnosti
Přehled CSS vlastností pro tvorbu webu
datove_zdroje/stranky/css
Odkazník o programování
Rejstřík klíčových slov pro programování ve vyhledávačích.
programovani/programovani.php
PHP práce s poli
Práce s poli a položkamy v PHP.
stranky/php_array
Popis jazaka C
Průvodce příkazy programovacího jazyka C.
programovani/jazyk_c
Číslicové počítače
Základní aritmetické operace, logické operace a vztahy mezi nimi.
programovani/cislicove_pocitace
Mikropočítače
Seznámení s obecnou problematikou počítačů a mikropočítačů.
programovani/mikropocitace
JavaScript - ukázky
Příklady užití některých často používaných efektů na stránky.
katalogy/javascript
Řetězce PHP
Informace o chování řetězců v programování PHP.
php/obsah_php_string.php
Objektové programování c++
Jazyk C, Objektové programování c++
internet/katalog_programovani_c
Otevře stránky Fulltextové vyhledávání na celém serveru
Digitalizované odborné knihy
Velká encyklopedie pojmů a zkratek
Česko - anglicko - německý technický slovník
Klasický katalog firem, služeb a stránek
OnLine překladač  vět a textů (nepoužívá Google)
Stránky pro chvíle oddechu od studia, relaxace
Katalog českých firem dle technologií
Internetový odkazník
Otevře hlavní stranu pro oddíl programování




 Wikipedie   Seznam stránek   Kapitoly témat   Významné servery   Klíčová slova 








Otevře hlavní stranu společnosti AmaPro

Všechna práva vyhrazena. Určeno jen pro osobní využití. Bez předchozího písemného souhlasu správce www.amapro.cz je zakázána jakákoli další publikace, přetištění nebo distribuce jakéhokoli materiálu nebo části materiálu zveřejněného na www.amapro.cz a to včetně šíření prostřednictvím elektronické pošty. Články, jejichž přímým autorem není amapro.cz lze publikovat pouze se souhlasem jejich majitelů či administrátoru příslušného webu.