>> SPEAKER 1: Lad os skrive et program, beder brugeren om navne og
huse af tre studerende.
Nu, for at gemme disse navne og huse vi kunne bruge, hvad seks variabler.
Tre strenge til navne, og en anden tre strenge til husene,
men vi ved allerede, at vi kan rydde op at kode ved hjælp af arrays i stedet for,
for eksempel en matrix af størrelsen 3 til tre navne, og en anden række
str. 3 for husene.
Men det viser sig, at vi kan rense det op endnu længere, og faktisk holde dem
navne og huse sammen, således at en studerendes navn og hans eller hendes hus
eller anden måde er indkapslet, så at tale, i den samme variabel.
>> For at gøre dette, er vi nødt til at erklære vores egen datatype, vores egen type i C,
at forfatterne af C ikke nødvendigvis tænke år siden.
For at gøre dette kan vi bruge nøgleordet typedef, sammen med
andet søgeord struct.
Lad os tage et kig.
Inde i structs.h, har jeg allerede fået startede med
herunder CS50 biblioteket.
Jeg næste kommer til at skrive typedef struct, og derefter en klammeparentes.
Inde i struct, vil jeg angive, at en elev skal have en
streng kaldet navn, og en anden streng kaldet hus.
Jeg har tænkt mig at så lukke mine krøllede parenteser, og angive, at navnet på
denne nye datatype skal være studerende.
Med andre ord via denne syntaks har jeg erklæret en ny datatype min egen
der ikke eksisterede for et øjeblik siden, og indersiden af ​​denne datatype er to data
felter eller data medlemmer, den ene kaldet navn, en kaldet hus, som begge
er af typen string.
>> Lad os nu bruge denne type i en faktiske program.
I structs0.c, jeg har ligeledes fået selv startede allerede med nogle
standardtekst kode, og jeg er nu kommer til at bruge disse data
skrive student, som følger.
Jeg først kommer til at erklære en vifte af typen student, vil jeg
kalder array studerende -
flertalsform -
og jeg vil præcisere, at dens størrelse vil være tre, hvilket varsel, er værdien af
de konstante studerende -
i alle hovedstæder -
at jeg har erklæret op her, tidligere i filen.
Lad os nu gentage over disse tre studerende og bede brugeren om
deres navne og huse.
>> for int jeg får 0, jeg er mindre end at konstant, jeg + +.
Og nu inde i kroppen af ​​dette for loop, jeg har tænkt mig at udskrive noget
ligesom studerendes navn.
Jeg derefter gå til rent faktisk at få det studerendes navn ved at angive
studerende bracketing jeg.
Med andre ord, jeg vil have det i'te studerende i et array kaldet studerende, men nu
Jeg ønsker at få på det i'te elevs navn, og for at gøre dette, vil jeg bruge
den. operatøren for at få på en specifikke område inde i struct.
Så jeg angive eleverne bracketing jeg. Navn får returværdien af ​​getString ().
I mellemtiden vil jeg printe ud noget lignende, siger studerende
hus, og nu vil jeg til at angive at den i'te felt studerende hus
skal få returværdien af et andet opkald til getString ().
>> Lad os nu gøre noget med disse tre elevernes navne og huse,
noget simpelt som udskrivning hver i en sætning.
for int jeg får 0, igen jeg er mindre end studerende i + +, printf "% s er% s.
backslash n ", og lad mig nu tilslutte værdierne af disse to områder,
studerende bracketing jeg. navn, komma, studerende bracketing jeg. hus tæt
paren, semikolon.
>> Og nu har jeg brug for at gøre en ting mere.
I bunden af ​​denne fil, jeg har brug for frigøre hukommelse, der blev tildelt
bag kulisserne ved GetSring (), som naturligvis kræver allokere med henblik på at
tildele hukommelse til strygerne brugeren skriver.
Men dette er enkel.
for int jeg får 0, i er mindre end studerende i + +, og inde i kroppen af
denne for-løkke, jeg simpelthen at gå til giver gratis elever beslag jeg. navn,
og frie elever bracketing jeg. hus.
>> Nu har vi klart anvendes tre efter sløjfer i dette program, da jeg virkelig
kunne bare have brugt en, men det er bare for demonstration skyld, så
Vi kan angive i tre særskilte trin hvad vi laver.
Vi er først at få et navn og et hus for hver af de studerende, er vi så
udskrive navn og huset for hver af de tre elever, og
så vi kommer til at frigøre hukommelse anvendes af hver af de studerende.
Men sikkert vi kunne har kombinere dette i en større for-løkke.
>> Lad os nu gemme, kompilere, og køre dette program.
gør structs 0. / structs 0, studerendes navn, lad os give David, han vil leve
i Mather House, studerendes navn, lad os siger Lauren, hun bor i Leverett
Hus, studerendes navn, Rob, vil han bor i Kirkland House.
Og ja, David er i Mather, Lauren er i Leverett,
og Rob er i Kirkland.