HÖGTALARE 1: Låt oss skriva ett program som uppmanar användaren att namnen och hus av tre studenter. Nu, för att lagra dessa namn och hus vi skulle kunna använda, vad, sex variabler. Tre strängar för namn, och en annan tre strängar för husen, men vi vet redan att vi kan städa upp koden med hjälp av matriser istället, till exempel en matris med storleken 3 för tre namn, och en annan rad storlek 3 för husen. Men det visar sig att vi kan städa upp detta ännu längre, och faktiskt hålla dem namn och hus tillsammans, så att en studentens namn och hans eller hennes hus på något sätt är inkapslade, så att tala, i samma variabel. För att göra detta, dock måste vi deklarera vår egen datatyp, vår egen typ i C, att författarna till C inte nödvändigtvis tänker på år sedan. För att göra detta kan vi använda nyckelordet typedef, tillsammans med den andra nyckelordet struct. Låt oss ta en titt. Inuti structs.h, har jag redan kommit igång med inklusive CS50 biblioteket. Jag nästa kommer att skriva typedef struct, och sedan en klammer. Inne i struct, kommer jag att ange att en elev ska ha en sträng som heter namn, och en annan sträng som kallas hus. Jag ska då sluta mina klammerparenteser, och anger att namnet på denna nya datatyp ska vara student. Med andra ord, via denna syntax har jag förklarade en ny datatyp av min egen som inte fanns för en stund sedan, och insidan av den här datatypen är två uppgifter fält eller data medlemmar, en som heter namn, en som kallas hus, som båda är av typen sträng. Låt oss nu använda denna typ i en verklig programmet. I structs0.c, har jag på liknande sätt fått jag själv redan börjat med några standardtext kod, och jag är nu kommer att använda dessa data skriver student, enligt följande. Jag är först kommer att förklara en matris av typ student, jag kallar matris studenter - plural - och jag ska ange att dess storlek kommer att vara tre, som, ett meddelande, är det värde på de ständiga STUDENTER - i alla huvudstäder - att jag har förklarat här uppe, tidigare i filen. Låt oss nu iterera över dessa tre eleverna och fråga användaren om deras namn och hus. för int jag får 0, är ​​jag mindre än den konstanta, i + +. Och nu inne i kroppen av denna för loop, kommer jag att skriva ut något liksom studentens namn. Jag sedan kommer att faktiskt få det studentens namn genom att ange studenter Bracket I. Med andra ord jag vill ha den i: te studerande i arrayen kallas studenter, men nu Jag vill komma på den i: te studentens namn, och för att göra detta, kommer jag att använda den. operatör, för att få till en specifika området insida strukt. Så jag anger eleverna Bracket I. Namn blir returvärdet för GetString (). Under tiden kommer jag att skriva ut något liknande, säger elevens hus, och nu ska jag ange att den i: te studenter hus fält skall få returvärdet av ett annat samtal till GetString (). Nu ska vi göra något med dessa tre elevernas namn och hus, något enkelt som utskrifter varje i en mening. för int jag få 0, i är mindre än en gång studenter, är i + +, printf "% s på% s. backslash n ", och nu vill jag koppla in värdena på dessa två områden, studenter Bracket I. namn, kommatecken, studenter Bracket I. hus, nära paren, semikolon. Och nu måste jag göra en sak till. Längst ner i den här filen, jag behöver frigöra det minne som tilldelades bakom kulisserna genom GetSring (), vilket naturligtvis samtal malloc, i syfte att allokera minne för strängarna användaren skriver. Men detta är enkel. för int jag får 0, i är mindre än studenter, i + +, och inuti kroppen av detta för slinga, jag bara tänker ge fri studenter fäste i.. namn, och fria studenter Bracket I. huset. Nu, vi har tydligt använt tre för slingor i detta program, när det verkligen jag skulle bara ha använt en, men det är bara för demonstration skull, så att Vi kan ange i tre distinkta steg exakt vad vi gör. Vi ska först få ett namn och ett hus för var och en av eleverna, vi är sedan skriva ut namn och huset för var och en av de tre deltagare, och då vi kommer att frigöra minne används av var och en av eleverna. Men säkert vi kunde har kombinera detta till en större för slinga. Låt oss nu spara, kompilera, och köra programmet. gör structs 0. / structs 0, studentens namn, låt oss ge David, han lever i Mather House, studentens namn, låt oss säger Lauren, hon bor i Leverett Hus, studentens namn, Rob, han bor i Kirkland House. Och faktiskt, är David i Mather, Lauren är i Rett, och Rob är i Kirkland.