Mi a C osztályú tárolási osztály?
A tárolási osztály a változó láthatóságát és helyét jelenti. Megmondja, hogy a kód mely részéből tudunk hozzáférni egy változóhoz. A C tárolási osztály a következő dolgok leírására szolgál:
- A változó hatókör.
- A változó tárolásának helye.
- Egy változó inicializált értéke.
- Egy változó élettartama.
- Ki férhet hozzá egy változóhoz?
Így egy tárolóosztályt használunk a változóval kapcsolatos információk ábrázolására.
MEGJEGYZÉS: A változó nemcsak egy adattípushoz, értékéhez, hanem egy tárolási osztályhoz is társul.
Összesen négyféle szabványos tárolási osztály létezik. Az alábbi táblázat a C tárolási osztályokat mutatja.
Tárolási osztály | Célja |
auto | Ez egy alapértelmezett tárolási osztály. |
külső | Globális változó. |
statikus | Ez egy lokális változó, amely képes akkor is visszaadni egy értéket, ha a vezérlést átadják a függvényhívásnak. |
Regisztráció | Ez egy változó, amelyet a nyilvántartásban tárolnak. |
Ebben a C oktatóanyagban különböző típusú tárolási osztályokat tanulhat meg C-ben példákkal-
- Automatikus tárolási osztály C-ben
- Külső tárolási osztály C-ben
- Első fájl: main.c
- Második fájl: eredeti.c
- Statikus tárolási osztály C-ben
- Regisztrálja a C osztályt
Automatikus tárolási osztály C-ben
Az automatikus tárolási osztály használatával definiált változókat helyi változóként hívjuk meg. Az Auto az automatikus tárolási osztályt jelenti. Egy változó alapértelmezés szerint automatikus tárolási osztályba tartozik, ha nincs kifejezetten megadva.
Az automatikus változó hatóköre csak az adott mondattal korlátozott. Miután a vezérlés kimegy a blokkból, a hozzáférés megsemmisül. Ez azt jelenti, hogy csak az a blokk férhet hozzá, amelyben az automatikus változó deklarálva van.
Az automatikus kulcsszó az automatikus tárolási osztály meghatározására szolgál. Alapértelmezés szerint egy automatikus változó szemétértéket tartalmaz.
Example, auto int age;
Az alábbi program két helyi változóval definiálja a függvényt
int add(void) {int a=13;auto int b=48;return a+b;}
Veszünk egy másik programot, amely megmutatja az egyes blokkkódok automatikus változóinak hatóköre "láthatósági szintjét", amelyek egymástól függetlenül vannak:
#includeint main( ){auto int j = 1;{auto int j= 2;{auto int j = 3;printf ( " %d ", j);}printf ( "\t %d ",j);}printf( "%d\n", j);}
KIMENET:
3 2 1
Külső tárolási osztály C-ben
Az Extern a külső tárolási osztályt jelenti. A külső tárolási osztály akkor használható, ha globális függvényeink vagy változóink vannak, amelyeket két vagy több fájl oszt meg.
A Keyword extern arra szolgál, hogy egy globális változót vagy függvényt deklaráljon egy másik fájlban, hogy megadja az eredeti fájlban már definiált változó vagy függvény hivatkozását.
A külső kulcsszóval definiált változókat globális változóként hívjuk meg. Ezek a változók a program egészében elérhetők. Vegye figyelembe, hogy az extern változó nem inicializálható, azt már definiálták az eredeti fájlban.
Example, extern void display();
Első fájl: main.c
#includeextern i;main() {printf("value of the external integer is = %d\n", i);return 0;}
Második fájl: eredeti.c
#includei=48;
Eredmény:
value of the external integer is = 48
A fenti kód fordításához és futtatásához kövesse az alábbi lépéseket
1. lépés: Hozzon létre új projektet,
- Válassza a Console Application lehetőséget
- Kattintson a Go gombra
2. lépés) Válassza a C elemet, majd kattintson a Tovább gombra
3. lépés) Kattintson a Tovább gombra
4. lépés: Adja meg a részleteket, majd kattintson a Tovább gombra
5. lépés) Kattintson a Befejezés gombra
6. lépés: Helyezze a fő kódot az előző program szerint a main.c fájlba, és mentse el
7. lépés: Hozzon létre egy új C fájlt [Fájl -> új -> Üres fájl, mentse (mint eredeti.c) és adja hozzá az aktuális projekthez a párbeszédpanelen az "OK" gombra kattintva.
8. lépés: Helyezze el és mentse az előző példában bemutatott eredeti.c fájl C kódját a main () függvény nélkül.
9. lépés: Készítse el és futtassa a projektet. Az eredményt a következő ábra mutatja
Statikus tárolási osztály C-ben
A statikus változókat a function / file-ban helyi statikus változókként használják. Globális változóként is használhatók
- A statikus lokális változó olyan lokális változó, amely megőrzi és tárolja az értékét a függvényhívások vagy blokkok között, és csak annak a függvénynek vagy blokknak lesz látható, amelyben meghatározta.
- A statikus globális változók globális változók, csak azok a fájlok láthatók , amelyekben deklarálva vannak.
Example: static int count = 10;
Ne feledje, hogy a statikus változónak az alapértelmezett kezdőértéke nulla, és életében csak egyszer inicializálják.
#include/* function declaration */void next(void);static int counter = 7; /* global variable */main() {while(counter<10) {next();counter++; }return 0;}void next( void ) { /* function definition */static int iteration = 13; /* local static variable */iteration ++;printf("iteration=%d and counter= %d\n", iteration, counter);}
Eredmény:
iteration=14 and counter= 7iteration=15 and counter= 8iteration=16 and counter= 9
A globális változók az egész fájlban elérhetők, míg a statikus változók csak a kód adott részére érhetők el.
A statikus változó élettartama a teljes programkódban van. A statikus kulcsszóval deklarált vagy inicializált változó alapértelmezett értékként mindig nulla értéket tartalmaz.
Regisztrálja a C osztályt
Akkor használhatja a regisztertároló osztályt, ha a helyi változókat a függvényekben vagy blokkokban szeretné tárolni a CPU-regiszterekben a RAM helyett, hogy gyorsan hozzáférhessen ezekhez a változókhoz. Például a "számlálók" jó jelölteket kell tárolni a nyilvántartásban.
Example: register int age;
A kulcsszó regisztráció egy regiszter tárolási osztály deklarálására szolgál. A regisztertároló osztály használatával deklarált változók élettartama a program egészében érvényes.
Hasonló az automatikus tárolási osztályhoz. A változó az adott blokkra korlátozódik. Az egyetlen különbség az, hogy a regisztertároló osztály használatával deklarált változókat memória helyett a CPU regiszterekben tárolják. A Register gyorsabb hozzáféréssel rendelkezik, mint a fő memória.
A regisztertár osztály használatával deklarált változóknak nincs alapértelmezett értéke. Ezeket a változókat gyakran a program elején deklarálják.
#include/* function declaration */main() {{register int weight;int *ptr=&weight ;/*it produces an error when the compilation occurs ,we cannot get a memory location when dealing with CPU register*/}}
KIMENET:
error: address of register variable 'weight' requested
A következő táblázat összefoglalja az egyes tárolási osztályok fő jellemzőit, amelyeket általában használnak a C programozásban
Tárolási osztály | Nyilatkozat | Tárolás | Alapértelmezett kezdeti érték | Hatály | Élettartam |
auto | Funkció / blokk belsejében | memória | Kiszámíthatatlan | A függvényen / blokkon belül | A függvényen / blokkon belül |
Regisztráció | Funkció / blokk belsejében | CPU regiszterek | Szemét | A függvényen / blokkon belül | A függvényen / blokkon belül |
külső | Minden funkción kívül | memória | Nulla | Írja be a fájlt és más fájlokat, ahol a változó externek van deklarálva | program futásideje |
Statikus (helyi) | Funkció / blokk belsejében | memória | Nulla | A függvényen / blokkon belül | program futásideje |
Statikus (globális) | Minden funkción kívül | memória | Nulla | Globális | program futásideje |
Összegzés
Ebben az oktatóanyagban a tárolási osztályokat tárgyaltuk C-ben, összefoglalva:
- A C tárolási osztály a változóval kapcsolatos további információk képviseletére szolgál.
- A tárolási osztály a változó hatókörét és élettartamát jelenti.
- Azt is megmondja, hogy ki és honnan férhet hozzá egy változóhoz?
- Az Auto, extern, register, static a C program négy különböző tárolási osztálya.
- A C nyelvű tárolási osztály-specifikátor a változók, függvények és paraméterek meghatározására szolgál.
- Az auto egy blokkon vagy függvényen belül definiált helyi változóhoz használható
- register a változónak a CPU regiszterekben történő tárolására szolgál, inkább a memória helyére a gyors hozzáférés érdekében.
- A statikus mind globális, mind lokális változókhoz használatos. Mindegyiknek megvan a használati esete egy C programon belül.
- Az Extern a C projektfájlok közötti adatmegosztáshoz használható.