1 głośnik: Napiszmy program, który pyta użytkownika o nazwach i domy z trzech uczniów. Teraz, aby przechowywać te nazwy i domów mogliśmy korzystać, co, sześć zmiennych. Trzy struny do nazwy, a drugi trzy struny dla domów, ale już wiemy, że możemy oczyścić że kod za pomocą tablic, a nie, na przykład tablica wielkości 3 do trzy nazwiska, a drugi szereg Rozmiar 3 dla domów. Ale okazuje się, możemy to posprzątać jeszcze dalej, a właściwie zachować te Nazwy i domy razem tak, że nazwisko ucznia oraz jego dom w jakiś sposób są zamknięte, tak aby niejako do tego samego zmiennej. Aby to zrobić, choć musimy zadeklarować nasz własny typ danych, własny typ w C, że autorzy C nie muszą że lat temu. W tym celu możemy użyć słowa kluczowego typedef wraz z inne struct. Rzućmy okiem. Wewnątrz structs.h, ja już mam zdobyć rozpoczęty przez w tym biblioteki CS50. Jestem następny będzie wpisać typedef struct, a następnie nawias klamrowy. Wewnątrz struktury, zamierzam określić, że uczeń ma ciąg o nazwie nazwa, a drugi ciąg zwany dom. Idę wtedy zamknę nawiasy klamrowe, i określić, że nazwa Ten nowy typ danych musi być studentem. Innymi słowy, za pomocą tej składni i Ja ogłosił nowy typ danych, własne że nie istniał przed chwilą, i wewnątrz tego typu danych są dwie dane pola lub użytkowników danych, jeden o nazwie nazwa, jeden nazywa się dom, w którym zarówno są typu string. Załóżmy teraz korzystać z tego typu w konkretnym programem. W structs0.c, mam podobnie zdobyć Sam zaczął już z niektórymi Kod boilerplate, i jestem teraz będzie korzystać z tych danych typ ucznia, jak następuje. Jestem pierwszy zamiar oświadczyć Tablica typu studenta, będę zadzwoń studentów tablicy - mnogiej - a ja określić, że jego wielkość będzie trzy, które, informacja, to wartość ciągłe studentów - we wszystkich stolicach - oświadczył, że ja tu, wcześniej w pliku. Załóżmy teraz iteracyjnego tych trzech studentów, i pyta użytkownika o ich nazwiska i domy. dla int i dostać 0, i jest mniejsze niż stała, i + +. I teraz wewnątrz ciała to dla pętla, mam zamiar wydrukować coś jak imię i nazwisko studenta. Ja wtedy będzie rzeczywiście się, że nazwisko studenta, określając studentów wspornik i. Innymi słowy chcę i-tego ucznia w tablicy o nazwie studentów, ale teraz Chcę dostać się, że i-ty studenta Imię i nazwisko, a aby to zrobić, będę używać . Operator, w celu uzyskania w specyficzne wewnątrz pola tej struktury. Więc określić studentów wspornik i. Nazwę pobiera wartość zwracaną GetString (). Tymczasem mam zamiar wydrukować coś podobnego, mówiąc studenta dom, a teraz mam zamiar podać że studenci dom i-terenowych powinny uzyskać wartości zwracanej inne połączenie do GetString (). Teraz zróbmy coś z tych trzech Nazwy i domy studenckie, coś proste jak drukowanie każdy w zdaniu. dla int i dostać 0, ponownie i jest mniejsze niż studentów, i + +, printf "% s jest% s.. odwrotny ukośnik n ", a teraz pozwól mi podłączyć wartości tych dwóch dziedzinach, studentów wspornik i. nazwisko, przecinek, studentów wspornik i. dom, blisko nawias, średnik. A teraz muszę zrobić jeszcze jedną rzecz. Na dole tego pliku, trzeba zwolnić pamięć przydzieloną za kulisami przez GetSring (), która Oczywiście wymaga malloc, żeby przydzielić pamięci dla ciągów typy użytkowników. Jednak to jest proste. dla int i dostać 0, i jest mniejsze niż studentów, i + + i w ciele to dla pętli, jestem po prostu będzie Zapewniamy bezpłatny wspornik studentów I. nazwa, i darmowe studentów wspornik i. domu. Teraz już wyraźnie stosowane trzy dla pętli w tym programie, gdy naprawdę mam mogła stosować tylko jeden, ale jest tylko na litość demonstracje, tak że można określić w trzech różnych kroki, co dokładnie robimy. Mamy pierwsze miejsce imię i dom dla każdego z uczniów, jesteśmy wtedy drukując nazwę i dom dla Każdy z trzech studentów i Następnie jedziemy do zwolnienia pamięci używane przez każdego z uczniów. Ale na pewno może łączyć tego mamy w jeden większy na pętli. Załóżmy teraz zapisać, skompilować, i uruchomić ten program. sprawiają elemencie 0. / elemencie 0, studenta Nazwa, niech zapewni David, będzie żył w Mather House, nazwisko studenta, niech mówi Lauren, ona mieszka w Leverett Dom, nazwisko studenta, Rob, on będzie Mieszkam w Kirkland House. I rzeczywiście, David jest w Mather, Lauren jest w Leverett, i Rob jest w Kirkland.