>> Spreker 1: Kom ons skryf 'n program wat vra die gebruiker om die name en
huise van drie studente.
Nou, daardie name en huise te stoor ons kan gebruik, wat ses veranderlikes.
Drie stringe vir die name, en 'n ander drie snare vir die huise,
maar ons weet reeds dat ons kan skoon te maak wat die kode deur die gebruik van skikkings plaas,
byvoorbeeld 'n verskeidenheid van grootte 3 vir die drie name, en 'n ander verskeidenheid van
grootte 3 vir die huise.
Maar dit blyk uit ons dit kan skoon te maak nog verder, en eintlik hou daardie
name en huise bymekaar, sodat 'n student se naam en sy of haar huis
een of ander manier vervat, so te spreek, in dieselfde veranderlike.
>> Om dit te doen, al is, moet ons om te verklaar ons eie data tipe, ons eie soort in C,
dat die skrywers van C nie noodwendig dink aan jare gelede.
Om dit te doen, kan ons die term gebruik typedef, saam met die
ander navraag struct.
Kom ons neem 'n blik.
Binnekant van structs.h, ek het reeds gekry het deur
insluitend die CS50 biblioteek.
Ek is volgende gaan typedef struct om te tik, en dan 'n krullerige stut.
Binnekant van die struct, ek gaan om te spesifiseer dat 'n student 'n
string genoem naam, en 'n ander string genoem huis.
Ek gaan dan sluit my krullerige draadjies, en spesifiseer dat die naam van die
hierdie nuwe data tipe sal student wees.
Met ander woorde, deur middel van hierdie sintaksis het ek verklaar 'n nuwe data tipe van my eie
wat nie bestaan ​​het nie 'n oomblik gelede, en binnekant van die data tipe is twee data
velde of data lede, een wat geroep is die naam, een wat geroep is die huis, wat beide
is van die tipe string.
>> Kom ons gebruik nou hierdie tipe in 'n werklike program.
In structs0.c, ek het insgelyks gekry myself begin reeds met 'n paar
boiler kode, en ek is nou gaan hierdie data te gebruik
tik student, soos volg.
Ek gaan eers 'n te verklaar reeks van die soort student, ek sal
noem die skikking studente -
meervoud -
en ek sal spesifiseer dat sy grootte sal wees drie, wat, kennisgewing, is die waarde van
die konstante studente -
in hoofletters -
dat ek verklaar hier, vroeër in die lêer.
Kom ons kyk nou Itereer oor die drie studente, en Vra die gebruiker vir
hul name en huise.
>> vir int i kry 0, i minder as wat konstant, i + +.
En nou binnekant van die liggaam van hierdie vir lus, ek gaan om uit te druk iets
soos die student se naam.
Ek is dan gaan eintlik kry dat student se naam deur die spesifiseer
studente in hakies i.
Met ander woorde ek wil die i-de student in die skikking met die naam studente, maar nou
Ek wil graag op daardie i-de student se noem, en om dit te doen, ek gaan om te gebruik
die. operateur, in orde te kry op 'n spesifieke veld binne die struct.
So ek spesifiseer studente in hakies i. Naam kry die terugkeer waarde van GetString ().
Intussen het ek gaan om uit te druk iets soortgelyks, sê student se
huis, en nou gaan ek om te spesifiseer dat die i-de studente huis veld
sal die terugkeer waarde van kry 'n ander oproep om GetString ().
>> Nou laat ons iets doen met hierdie drie studente se name en huise,
iets eenvoudig soos die druk wat elk in 'n sin.
vir int ek kry 0, i is weer minder as studente, i + +, printf "% s is in% s.
backslash n ", en nou laat my prop in die waardes van die twee velde,
studente in hakies i. naam, komma, studente in hakies i. huis, naby
paren, kommapunt.
>> En nou, ek moet nog een ding om te doen.
Aan die onderkant van hierdie lêer, ek nodig het om te bevry die geheue wat toegeken is
agter die skerms deur GetSring (), wat natuurlik noem malloc, ten einde te
toeken geheue vir die snare die gebruiker.
Maar om dit te eenvoudig is.
vir int i kry 0, i is minder as studente, i + +, en binne-in die liggaam van
hierdie lus, ek eenvoudig gaan verskaf gratis studente bracket i. naam,
en gratis studente in hakies i. huis.
>> Nou, ons het duidelik gebruik drie sirkelroetes vir in hierdie program, toe ek regtig
kon net gebruik om een, maar dit is net ter wille van demonstrasie's, sodat
ons kan spesifiseer in drie afsonderlike stappe wat presies ons doen.
Ons is die eerste om 'n naam en 'n huis vir elk van die studente, ons is dan
druk die naam en die huis vir elk van die drie studente en
dan gaan ons die geheue te bevry gebruik word deur elk van die studente.
Maar sekerlik kan ons het dit kombineer in een groter lus.
>> Kom ons nou ook red, saamstel, en die uitvoering van hierdie program.
maak structs 0. / structs 0, student se noem, laat ons voorsien Dawid, sal hy lewe
in Mather House, student se naam, laat ons sê Lauren, sy sal in Leverett lewe
House, student se naam, Rob, hy sal woon in Kirkland House.
En inderdaad, Dawid is in Mather, Lauren is in Leverett,
en Rob is in Kirkland.