>> 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.