>> SPEAKER 1: Pieņemsim uzrakstīt programmu, kas liek lietotājam attiecībā uz nosaukumiem un
nami trīs studenti.
Tagad, lai saglabātu šos nosaukumus un mājas mēs varētu izmantot, ko, seši mainīgie.
Trīs stīgas nosaukumus, un vēl trīs stīgas mājās,
bet mēs jau zinām, ka mēs varam sakopt šis kods, izmantojot bloki vietā,
piemēram, masīvs lieluma 3 Trīs vārdi, un vēl masīvs
izmērs 3 par mājām.
Bet izrādās, mēs varam tīrīt to uz augšu vēl joprojām, un faktiski saglabāt tos
nosaukumi un mājas kopā, lai studenta vārdu un viņa vai viņas mājas
ir kaut kas iekapsulēti, tāpēc, lai runā, uz tā paša mainīgā lieluma.
>> Lai to izdarītu, lai gan, mums ir nepieciešams atzīt mūsu pašu datu tipu, mūsu pašu tips C,
ka autori C nebija obligāti domāju, ka pirms gadiem.
Lai to paveiktu, mēs varam izmantot atslēgvārdu typedef, kopā ar
citi atslēgvārds struktūrai.
Pieņemsim to apskatīt.
Iekšpusē structs.h, es esmu jau gotten sācis
ieskaitot CS50 bibliotēkā.
Es esmu blakus gatavojas rakstīt typedef struktūrai, un tad cirtaini lencēm.
Iekšpusē struktūrai, es esmu gatavojas norādīt, ka students ir
stīgu sauc vārdu, un vēl stīgu sauc māja.
Es esmu gatavojas, lai pēc tam aizvērt cirtaini bikšturi, un norāda, ka vārds
šī jaunā datu tips ir students.
Citiem vārdiem sakot, izmantojot šo sintaksi es esmu pasludināja jaunu datu tipu mana
, kas nepastāvēja pirms brīža, un iekšpusē šo datu tipu divu datu
lauki vai datu locekļi, vienu sauc vārds, viens sauc house, kas abi
ir tipa virknes.
>> Pieņemsim tagad var izmantot šāda veida jo faktiskā programmā.
In structs0.c, es esmu līdzīgi gotten pats sākās jau ar dažām
tekstveidnes kodu, un es esmu tagad gatavojas izmantot šo informāciju
tipa students, šādi.
Es esmu pirmo reizi gatavojas pasludināt masīvs tipa students, es ņemšu
zvaniet masīva studentiem -
daudzskaitlī -
un es ņemšu norādīt, ka tās lielums būs trīs, kas, paziņojums, ir vērtība
konstante studentiem -
visās galvaspilsētās -
ka es esmu deklarēts šeit, agrāk failā.
Pieņemsim tagad atkārtot pa šiem trim studenti, un atgādinās lietotājam par
viņu vārdi un mājas.
>> par int i saņemt 0, i ir mazāk nekā konstante, i + +.
Un tagad iekšpusē ķermeņa šis cilpa, es esmu gatavojas izdrukāt kaut ko
piemēram, studenta vārdu.
Es esmu tam gatavojas faktiski iegūtu, ka studenta vārdu, norādot
studentiem Bracket i.
Citiem vārdiem sakot, es gribu i-students in masīvs sauc studenti, bet tagad
Es vēlos saņemt tajā i-studenta vārdu, un tas ir jādara, es esmu gatavojas izmantot
. operators, lai iegūtu at specifiska joma iekšpusē struktūrai.
Tāpēc es norādīt studentiem kronšteins i. Nosaukumu izpaužas atgriezto vērtību GetString ().
Tajā pašā laikā, es esmu gatavojas izdrukāt kaut kas līdzīgs, sakot studenta
māju, un tagad es esmu gatavojas, lai precizētu ka i-studentiem māja jomā
ir iespēja saņemt atgriezto vērtību vēl viens aicinājums GetString ().
>> Tagad kaut ko darīt ar šīm trim studentu vārdi un mājas,
kaut ko vienkāršu, piemēram, drukāšanas katrs veic teikumā.
Int i get 0, atkal i ir mazāks nekā studenti, i + +, printf "% s ir% s.
slīpsvītra n ", un tagad ļaujiet man spraudni vērtības šajās divās jomās,
studentiem Bracket i. vārdu, komatu, studentiem Bracket i. māja, netālu
paren, semikols.
>> Un tagad man ir nepieciešams darīt vēl viena lieta.
Apakšā šo failu, man ir nepieciešams, lai atbrīvotu atmiņu, kas tika piešķirta
aizkulisēs ar GetSring (), kas Protams prasa malloc, lai
piešķirt atmiņu stīgām lietotājs veidiem.
Bet tas ir vienkārši.
Int i iegūst: 0, i ir mazāks nekā studenti, i + +, un iekšpusē ķermeņa
šis cilpas, es esmu tikai gatavojas nodrošina bezmaksas studentiem kronšteinu i. nosaukums,
un bezmaksas studentu Bracket i. māja.
>> Tagad mēs esam nepārprotami lieto trīs cilpas šajā programmā, ja tiešām es
varēja tikai izmantot vienu, bet tas ir tikai demonstrēšanai dēļ, lai
mēs varam norādīt trīs atsevišķos soļi, ko mēs īsti darām.
Mēs vispirms iegūt nosaukumu un māju attiecībā uz katru no studentu, mēs tam
izdrukāt nosaukumu un māju katra no trim studentiem, un
tad mēs ejam, lai atbrīvotu atmiņu katra no studenti.
Bet, protams, mēs varētu esam apvienot to vienā lielāks par cilpu.
>> Pieņemsim tagad glābt, apkopot, un palaist šo programmu.
padara structs 0. / structs 0, studenta nosaukums, pieņemsim sniegt Dāvidu, viņš dzīvo
in Mather namā, studenta vārds, pieņemsim saka Lauren, viņa būs dzīvot Leverett
Māja, studenta vārds, Rob, viņš dzīvo Kirkland House.
Un tiešām, Dāvids ir Mather, Lauren ir Leverett,
un Rob ir Kirkland.