>> 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.