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




Popis jazaka C
Průvodce příkazy programovacího jazyka C.
programovani/jazyk_c
Objektové programování c++
Jazyk C, Objektové programování c++
internet/katalog_programovani_c
Weby o programování
Odkazy na velké servery o programování a vývoji SW
odkazy/programovani
Databáze ikon
Ikony a malé obrázky pro tlačítka či jiné použití
datove_zdroje/icony/icony.php
Programování PHP
Články o programování webových stránek pomocí PHP.
internet/katalog_programovani_php
Hybridní počítače
Počítače, jejichž základem je standardní analogová počítací síť.
knihy/hybridni_pocitace
Popis HTML formátu
Velikost textu, barva textu, rozvržení stránky, obrázky, barva pozadí se zapisuje pomocí HTML příkazů.
stranky/html_tag
CSS html vlasnosti
Přehled CSS vlastností pro tvorbu webu
datove_zdroje/stranky/css
Mikropočítače a jejich programování
Nízká forma programování, assembler a struktura procesorů.
knihy/mikropocitace/obsah_mikro1.php
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.