2 00:00:00,000 --> 00:00:02,760 >> 1 głośnik: Napiszmy program, który pyta użytkownika o nazwach i 3 00:00:02,760 --> 00:00:04,700 domy z trzech uczniów. 4 00:00:04,700 --> 00:00:08,840 Teraz, aby przechowywać te nazwy i domów mogliśmy korzystać, co, sześć zmiennych. 5 00:00:08,840 --> 00:00:12,260 Trzy struny do nazwy, a drugi trzy struny dla domów, 6 00:00:12,260 --> 00:00:16,560 ale już wiemy, że możemy oczyścić że kod za pomocą tablic, a nie, 7 00:00:16,560 --> 00:00:20,220 na przykład tablica wielkości 3 do trzy nazwiska, a drugi szereg 8 00:00:20,220 --> 00:00:22,110 Rozmiar 3 dla domów. 9 00:00:22,110 --> 00:00:25,870 Ale okazuje się, możemy to posprzątać jeszcze dalej, a właściwie zachować te 10 00:00:25,870 --> 00:00:30,520 Nazwy i domy razem tak, że nazwisko ucznia oraz jego dom 11 00:00:30,520 --> 00:00:34,940 w jakiś sposób są zamknięte, tak aby niejako do tego samego zmiennej. 12 00:00:34,940 --> 00:00:39,095 >> Aby to zrobić, choć musimy zadeklarować nasz własny typ danych, własny typ w C, 13 00:00:39,095 --> 00:00:42,660 że autorzy C nie muszą że lat temu. 14 00:00:42,660 --> 00:00:45,630 W tym celu możemy użyć słowa kluczowego typedef wraz z 15 00:00:45,630 --> 00:00:47,200 inne struct. 16 00:00:47,200 --> 00:00:48,160 Rzućmy okiem. 17 00:00:48,160 --> 00:00:50,650 Wewnątrz structs.h, ja już mam zdobyć rozpoczęty przez 18 00:00:50,650 --> 00:00:52,560 w tym biblioteki CS50. 19 00:00:52,560 --> 00:00:57,640 Jestem następny będzie wpisać typedef struct, a następnie nawias klamrowy. 20 00:00:57,640 --> 00:01:01,370 Wewnątrz struktury, zamierzam określić, że uczeń ma 21 00:01:01,370 --> 00:01:04,960 ciąg o nazwie nazwa, a drugi ciąg zwany dom. 22 00:01:04,960 --> 00:01:08,430 Idę wtedy zamknę nawiasy klamrowe, i określić, że nazwa 23 00:01:08,430 --> 00:01:11,420 Ten nowy typ danych musi być studentem. 24 00:01:11,420 --> 00:01:15,550 Innymi słowy, za pomocą tej składni i Ja ogłosił nowy typ danych, własne 25 00:01:15,550 --> 00:01:19,910 że nie istniał przed chwilą, i wewnątrz tego typu danych są dwie dane 26 00:01:19,910 --> 00:01:24,270 pola lub użytkowników danych, jeden o nazwie nazwa, jeden nazywa się dom, w którym zarówno 27 00:01:24,270 --> 00:01:25,630 są typu string. 28 00:01:25,630 --> 00:01:27,690 >> Załóżmy teraz korzystać z tego typu w konkretnym programem. 29 00:01:27,690 --> 00:01:30,210 30 00:01:30,210 --> 00:01:34,090 W structs0.c, mam podobnie zdobyć Sam zaczął już z niektórymi 31 00:01:34,090 --> 00:01:36,999 Kod boilerplate, i jestem teraz będzie korzystać z tych danych 32 00:01:36,999 --> 00:01:39,100 typ ucznia, jak następuje. 33 00:01:39,100 --> 00:01:42,450 Jestem pierwszy zamiar oświadczyć Tablica typu studenta, będę 34 00:01:42,450 --> 00:01:43,920 zadzwoń studentów tablicy - 35 00:01:43,920 --> 00:01:44,630 mnogiej - 36 00:01:44,630 --> 00:01:49,360 a ja określić, że jego wielkość będzie trzy, które, informacja, to wartość 37 00:01:49,360 --> 00:01:50,880 ciągłe studentów - 38 00:01:50,880 --> 00:01:51,890 we wszystkich stolicach - 39 00:01:51,890 --> 00:01:54,930 oświadczył, że ja tu, wcześniej w pliku. 40 00:01:54,930 --> 00:01:58,280 Załóżmy teraz iteracyjnego tych trzech studentów, i pyta użytkownika o 41 00:01:58,280 --> 00:02:00,050 ich nazwiska i domy. 42 00:02:00,050 --> 00:02:05,422 >> dla int i dostać 0, i jest mniejsze niż stała, i + +. 43 00:02:05,422 --> 00:02:08,600 I teraz wewnątrz ciała to dla pętla, mam zamiar wydrukować coś 44 00:02:08,600 --> 00:02:11,470 jak imię i nazwisko studenta. 45 00:02:11,470 --> 00:02:14,890 Ja wtedy będzie rzeczywiście się, że nazwisko studenta, określając 46 00:02:14,890 --> 00:02:17,290 studentów wspornik i. 47 00:02:17,290 --> 00:02:21,550 Innymi słowy chcę i-tego ucznia w tablicy o nazwie studentów, ale teraz 48 00:02:21,550 --> 00:02:25,340 Chcę dostać się, że i-ty studenta Imię i nazwisko, a aby to zrobić, będę używać 49 00:02:25,340 --> 00:02:30,160 . Operator, w celu uzyskania w specyficzne wewnątrz pola tej struktury. 50 00:02:30,160 --> 00:02:37,100 Więc określić studentów wspornik i. Nazwę pobiera wartość zwracaną GetString (). 51 00:02:37,100 --> 00:02:40,310 Tymczasem mam zamiar wydrukować coś podobnego, mówiąc studenta 52 00:02:40,310 --> 00:02:45,410 dom, a teraz mam zamiar podać że studenci dom i-terenowych 53 00:02:45,410 --> 00:02:49,480 powinny uzyskać wartości zwracanej inne połączenie do GetString (). 54 00:02:49,480 --> 00:02:52,350 >> Teraz zróbmy coś z tych trzech Nazwy i domy studenckie, 55 00:02:52,350 --> 00:02:56,230 coś proste jak drukowanie każdy w zdaniu. 56 00:02:56,230 --> 00:03:07,580 dla int i dostać 0, ponownie i jest mniejsze niż studentów, i + +, printf "% s jest% s.. 57 00:03:07,580 --> 00:03:12,600 odwrotny ukośnik n ", a teraz pozwól mi podłączyć wartości tych dwóch dziedzinach, 58 00:03:12,600 --> 00:03:19,055 studentów wspornik i. nazwisko, przecinek, studentów wspornik i. dom, blisko 59 00:03:19,055 --> 00:03:21,290 nawias, średnik. 60 00:03:21,290 --> 00:03:23,020 >> A teraz muszę zrobić jeszcze jedną rzecz. 61 00:03:23,020 --> 00:03:26,600 Na dole tego pliku, trzeba zwolnić pamięć przydzieloną 62 00:03:26,600 --> 00:03:30,290 za kulisami przez GetSring (), która Oczywiście wymaga malloc, żeby 63 00:03:30,290 --> 00:03:32,500 przydzielić pamięci dla ciągów typy użytkowników. 64 00:03:32,500 --> 00:03:35,720 Jednak to jest proste. 65 00:03:35,720 --> 00:03:42,610 dla int i dostać 0, i jest mniejsze niż studentów, i + + i w ciele 66 00:03:42,610 --> 00:03:48,670 to dla pętli, jestem po prostu będzie Zapewniamy bezpłatny wspornik studentów I. nazwa, 67 00:03:48,670 --> 00:03:52,300 i darmowe studentów wspornik i. domu. 68 00:03:52,300 --> 00:03:55,620 >> Teraz już wyraźnie stosowane trzy dla pętli w tym programie, gdy naprawdę mam 69 00:03:55,620 --> 00:03:58,800 mogła stosować tylko jeden, ale jest tylko na litość demonstracje, tak że 70 00:03:58,800 --> 00:04:02,850 można określić w trzech różnych kroki, co dokładnie robimy. 71 00:04:02,850 --> 00:04:06,120 Mamy pierwsze miejsce imię i dom dla każdego z uczniów, jesteśmy wtedy 72 00:04:06,120 --> 00:04:08,900 drukując nazwę i dom dla Każdy z trzech studentów i 73 00:04:08,900 --> 00:04:11,910 Następnie jedziemy do zwolnienia pamięci używane przez każdego z uczniów. 74 00:04:11,910 --> 00:04:15,310 Ale na pewno może łączyć tego mamy w jeden większy na pętli. 75 00:04:15,310 --> 00:04:18,650 >> Załóżmy teraz zapisać, skompilować, i uruchomić ten program. 76 00:04:18,650 --> 00:04:26,850 sprawiają elemencie 0. / elemencie 0, studenta Nazwa, niech zapewni David, będzie żył 77 00:04:26,850 --> 00:04:31,580 w Mather House, nazwisko studenta, niech mówi Lauren, ona mieszka w Leverett 78 00:04:31,580 --> 00:04:36,590 Dom, nazwisko studenta, Rob, on będzie Mieszkam w Kirkland House. 79 00:04:36,590 --> 00:04:39,440 I rzeczywiście, David jest w Mather, Lauren jest w Leverett, 80 00:04:39,440 --> 00:04:40,810 i Rob jest w Kirkland. 81 00:04:40,810 --> 00:04:43,425