>> 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.