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.