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.