>> SPEAKER 1: Poďme napísať program, ktorý vyzve užívateľa na zadanie mena a
domy troch študentov.
Teraz pre uloženie týchto mien a domy by sme mohli použiť, čo šesť premenných.
Tri reťazca pre názvy, a ďalšie tri struny pre domy,
ale my už vieme, že môžeme vyčistiť že kód pomocou polí miesto,
Napríklad pole veľkosti 3 pre tri mená, a ďalší rad
veľkosť 3 pre domy.
Ale ukazuje sa, môžeme to vyčistiť ešte ďalej, a vlastne udržať tie
Mená a domy dohromady, aby Meno študenta a jeho alebo jej dom
sú nejako zapuzdrené, tak hovoriť, do rovnakej premennej.
>> Ak to chcete urobiť, aj keď musíme priznať náš vlastný dátový typ, naše vlastné typ v jazyku C,
že autori C, nie nutne myslíte, že pred rokmi.
K tomu môžeme použiť kľúčové slovo typedef, spolu s
iné kľúčové slovo struct.
Poďme sa pozrieť.
Vnútri structs.h, som už dostali začal
vrátane knižnice CS50.
Ja budúci bude písať typedef struct, a potom zložená zátvorka.
Vnútri struct, budem určiť, že študent musí mať
string s názvom názov, a ďalšie reťazec s názvom dom.
Budem potom zavriem zložené zátvorky, a určiť, že názov
tento nový dátový typ musí byť študentom.
Inými slovami, pomocou tejto syntaxe sa mi vyhlásil nový dátový typ z mojej vlastnej
že neexistovala pred chvíľou, a vnútri tohto typu dát sú dva údaje
pole alebo dátové členy, jeden s názvom názov, jeden volal dom, ktorý obaja
sú typu string.
>> Poďme sa teraz používajú tento typ v skutočnom programe.
V structs0.c, som rovnako dostal Sám začal už s niektorými
často používaný kód, a ja som teraz bude tieto dáta použiť
typ študenta, a to nasledovne.
Ja som prvý bude deklarovať Pole typu študent, budem
zavolajte študentmi pole -
množné číslo -
a budem špecifikovať, že jeho veľkosť bude tri, ktoré, oznámenia, je hodnota
konštantný ŠTUDENTI -
vo všetkých hlavných mestách -
že som vyhlásil tu, skôr v súbore.
Poďme sa teraz iterácii týchto troch študenti, a vyzve užívateľa k
ich mená a domy.
>> pre int i dostať 0, aj menej ako konštantný, i + +.
A teraz vo vnútri tela to pre slučky, idem vytlačiť niečo
ako meno študenta.
Ja potom bude skutočne dostať, že meno študenta zadaním
Študenti bracketing i
Inými slovami, chcem i-teho študenta na pole s názvom študenti, ale teraz
Chcem sa dostať na to i-teho študenta meno, a ako to urobiť, budem používať
. hospodársky subjekt, aby si na špecifických oblastí vo vnútri struct.
Tak som zadať študenti bracketing som. Názov dostane návratovú hodnotu GetString ().
Medzitým, idem vytlačiť niečo podobné, povedal študenta
dom, a teraz budem špecifikovať že i-tý študenti house pole
musí získať návratovú hodnotu ďalšie volanie GetString ().
>> Teraz sa poďme niečo urobiť s týmito tromi Mená a domy žiakov,
niečo jednoduchého ako tlač každý vo vete.
pre int i sa 0, opäť som je nižšia než študenti, i + +, printf "% s je% s
Spätné lomítko n ", a teraz mi dovoľte pripojiť Hodnoty týchto dvoch oblastiach,
Študenti bracketing som. Názov, čiarka, Študenti bracketing i dom, v blízkosti
zátvorka, bodkočiarka.
>> A teraz musím urobiť ešte jednu vec.
V dolnej časti tohto súboru, musím uvoľniť pamäť, ktorá bola pridelená
v zákulisí podľa GetSring (), ktorá samozrejme volanie malloc, aby sa
alokovať pamäť pre sláčiky používateľ zadá.
Ale to je jednoduché.
pre int i dostať 0, aj je menšia než študenti, i + +, a vo vnútri tela
Tento cyklus for, som jednoducho ísť na poskytovať bezplatnú študenti držiak i názov,
a voľné študenti bracketing i dom.
>> Teraz sme jasne používajú tri pre slučky v tomto programe, keď som naozaj
mohla byť použitá len jedna, ale je to len pre demonštráciu príčinu, aby
môžeme určiť, v troch rôznych kroky, čo presne robíme.
Sme prvý získanie mena a dom pre každý zo študentov, sme potom
vytlačiť názov a dom pre každý z troch študentov, a
potom budeme uvoľniť pamäť použiť každý zo študentov.
Ale určite by sme sa mohli sme spojiť tento do jedného väčšieho cyklu for.
>> Poďme teraz uložiť, skompilovať, a spustiť tento program.
tvorí structs 0. / structs 0, študenta meno, poďme poskytnúť Dávida, bude žiť
v Mather dom, meno študenta, poďme hovorí Lauren, ona žije v Leverett
Dom, meno študenta, Rob, že bude žijú v Kirkland House.
A skutočne, Dávid je v Mather, Lauren je v Leverett,
a Rob je v Kirkland.