SPEAKER 1: Lad os skrive et program, beder brugeren om navne og huse af tre studerende. Nu, for at gemme disse navne og huse vi kunne bruge, hvad seks variabler. Tre strenge til navne, og en anden tre strenge til husene, men vi ved allerede, at vi kan rydde op at kode ved hjælp af arrays i stedet for, for eksempel en matrix af størrelsen 3 til tre navne, og en anden række str. 3 for husene. Men det viser sig, at vi kan rense det op endnu længere, og faktisk holde dem navne og huse sammen, således at en studerendes navn og hans eller hendes hus eller anden måde er indkapslet, så at tale, i den samme variabel. For at gøre dette, er vi nødt til at erklære vores egen datatype, vores egen type i C, at forfatterne af C ikke nødvendigvis tænke år siden. For at gøre dette kan vi bruge nøgleordet typedef, sammen med andet søgeord struct. Lad os tage et kig. Inde i structs.h, har jeg allerede fået startede med herunder CS50 biblioteket. Jeg næste kommer til at skrive typedef struct, og derefter en klammeparentes. Inde i struct, vil jeg angive, at en elev skal have en streng kaldet navn, og en anden streng kaldet hus. Jeg har tænkt mig at så lukke mine krøllede parenteser, og angive, at navnet på denne nye datatype skal være studerende. Med andre ord via denne syntaks har jeg erklæret en ny datatype min egen der ikke eksisterede for et øjeblik siden, og indersiden af ​​denne datatype er to data felter eller data medlemmer, den ene kaldet navn, en kaldet hus, som begge er af typen string. Lad os nu bruge denne type i en faktiske program. I structs0.c, jeg har ligeledes fået selv startede allerede med nogle standardtekst kode, og jeg er nu kommer til at bruge disse data skrive student, som følger. Jeg først kommer til at erklære en vifte af typen student, vil jeg kalder array studerende - flertalsform - og jeg vil præcisere, at dens størrelse vil være tre, hvilket varsel, er værdien af de konstante studerende - i alle hovedstæder - at jeg har erklæret op her, tidligere i filen. Lad os nu gentage over disse tre studerende og bede brugeren om deres navne og huse. for int jeg får 0, jeg er mindre end at konstant, jeg + +. Og nu inde i kroppen af ​​dette for loop, jeg har tænkt mig at udskrive noget ligesom studerendes navn. Jeg derefter gå til rent faktisk at få det studerendes navn ved at angive studerende bracketing jeg. Med andre ord, jeg vil have det i'te studerende i et array kaldet studerende, men nu Jeg ønsker at få på det i'te elevs navn, og for at gøre dette, vil jeg bruge den. operatøren for at få på en specifikke område inde i struct. Så jeg angive eleverne bracketing jeg. Navn får returværdien af ​​getString (). I mellemtiden vil jeg printe ud noget lignende, siger studerende hus, og nu vil jeg til at angive at den i'te felt studerende hus skal få returværdien af et andet opkald til getString (). Lad os nu gøre noget med disse tre elevernes navne og huse, noget simpelt som udskrivning hver i en sætning. for int jeg får 0, igen jeg er mindre end studerende i + +, printf "% s er% s. backslash n ", og lad mig nu tilslutte værdierne af disse to områder, studerende bracketing jeg. navn, komma, studerende bracketing jeg. hus tæt paren, semikolon. Og nu har jeg brug for at gøre en ting mere. I bunden af ​​denne fil, jeg har brug for frigøre hukommelse, der blev tildelt bag kulisserne ved GetSring (), som naturligvis kræver allokere med henblik på at tildele hukommelse til strygerne brugeren skriver. Men dette er enkel. for int jeg får 0, i er mindre end studerende i + +, og inde i kroppen af denne for-løkke, jeg simpelthen at gå til giver gratis elever beslag jeg. navn, og frie elever bracketing jeg. hus. Nu har vi klart anvendes tre efter sløjfer i dette program, da jeg virkelig kunne bare have brugt en, men det er bare for demonstration skyld, så Vi kan angive i tre særskilte trin hvad vi laver. Vi er først at få et navn og et hus for hver af de studerende, er vi så udskrive navn og huset for hver af de tre elever, og så vi kommer til at frigøre hukommelse anvendes af hver af de studerende. Men sikkert vi kunne har kombinere dette i en større for-løkke. Lad os nu gemme, kompilere, og køre dette program. gør structs 0. / structs 0, studerendes navn, lad os give David, han vil leve i Mather House, studerendes navn, lad os siger Lauren, hun bor i Leverett Hus, studerendes navn, Rob, vil han bor i Kirkland House. Og ja, David er i Mather, Lauren er i Leverett, og Rob er i Kirkland.