Előadások c
Előadások C / C ++: vegyület adattípusok (struktúrák)
Képzeljük el, hogy azt akarjuk, szoftver folyamat az információkat a hallgatók. Az adatok minden diák közé többféle nagyságrendű - a húr a nevét és monogram, egy egész jelezve a tanuló életkora, átlagos pontszámot, ami egy igazi érték, stb A legegyszerűbb módja a probléma megoldásának - írja a beállított program lényeges változók:
Amikor a diákok egyre, akkor át kell adni a változókat tömb:
Hogy információkat kapjon az utolsó diák, meg kell kezelni értékének neve. [4] kor [4], és a labdát [4]. Így információt egy tárgy „szétszórt” több konténerek tömb, ami rendkívül kényelmetlen műveletek „hallgató” egységes egészként. Leküzdeni ezt a kellemetlenséget strukturálhatják. lehetővé teszi, hogy összekapcsolják a különböző típusú egyetlen objektum adatait.
Így a szerkezet - a fő összetevője az adatok típusát. Ezzel szemben a tömb, hogy összehozza az egyik objektum értékek, esetleg eltérő adattípusok. Ez teszi a szerkezet az elsődleges modellező eszköz a programban valós tárgyak:
Kompatibilitását a nyelv a C előtt struct kulcsszó gyakran írt szereplő Type Definition typedef. A C ++, ez az állítás felesleges.
Bemutatjuk a változókat az „új” diák Van típusú adatokat.
Nincs különbség a leírás a változók egyszerű típusok int. lebegnek, stb sz.
működés eléréséhez használt egyedi adatokat a hallgató, a leírásban felsorolt szerkezeti típusú (szerkezet mezők). ( „Point”) alkalmazható a felvétel struktura.pole formában. Például S.NAME azt jelentené, a „név” a diák, akinek az információt tárolja a változó nevű s.
Így, a mező struktúra lehetővé teszi, hogy az összes ugyanazt a műveletet, mint a „normális” változó típusának megfelelő adatok:
Tekintsük első két lépés a példa.
1. st_print funkció információkat jelenít meg a diák-típusú szerkezet. átvitt paraméterként;
2. st_new függvény kitölti az új struktúra az alapértelmezett tanulók adatait, és visszatér a szerkezetet. Tekintettel arra, hogy támogatja a feladat struktúrák nyert funkció információ ismétlődik a szerkezet s2 fő funkciója.
Megjegyezzük, hogy az átviteli függvény a paraméterként, vagy visszatérés függvényében egy nagy méretű struktúrák lehetnek tele Veremtúlcsordulás. Egy szerkezet, hogy meghatározzuk a hangerőt a RAM-ot lehet szabványos eszközökkel:
Ha menteni információt egy csoportja 20 diák természetesen néz leírása egy sor szerkezetek:
Hozzáférés a szerkezet lehet, és ezen keresztül a mutatót.
Ezután végre ptr ++ beolvasandó lista vagy egy tömb struktúrák oly módon, mint mi a mutató az egyszerű adattípusok.
Hozzáférés a mező szerkezete révén a mutatót a következő alakban:
A zárójelben van szükség, mert a prioritások a C ++ nyelven műveleteket. Vedd úgy néz ki, nehézkes, így ahelyett, hogy ő általában emlékeztető rövidítések
1. példa mutat funkció kiírja tájékoztatás a tanuló s (nincs kijelzés):
Ugyanez a funkció egy mutatót:
Az első esetben a verem át sizeof (hallgató) = sizeof (char) * 20 + sizeof (int) + sizeof (float) bájt (28 bájt, amikor char szimbólumok - egy byte), a második esetben - 4 vagy 8 byte (a méretétől függően a mutató a 32-bites vagy 62-bites számítógépes architektúra).
Az i-edik elem a tömb szerkezete a hívást az első funkció lenne a forma
2. példa st_new funkciót a pointer fent látható venné formájában
Mivel az új üzemeltető memóriát a „halom”, és nem a verem, akkor lehetséges, hogy kiadja a törlési üzemben.
Itt egy példa 2 programot.
Az első program, minden tanuló mezőstruktúra - statikus, nem dinamikus memória számukra biztosított, így a feladat ezeknek a szerkezeteknek megfelelően:
Esetleg, ahelyett, tápvezetékek
Az elem szerkezete lehet egy szerkezete egy másik szerkezeti típusú vagy egy mutatót a szerkezetét a típus. Az utolsó fontos funkció lehetővé teszi, hogy megszervezze a struktúrák dinamikus adatszerkezetek, mint például vermek, sorok és fák. Dinamikus struktúra lesz szó egy külön téma.
Végül megjegyezzük, hogy a legtermészetesebb megőrzése statikus struktúrák bináris adatfájlok (mint például a méret a szerkezet byte - fix) és az adatcserét ezeket a fájlokat keresztül eljárás fread / fwrite stdio.h re vagy írható / olvasható a fstream:
Szerkezetekhez pointerek általában alkalmazhatatlanná mondta. Alternatív írni egy programot, amely lehetővé teszi tanulót, hogy olvassa egy sor szerkezetek dinamikus mező nevét a szöveges fájlt data.txt következő:
stb Feltételezzük, hogy a fájl az aktuális az alkalmazás végrehajtható mappát. A maximális bejegyzések száma még korlátozzák ST állandó.
A program magában foglalja egy egyszerű védelmét érvénytelen adatokat a forrás fájlban.