2 00:00:00,000 --> 00:00:02,760 >> ZVUČNIK 1: Idemo napisati program koji traži od korisnika za imenima i 3 00:00:02,760 --> 00:00:04,700 Kuće tri studenta. 4 00:00:04,700 --> 00:00:08,840 Sada, za pohranu te imena i kuće smo mogli koristiti, ono, šest varijabli. 5 00:00:08,840 --> 00:00:12,260 Tri žice za imena, i još jedan tri žice za kućama, 6 00:00:12,260 --> 00:00:16,560 ali već znamo da možemo očistiti taj kod pomoću polja umjesto toga, 7 00:00:16,560 --> 00:00:20,220 primjerice niz veličine 3 za tri imena, a drugi niz 8 00:00:20,220 --> 00:00:22,110 veličine 3 za kuće. 9 00:00:22,110 --> 00:00:25,870 No, ispostavilo se da možemo počistiti još dalje, i zapravo bi one 10 00:00:25,870 --> 00:00:30,520 imena i kuće zajedno, tako da je Ime studenta i njegove ili njezine kuće 11 00:00:30,520 --> 00:00:34,940 su neki inkapsulirani, tako govoriti, u istu varijablu. 12 00:00:34,940 --> 00:00:39,095 >> Da biste to učinili, ipak, moramo objaviti naše vlastite vrste podataka, naš vlastiti tip u C, 13 00:00:39,095 --> 00:00:42,660 da su autori C nije nužno sjetiti prije nekoliko godina. 14 00:00:42,660 --> 00:00:45,630 Za to možemo koristiti ključnu riječ typedef, uz 15 00:00:45,630 --> 00:00:47,200 druga ključna riječ struct. 16 00:00:47,200 --> 00:00:48,160 Idemo pogledati. 17 00:00:48,160 --> 00:00:50,650 Unutar structs.h, već sam stečen teme 18 00:00:50,650 --> 00:00:52,560 uključujući CS50 knjižnici. 19 00:00:52,560 --> 00:00:57,640 Ja sam sljedeći će se upisati typedef struct, a zatim kovrčava brace. 20 00:00:57,640 --> 00:01:01,370 Unutar rekonstruirati ću odrediti da student ima 21 00:01:01,370 --> 00:01:04,960 string zove ime, a drugi Niz zove kuća. 22 00:01:04,960 --> 00:01:08,430 Idem onda zatvorim vitičastim zagradama, i odrediti da naziv 23 00:01:08,430 --> 00:01:11,420 ovaj novi tip podataka mora biti student. 24 00:01:11,420 --> 00:01:15,550 Drugim riječima, putem ovog sintakse jesam proglašena nova vrsta podataka moja 25 00:01:15,550 --> 00:01:19,910 da ne postoji trenutak prije, a unutar ove vrste podataka su dva podatka 26 00:01:19,910 --> 00:01:24,270 polja ili članovi podataka, jedan se zove ime, jedan se zove kuća, od kojih su oba 27 00:01:24,270 --> 00:01:25,630 su tipa String. 28 00:01:25,630 --> 00:01:27,690 >> Idemo sada koristite ovu vrstu u stvarnom programu. 29 00:01:27,690 --> 00:01:30,210 30 00:01:30,210 --> 00:01:34,090 U structs0.c, ja sam isto tako stečen ja počela već s nekim 31 00:01:34,090 --> 00:01:36,999 predloženi broj, a ja sam sada ćemo koristiti ove podatke 32 00:01:36,999 --> 00:01:39,100 tipa Student, kao što slijedi. 33 00:01:39,100 --> 00:01:42,450 Ja sam prvi put će se proglasiti Niz tipa student, ja ću 34 00:01:42,450 --> 00:01:43,920 pozovite studente niz - 35 00:01:43,920 --> 00:01:44,630 množini - 36 00:01:44,630 --> 00:01:49,360 a ja ću navesti da je njegova veličina će biti tri, koji je, obavijest je vrijednost 37 00:01:49,360 --> 00:01:50,880 stalne STUDENTI - 38 00:01:50,880 --> 00:01:51,890 u svim glavnim gradovima - 39 00:01:51,890 --> 00:01:54,930 da sam proglasio ovdje gore, ranije u datoteci. 40 00:01:54,930 --> 00:01:58,280 Idemo sada ponoviti tijekom te tri učenika, a brz korisnik za 41 00:01:58,280 --> 00:02:00,050 njihova imena i kuće. 42 00:02:00,050 --> 00:02:05,422 >> za int i dobili 0, i manje nego da je konstantna, i + +. 43 00:02:05,422 --> 00:02:08,600 I sada unutar tijela to za loop, ja ću isprintati nešto 44 00:02:08,600 --> 00:02:11,470 kao što su ime studenta. 45 00:02:11,470 --> 00:02:14,890 Ja sam tada će zapravo dobiti koja Ime studenta određivanjem 46 00:02:14,890 --> 00:02:17,290 studenti zagrada i. 47 00:02:17,290 --> 00:02:21,550 Drugim riječima, želim i-th studenta u polje zove učenika, ali sada 48 00:02:21,550 --> 00:02:25,340 Želim da se na taj ja-og studenta ime, a za to, ja ću koristiti 49 00:02:25,340 --> 00:02:30,160 . Operater, kako bi se na specifično područje unutar struct. 50 00:02:30,160 --> 00:02:37,100 Tako sam odrediti studenti zagrada sam. Naziv dobiva povratnu vrijednost GetString (). 51 00:02:37,100 --> 00:02:40,310 U međuvremenu, ja ću isprintati nešto slično, govoreći studenta 52 00:02:40,310 --> 00:02:45,410 kuća, a sada ću navesti da i-ti studenti kuća polje 53 00:02:45,410 --> 00:02:49,480 će dobiti povratnu vrijednost još jedan poziv na GetString (). 54 00:02:49,480 --> 00:02:52,350 >> Sada ćemo napraviti nešto s ove tri učeničkih imena i kuće, 55 00:02:52,350 --> 00:02:56,230 nešto jednostavno poput tiska svaki u jednoj rečenici. 56 00:02:56,230 --> 00:03:07,580 za int i dobiti 0, opet ja je manji od učenika, i + +, printf "% s je% s. 57 00:03:07,580 --> 00:03:12,600 backslash n ", i sad neka mi priključite vrijednosti tih dvaju polja, 58 00:03:12,600 --> 00:03:19,055 studenti zagrada sam ime, zarez., studenti zagrada i. kuća, u neposrednoj blizini 59 00:03:19,055 --> 00:03:21,290 zagrada, zarez. 60 00:03:21,290 --> 00:03:23,020 >> I sada mi je potrebno učiniti još jednu stvar. 61 00:03:23,020 --> 00:03:26,600 Na dnu ove datoteke, moram osloboditi memoriju koja je dodijeljen 62 00:03:26,600 --> 00:03:30,290 iza scene po GetSring (), koji Naravno poziva malloc, kako bi 63 00:03:30,290 --> 00:03:32,500 alocirati memoriju za gudače korisnik upiše. 64 00:03:32,500 --> 00:03:35,720 No, to je jednostavno. 65 00:03:35,720 --> 00:03:42,610 za int i dobili 0, i manja je od učenika, i + +, i unutar tijela 66 00:03:42,610 --> 00:03:48,670 ovo za petlju, jednostavno sam ću pružaju besplatan učenika nosač ja. naziv, 67 00:03:48,670 --> 00:03:52,300 i slobodni studenti zagrada i. kuću. 68 00:03:52,300 --> 00:03:55,620 >> Sada mi je jasno što se koristi za tri petlje u tom programu, a zapravo sam 69 00:03:55,620 --> 00:03:58,800 mogla imati samo koristi jedan, ali to je samo zbog demonstraciju, tako da 70 00:03:58,800 --> 00:04:02,850 možemo odrediti u tri različita korake što točno radimo. 71 00:04:02,850 --> 00:04:06,120 Mi smo prvi put dobivamo ime i kuću za svaki od studenata, mi smo tada 72 00:04:06,120 --> 00:04:08,900 ispišete ime i kuću za svaki od tri učenika, a 73 00:04:08,900 --> 00:04:11,910 onda ćemo osloboditi memoriju koristi svaki od studenata. 74 00:04:11,910 --> 00:04:15,310 No, sigurno smo mogli kombinirati u jedan veći za petlju. 75 00:04:15,310 --> 00:04:18,650 >> Idemo sada spasiti, sastaviti, i pokrenuti ovaj program. 76 00:04:18,650 --> 00:04:26,850 čine tvorevina, 0 /. tvorevina 0, studenta ime, idemo dati Davidu, on će živjeti 77 00:04:26,850 --> 00:04:31,580 u Mather House, ime studenta, neka je kažu Lauren, ona će živjeti u Leverett 78 00:04:31,580 --> 00:04:36,590 Kuća, ime studenta, Rob, on će živjeti u Kirkland House. 79 00:04:36,590 --> 00:04:39,440 I doista, David je u Mather, Lauren je u Leverett, 80 00:04:39,440 --> 00:04:40,810 a Rob je u Kirkland. 81 00:04:40,810 --> 00:04:43,425