#include #define MAX_NUM 5 /* A static tárolási osztály azt jelenti, hogy az adott változó megmarad a * blokkból kilépés után is, és a következő belépéskor elérhető lesz a * legutóbbi tartalom. * * Használhatjuk arra, hogy megszámoljuk, hányszor hívtuk az adott függvényt. */ int* counter() { static int count = 0; count++; printf("Count : %d\n",count); return &count; } int* kell() { return counter(); } int main() { /* Az auto tárolási osztály az alapértelmezett, ki sem szükséges tenni. */ auto int valami = 10; /* A register tárolási osztály arra szolgál, hogy jelezzük a fordítónak, * hogy olyan gépi kódot PRÓBÁLJON meg csinálni, amely során ez a változó * folyamatosan a CPU egy regiszterében van. -> Gyorsabb elérésű, mint a * memória, de sokkal kevesebb ilyen változó létezhet. Gyakran változó * változót érdemes. * * A fordító figyelmen kívül hagyhatja! */ register int i; /* A volatile módosító azt mondja a fordítónak, hogy: * "Vigyázat, ez a változó értéke úgy is módosulhat, hogy a kódban nincsen * annak módosítására szolgáló utasítás!" * Pl. a változó egy porthoz csatlakozik, ahová az adott eszköz írhat! */ volatile unsigned short int device = (unsigned short int)0; /* A const módosító azt mondja a fordítónak, hogy az érték nem * megváltoztatható. Ez viszont csak annyit jelent, hogy az adott * változóhivatkozás nem szerepelhet értékadás jobb oldalán. */ const long int nemvaltozo = 2007; int *p; p=&i; /* EZ HIBÁS */ p=counter(); printf("*%p = %d\n", p, *p); p=kell(); printf("*%p = %d\n", p, *p); *p = 100; counter(); return 0; }