>> SPEAKER 1: Să scrie un program care solicită utilizatorului pentru numele și
case de trei elevi.
Acum, pentru a stoca aceste nume și case am putea folosi, ceea ce, șase variabile.
Trei siruri de caractere pentru numele, și un alt trei șiruri de case,
dar știm deja că ne putem curăța acest cod, prin utilizarea matrice în schimb,
de exemplu, o serie de dimensiune 3 pentru trei nume, și o altă serie de
Dimensiunea 3 pentru case.
Dar se pare că ne putem curăța asta mai mult încă, și de fapt, să păstreze pe cei
nume și case împreună, astfel încât o Numele elevului și casa lui sau a ei
sunt într-un fel încapsulate, așa să vorbesc, în aceeași variabilă.
>> Pentru a face acest lucru, deși, trebuie să declare tip noastra de date proprie, propriul nostru tip în C,
că autorii C nu conduce, cred că de ani în urmă.
Pentru a face acest lucru, putem folosi cuvântul cheie typedef, împreună cu
struct alte cuvinte cheie.
Să aruncăm o privire.
In interiorul structs.h, am deja ajuns început de
inclusiv biblioteca CS50.
Am lângă o să tip struct typedef, și apoi o acoladă.
În interiorul de struct, am de gând să specifică faptul că un student trebuie să aibă o
string numit nume, și un alt șir numit casă.
Mă duc apoi pentru a închide bretele mele buclat, și precizează că numele de
acest nou tip de date trebuie să fie elev.
Cu alte cuvinte, prin această sintaxă avea eu a declarat un nou tip de date de propria mea
că nu a existat un moment în urmă, și în interiorul acestui tip de date sunt două date
câmpuri sau membrii de date, unul numit nume, unul numit casă, ambele fiind
sunt de tip șir.
>> Să folosim acum acest tip de într-un program real.
În structs0.c, am ajuns la fel de am început deja cu unele
cod șabloane, iar eu sunt acum de gând să utilizeze aceste date
tip de student, după cum urmează.
Am în primul rând să declare un matrice de elev tip, voi
apel elevii matrice -
plural -
și voi preciza că dimensiunea acesteia va fi trei, care, aviz, este valoarea de
Studenții constante -
în toate capitalele -
pe care le-am declarat aici, mai devreme în fișierul.
Hai acum repeta pe cele trei studenți, și cere utilizatorului pentru
numele și casele lor.
>> pentru int i obține 0, i este mai puțin decât că constanta, i + +.
Și acum în interiorul corpului de acest lucru pentru buclă, am de gând să imprima ceva
cum ar fi numele studentului.
Am apoi mergi la a lua de fapt, că Numele elevului cu precizarea
studenții bracketing i.
Cu alte cuvinte, vreau studentului i-lea în matrice numit studenți, dar acum
Vreau să ajung la faptul că i-lea student numele, și pentru a face acest lucru, am de gând să utilizeze
. Operatorul, în scopul de a ajunge la un în interiorul specific domeniu a struct.
Așa că am specifica studenți bracketing i. Nume devine valoarea de returnare a getString ().
Între timp, am de gând să imprima ceva asemănător, spune student
casa, iar acum am de gând să se precizeze că domeniul casă studenți i-lea
se obține valoarea de returnare a un alt apel la getString ().
>> Acum, hai sa facem ceva cu aceste trei numele și casele studenților,
ceva simplu cum ar fi imprimare fiecare într-o propoziție.
pentru int i se 0, din nou, i este mai mică de studenți, i + +, printf "% s este% s.
backslash n ", și acum lasă-mă să conectați valorile din aceste două domenii,
studenții bracketing i. nume, virgulă, studenții bracketing i. casă, aproape
paren, punct și virgulă.
>> Și acum am nevoie pentru a face un singur lucru.
În partea de jos a acestui fișier, trebuie să elibera memorie care au fost alocate
în spatele scenei de GetSring (), care invită desigur malloc, în scopul de a
aloca memorie pentru siruri de caractere tipurile de utilizatori.
Dar acest lucru sa este simplu.
pentru int i obține 0, i este mai mică de studenți, i + +, iar în interiorul corpului
acest lucru pentru bucla, am pur și simplu să oferă gratuit studenților suport i. nume,
și studenții gratuite bracketing i.. casă.
>> Acum, ne-am folosit în mod clar pentru trei bucle în acest program, atunci când într-adevăr am
poate doar au folosit-o, dar acest lucru este doar de dragul demonstrație, astfel încât
putem preciza în trei distincte pașii exact ceea ce facem.
Primim în primul rând un nume și o casă pentru fiecare dintre elevi, suntem apoi
imprimarea numele și casa de fiecare dintre cei trei elevi, iar
apoi vom elibera memoria utilizate de către fiecare dintre elevi.
Dar cu siguranță am fi putut combina aceasta într-una mai mare pentru buclă.
>> Să acum salva, compila, și a alerga acest program.
fac structs 0. / structs 0, student nume, să ofere David, el va trăi
în Mather House, nume elev, să spune Lauren, ea va trăi în Leverett
Casa, numele elevului, Rob, el voi trăiesc în Kirkland House.
Și într-adevăr, David este în Mather, Lauren este în Leverett,
și Rob este în Kirkland.