SPEAKER 1: Írjunk egy programot, amely kéri a felhasználót, hogy a nevek és házak három diák. Most, hogy tárolja ezeket a neveket és házak tudtuk használni, ami hat változó. Három stringet a nevét, és egy másik három húrok a házak, de azt már tudjuk, hogy tisztítsák meg a kód használatával tömbök helyett, például egy tömb méretű, 3 a három nevet, és egy másik tömb méret 3-as ház. De kiderül, tudunk tiszta ezt fel még ennél is tovább, és valóban tartani azokat nevek és házak együtt, úgy, hogy a hallgató nevét és az ő háza valahogy zárt, így a beszél, az ugyanazt a változót. Ehhez azonban meg kell nyilatkozni Saját adattípus, a saját típusú C, hogy a szerzők a C nem feltétlenül Szerintem évvel ezelőtt. Ehhez tudjuk használni a kulcsszó typedef, valamint a más kulcsszó struct. Vessünk egy pillantást. Belül structs.h, én már ütött indította beleértve a CS50 könyvtár. Én vagyok a következő majd írja typedef struct, majd a zárójel. Belül a struct, fogok meghatározza, hogy a hallgató egy karakterlánc hívott nevét, és egy másik karakterlánc nevű ház. Megyek majd zárja be a kapcsos zárójelek, és adja meg, hogy a név Az új adattípus legyen diák. Más szóval, ez a szintaktikai keresztül tettem kijelentette, egy új adattípus saját hogy nem létezik egy pillanattal ezelőtt, és belsejében adattípushoz két adat mezők vagy adattag, egy úgynevezett nevet, az egyik az úgynevezett ház, amelyek egyaránt a string típusú. Nézzük most ezt a típusú egy aktuális program. A structs0.c, én is hasonlóan ütött magam megkezdődött néhány boilerplate kódot, és én vagyok most fogja használni az adatokat típusú diák, az alábbiak szerint. Én először megyek, hogy állapítsa meg a tömb típusú diák, én hívja fel a tömb tanulók - többes szám - és én majd adja meg, hogy a mérete lesz három, ami, értesítést, az értéke az állandó diákok - Minden fővárosban - hogy én már kijelentette itt, korábban a fájlt. Nézzük most végighaladni a három diákok, és figyelmezteti a felhasználót a nevüket és házak. az int kapok 0, i kisebb mint az állandó, i + +. És most belsejében a test ezt loop, megyek, hogy nyomtassa ki valamit mint a diák nevét. Én majd megy, hogy valóban kap, hogy a hallgató neve megadásával diákok zárójelbe i. Vagyis azt akarjuk, hogy a i-edik diák a tömb nevezett diákok, de most Azt akarom, hogy az, hogy az i-edik diák nevet, és ezt fogom használni a. operátor, annak érdekében, hogy egy speciális területén belül a struktúra. Így határozza meg a diákok zárójelbe i. Név megkapja a visszatérési értéke getString (). Közben fogok kinyomtatni valami hasonló, mondván diák házat, és most megyek adja hogy az i-edik diák house terén kell, hogy a visszatérési értéket egy másik hívás getString (). Most valami ezzel a három tanulók nevét és házak, valami egyszerű, mint a nyomtatás Minden ki egy mondatban. az int i kap 0, megint kevesebb diákok, i + +, printf "% s:% s. backslash n ", és most hadd dugja be értékeit ezen a két területen, diákok zárójelbe i. nevét, vessző, diákok zárójelbe i. ház, közel paren, pontosvessző. És most azt kell tennie, még egy dolog. Alján a fájl, azt kell szabad memória, amit kiosztott a színfalak mögött GetSring (), amely Természetesen hívások malloc, annak érdekében, hogy memóriát a húrok a felhasználó beír. De ez az egyszerű. az int kapok 0, i kevesebb, mint diákok, i + +, és a testben a Ez a for ciklus, én csak fog ingyenes hallgatók konzol i. nevét, és ingyenes a diákok zárójelbe i. házat. Most már egyértelműen használt három a hurok ebben a programban, ha tényleg azt Lehet, hogy csak használt ilyet, de ez csak a bemutató kedvéért, hogy a tudjuk meg három különböző lépéseket pontosan mit csinálunk. Mi először kap egy nevet és egy ház mind a diákok, mi majd kinyomtatásával a nevét és a házat mind a három diák, és akkor megyünk a szabad memória által használt egyes diákok. De biztosan tudtuk volna össze ez a az egyik nagyobb, a hurok. Nézzük most menteni, fordítani, és futtassa ezt a programot. hogy Struktúrák 0-ra. / struktúrákat 0, tanuló név, menjünk biztosít David, meg fog élni a Mather House, hallgató nevét, nézzük mondjuk Lauren, ő majd élni Leverett House, hallgató nevét, Rob, meg fog él Kirkland House. És valóban, Dávid van Mather, Lauren van Leverett, és Rob van Kirkland.