Változók Flashcards
Miket használunk változók deklarálásánál? Miért?
Változók deklarálásánál adattípusokat használunk annak érdekében, hogy meghatározzuk, hogy milyen típusú adatot fog tárolni a változó.
amikor deklarálunk egy változót mi történik?
Amikor definiálunk egy változót, akkor a memóriában az lefoglal egy akkora helyet, mint amekkorát az adott típusú adat tárolása igényel.
primitív adattípusok:
mi az integer?
4 byte memóriát foglal. Egész számok tárolásához használják.
mi a char?
Karakterek tárolására használják. 1 byte memóriát foglal.
mi a bool?
1 byte memóriát foglal. Igaz/Hamis értékeket tárol. C++ programban 1 vagy 0-ként jelenik meg.
Mi a float?
Szimpla lebegőpontos tört értékeket tárolunk benne. 4 byte memóriát foglal.
Mi a Double?
Dupla lebegőpontos tört értékeket tárolunk benne. 8 byte memóriát foglal. Pontosabb, mint a float.
Mi a void?
Érték nélküliséget jelzi, voiddal jelölt függvények nem térnek vissza valamilyen értékkel.
mi az unsigned?
Csak pozitív számokat tárol plusz 0-t.
adattípus módosító szavak:
Mi a signed?
Pozitív és negatív értékeket is tárolhat. Tehát a legnagyobb tárolható szám méretének felét pozitív és negatív irányban plusz a 0-t.
mi a short?
Csak 2 byte-ban tárol számokat.
Mi a long?
4 vagy 8 byte-ban tárol számokat.
Mik lehetnek absztrakt vagy programozó által definiált típusok?
Létrehozott osztályok és struct-ok.
melyik típus nem a c++ része?
Fontos még megemlíteni a string típust, ami, habár nem konkrétan a c++ része, de standard library része és a legtöbb compiler támogatja ezt a típust.
Mi a hatókör?
A hatókör lényegében egy határt definiál, amin belül a változókat használni/elérni tudjuk.
Mely 2 típus létezik a változók csoportosítására hatókör szerint?
Az első típus a lokális változók kategóriája. A második típus a globális változók.
mik a lokális változók?
Ezek azok a változók, amik egy kódblock-on belül lettek deklarálva. Egy {} kapcsoszárójel páron belül. A lokális változók nem elérhetők ezeken a blockokon kívül, mivel nem léteznek a saját blockjukon kívül.
mik a globális változók?
a programon belül bárhol elérhetők. A program ’tetején’ szokás deklarálni ezeket, függvényeken (tehát a mainen is) kívül. Ezek a változók a program futása alatt végig elérhetők, tehát életciklusuk a program végéig tart.
A globális változót úgy érjük el a lokális változó mellett a függvényben, hogy a :: operátort használjuk a globális változó hivatkozásánál.
(Ha két ugyanolyan nevű változó van a programban, az egyik globális a másik egy lokális és egyszerre kellene használni a kettőt. Ha így, különböző hatókörben vannak, akkor a program nem fog fordításidejű hibát dobni. Ebben az esetben a precedencia a lokális változóé,)
Mi a változók élettartama?
Élettartam (lifetime): a program végrehajtása közben az az időtartam, ameddig a változó a memóriában van (csak része a hatáskörnek, de nem mindig) VAGY az az idő, amely alatt az adott objektum a rendeltetésnek megfelelő paraméterekkel üzemel.
Mi a lokális éllettartam?
akkor történik meg a memóriafoglalás, amikor a vezérlés belép az őket magába foglaló blokkba vagy függvénybe; amint a vezérlés elhagyja ezt, megszűnnek. Veremben vagy regiszterben tárolódnak.Mindig kell őket inicializálni, mert alapértelmezetten a veremműveletek során hátramaradt memóriaszemétből kapnának kezdőértéket. Blokkszintű változók ilyenek. Más változók auto vagyregister tárolási osztállyal tehetőek ilyenné.
mi a globális éllettratam?
globális: a memória hozzárendelés a program indulásakor megtörténik és kitart a futás végéig; nevezik még statikusnakis. Ilyenek a fájl szintű változók és bármely függvény. Más változók static vagy extern tárolási osztállyal tehetőek ilyenné. Alapértelmezetten minden memóriabit kezdőértéke zérus.
Mi a dinamikus éllettartam?
dinamikus: a felhasználó saját maga végzi a memóriafoglalást (malloc, new) és felszabadítást (free, delete) könyvtári függvények segítségével. Igazából csak a C++ nyelvben van jelen (ahol operátorok valósítják meg a memóriakezelést), mivel a C nyelvnek nem részei a könyvtári függvénye
Mi a precedencia?
Ha egy olyan utasítást kell kiértékelnie a programnak, amiben több operátor van, akkor milyen sorrendben történjen az operátorok általi kiértékelés.
Minek kell teljesülnie, hogy egyenlő precedenciával rendelkezzen két operátor? Ezen mi változtat?
Az ugyanolyan precendencia számmal rendelkező operátorok egyenlő precedenciával rendelkeznek, hacsak () zárójelekkel nincsen másféle kapcsolat rájuk erőltetve.
Mi a precedencia szabály?
Ha egy kifejezésben különböző elsőbbségű műveletek szerepelnek, akkor mindig a magasabb precedenciával rendelkező operátort tartalmazó részkifejezés értékelődik ki először.
Mi az asszociativitás ?
Az asszociativitás határozza meg, hogy az adott precedenciaszinten található műveleteket balról-jobbra vagy jobbról-balra haladva kell elvégezni.
Mutass példát asszociativitásra.
Például, az értékadó utasítások csoportjában a kiértékelés jobbról-balra halad, ami lehetővé teszi, hogy több változónak egyszerre adjunk értéket:
a = b = c = 0; azonos az a = (b = (c = 0));
Mutass példát asszociativitásra.
Például, az értékadó utasítások csoportjában a kiértékelés jobbról-balra halad, ami lehetővé teszi, hogy több változónak egyszerre adjunk értéket:
a = b = c = 0; azonos az a = (b = (c = 0));
Mi történik, ha azonos precedenciájú műveletek szeepelnek egy artmetikai kifejezésben?
A balról-jobbra szabály lép életbe..