C Tárolási osztály

Ebben az oktatóanyagban megismerheti a helyi és globális változók hatókörét és élettartamát. Ezenkívül megismerheti a statikus és regisztrációs változókat.

A C programozás minden változójának két tulajdonsága van: típus és tároló osztály.

A Type a változó adattípusára vonatkozik. A tárolási osztály határozza meg a változó hatókörét, láthatóságát és élettartamát.

4 típusú tárolási osztály létezik:

  1. automatikus
  2. külső
  3. statikus
  4. Regisztráció

Helyi változó

A blokkon belül deklarált változók automatikus vagy helyi változók. A helyi változók csak abban a blokkban léteznek, amelyben deklarálva vannak.

Vegyünk egy példát.

 #include int main(void) ( for (int i = 0; i < 5; ++i) ( printf("C programming"); ) // Error: i is not declared at this point printf("%d", i); return 0; )

A fenti program futtatásakor hibaüzenetet kap az i nem bejelentett azonosítóval. Ez azért van, mert én a hurokblokkban van deklarálva for. A blokkon kívül nem bejelentett.

Vegyünk egy másik példát.

  int main() ( int n1; // n1 is a local variable to main() ) void func() ( int n2; // n2 is a local variable to func() ) 

A fenti példában n1 lokális main()és n2 lokális func().

Ez azt jelenti, hogy a belső n1 változóhoz nem férhet hozzá func(), mivel csak belül létezik main(). Hasonlóképpen nem férhet hozzá a benne lévő n2 változóhoz, main()mivel az csak belül létezik func().

Globális változó

Az összes függvényen kívül deklarált változókat külső vagy globális változóknak nevezzük. A programon belül bármely funkcióból elérhetőek.

1. példa: Globális változó

 #include void display(); int n = 5; // global variable int main() ( ++n; display(); return 0; ) void display() ( ++n; printf("n = %d", n); ) 

Kimenet

 n = 7

Tegyük fel, hogy egy globális változó deklarálva van file1. Ha megpróbálja használni ezt a változót egy másik fájlban file2, akkor a fordító panaszt fog tenni. A probléma megoldására, kulcsszó externhasználják file2, jelezve, hogy a külső változó deklarált másik fájlt.

Regisztrálja a változót

A registerkulcsszó a regiszterváltozók deklarálására szolgál. Állítólag a regiszter változók gyorsabbak voltak, mint a helyi változók.

A modern fordítók azonban nagyon jók a kódoptimalizálásban, és ritka az esély, hogy a regiszterváltozók használatával a program gyorsabb lesz.

Hacsak nem olyan beágyazott rendszereken dolgozik, ahol tudja, hogyan kell optimalizálni a kódot az adott alkalmazáshoz, a regiszterváltozók nem használhatók.

Statikus változó

A statikus változó deklarálása a statickulcsszó használatával történik. Például;

 statikus int i;

A statikus változó értéke a program végéig fennmarad.

2. példa: Statikus változó

 #include void display(); int main() ( display(); display(); ) void display() ( static int c = 1; c += 5; printf("%d ",c); ) 

Kimenet

 6 11

Az első függvényhívás során a c értéke 1-re inicializálódik. Értéke 5-vel növekszik. Most c értéke 6, amelyet a képernyő kinyomtat.

A második funkcióhívás során c nem inicializálódik újra 1-re. Ez azért van, mert c statikus változó. A c értéket 5-gyel növeljük. Most az értéke 11 lesz, amelyet a képernyőre nyomtatunk.

érdekes cikkek...