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.