Tárolási osztály előírást

Szabványos C négy támogatott tárolási osztály megadó:

Szabványok S89 és C99 szintaxis a kényelem azt állítják, hogy a typedef - minősítő osztály memóriát. Azonban typedef nem a megfelelő adja meg. Több typedef tekinthető könyvet.

megadó extern

Mielőtt fontolóra a tervező extern. Meg kell foglalkozni röviden az elrendezés programot. A C szerkesztése közben változó kapcsolatokat lehet használni egy három kötéssel belső, külső, vagy sem tartozó ilyen típusú. (Az utóbbi esetben szerkesztés link mutat rá nem vonatkozik.) Általában a nevét funkciók és globális változók használt külső kapcsolat. Ez azt jelenti, hogy miután az elrendezés elérhetőek lesznek az összes fájlok, amelyek segítségével a program. A tárgyak deklarált a tervező statikus látható fájl szinten, belső összekötő után visszük az elrendezés, akkor csak belül lesz elérhető a fájlt, amelyben bejelentették őket. Ahhoz, hogy egy helyi változó kötés nem alkalmazható, ezért azok csak belül az egység.

Itt egy példa segítségével megadó extern. Vegye figyelembe, hogy a globális változók első és az utolsó után bejelentett a main ().

Specifier extern fontos szerepet játszik a programok, amelyek sok kép. A C nyelvű program lehet rögzíteni több fájlt, amelyek összeállítása külön-külön, majd össze egy egységgé. Ebben az esetben meg kell valahogy megmondani az összes fájlt a globális változók a program. A legjobb (és a legtöbb hordozható) módja ennek - meghatározza (írja) minden globális változó egyetlen fájlban, és állapítsa meg, hogy a tervező extern más fájlokat, ábrán látható. 2.1.

Ábra. 2.1. A globális változók használata a külön lefordított modulok

A második fájl megadó extern mondja a fordítónak, hogy ezeket a változókat meghatározott más fájlokat. Így a fordító tudja a nevét és típusát változók máshol található, és külön-külön lefordítani a második fájlt, anélkül, hogy ismerné az első. Amikor összeköti a két modult, minden utalást a globális változók megoldódnak.

megadó statikus

Deklarált változók a statikus megadó. állandóan tárolt be funkcióját, vagy fájlt. Ellentétben a globális változók kívülről nem látható a működésüket, vagy fájlt, de megőrzik értéküket hívások között. Ez a funkció alkalmassá teszi az általános és könyvtári funkciókat kell használni más programozók. Specifier statikus érinti a helyi és globális változók különböző módon.

Helyi statikus változók

A helyi változó specifikátor leírt statikus. a fordító memóriát állandó földhasználat ugyanúgy, mint a globális változók. Az alapvető különbség a statikus lokális globális változók a statikus lokális változók témához csak a blokk, amelyben bejelentették őket. Röviden, a statikus lokális változók - lokális változó megőrzik értéküket hívások között a funkcióra.

Ebben a példában a változó series_num állnak fenn funkció hívásokat, míg a szokásos helyi változót hoz létre minden hívást, majd elpusztult. Ezért ebben a példában minden egyes hívás-sorozat () létrehoz egy új számot függ az előző, hogy lemondunk az említett globális változókat.

Statikus lokális változó lehet inicializálni. Ez az érték van rendelve csak egyszer - az elején a program, de nem minden alkalommal, amikor programozza a blokkot, a szokásos helyi változó. A következő változata a funkció sorozat () statikus lokális változót inicializálni a szám 100:

Global statikus változókkal

Az alábbi példa az alkalmazás egy statikus globális változót. Itt sorszám generátor úgy módosul, hogy a kezdeti által megadott számú hívás másik funkció, series_start ():

Hívjon series_start () néhány egész paraméterként generátor inicializálja sorozat (). Ezt követően a számsorozat lehet előállítani több hívás-sorozat ().

Áttekintése. Nevek statikus lokális változók témához csak a blokkon belül, amelyben bejelentették; nevek globális statikus változók témához csak a fájl, amelyben bejelentették őket.

Ha fel a függvény sorozat () és series_num () egy könyvtárban, akkor már lehetetlen, hogy olvassa el a változó series_num. ez volt rejtve valamennyi szereplőjét a többi programot. Ugyanakkor a programban (természetesen más fájlok), akkor állapítsa meg és használja egy másik változó nevű series_num. Más szóval, a tervező, hogy hozzon létre egy statikus változót csak akkor látható funkciókat, amelyekben szükség van rá, így a nemkívánatos mellékhatásokat.

Így a fejlődés nagy, komplex programok „rejtőzködő” változó használható megadó statikus.

megadó regiszter

Kezdetben a nyilvántartás tárolási osztály specifikátor alkalmazzák csak a változó int típusú. char, és a mutatók. Azonban a standardban a használatának kiterjesztése a selejtező nyilvántartásba. most már lehet alkalmazni bármilyen típusú változó.

Az első változat a C fordító regisztrálja specifikátor mondja a fordító, hogy a változó kell tárolni a nyilvántartásban, nem a memóriában, az összes többi változó. Ez vezet az a tény, hogy a műveleteket a változó regiszter sokkal gyorsabb, mint a hagyományos változó, mivel ez a változó már a processzor, és nem kell időt tölteni a válogatott értéke a memóriából (és a memória írási).

Az azonosítási nyilvántartásból specifikátor jelentősen bővült. S89 és C99 standardok egyszerűen kijelentik: „az objektum elérését a lehető leggyorsabban.” Szinte ugyanabban karaktert, és egész változók még mindig helyezik processzor regiszterek. Természetesen a nagy objektumok (például tömbök) nem lehet elhelyezni processzor regiszterek, de a fordító utasítást „vigyázni” a sebesség műveletek velük. Attól függően, hogy a konkrét megvalósítására a fordító változó, és regisztrálja az operációs rendszer máshogy kezelik. Néha regisztrációhoz specifikátor egyszerűen figyelmen kívül hagyja, és a változó a szokásos módon kezeljük, de a gyakorlatban ez ritkán fordul elő.

A legnagyobb számú regiszter változókat. Sebesség optimalizálása függ a programozási környezet és fordító konkrét megvalósítására. Ha ezek a változók túl sok lenne, a fordító automatikusan konvertálja a nyilvántartásba be nem jegyzett változók. Ez biztosítja a hordozhatóságot a programok széles skáláját processzorok.

Általában a processzor regiszterek lehet helyezni legalább két típusú változók char vagy int. Azonban a különböző programozási környezetek optimalizálása módok nagyon eltérő lehet, ezért az optimalizálás mód kiválasztása kell végrehajtani, figyelembe véve a jellemzők egy adott fordító.


[1] Szinonimák: meghatározása. meghatározása.