2 00:00:00,000 --> 00:00:02,760 >> SPEAKER 1: Írjunk egy programot, amely kéri a felhasználót, hogy a nevek és 3 00:00:02,760 --> 00:00:04,700 házak három diák. 4 00:00:04,700 --> 00:00:08,840 Most, hogy tárolja ezeket a neveket és házak tudtuk használni, ami hat változó. 5 00:00:08,840 --> 00:00:12,260 Három stringet a nevét, és egy másik három húrok a házak, 6 00:00:12,260 --> 00:00:16,560 de azt már tudjuk, hogy tisztítsák meg a kód használatával tömbök helyett, 7 00:00:16,560 --> 00:00:20,220 például egy tömb méretű, 3 a három nevet, és egy másik tömb 8 00:00:20,220 --> 00:00:22,110 méret 3-as ház. 9 00:00:22,110 --> 00:00:25,870 De kiderül, tudunk tiszta ezt fel még ennél is tovább, és valóban tartani azokat 10 00:00:25,870 --> 00:00:30,520 nevek és házak együtt, úgy, hogy a hallgató nevét és az ő háza 11 00:00:30,520 --> 00:00:34,940 valahogy zárt, így a beszél, az ugyanazt a változót. 12 00:00:34,940 --> 00:00:39,095 >> Ehhez azonban meg kell nyilatkozni Saját adattípus, a saját típusú C, 13 00:00:39,095 --> 00:00:42,660 hogy a szerzők a C nem feltétlenül Szerintem évvel ezelőtt. 14 00:00:42,660 --> 00:00:45,630 Ehhez tudjuk használni a kulcsszó typedef, valamint a 15 00:00:45,630 --> 00:00:47,200 más kulcsszó struct. 16 00:00:47,200 --> 00:00:48,160 Vessünk egy pillantást. 17 00:00:48,160 --> 00:00:50,650 Belül structs.h, én már ütött indította 18 00:00:50,650 --> 00:00:52,560 beleértve a CS50 könyvtár. 19 00:00:52,560 --> 00:00:57,640 Én vagyok a következő majd írja typedef struct, majd a zárójel. 20 00:00:57,640 --> 00:01:01,370 Belül a struct, fogok meghatározza, hogy a hallgató egy 21 00:01:01,370 --> 00:01:04,960 karakterlánc hívott nevét, és egy másik karakterlánc nevű ház. 22 00:01:04,960 --> 00:01:08,430 Megyek majd zárja be a kapcsos zárójelek, és adja meg, hogy a név 23 00:01:08,430 --> 00:01:11,420 Az új adattípus legyen diák. 24 00:01:11,420 --> 00:01:15,550 Más szóval, ez a szintaktikai keresztül tettem kijelentette, egy új adattípus saját 25 00:01:15,550 --> 00:01:19,910 hogy nem létezik egy pillanattal ezelőtt, és belsejében adattípushoz két adat 26 00:01:19,910 --> 00:01:24,270 mezők vagy adattag, egy úgynevezett nevet, az egyik az úgynevezett ház, amelyek egyaránt 27 00:01:24,270 --> 00:01:25,630 a string típusú. 28 00:01:25,630 --> 00:01:27,690 >> Nézzük most ezt a típusú egy aktuális program. 29 00:01:27,690 --> 00:01:30,210 30 00:01:30,210 --> 00:01:34,090 A structs0.c, én is hasonlóan ütött magam megkezdődött néhány 31 00:01:34,090 --> 00:01:36,999 boilerplate kódot, és én vagyok most fogja használni az adatokat 32 00:01:36,999 --> 00:01:39,100 típusú diák, az alábbiak szerint. 33 00:01:39,100 --> 00:01:42,450 Én először megyek, hogy állapítsa meg a tömb típusú diák, én 34 00:01:42,450 --> 00:01:43,920 hívja fel a tömb tanulók - 35 00:01:43,920 --> 00:01:44,630 többes szám - 36 00:01:44,630 --> 00:01:49,360 és én majd adja meg, hogy a mérete lesz három, ami, értesítést, az értéke 37 00:01:49,360 --> 00:01:50,880 az állandó diákok - 38 00:01:50,880 --> 00:01:51,890 Minden fővárosban - 39 00:01:51,890 --> 00:01:54,930 hogy én már kijelentette itt, korábban a fájlt. 40 00:01:54,930 --> 00:01:58,280 Nézzük most végighaladni a három diákok, és figyelmezteti a felhasználót a 41 00:01:58,280 --> 00:02:00,050 nevüket és házak. 42 00:02:00,050 --> 00:02:05,422 >> az int kapok 0, i kisebb mint az állandó, i + +. 43 00:02:05,422 --> 00:02:08,600 És most belsejében a test ezt loop, megyek, hogy nyomtassa ki valamit 44 00:02:08,600 --> 00:02:11,470 mint a diák nevét. 45 00:02:11,470 --> 00:02:14,890 Én majd megy, hogy valóban kap, hogy a hallgató neve megadásával 46 00:02:14,890 --> 00:02:17,290 diákok zárójelbe i. 47 00:02:17,290 --> 00:02:21,550 Vagyis azt akarjuk, hogy a i-edik diák a tömb nevezett diákok, de most 48 00:02:21,550 --> 00:02:25,340 Azt akarom, hogy az, hogy az i-edik diák nevet, és ezt fogom használni 49 00:02:25,340 --> 00:02:30,160 a. operátor, annak érdekében, hogy egy speciális területén belül a struktúra. 50 00:02:30,160 --> 00:02:37,100 Így határozza meg a diákok zárójelbe i. Név megkapja a visszatérési értéke getString (). 51 00:02:37,100 --> 00:02:40,310 Közben fogok kinyomtatni valami hasonló, mondván diák 52 00:02:40,310 --> 00:02:45,410 házat, és most megyek adja hogy az i-edik diák house terén 53 00:02:45,410 --> 00:02:49,480 kell, hogy a visszatérési értéket egy másik hívás getString (). 54 00:02:49,480 --> 00:02:52,350 >> Most valami ezzel a három tanulók nevét és házak, 55 00:02:52,350 --> 00:02:56,230 valami egyszerű, mint a nyomtatás Minden ki egy mondatban. 56 00:02:56,230 --> 00:03:07,580 az int i kap 0, megint kevesebb diákok, i + +, printf "% s:% s. 57 00:03:07,580 --> 00:03:12,600 backslash n ", és most hadd dugja be értékeit ezen a két területen, 58 00:03:12,600 --> 00:03:19,055 diákok zárójelbe i. nevét, vessző, diákok zárójelbe i. ház, közel 59 00:03:19,055 --> 00:03:21,290 paren, pontosvessző. 60 00:03:21,290 --> 00:03:23,020 >> És most azt kell tennie, még egy dolog. 61 00:03:23,020 --> 00:03:26,600 Alján a fájl, azt kell szabad memória, amit kiosztott 62 00:03:26,600 --> 00:03:30,290 a színfalak mögött GetSring (), amely Természetesen hívások malloc, annak érdekében, hogy 63 00:03:30,290 --> 00:03:32,500 memóriát a húrok a felhasználó beír. 64 00:03:32,500 --> 00:03:35,720 De ez az egyszerű. 65 00:03:35,720 --> 00:03:42,610 az int kapok 0, i kevesebb, mint diákok, i + +, és a testben a 66 00:03:42,610 --> 00:03:48,670 Ez a for ciklus, én csak fog ingyenes hallgatók konzol i. nevét, 67 00:03:48,670 --> 00:03:52,300 és ingyenes a diákok zárójelbe i. házat. 68 00:03:52,300 --> 00:03:55,620 >> Most már egyértelműen használt három a hurok ebben a programban, ha tényleg azt 69 00:03:55,620 --> 00:03:58,800 Lehet, hogy csak használt ilyet, de ez csak a bemutató kedvéért, hogy a 70 00:03:58,800 --> 00:04:02,850 tudjuk meg három különböző lépéseket pontosan mit csinálunk. 71 00:04:02,850 --> 00:04:06,120 Mi először kap egy nevet és egy ház mind a diákok, mi majd 72 00:04:06,120 --> 00:04:08,900 kinyomtatásával a nevét és a házat mind a három diák, és 73 00:04:08,900 --> 00:04:11,910 akkor megyünk a szabad memória által használt egyes diákok. 74 00:04:11,910 --> 00:04:15,310 De biztosan tudtuk volna össze ez a az egyik nagyobb, a hurok. 75 00:04:15,310 --> 00:04:18,650 >> Nézzük most menteni, fordítani, és futtassa ezt a programot. 76 00:04:18,650 --> 00:04:26,850 hogy Struktúrák 0-ra. / struktúrákat 0, tanuló név, menjünk biztosít David, meg fog élni 77 00:04:26,850 --> 00:04:31,580 a Mather House, hallgató nevét, nézzük mondjuk Lauren, ő majd élni Leverett 78 00:04:31,580 --> 00:04:36,590 House, hallgató nevét, Rob, meg fog él Kirkland House. 79 00:04:36,590 --> 00:04:39,440 És valóban, Dávid van Mather, Lauren van Leverett, 80 00:04:39,440 --> 00:04:40,810 és Rob van Kirkland. 81 00:04:40,810 --> 00:04:43,425