GARSIAKALBIS 1: Tegul parašyti programą, kuri paragina pavadinimų vartotojo ir Namai trijų studentams. Dabar laikyti tuos pavadinimus ir namų mes galime naudoti, ką šešis kintamuosius. Trys stygos pavadinimų ir kita Trys stygos namų, bet mes jau žinome, kad galime išvalyti kad kodas, naudojant matricos, o ne, Pavyzdžiui dydžio 3 masyvas trys vardai, ir dar vienas masyvas 3 dydis namus. Tačiau paaiškėja, galime valyti šią galimybę dar toliau, ir iš tikrųjų laikyti tuos pavadinimai ir namų kartu, kad Studento vardas, pavardė ir jo ar jos namų kažkaip atitverti, taip kalbėti, į tą patį kintamąjį. Norėdami tai padaryti, nors, mes turime pripažinti mūsų pačių duomenų tipas, mūsų pačių tipas C, kad C autoriai padarė nebūtinai galvoti prieš metus. Norėdami tai padaryti, mes galime naudoti žodį Typedef, kartu su kitas raktinis žodis struct. Paimkime išvaizdą. Viduje structs.h, aš jau ve Dotarłeś pradėjo įskaitant CS50 bibliotekoje. Aš kitą ketinate tipo Typedef struct, ir tada garbanotas petnešomis. Viduje struct, aš ruošiuosi nurodyta, kad studentas turi eilutė vadinama vardas, o kitas Styga vadinamas namas. Aš ruošiuosi tada uždaryti savo garbanotas petnešos, ir nurodyti, kad pavadinimas šis naujas duomenų tipas turi būti studentas. Kitaip tariant, per šį sintaksė Aš paskelbė naują duomenų tipas my own kad neegzistavo prieš akimirką, ir viduje šios duomenų tipas yra dvi duomenys laukai ar duomenų nariams, vienas vadinamas vardas, vienas vadinamas namas, kurie abu yra tipo eilutę. Tegul dabar naudokime šį tipą į realų programos. Be structs0.c, aš panašiai Dotarłeś aš jau pradėjau su kai Standartiniai kodas, ir aš dabar ketinate naudoti šiuos duomenis įveskite studentas, taip. Aš pirmą kartą ketina paskelbti masyvo tipo studentas, aš skambinti masyvo studentams - daugiskaita - ir aš nurodyti, kad jos dydis bus tris, kurios, pranešimas, yra vertė nuolatiniai studentai - visose sostinėse - kad aš deklaruojamos iki čia, anksčiau faile. Leiskite dabar pakartoti per šių trijų studentų, ir paskatinti už vartotoją jų pavardės ir namai. už int gaunu 0, i mažiau nei pastovus, i + +. Ir dabar viduje šio organo kilpa, aš ruošiuosi atsispausdinti kažką kaip studento vardu. Aš tada vyksta faktiškai gauti, kad Studento vardas, nurodant studentai laikiklis i. Kitaip tariant noriu i-osios studentų į masyvas vadinamas studentų, bet dabar Noriu gauti ne kad i-asis studento pavadinimas, ir tai padaryti, aš norėčiau naudoti . operatorius, siekiant gauti bent konkrečioje srityje viduje struct. Taigi, aš nurodyti studentai laikiklis i. Vardą gauna grįžtamąją vertę GetString (). Tuo tarpu, aš ruošiuosi spausdinti kažkas panašaus, sakydamas studento namas, ir dabar aš ruošiuosi nurodyti kad i-asis studentai namas laukas turi gauti grįžtamąją vertę kitas kvietimas GetString (). Dabar galime padaryti kažką su šių trijų mokinių vardai ir namai, kažkas paprasta, kaip spausdinti kiekvienas sakinys iš. už int gaunu 0, vėl i yra mažesnis nei studentų, i + + printf "% s yra% s. Backslash n ", o dabar leiskite man prijungti tų dviejų laukų reikšmės, studentai laikiklis i. pavadinimą, kableliais, studentai laikiklis i. namas, arti skliaustas, kabliataškis. Ir dabar man reikia padaryti dar vieną dalyką. Šio failo apačioje, man reikia atlaisvinti atmintį, kuri buvo skirta už pagal GetSring (), scenos, kurios Žinoma ragina malloc, siekiant skirti atminties stygos vartotojas rūšys. Bet tai yra labai paprasta. už int gaunu 0, i mažiau nei studentų, i + + ir viduje kūno tai už linijos, aš tiesiog ketinate teikti nemokamas studentų laikiklis i. pavadinimas, ir laisvi studentai laikiklis i. namą. Dabar mes aiškiai naudojami trims kilpų šioje programoje, kai tikrai aš galėjo tik naudojamas vienas, bet tai yra tik demonstravimo labui, kad galime nurodyti tris skirtingas žingsnius, ką tiksliai mes darome. Mes pirmą kartą gauti pavadinimą ir namą už kiekvieną iš studentų, kad mes tada spausdinti pavadinimą ir namą kiekvienas iš trijų studentų, ir tada mes ketiname atlaisvinti atminties naudoti kiekvieną iš studentų. Bet tikrai mes galėtų jau derinti tai į vieną didesnis už linijos. Leiskite dabar įrašyti, kaupti, ir paleisti šią programą. padaryti structs 0. / structs 0, studento vardas, galime suteikti Dovydą, jis bus gyventi į Mather House, studento vardas, galime sako Laura, ji bus gyventi Leverett Namai, studento vardas, Rob, jis bus gyvena Kirkland House. Ir iš tiesų, Davidas yra Mather, Lauren yra Leverett, ir Robas yra Kirkland.