2 00:00:00,000 --> 00:00:02,760 >> GARSIAKALBIS 1: Tegul parašyti programą, kuri paragina pavadinimų vartotojo ir 3 00:00:02,760 --> 00:00:04,700 Namai trijų studentams. 4 00:00:04,700 --> 00:00:08,840 Dabar laikyti tuos pavadinimus ir namų mes galime naudoti, ką šešis kintamuosius. 5 00:00:08,840 --> 00:00:12,260 Trys stygos pavadinimų ir kita Trys stygos namų, 6 00:00:12,260 --> 00:00:16,560 bet mes jau žinome, kad galime išvalyti kad kodas, naudojant matricos, o ne, 7 00:00:16,560 --> 00:00:20,220 Pavyzdžiui dydžio 3 masyvas trys vardai, ir dar vienas masyvas 8 00:00:20,220 --> 00:00:22,110 3 dydis namus. 9 00:00:22,110 --> 00:00:25,870 Tačiau paaiškėja, galime valyti šią galimybę dar toliau, ir iš tikrųjų laikyti tuos 10 00:00:25,870 --> 00:00:30,520 pavadinimai ir namų kartu, kad Studento vardas, pavardė ir jo ar jos namų 11 00:00:30,520 --> 00:00:34,940 kažkaip atitverti, taip kalbėti, į tą patį kintamąjį. 12 00:00:34,940 --> 00:00:39,095 >> Norėdami tai padaryti, nors, mes turime pripažinti mūsų pačių duomenų tipas, mūsų pačių tipas C, 13 00:00:39,095 --> 00:00:42,660 kad C autoriai padarė nebūtinai galvoti prieš metus. 14 00:00:42,660 --> 00:00:45,630 Norėdami tai padaryti, mes galime naudoti žodį Typedef, kartu su 15 00:00:45,630 --> 00:00:47,200 kitas raktinis žodis struct. 16 00:00:47,200 --> 00:00:48,160 Paimkime išvaizdą. 17 00:00:48,160 --> 00:00:50,650 Viduje structs.h, aš jau ve Dotarłeś pradėjo 18 00:00:50,650 --> 00:00:52,560 įskaitant CS50 bibliotekoje. 19 00:00:52,560 --> 00:00:57,640 Aš kitą ketinate tipo Typedef struct, ir tada garbanotas petnešomis. 20 00:00:57,640 --> 00:01:01,370 Viduje struct, aš ruošiuosi nurodyta, kad studentas turi 21 00:01:01,370 --> 00:01:04,960 eilutė vadinama vardas, o kitas Styga vadinamas namas. 22 00:01:04,960 --> 00:01:08,430 Aš ruošiuosi tada uždaryti savo garbanotas petnešos, ir nurodyti, kad pavadinimas 23 00:01:08,430 --> 00:01:11,420 šis naujas duomenų tipas turi būti studentas. 24 00:01:11,420 --> 00:01:15,550 Kitaip tariant, per šį sintaksė Aš paskelbė naują duomenų tipas my own 25 00:01:15,550 --> 00:01:19,910 kad neegzistavo prieš akimirką, ir viduje šios duomenų tipas yra dvi duomenys 26 00:01:19,910 --> 00:01:24,270 laukai ar duomenų nariams, vienas vadinamas vardas, vienas vadinamas namas, kurie abu 27 00:01:24,270 --> 00:01:25,630 yra tipo eilutę. 28 00:01:25,630 --> 00:01:27,690 >> Tegul dabar naudokime šį tipą į realų programos. 29 00:01:27,690 --> 00:01:30,210 30 00:01:30,210 --> 00:01:34,090 Be structs0.c, aš panašiai Dotarłeś aš jau pradėjau su kai 31 00:01:34,090 --> 00:01:36,999 Standartiniai kodas, ir aš dabar ketinate naudoti šiuos duomenis 32 00:01:36,999 --> 00:01:39,100 įveskite studentas, taip. 33 00:01:39,100 --> 00:01:42,450 Aš pirmą kartą ketina paskelbti masyvo tipo studentas, aš 34 00:01:42,450 --> 00:01:43,920 skambinti masyvo studentams - 35 00:01:43,920 --> 00:01:44,630 daugiskaita - 36 00:01:44,630 --> 00:01:49,360 ir aš nurodyti, kad jos dydis bus tris, kurios, pranešimas, yra vertė 37 00:01:49,360 --> 00:01:50,880 nuolatiniai studentai - 38 00:01:50,880 --> 00:01:51,890 visose sostinėse - 39 00:01:51,890 --> 00:01:54,930 kad aš deklaruojamos iki čia, anksčiau faile. 40 00:01:54,930 --> 00:01:58,280 Leiskite dabar pakartoti per šių trijų studentų, ir paskatinti už vartotoją 41 00:01:58,280 --> 00:02:00,050 jų pavardės ir namai. 42 00:02:00,050 --> 00:02:05,422 >> už int gaunu 0, i mažiau nei pastovus, i + +. 43 00:02:05,422 --> 00:02:08,600 Ir dabar viduje šio organo kilpa, aš ruošiuosi atsispausdinti kažką 44 00:02:08,600 --> 00:02:11,470 kaip studento vardu. 45 00:02:11,470 --> 00:02:14,890 Aš tada vyksta faktiškai gauti, kad Studento vardas, nurodant 46 00:02:14,890 --> 00:02:17,290 studentai laikiklis i. 47 00:02:17,290 --> 00:02:21,550 Kitaip tariant noriu i-osios studentų į masyvas vadinamas studentų, bet dabar 48 00:02:21,550 --> 00:02:25,340 Noriu gauti ne kad i-asis studento pavadinimas, ir tai padaryti, aš norėčiau naudoti 49 00:02:25,340 --> 00:02:30,160 . operatorius, siekiant gauti bent konkrečioje srityje viduje struct. 50 00:02:30,160 --> 00:02:37,100 Taigi, aš nurodyti studentai laikiklis i. Vardą gauna grįžtamąją vertę GetString (). 51 00:02:37,100 --> 00:02:40,310 Tuo tarpu, aš ruošiuosi spausdinti kažkas panašaus, sakydamas studento 52 00:02:40,310 --> 00:02:45,410 namas, ir dabar aš ruošiuosi nurodyti kad i-asis studentai namas laukas 53 00:02:45,410 --> 00:02:49,480 turi gauti grįžtamąją vertę kitas kvietimas GetString (). 54 00:02:49,480 --> 00:02:52,350 >> Dabar galime padaryti kažką su šių trijų mokinių vardai ir namai, 55 00:02:52,350 --> 00:02:56,230 kažkas paprasta, kaip spausdinti kiekvienas sakinys iš. 56 00:02:56,230 --> 00:03:07,580 už int gaunu 0, vėl i yra mažesnis nei studentų, i + + printf "% s yra% s. 57 00:03:07,580 --> 00:03:12,600 Backslash n ", o dabar leiskite man prijungti tų dviejų laukų reikšmės, 58 00:03:12,600 --> 00:03:19,055 studentai laikiklis i. pavadinimą, kableliais, studentai laikiklis i. namas, arti 59 00:03:19,055 --> 00:03:21,290 skliaustas, kabliataškis. 60 00:03:21,290 --> 00:03:23,020 >> Ir dabar man reikia padaryti dar vieną dalyką. 61 00:03:23,020 --> 00:03:26,600 Šio failo apačioje, man reikia atlaisvinti atmintį, kuri buvo skirta 62 00:03:26,600 --> 00:03:30,290 už pagal GetSring (), scenos, kurios Žinoma ragina malloc, siekiant 63 00:03:30,290 --> 00:03:32,500 skirti atminties stygos vartotojas rūšys. 64 00:03:32,500 --> 00:03:35,720 Bet tai yra labai paprasta. 65 00:03:35,720 --> 00:03:42,610 už int gaunu 0, i mažiau nei studentų, i + + ir viduje kūno 66 00:03:42,610 --> 00:03:48,670 tai už linijos, aš tiesiog ketinate teikti nemokamas studentų laikiklis i. pavadinimas, 67 00:03:48,670 --> 00:03:52,300 ir laisvi studentai laikiklis i. namą. 68 00:03:52,300 --> 00:03:55,620 >> Dabar mes aiškiai naudojami trims kilpų šioje programoje, kai tikrai aš 69 00:03:55,620 --> 00:03:58,800 galėjo tik naudojamas vienas, bet tai yra tik demonstravimo labui, kad 70 00:03:58,800 --> 00:04:02,850 galime nurodyti tris skirtingas žingsnius, ką tiksliai mes darome. 71 00:04:02,850 --> 00:04:06,120 Mes pirmą kartą gauti pavadinimą ir namą už kiekvieną iš studentų, kad mes tada 72 00:04:06,120 --> 00:04:08,900 spausdinti pavadinimą ir namą kiekvienas iš trijų studentų, ir 73 00:04:08,900 --> 00:04:11,910 tada mes ketiname atlaisvinti atminties naudoti kiekvieną iš studentų. 74 00:04:11,910 --> 00:04:15,310 Bet tikrai mes galėtų jau derinti tai į vieną didesnis už linijos. 75 00:04:15,310 --> 00:04:18,650 >> Leiskite dabar įrašyti, kaupti, ir paleisti šią programą. 76 00:04:18,650 --> 00:04:26,850 padaryti structs 0. / structs 0, studento vardas, galime suteikti Dovydą, jis bus gyventi 77 00:04:26,850 --> 00:04:31,580 į Mather House, studento vardas, galime sako Laura, ji bus gyventi Leverett 78 00:04:31,580 --> 00:04:36,590 Namai, studento vardas, Rob, jis bus gyvena Kirkland House. 79 00:04:36,590 --> 00:04:39,440 Ir iš tiesų, Davidas yra Mather, Lauren yra Leverett, 80 00:04:39,440 --> 00:04:40,810 ir Robas yra Kirkland. 81 00:04:40,810 --> 00:04:43,425