>> ZVUČNIK 1: Idemo napisati program koji traži od korisnika za imenima i
Kuće tri studenta.
Sada, za pohranu te imena i kuće smo mogli koristiti, ono, šest varijabli.
Tri žice za imena, i još jedan tri žice za kućama,
ali već znamo da možemo očistiti taj kod pomoću polja umjesto toga,
primjerice niz veličine 3 za tri imena, a drugi niz
veličine 3 za kuće.
No, ispostavilo se da možemo počistiti još dalje, i zapravo bi one
imena i kuće zajedno, tako da je Ime studenta i njegove ili njezine kuće
su neki inkapsulirani, tako govoriti, u istu varijablu.
>> Da biste to učinili, ipak, moramo objaviti naše vlastite vrste podataka, naš vlastiti tip u C,
da su autori C nije nužno sjetiti prije nekoliko godina.
Za to možemo koristiti ključnu riječ typedef, uz
druga ključna riječ struct.
Idemo pogledati.
Unutar structs.h, već sam stečen teme
uključujući CS50 knjižnici.
Ja sam sljedeći će se upisati typedef struct, a zatim kovrčava brace.
Unutar rekonstruirati ću odrediti da student ima
string zove ime, a drugi Niz zove kuća.
Idem onda zatvorim vitičastim zagradama, i odrediti da naziv
ovaj novi tip podataka mora biti student.
Drugim riječima, putem ovog sintakse jesam proglašena nova vrsta podataka moja
da ne postoji trenutak prije, a unutar ove vrste podataka su dva podatka
polja ili članovi podataka, jedan se zove ime, jedan se zove kuća, od kojih su oba
su tipa String.
>> Idemo sada koristite ovu vrstu u stvarnom programu.
U structs0.c, ja sam isto tako stečen ja počela već s nekim
predloženi broj, a ja sam sada ćemo koristiti ove podatke
tipa Student, kao što slijedi.
Ja sam prvi put će se proglasiti Niz tipa student, ja ću
pozovite studente niz -
množini -
a ja ću navesti da je njegova veličina će biti tri, koji je, obavijest je vrijednost
stalne STUDENTI -
u svim glavnim gradovima -
da sam proglasio ovdje gore, ranije u datoteci.
Idemo sada ponoviti tijekom te tri učenika, a brz korisnik za
njihova imena i kuće.
>> za int i dobili 0, i manje nego da je konstantna, i + +.
I sada unutar tijela to za loop, ja ću isprintati nešto
kao što su ime studenta.
Ja sam tada će zapravo dobiti koja Ime studenta određivanjem
studenti zagrada i.
Drugim riječima, želim i-th studenta u polje zove učenika, ali sada
Želim da se na taj ja-og studenta ime, a za to, ja ću koristiti
. Operater, kako bi se na specifično područje unutar struct.
Tako sam odrediti studenti zagrada sam. Naziv dobiva povratnu vrijednost GetString ().
U međuvremenu, ja ću isprintati nešto slično, govoreći studenta
kuća, a sada ću navesti da i-ti studenti kuća polje
će dobiti povratnu vrijednost još jedan poziv na GetString ().
>> Sada ćemo napraviti nešto s ove tri učeničkih imena i kuće,
nešto jednostavno poput tiska svaki u jednoj rečenici.
za int i dobiti 0, opet ja je manji od učenika, i + +, printf "% s je% s.
backslash n ", i sad neka mi priključite vrijednosti tih dvaju polja,
studenti zagrada sam ime, zarez., studenti zagrada i. kuća, u neposrednoj blizini
zagrada, zarez.
>> I sada mi je potrebno učiniti još jednu stvar.
Na dnu ove datoteke, moram osloboditi memoriju koja je dodijeljen
iza scene po GetSring (), koji Naravno poziva malloc, kako bi
alocirati memoriju za gudače korisnik upiše.
No, to je jednostavno.
za int i dobili 0, i manja je od učenika, i + +, i unutar tijela
ovo za petlju, jednostavno sam ću pružaju besplatan učenika nosač ja. naziv,
i slobodni studenti zagrada i. kuću.
>> Sada mi je jasno što se koristi za tri petlje u tom programu, a zapravo sam
mogla imati samo koristi jedan, ali to je samo zbog demonstraciju, tako da
možemo odrediti u tri različita korake što točno radimo.
Mi smo prvi put dobivamo ime i kuću za svaki od studenata, mi smo tada
ispišete ime i kuću za svaki od tri učenika, a
onda ćemo osloboditi memoriju koristi svaki od studenata.
No, sigurno smo mogli kombinirati u jedan veći za petlju.
>> Idemo sada spasiti, sastaviti, i pokrenuti ovaj program.
čine tvorevina, 0 /. tvorevina 0, studenta ime, idemo dati Davidu, on će živjeti
u Mather House, ime studenta, neka je kažu Lauren, ona će živjeti u Leverett
Kuća, ime studenta, Rob, on će živjeti u Kirkland House.
I doista, David je u Mather, Lauren je u Leverett,
a Rob je u Kirkland.