2 00:00:00,000 --> 00:00:02,760 >> SPEAKER 1: Poďme napísať program, ktorý vyzve užívateľa na zadanie mena a 3 00:00:02,760 --> 00:00:04,700 domy troch študentov. 4 00:00:04,700 --> 00:00:08,840 Teraz pre uloženie týchto mien a domy by sme mohli použiť, čo šesť premenných. 5 00:00:08,840 --> 00:00:12,260 Tri reťazca pre názvy, a ďalšie tri struny pre domy, 6 00:00:12,260 --> 00:00:16,560 ale my už vieme, že môžeme vyčistiť že kód pomocou polí miesto, 7 00:00:16,560 --> 00:00:20,220 Napríklad pole veľkosti 3 pre tri mená, a ďalší rad 8 00:00:20,220 --> 00:00:22,110 veľkosť 3 pre domy. 9 00:00:22,110 --> 00:00:25,870 Ale ukazuje sa, môžeme to vyčistiť ešte ďalej, a vlastne udržať tie 10 00:00:25,870 --> 00:00:30,520 Mená a domy dohromady, aby Meno študenta a jeho alebo jej dom 11 00:00:30,520 --> 00:00:34,940 sú nejako zapuzdrené, tak hovoriť, do rovnakej premennej. 12 00:00:34,940 --> 00:00:39,095 >> Ak to chcete urobiť, aj keď musíme priznať náš vlastný dátový typ, naše vlastné typ v jazyku C, 13 00:00:39,095 --> 00:00:42,660 že autori C, nie nutne myslíte, že pred rokmi. 14 00:00:42,660 --> 00:00:45,630 K tomu môžeme použiť kľúčové slovo typedef, spolu s 15 00:00:45,630 --> 00:00:47,200 iné kľúčové slovo struct. 16 00:00:47,200 --> 00:00:48,160 Poďme sa pozrieť. 17 00:00:48,160 --> 00:00:50,650 Vnútri structs.h, som už dostali začal 18 00:00:50,650 --> 00:00:52,560 vrátane knižnice CS50. 19 00:00:52,560 --> 00:00:57,640 Ja budúci bude písať typedef struct, a potom zložená zátvorka. 20 00:00:57,640 --> 00:01:01,370 Vnútri struct, budem určiť, že študent musí mať 21 00:01:01,370 --> 00:01:04,960 string s názvom názov, a ďalšie reťazec s názvom dom. 22 00:01:04,960 --> 00:01:08,430 Budem potom zavriem zložené zátvorky, a určiť, že názov 23 00:01:08,430 --> 00:01:11,420 tento nový dátový typ musí byť študentom. 24 00:01:11,420 --> 00:01:15,550 Inými slovami, pomocou tejto syntaxe sa mi vyhlásil nový dátový typ z mojej vlastnej 25 00:01:15,550 --> 00:01:19,910 že neexistovala pred chvíľou, a vnútri tohto typu dát sú dva údaje 26 00:01:19,910 --> 00:01:24,270 pole alebo dátové členy, jeden s názvom názov, jeden volal dom, ktorý obaja 27 00:01:24,270 --> 00:01:25,630 sú typu string. 28 00:01:25,630 --> 00:01:27,690 >> Poďme sa teraz používajú tento typ v skutočnom programe. 29 00:01:27,690 --> 00:01:30,210 30 00:01:30,210 --> 00:01:34,090 V structs0.c, som rovnako dostal Sám začal už s niektorými 31 00:01:34,090 --> 00:01:36,999 často používaný kód, a ja som teraz bude tieto dáta použiť 32 00:01:36,999 --> 00:01:39,100 typ študenta, a to nasledovne. 33 00:01:39,100 --> 00:01:42,450 Ja som prvý bude deklarovať Pole typu študent, budem 34 00:01:42,450 --> 00:01:43,920 zavolajte študentmi pole - 35 00:01:43,920 --> 00:01:44,630 množné číslo - 36 00:01:44,630 --> 00:01:49,360 a budem špecifikovať, že jeho veľkosť bude tri, ktoré, oznámenia, je hodnota 37 00:01:49,360 --> 00:01:50,880 konštantný ŠTUDENTI - 38 00:01:50,880 --> 00:01:51,890 vo všetkých hlavných mestách - 39 00:01:51,890 --> 00:01:54,930 že som vyhlásil tu, skôr v súbore. 40 00:01:54,930 --> 00:01:58,280 Poďme sa teraz iterácii týchto troch študenti, a vyzve užívateľa k 41 00:01:58,280 --> 00:02:00,050 ich mená a domy. 42 00:02:00,050 --> 00:02:05,422 >> pre int i dostať 0, aj menej ako konštantný, i + +. 43 00:02:05,422 --> 00:02:08,600 A teraz vo vnútri tela to pre slučky, idem vytlačiť niečo 44 00:02:08,600 --> 00:02:11,470 ako meno študenta. 45 00:02:11,470 --> 00:02:14,890 Ja potom bude skutočne dostať, že meno študenta zadaním 46 00:02:14,890 --> 00:02:17,290 Študenti bracketing i 47 00:02:17,290 --> 00:02:21,550 Inými slovami, chcem i-teho študenta na pole s názvom študenti, ale teraz 48 00:02:21,550 --> 00:02:25,340 Chcem sa dostať na to i-teho študenta meno, a ako to urobiť, budem používať 49 00:02:25,340 --> 00:02:30,160 . hospodársky subjekt, aby si na špecifických oblastí vo vnútri struct. 50 00:02:30,160 --> 00:02:37,100 Tak som zadať študenti bracketing som. Názov dostane návratovú hodnotu GetString (). 51 00:02:37,100 --> 00:02:40,310 Medzitým, idem vytlačiť niečo podobné, povedal študenta 52 00:02:40,310 --> 00:02:45,410 dom, a teraz budem špecifikovať že i-tý študenti house pole 53 00:02:45,410 --> 00:02:49,480 musí získať návratovú hodnotu ďalšie volanie GetString (). 54 00:02:49,480 --> 00:02:52,350 >> Teraz sa poďme niečo urobiť s týmito tromi Mená a domy žiakov, 55 00:02:52,350 --> 00:02:56,230 niečo jednoduchého ako tlač každý vo vete. 56 00:02:56,230 --> 00:03:07,580 pre int i sa 0, opäť som je nižšia než študenti, i + +, printf "% s je% s 57 00:03:07,580 --> 00:03:12,600 Spätné lomítko n ", a teraz mi dovoľte pripojiť Hodnoty týchto dvoch oblastiach, 58 00:03:12,600 --> 00:03:19,055 Študenti bracketing som. Názov, čiarka, Študenti bracketing i dom, v blízkosti 59 00:03:19,055 --> 00:03:21,290 zátvorka, bodkočiarka. 60 00:03:21,290 --> 00:03:23,020 >> A teraz musím urobiť ešte jednu vec. 61 00:03:23,020 --> 00:03:26,600 V dolnej časti tohto súboru, musím uvoľniť pamäť, ktorá bola pridelená 62 00:03:26,600 --> 00:03:30,290 v zákulisí podľa GetSring (), ktorá samozrejme volanie malloc, aby sa 63 00:03:30,290 --> 00:03:32,500 alokovať pamäť pre sláčiky používateľ zadá. 64 00:03:32,500 --> 00:03:35,720 Ale to je jednoduché. 65 00:03:35,720 --> 00:03:42,610 pre int i dostať 0, aj je menšia než študenti, i + +, a vo vnútri tela 66 00:03:42,610 --> 00:03:48,670 Tento cyklus for, som jednoducho ísť na poskytovať bezplatnú študenti držiak i názov, 67 00:03:48,670 --> 00:03:52,300 a voľné študenti bracketing i dom. 68 00:03:52,300 --> 00:03:55,620 >> Teraz sme jasne používajú tri pre slučky v tomto programe, keď som naozaj 69 00:03:55,620 --> 00:03:58,800 mohla byť použitá len jedna, ale je to len pre demonštráciu príčinu, aby 70 00:03:58,800 --> 00:04:02,850 môžeme určiť, v troch rôznych kroky, čo presne robíme. 71 00:04:02,850 --> 00:04:06,120 Sme prvý získanie mena a dom pre každý zo študentov, sme potom 72 00:04:06,120 --> 00:04:08,900 vytlačiť názov a dom pre každý z troch študentov, a 73 00:04:08,900 --> 00:04:11,910 potom budeme uvoľniť pamäť použiť každý zo študentov. 74 00:04:11,910 --> 00:04:15,310 Ale určite by sme sa mohli sme spojiť tento do jedného väčšieho cyklu for. 75 00:04:15,310 --> 00:04:18,650 >> Poďme teraz uložiť, skompilovať, a spustiť tento program. 76 00:04:18,650 --> 00:04:26,850 tvorí structs 0. / structs 0, študenta meno, poďme poskytnúť Dávida, bude žiť 77 00:04:26,850 --> 00:04:31,580 v Mather dom, meno študenta, poďme hovorí Lauren, ona žije v Leverett 78 00:04:31,580 --> 00:04:36,590 Dom, meno študenta, Rob, že bude žijú v Kirkland House. 79 00:04:36,590 --> 00:04:39,440 A skutočne, Dávid je v Mather, Lauren je v Leverett, 80 00:04:39,440 --> 00:04:40,810 a Rob je v Kirkland. 81 00:04:40,810 --> 00:04:43,425