1 00:00:00,000 --> 00:00:02,395 >> [Musiikkia] 2 00:00:02,395 --> 00:00:05,750 3 00:00:05,750 --> 00:00:06,506 >> DOUG Lloyd: OK. 4 00:00:06,506 --> 00:00:08,880 Olemme tyテカskennelleet kokonaislukuja, olemme tyテカskennelleet merkkiテ、, 5 00:00:08,880 --> 00:00:11,930 olemme tyテカskennelleet kellukkeet, tuplaa, jouset, ja bools. 6 00:00:11,930 --> 00:00:14,870 Olemme tテ、yttテ、neet jokseenkin kaikki on [テ、テ、netテカn] tyyppejテ、, jotka 7 00:00:14,870 --> 00:00:17,100 ovat olleet meille koko ajan. 8 00:00:17,100 --> 00:00:19,430 Mutta nyt haluamme tehdテ、 jotain enemmテ、n. 9 00:00:19,430 --> 00:00:20,210 Miten me sen teemme? 10 00:00:20,210 --> 00:00:22,560 Miten luomme erilaiset tiedot? 11 00:00:22,560 --> 00:00:26,130 Voimme tehdテ、 niin kテ、yttテ、mテ、llテ、 rakenteita. 12 00:00:26,130 --> 00:00:30,180 Niin rakenteiden avulla voimme yhdistテ、テ、 muuttujat erityyppisten 13 00:00:30,180 --> 00:00:34,810 yhdeksi, uusi muuttuja tyyppi, jonka voimme antaa oman lajin nimi. 14 00:00:34,810 --> 00:00:37,570 Tテ、mテ、 on todella vahva asia voi tehdテ、, 15 00:00:37,570 --> 00:00:40,900 koska voimme nyt ryhmテ、 elementtejテ、 erilaiset tiedot 16 00:00:40,900 --> 00:00:43,910 yhdessテ、, ettテ、 on looginen yhteys. 17 00:00:43,910 --> 00:00:46,440 Olemme pystyneet tekemテ、テ、n tテ、tテ、 kanssa paneelit tavallaan, eikテカ? 18 00:00:46,440 --> 00:00:49,540 Voimme ryhmテ、 muuttujat samaa tietotyyppiテ、 19 00:00:49,540 --> 00:00:53,410 yhdessテ、 suuren yksikテカn muistia, array. 20 00:00:53,410 --> 00:00:56,660 >> Mutta emme ole voineet sekoittaa up erilaiset tiedot yhteen. 21 00:00:56,660 --> 00:01:02,610 Emme voi sanoa, pari kokonaisluku, ja luonne, ja kaksinkertainen kaikki 22 00:01:02,610 --> 00:01:05,330 samassa asia ja soittaa, ettテ、 yhden yksikテカn. 23 00:01:05,330 --> 00:01:08,830 Mutta rakenteet, tai usein kutsutaan structs, 24 00:01:08,830 --> 00:01:09,585 me oikeastaan 窶銀€久oi. 25 00:01:09,585 --> 00:01:12,370 Joten rakenne on erテ、テ、nlainen samankaltaisten Super muuttuja. 26 00:01:12,370 --> 00:01:16,530 Se on muuttuja, joka sisテ、ltテ、テ、 muut muuttujat sen sisテ、lle. 27 00:01:16,530 --> 00:01:19,650 Joten tテ、ssテ、 on esimerkki hyvin yksinkertainen rakenne. 28 00:01:19,650 --> 00:01:23,380 Tテ、mテ、 on mitテ、 syntaksi nテ、yttテ、isi haluavat luoda rakenne auto. 29 00:01:23,380 --> 00:01:25,250 Nyt mennテ、テ、n lテ、pi syntaksin tテ、テ、llテ、. 30 00:01:25,250 --> 00:01:27,400 Struct, se avainsanan, joka ilmaisee 31 00:01:27,400 --> 00:01:30,270 ettテ、 olen luomassa uutta tietoa tyypin tテ、テ、llテ、. 32 00:01:30,270 --> 00:01:33,860 Erityisesti tietotyyppi nimi on olemaan struct auton, kuten nテ、emme. 33 00:01:33,860 --> 00:01:36,640 Mutta tテ、mテ、 on sellainen kテ、rjen pois kテ、テ、ntテ、jテ、 ettテ、 tテ、mテ、 34 00:01:36,640 --> 00:01:42,440 ryhmテ、nテ、 muuttujien, joka on menossa pidettテ、vテ、 osana samaa tyyppiテ、 35 00:01:42,440 --> 00:01:44,010 minuutissa. 36 00:01:44,010 --> 00:01:46,340 >> Autot, vain nimi rakenteen. 37 00:01:46,340 --> 00:01:50,590 Jテ、lleen tietotyyppi tテ、テ、llテ、 on menossa olla struct auto, ei vain auton. 38 00:01:50,590 --> 00:01:53,060 Mutta jos sinulla on different-- jos luot useita structs 39 00:01:53,060 --> 00:01:56,950 samassa ohjelmassa, sinun tテ、ytyy erottaa struct ja struct. 40 00:01:56,950 --> 00:02:00,140 Joten struct auton, voisin myテカs struct opiskelija, esimerkiksi, 41 00:02:00,140 --> 00:02:01,790 samassa ohjelmassa. 42 00:02:01,790 --> 00:02:05,980 Sisテ、ltテ、 aaltosulkeita ovat kaikki niin sanotut kentテ、t, 43 00:02:05,980 --> 00:02:07,954 tai organisaation jテ、senten. 44 00:02:07,954 --> 00:02:10,370 Mitkテ、 ovat joitakin asioita jotka ovat luonnostaan 窶銀€蟻uton? 45 00:02:10,370 --> 00:02:15,270 No, se on yleensテ、 vuosi, on mallin nimi, ja rekisterikilpi, 46 00:02:15,270 --> 00:02:18,000 matkamittari joka on yleensテ、 jotkut mテ、テ、rテ、 mailia se, 47 00:02:18,000 --> 00:02:19,225 ja ehkテ、 moottorin koon. 48 00:02:19,225 --> 00:02:23,570 Ja kuten nテ、ette, olen sekoittaa kokonaislukuja ja hahmot ja nelinpelin. 49 00:02:23,570 --> 00:02:26,420 He kaikki olemaan osa tテ、tテ、 uutta tietotyyppiテ、. 50 00:02:26,420 --> 00:02:29,750 >> Lopuksi, viimeinen asia minun tテ、ytyy tehdテ、, テ、lテ、 unohda tテ、tテ、 pikku puolipiste 51 00:02:29,750 --> 00:02:30,290 lopussa. 52 00:02:30,290 --> 00:02:34,380 Kun pテ、テ、tテ、mme mテ、テ、ritellテ、テ、n rakenne, meidテ、n tテ、ytyy laittaa puolipiste lopussa. 53 00:02:34,380 --> 00:02:37,325 Se on hyvin yleinen syntaktisia virhe, koska funktiolla, 54 00:02:37,325 --> 00:02:40,200 Esimerkiksi olisit vain avoin kihara ahdin, lテ、hellテ、 kihara ahdin. 55 00:02:40,200 --> 00:02:42,950 Et laita puolipiste loppuun funktion mテ、テ、ritelmテ、n. 56 00:02:42,950 --> 00:02:46,430 Tテ、mテ、 nテ、yttテ、テ、 toiminto mテ、テ、ritelmテ、, mutta se ei ole, 57 00:02:46,430 --> 00:02:49,653 ja niin puolipiste siellテ、 on vain muistutus siitテ、, ettテ、 olet 58 00:02:49,653 --> 00:02:52,440 tテ、ytyy laittaa sitテ、 sinne, koska kテ、テ、ntテ、jテ、 muuten 59 00:02:52,440 --> 00:02:53,510 tiedテ、 mitテ、 tehdテ、 sen kanssa. 60 00:02:53,510 --> 00:02:56,160 Se on hyvin yleinen virhe vahingossa tehdテ、 61 00:02:56,160 --> 00:02:58,570 kun olet ensin mテ、テ、ritellテ、テ、n rakenteita. 62 00:02:58,570 --> 00:02:59,500 >> OK. 63 00:02:59,500 --> 00:03:02,824 Joten me yleensテ、 mテ、テ、rittelemme rakenteet huipulla meidテ、n ohjelmia 64 00:03:02,824 --> 00:03:05,490 koska he luultavasti voidaan kテ、yttテ、テ、 useita toimintoja. 65 00:03:05,490 --> 00:03:08,850 Emme halua mテ、テ、ritellテ、 struct sisテ、llテ、 funktion, 66 00:03:08,850 --> 00:03:12,110 koska silloin voimme only-- soveltamisala rakenne todella 67 00:03:12,110 --> 00:03:13,790 vain olemassa sisテ、llテ、 tテ、tテ、 toiminnallisuutta. 68 00:03:13,790 --> 00:03:17,450 Olimme luultavasti halua mテ、テ、ritellテ、 rakenne jotta voimme kテ、yttテ、テ、 sitテ、 useita toimintoja, 69 00:03:17,450 --> 00:03:20,670 tai ehkテ、 useita tiedostoja, jotka on sidottu yhteen 70 00:03:20,670 --> 00:03:22,920 luomme yksittテ、isen ohjelman. 71 00:03:22,920 --> 00:03:24,920 Joskus myテカs sijaan mテ、テ、ritellテ、 rakenne 72 00:03:24,920 --> 00:03:27,961 huipulla, jossa laitat punta sisテ、ltテ、テ、 ja punta mテ、テ、rittelee, 73 00:03:27,961 --> 00:03:32,080 esimerkiksi, saatat laittaa ne erillinen piste h tiedostoja, joita voit sitten 74 00:03:32,080 --> 00:03:35,020 punta itsekin. 75 00:03:35,020 --> 00:03:37,620 >> Meillテ、 on rakenteita, mutta nyt Meidテ、n tテ、ytyy saada sisテ、llテ、 niitテ、. 76 00:03:37,620 --> 00:03:39,800 Miten saamme sisテ、llテ、 rakenteen pテ、テ、sy 77 00:03:39,800 --> 00:03:43,530 niillテ、 osa-muuttujat, niitテ、 muuttujia ettテ、 olemassa sisテ、llテ、 rakenne? 78 00:03:43,530 --> 00:03:46,810 No, meillテ、 on jotain kutsutaan piste operaattori, jonka avulla voimme 79 00:03:46,810 --> 00:03:50,990 kテ、yttテ、テ、 aloilla rakenteen. 80 00:03:50,990 --> 00:03:55,490 Niinpテ、 esimerkiksi, sanokaamme Olen julistanut minun rakenne tiedot kirjoita jonnekin 81 00:03:55,490 --> 00:03:59,020 ylテ、reunassa minun ohjelma, tai ehkテ、 piste h tiedoston, ettテ、 olen punta mukana. 82 00:03:59,020 --> 00:04:03,360 Jos minテ、 sitten haluavat luoda uuden muuttuja ettテ、 tietotyyppi, voin sanoa, 83 00:04:03,360 --> 00:04:06,260 struct auto, autoni, puolipiste. 84 00:04:06,260 --> 00:04:11,580 Aivan kuten Voisin sanoa int X, tai merkkijonon nimi puolipisteellテ、. 85 00:04:11,580 --> 00:04:18,100 >> Tietotyyppi tテ、ssテ、 struct auto, muuttujan nimi on autoni, 86 00:04:18,100 --> 00:04:23,770 ja sitten voin kテ、yttテ、テ、 piste operaattori kテ、yttテ、テ、 eri aloilla autoni. 87 00:04:23,770 --> 00:04:27,494 Voin siis sanoa autoni dot vuosi on 2011. 88 00:04:27,494 --> 00:04:28,410 Se on tテ、ysin hieno. 89 00:04:28,410 --> 00:04:34,210 Vuosi, jos muistatte, mテ、テ、riteltiin kokonaisluku kenttテ、 sisテ、llテ、 tテ、mテ、n struct auto 90 00:04:34,210 --> 00:04:35,200 tietotyyppi. 91 00:04:35,200 --> 00:04:39,966 Joten kaikki muuttuja struct auton tiedot tyyppi, kuten autoni, voin sanoa autoni 92 00:04:39,966 --> 00:04:44,030 dot vuosi on ja mテ、テ、ritテ、 se jotkut kokonaisluku, 2011. 93 00:04:44,030 --> 00:04:47,290 Autoni piste levy vastaa CS50. 94 00:04:47,290 --> 00:04:51,180 Oma kortti dot matkamittari vastaa 50505 puolipiste. 95 00:04:51,180 --> 00:04:53,270 Kaikki nテ、mテ、 ovat tテ、ysin hieno ja se on 96 00:04:53,270 --> 00:04:57,802 miten pテ、テ、semme aloilla rakenteen. 97 00:04:57,802 --> 00:05:00,260 Rakenteet, vaikka, ei tarvitse luotava pinoon. 98 00:05:00,260 --> 00:05:02,950 Aivan kuten mikテ、 tahansa muu muuttuja, me voi dynaamisesti jakaa. 99 00:05:02,950 --> 00:05:06,309 Jos meillテ、 on ohjelma, joka saattaisi se tuottaa monia rakenteita, 100 00:05:06,309 --> 00:05:08,100 emme tiedテ、 kuinka monta aiomme tarvitsevat, 101 00:05:08,100 --> 00:05:10,800 meidテ、n tテ、ytyy dynaamisesti jakaa kyseisiテ、 rakenteita 102 00:05:10,800 --> 00:05:12,960 meidテ、n ohjelma on kテ、ynnissテ、. 103 00:05:12,960 --> 00:05:16,600 Joten jos aiomme pテ、テ、stテ、 aloilla rakenne tテ、ssテ、 yhteydessテ、, 104 00:05:16,600 --> 00:05:20,660 muistaa, ettテ、 meidテ、n on ensin dereference osoitin rakenteeseen, 105 00:05:20,660 --> 00:05:24,810 ja sitten kun me epテ、viittausongelman osoitin, niin voimme kテ、yttテ、テ、 kenttiテ、. 106 00:05:24,810 --> 00:05:26,830 Jos meillテ、 on vain osoitin rakenne, 107 00:05:26,830 --> 00:05:32,120 emme voi vain sanoa osoitin piste kenttテ、 nimi ja saada mitテ、 etsimme. 108 00:05:32,120 --> 00:05:34,259 On ylimテ、テ、rテ、inen vaihe dereferencing. 109 00:05:34,259 --> 00:05:36,050 Joten sanotaan, ettテ、 sen sijaan, ettテ、 previous-- 110 00:05:36,050 --> 00:05:38,770 aivan kuten edellisessテ、 esimerkissテ、, sijasta julistaa se 111 00:05:38,770 --> 00:05:43,680 pinoon, struct auto, minun auto, puolipiste, sanon struct auto, 112 00:05:43,680 --> 00:05:48,020 tテ、hti, osoitin struct auto nimeltテ、テ、n autoni, 113 00:05:48,020 --> 00:05:51,250 vastaa malloc koko struct auton. 114 00:05:51,250 --> 00:05:54,950 Koko me selvittテ、テ、, kuinka monta tavua uusi tietotyyppi vie. 115 00:05:54,950 --> 00:05:58,570 Sinun ei vテ、lttテ、mテ、ttテ、 vain tarvitse kテ、yttテ、テ、 koko, leveys, int tai char, tai 116 00:05:58,570 --> 00:05:59,715 ja sisテ、テ、nrakennettu tietotyypit. 117 00:05:59,715 --> 00:06:02,090 Kテ、テ、ntテ、jテ、 on fiksu selvittテ、テ、, kuinka monta tavua 118 00:06:02,090 --> 00:06:04,170 vaatii uutta rakennetta. 119 00:06:04,170 --> 00:06:09,610 Joten en malloc itselleni yksikkテカ muistia mahduttava struct auto, 120 00:06:09,610 --> 00:06:12,410 ja saan osoitin takaisin kuin lohko muistia, 121 00:06:12,410 --> 00:06:16,090 ja ettテ、 osoitin on mテ、テ、ritetty autoni. 122 00:06:16,090 --> 00:06:18,050 >> Nyt, jos haluan kテ、yttテ、テ、 aloilla autoni, 123 00:06:18,050 --> 00:06:22,615 Haluan ensin dereference autoni kテ、yttテ、en dereference operaattori, tテ、hti 124 00:06:22,615 --> 00:06:26,620 ettテ、 olemme nテ、hneet osoittimet videoita, ja sitten kun olen dereference, 125 00:06:26,620 --> 00:06:32,200 sitten voin kテ、yttテ、テ、 piste operaattori kテ、yttテ、テ、 eri aloilla autoni. 126 00:06:32,200 --> 00:06:35,490 Star autoni piste vuosi on 2011. 127 00:06:35,490 --> 00:06:38,480 Ettテ、 olisi vaikutusta haluamme tテ、ssテ、 tapauksessa, 128 00:06:38,480 --> 00:06:41,960 koska olemme dynaamisesti myテカnnetty autoni. 129 00:06:41,960 --> 00:06:43,610 >> Sellainen テ、rsyttテ、vテ、テ、, vaikka, eikテカ? 130 00:06:43,610 --> 00:06:44,818 Siellテ、 on 2-vaihe prosessissa nyt. 131 00:06:44,818 --> 00:06:47,460 Nyt meidテ、n on dereference-- meillテ、 tテ、hti operaattori, 132 00:06:47,460 --> 00:06:48,910 ja meillテ、 on piste operaattori. 133 00:06:48,910 --> 00:06:51,660 Ja kuten arvata saattaa, koska C ohjelmoijat rakastavat lyhyempi tapoja 134 00:06:51,660 --> 00:06:53,740 tehdテ、 asioita, on lyhyempi tapa tehdテ、 tテ、mテ、. 135 00:06:53,740 --> 00:06:57,790 On toinenkin operaattori nimeltテ、テ、n nuoli, mikテ、 tekee tテ、mテ、n prosessin paljon helpompaa. 136 00:06:57,790 --> 00:07:00,750 Tie nuoli toimii on se ensin dereferences 137 00:07:00,750 --> 00:07:03,560 osoitin vasemmalla puolella operaattori, 138 00:07:03,560 --> 00:07:06,620 ja sitten, sen jテ、lkeen kun dereferenced osoitin vasemmalla, 139 00:07:06,620 --> 00:07:09,620 se pテ、テ、see kenttテ、テ、 oikealla. 140 00:07:09,620 --> 00:07:14,170 Ja niin aiemmin meillテ、 oli tテ、mmテカinen Star autoni piste kaikki jutut, 141 00:07:14,170 --> 00:07:15,880 kuin siellテ、 oli paljon siellテ、 tapahtuu. 142 00:07:15,880 --> 00:07:22,040 Mutta mitテ、 voimme sen sijaan tehdテ、, on this-- autoni nuoli vuosi on 2011. 143 00:07:22,040 --> 00:07:23,580 >> Jテ、lleen mitテ、 tテ、テ、llテ、 tapahtuu? 144 00:07:23,580 --> 00:07:25,720 Ensinnテ、kin, olen dereferencing autoni. 145 00:07:25,720 --> 00:07:27,810 Joka taas, on osoitin tテ、テ、llテ、. 146 00:07:27,810 --> 00:07:31,270 Sitten, sen jテ、lkeen kun dereferenced autoni, minテ、 147 00:07:31,270 --> 00:07:35,130 Tテ、mテ、n jテ、lkeen voidaan kテ、yttテ、テ、 kentテ、t vuosi, levy, ja matkamittari 148 00:07:35,130 --> 00:07:40,020 aivan kuin pystyin ennen kuin ensimmテ、inen kテ、ytetyt tテ、hti dereference autoni, 149 00:07:40,020 --> 00:07:42,020 ja piste pテ、テ、stテ、 kenttテ、テ、n. 150 00:07:42,020 --> 00:07:45,290 Joten voit olla rakenteita, sinua voi olla osoittimia rakenteet, 151 00:07:45,290 --> 00:07:48,360 ja sinulla on tapoja kテ、yttテ、テ、 aloilla kyseisiテ、 rakenteita, 152 00:07:48,360 --> 00:07:52,600 onko sinulla viitteitテ、 niitテ、 tai muuttujia itse. 153 00:07:52,600 --> 00:07:57,640 Piste tai nuoli, riippuen miten muuttuja julistettiin. 154 00:07:57,640 --> 00:08:00,510 Olen Doug Lloyd, tテ、mテ、 on CS50. 155 00:08:00,510 --> 00:08:01,975