Programozási nyelvek c, c

Programozási nyelvek c, c

C programozási nyelv

A változó a forrásfájl külső szintjén csak egyszer állítható be. Ha a statikus memóriaosztály-specifikátor van megadva. Más forrásfájlokban azonos névvel rendelkező változók is meghatározhatók. Mivel minden egyes statikus definíció csak a saját forrásfájljában látható, akkor nincs konfliktus.

Programozási nyelvek c, c

C programozási nyelv

extern int i; / * hivatkozás az alábbiakban meghatározottokra * /

printf (". \ n", i); / * i egyenlő 4 * / next ();

int i = 3; / * i * / next () meghatározása

printf (". \ n", i); / * i egyenlő 5 * / más ();

Programozási nyelvek c, c

C programozási nyelv

A regiszterregiszter-specifikátor megmondja a fordítónak, hogy a memóriát a nyilvántartásban lévő változóra osztja fel, ha lehetséges. A regiszter memória használata általában gyorsabb hozzáférési időt és a kapott kód kisebb méretét eredményezi. A regiszterosztálymal deklarált változók ugyanolyan láthatóak, mint az automatikus változók.

Egy változó, amelyet belsőleg egy statikus memóriaosztály-specifikátor deklarál. globális élettartammal rendelkezik, és csak abban a blokkban látható, amelyen bejelentették. Ellentétben a változók auto. statikusnak nyilvánított változók. megtartják értéküket a blokk végén.

A statikus memóriaosztály változóit konstans kifejezéssel lehet inicializálni. Ha nincs explicit inicializálás, a statikus memóriaosztály változója

Programozási nyelvek c, c

C programozási nyelv

automatikusan 0-ra áll. Az inicializálás egyszer fordítási idő alatt történik. A statikus memóriaosztály változójának inicializálása nem ismétlődik, ha új blokkbejegyzést hozunk létre.

A külső memóriaosztály specifikátorával deklarált változó. egy hivatkozás egy azonos nevű változóra, amely bármely forrás programfájlban külső szinten definiált.

Példa: int i = 1; fő ()

/ * hivatkozás i-re a fentiekben * / extern int i;

/ * kezdeti érték nulla; a csak a fő * / statikus int a fővonalon belül látható;

/ * b regiszterben tárolódik, ha lehetséges * / register int b = 0;

/ * az alapértelmezett tárolási osztály automatikus * / int c = 0;

/ * a nyomtatott értékek: 1, 0, 0, 0 * / printf (". \ n. \ n. \ n. \ n", i, a, b, c); más ();

/ * i újradefiniálva * / int i = 16;

/ * ez a csak a * / statikus int a = 2 belül látható;

/ * a nyomtatott értékek 16, 4 * / printf (". \ n. \ n", i, a);

Programozási nyelvek c, c

C programozási nyelv

külső változó i. A statikus memóriaosztály változója automatikusan 0-ra áll be. Mivel az inicializáló nincs megadva. A nyomtatási funkció hívása (feltételezve, hogy a nyomtatási funkció a forrásprogram valamely pontján van meghatározva) az 1. 0. 0. 0. értéket nyomtatja ki.

A másik függvényben. az i változót felülírják helyi változóként, amelynek kezdeti értéke 16. Ez nem befolyásolja a külső változó értékét i. Az a változót a statikus memóriaosztály változójaként deklaráljuk, amelynek kezdeti értéke 2. Nem mond ellent az a változónak. a fő funkcióban szerepel. mivel a statikus memóriaosztály belső szintű változóinak láthatóságát az a mondat korlátozza, amelyben bejelentik.

A funkciók a statikus vagy extern memóriaosztály specifikációival jelezhetők. A funkcióknak mindig globális élettartamuk van.

Az externként kijelölt funkciók a programot alkotó összes forrásfájlban láthatók. Bármelyik függvény hívhatja a külső funkciót.

Szintaktikailag az inicializálót előjelzi egy jel

Programozási nyelvek c, c

C programozási nyelv

A külső szinten deklarált változók inicializálhatók. Ha nincsenek kifejezetten inicializálva, a fordítási idő vagy az összekapcsolási idő nulla értékre van állítva. A statikus memóriaosztály specifikátorral deklarált változók. inicializálható állandó kifejezéssel. A statikus változók inicializálását egyszer fordítási idő alatt végezzük. Ha nincs kifejezett inicializálás, a statikus memóriaosztályban lévő változók automatikusan nullára vannak állítva.

A mutatók alap típusa és típusa

A kifejezés értéke a változóhoz van hozzárendelve. A kifejezéshez a konverziós szabályok megengedettek.

Programozási nyelvek c, c

C programozási nyelv

Az inicializátorok listája Az inicializáló sorozata vesszővel elválasztva. Minden egyes inicializáló egy szekvencia vagy állandó kifejezés vagy az inicializátorok listája. Ezért a zárójelben lévő lista megjelenhet egy másik inicializálási listán belül. Ez a konstrukció az összetett szerkezetek elemeinek inicializálására szolgál.

Minden egyes inicializálási listán az állandó kifejezések értékei az összetett változó elemeinek sorrendjében kerülnek hozzárendelésre. Amikor az igazítás inicializálása történik, az initializer lista egy állandó kifejezés. Az állandó kifejezés kifejezés értéke az első beállítási elemhez van hozzárendelve.

Ha az inicializálási listában kevesebb érték van, mint amennyi a típus típusában van, akkor a fennmaradó memória nullázódik. Ha az inicializálási értékek száma meghaladja a szükséges értéket, hiba lép fel.

Ezek a szabályok az inicializálók minden egyes beágyazott listájára vonatkoznak, akárcsak az egész struktúra egésze.

Ezek a további vesszők megengedettek, de nem szükségesek. Kizárólag olyan elveket kell elválasztani, amelyek elválasztják az állandó kifejezéseket és az inicializálási listákat. Ha az inicializátorok listája nem egy összetett objektumra van felépítve, annak értékei annak a sorrendnek felelnek meg, amelyben az objektum elemei dokkolva vannak.

Görögszögletes zárójelek is megjelenhetnek az egyes inicializátorok köré a listában.

Amikor a vegyületi változókat inicializálják, ügyelni kell arra, hogy megfelelően használják a göndör fogantyúkat és az inicializáló listákat. Az alábbi példa részletesebben szemlélteti a zárójelek értelmezését a fordító által.

Programozási nyelvek c, c

C programozási nyelv

A tömb inicializálható kisbetűvel.

char kód [] = "abc";

inicializálja a kódot a négy elemből álló karakterek soraként. A negyedik elem a \ 0 szimbólum. amely véget vet minden karakterláncnak.

char kód [3] = "abcd"

A példában csak az inicializáló első három szimbóluma van hozzárendelve a kódsorhoz. A d és a nulla karakter elvetésre kerül.

Ha a karakterlánc rövidebb, mint a megadott tömbméret, akkor a tömb többi elemét nullára állítjuk (\ 0).

A struktúrák, kombinációk és transzferek típusai

Programozási nyelvek c, c

C programozási nyelv

amelyet bejelentettek. A szerkezet, a kombináció vagy a felsorolás neve egy címke.

typedef [. ];

Az alapvető, felsoroló, strukturális és kombináló típusok nevei mindegyik típus specifikálója. A mutató, tömb és függvény típusát a következő szintaktikai formában adhatjuk meg:

Programozási nyelvek c, c

C programozási nyelv

Kivonatoló nyilatkozat Egy olyan azonosító nélküli deklarátor, amely egy vagy több mutató, tömb és funkció módosítását tartalmazza. A mutató módosító * mindig a deklarátor azonosítója előtt jelenik meg, míg a tömbmódosító [] vagy a függvény () az azonosító után jelenik meg. Így az absztrakt deklarátor megfelelő értelmezéséhez az értelmezést az implicit azonosítóval kell kezdeni.

Kifejezések és megbízások

C-ben a kifejezések értékei vannak hozzárendelve. A művelet egyszerű hozzárendelése mellett =. C támogatja az összetett hozzárendelési műveleteket, amelyek a hozzárendelés előtt további műveleteket hajtanak végre az operandusukon. Az eredmény végső értéke a műveletek elsőbbségétől és a mellékhatásoktól függ, ha felmerülnek. A számítási sorrendet az operandusok és műveletek bizonyos csoportosítása határozza meg. A mellékhatás a gép állapotának megváltozása a kifejezés értékelési folyamatában.

Egy mellékhatással rendelkező kifejezés esetén az egyik operandus kiszámítása a másik értékétől függhet. Ugyanezekre a műveletekre a kifejezés eredménye attól is függ, hogy milyen sorrendben értékelik az operandusokat.

A kifejezésben szereplő minden operandus által képviselt értéknek olyan típusa van, amely egy adott kontextusban más típusúvá alakítható. A típusok átalakulása a

Kapcsolódó cikkek