2 00:00:00,000 --> 00:00:02,760 >> SPEAKER 1: Napišimo program, ki pozove uporabnika za imeni in 3 00:00:02,760 --> 00:00:04,700 hiše treh študentov. 4 00:00:04,700 --> 00:00:08,840 Zdaj, za shranjevanje teh imen in hiš da bi nam, kaj, šest spremenljivk. 5 00:00:08,840 --> 00:00:12,260 Tri strune za imeni in drugo tri strune za hišah, 6 00:00:12,260 --> 00:00:16,560 ampak že vemo, da bomo lahko čiščenje da je koda, ki jo namesto z uporabo matrike, 7 00:00:16,560 --> 00:00:20,220 na primer matrika velikosti 3 za tri imena, in še en niz 8 00:00:20,220 --> 00:00:22,110 velikosti 3 za hiše. 9 00:00:22,110 --> 00:00:25,870 Vendar se izkaže, da lahko to počisti nadalje še vedno, in dejansko vodijo tisti, 10 00:00:25,870 --> 00:00:30,520 imena in hiše skupaj, tako da ime študenta in njegovo ali njeno hišo 11 00:00:30,520 --> 00:00:34,940 nekako zaprto, tako da rekoč v isti spremenljivko. 12 00:00:34,940 --> 00:00:39,095 >> Če želite to narediti, čeprav moramo razglasiti naša vrsta podatkov, naša vrsta v C, 13 00:00:39,095 --> 00:00:42,660 da so avtorji C ni nujno mislim pred leti. 14 00:00:42,660 --> 00:00:45,630 Če želite to narediti, da lahko uporabite ključno besedo typedef, skupaj z 15 00:00:45,630 --> 00:00:47,200 drugo ključno besedo struct. 16 00:00:47,200 --> 00:00:48,160 Oglejmo pogled. 17 00:00:48,160 --> 00:00:50,650 Znotraj structs.h, sem že gotten je začel 18 00:00:50,650 --> 00:00:52,560 vključno s knjižnico CS50. 19 00:00:52,560 --> 00:00:57,640 Jaz sem zraven bo tip typedef zgradimo, in potem kodrasti brace. 20 00:00:57,640 --> 00:01:01,370 Znotraj struct, bom določajo, da mora imeti študent 21 00:01:01,370 --> 00:01:04,960 Niz imenuje ime, in drugo Niz se imenuje hiša. 22 00:01:04,960 --> 00:01:08,430 Bom potem zaprem zavitimi oklepaji, in določite, da ime 23 00:01:08,430 --> 00:01:11,420 Ta nova vrsta podatkov mora biti študent. 24 00:01:11,420 --> 00:01:15,550 Z drugimi besedami, preko tega sintakse imajo I razglašena za nov podatkovni tip sam 25 00:01:15,550 --> 00:01:19,910 da ni obstajal pred nekaj trenutki, in Notranjost tega tipa podatkov sta podatki 26 00:01:19,910 --> 00:01:24,270 polja ali podatki člani, ena imenovana ime, poimenovan hiša, ki sta 27 00:01:24,270 --> 00:01:25,630 so tipa niza. 28 00:01:25,630 --> 00:01:27,690 >> Pojdimo zdaj uporabljajo to vrsto v pravega programa. 29 00:01:27,690 --> 00:01:30,210 30 00:01:30,210 --> 00:01:34,090 V structs0.c, sem podobno gotten Sam je začel že z nekaterimi 31 00:01:34,090 --> 00:01:36,999 boilerplate kodo, in zdaj sem da bo uporaba te podatke 32 00:01:36,999 --> 00:01:39,100 tip študenta, kot sledi. 33 00:01:39,100 --> 00:01:42,450 Jaz sem prvič dogaja, da ugotovi, array tipa študenta, bom 34 00:01:42,450 --> 00:01:43,920 imenujemo matrične študente - 35 00:01:43,920 --> 00:01:44,630 množina - 36 00:01:44,630 --> 00:01:49,360 in bom določajo, da se bo njena velikost tri, ki je oznaka, je vrednost 37 00:01:49,360 --> 00:01:50,880 Nenehne študentov - 38 00:01:50,880 --> 00:01:51,890 v vseh prestolnicah - 39 00:01:51,890 --> 00:01:54,930 da sem izjavila tu gor, prej v datoteki. 40 00:01:54,930 --> 00:01:58,280 Pojdimo zdaj Ponovil preko teh treh študentov, in da uporabnik 41 00:01:58,280 --> 00:02:00,050 njihova imena in hiše. 42 00:02:00,050 --> 00:02:05,422 >> za notr dobim 0, i je manj ki ni konstantna, i + +. 43 00:02:05,422 --> 00:02:08,600 In zdaj v notranjosti telesa to za zanka, bom izpisal nekaj 44 00:02:08,600 --> 00:02:11,470 kot so ime študenta. 45 00:02:11,470 --> 00:02:14,890 Jaz pa bom dejansko dobili, da študentska ime, ki ga določajo 46 00:02:14,890 --> 00:02:17,290 študenti oklepati i. 47 00:02:17,290 --> 00:02:21,550 Z drugimi besedami, želim študenta i- V matrika se imenuje študente, zdaj pa 48 00:02:21,550 --> 00:02:25,340 Želim, da se na da i-študent je ime, in to storiti, bom uporabila 49 00:02:25,340 --> 00:02:30,160 . operater, da bi dobili na specifično področje znotraj struct. 50 00:02:30,160 --> 00:02:37,100 Zato sem se opredeli študente oklepati i. Ime dobi vrnjeno vrednost GetString (). 51 00:02:37,100 --> 00:02:40,310 Medtem pa bom natisnete nekaj podobnega, pravijo študent je 52 00:02:40,310 --> 00:02:45,410 Hiša, zdaj pa grem, da določite da študenti hiša polje i- 53 00:02:45,410 --> 00:02:49,480 so dobili vrnjeno vrednost še en poziv k GetString (). 54 00:02:49,480 --> 00:02:52,350 >> Zdaj pa naredimo s temi tremi nekaj Imena in hiše učencev, 55 00:02:52,350 --> 00:02:56,230 nekaj preprostega, kot so tiskanje vsak v stavku. 56 00:02:56,230 --> 00:03:07,580 za notr dobim 0, spet sem manj kot študente, i + +, printf "% s je v% s. 57 00:03:07,580 --> 00:03:12,600 backslash n ", in zdaj mi priključite Vrednosti teh dveh področjih, 58 00:03:12,600 --> 00:03:19,055 študenti oklepati i. ime, vejica, študenti oklepati i. hiša, blizu 59 00:03:19,055 --> 00:03:21,290 paren, podpičje. 60 00:03:21,290 --> 00:03:23,020 >> In sedaj moram narediti še eno stvar. 61 00:03:23,020 --> 00:03:26,600 Na dnu te datoteke, moram sprostiti pomnilnik, ki je bil dodeljen 62 00:03:26,600 --> 00:03:30,290 V zakulisju s GetSring (), ki seveda zahteva malloc, da bi 63 00:03:30,290 --> 00:03:32,500 dodeliti pomnilnika za godala uporabnik vnese. 64 00:03:32,500 --> 00:03:35,720 Ampak to je preprost. 65 00:03:35,720 --> 00:03:42,610 za notr dobim 0, i je manj kot študente, i + +, in v telesu 66 00:03:42,610 --> 00:03:48,670 to zanko, bom preprosto bo zagotoviti prost študentov nosilec i. ime, 67 00:03:48,670 --> 00:03:52,300 in proste študente oklepati i. hišo. 68 00:03:52,300 --> 00:03:55,620 >> Zdaj smo jasno uporabljajo tri za zanke v tem programu, v resnici pa sem 69 00:03:55,620 --> 00:03:58,800 bi lahko uporabljamo samo enega, ampak to je samo zaradi demonstracija, tako da 70 00:03:58,800 --> 00:04:02,850 lahko določite v treh različnih koraka, kaj točno delamo. 71 00:04:02,850 --> 00:04:06,120 Mi smo najprej dobili ime in hišo za vsakega od učencev, smo nato 72 00:04:06,120 --> 00:04:08,900 tiskanje ime in hišo vsako od treh študentov in 73 00:04:08,900 --> 00:04:11,910 potem pa se bomo sprostili pomnilnik vsaka od študentov uporablja. 74 00:04:11,910 --> 00:04:15,310 Ampak zagotovo bi lahko ki smo jih združiti v en večji za zanko. 75 00:04:15,310 --> 00:04:18,650 >> Pojdimo zdaj rešiti, sestaviti, in zagon tega programa. 76 00:04:18,650 --> 00:04:26,850 omogočajo konstruktov. 0/0 konstruktov, študent je naštejemo, kaj je zagotoviti David, bom živel 77 00:04:26,850 --> 00:04:31,580 V Mather House, ime študenta, dajmo pravijo, Lauren, bo ona živi v Leverett 78 00:04:31,580 --> 00:04:36,590 Hiša, ime študenta, Rob, bo on živijo v Kirkland House. 79 00:04:36,590 --> 00:04:39,440 In res, David je v Mather, Lauren je v Leverett, 80 00:04:39,440 --> 00:04:40,810 Rob je v Kirkland. 81 00:04:40,810 --> 00:04:43,425