SPEAKER 1: Napišimo program, ki pozove uporabnika za imeni in hiše treh študentov. Zdaj, za shranjevanje teh imen in hiš da bi nam, kaj, šest spremenljivk. Tri strune za imeni in drugo tri strune za hišah, ampak že vemo, da bomo lahko čiščenje da je koda, ki jo namesto z uporabo matrike, na primer matrika velikosti 3 za tri imena, in še en niz velikosti 3 za hiše. Vendar se izkaže, da lahko to počisti nadalje še vedno, in dejansko vodijo tisti, imena in hiše skupaj, tako da ime študenta in njegovo ali njeno hišo nekako zaprto, tako da rekoč v isti spremenljivko. Če želite to narediti, čeprav moramo razglasiti naša vrsta podatkov, naša vrsta v C, da so avtorji C ni nujno mislim pred leti. Če želite to narediti, da lahko uporabite ključno besedo typedef, skupaj z drugo ključno besedo struct. Oglejmo pogled. Znotraj structs.h, sem že gotten je začel vključno s knjižnico CS50. Jaz sem zraven bo tip typedef zgradimo, in potem kodrasti brace. Znotraj struct, bom določajo, da mora imeti študent Niz imenuje ime, in drugo Niz se imenuje hiša. Bom potem zaprem zavitimi oklepaji, in določite, da ime Ta nova vrsta podatkov mora biti študent. Z drugimi besedami, preko tega sintakse imajo I razglašena za nov podatkovni tip sam da ni obstajal pred nekaj trenutki, in Notranjost tega tipa podatkov sta podatki polja ali podatki člani, ena imenovana ime, poimenovan hiša, ki sta so tipa niza. Pojdimo zdaj uporabljajo to vrsto v pravega programa. V structs0.c, sem podobno gotten Sam je začel že z nekaterimi boilerplate kodo, in zdaj sem da bo uporaba te podatke tip študenta, kot sledi. Jaz sem prvič dogaja, da ugotovi, array tipa študenta, bom imenujemo matrične študente - množina - in bom določajo, da se bo njena velikost tri, ki je oznaka, je vrednost Nenehne študentov - v vseh prestolnicah - da sem izjavila tu gor, prej v datoteki. Pojdimo zdaj Ponovil preko teh treh študentov, in da uporabnik njihova imena in hiše. za notr dobim 0, i je manj ki ni konstantna, i + +. In zdaj v notranjosti telesa to za zanka, bom izpisal nekaj kot so ime študenta. Jaz pa bom dejansko dobili, da študentska ime, ki ga določajo študenti oklepati i. Z drugimi besedami, želim študenta i- V matrika se imenuje študente, zdaj pa Želim, da se na da i-študent je ime, in to storiti, bom uporabila . operater, da bi dobili na specifično področje znotraj struct. Zato sem se opredeli študente oklepati i. Ime dobi vrnjeno vrednost GetString (). Medtem pa bom natisnete nekaj podobnega, pravijo študent je Hiša, zdaj pa grem, da določite da študenti hiša polje i- so dobili vrnjeno vrednost še en poziv k GetString (). Zdaj pa naredimo s temi tremi nekaj Imena in hiše učencev, nekaj preprostega, kot so tiskanje vsak v stavku. za notr dobim 0, spet sem manj kot študente, i + +, printf "% s je v% s. backslash n ", in zdaj mi priključite Vrednosti teh dveh področjih, študenti oklepati i. ime, vejica, študenti oklepati i. hiša, blizu paren, podpičje. In sedaj moram narediti še eno stvar. Na dnu te datoteke, moram sprostiti pomnilnik, ki je bil dodeljen V zakulisju s GetSring (), ki seveda zahteva malloc, da bi dodeliti pomnilnika za godala uporabnik vnese. Ampak to je preprost. za notr dobim 0, i je manj kot študente, i + +, in v telesu to zanko, bom preprosto bo zagotoviti prost študentov nosilec i. ime, in proste študente oklepati i. hišo. Zdaj smo jasno uporabljajo tri za zanke v tem programu, v resnici pa sem bi lahko uporabljamo samo enega, ampak to je samo zaradi demonstracija, tako da lahko določite v treh različnih koraka, kaj točno delamo. Mi smo najprej dobili ime in hišo za vsakega od učencev, smo nato tiskanje ime in hišo vsako od treh študentov in potem pa se bomo sprostili pomnilnik vsaka od študentov uporablja. Ampak zagotovo bi lahko ki smo jih združiti v en večji za zanko. Pojdimo zdaj rešiti, sestaviti, in zagon tega programa. omogočajo konstruktov. 0/0 konstruktov, študent je naštejemo, kaj je zagotoviti David, bom živel V Mather House, ime študenta, dajmo pravijo, Lauren, bo ona živi v Leverett Hiša, ime študenta, Rob, bo on živijo v Kirkland House. In res, David je v Mather, Lauren je v Leverett, Rob je v Kirkland.