1 00:00:00,000 --> 00:00:06,030 >> [Musiikkia] 2 00:00:06,030 --> 00:00:08,390 >> DOUG Lloyd: Osoittimet, tテ、ssテ、 me olemme. 3 00:00:08,390 --> 00:00:11,080 Tテ、mテ、 on todennテ、kテカisesti aio olla vaikein aihe 4 00:00:11,080 --> 00:00:12,840 ettテ、 puhumme CS50. 5 00:00:12,840 --> 00:00:15,060 Ja jos olet lukenut mitテ、テ、n viitteitテ、 6 00:00:15,060 --> 00:00:19,080 ennen saatat olla hieman uhkaava menee tテ、mテ、n videon. 7 00:00:19,080 --> 00:00:21,260 On totta viitteitテ、 sallimme mahdollisuuden 8 00:00:21,260 --> 00:00:23,740 kenties tyriテ、 aika pahasti kun olet 9 00:00:23,740 --> 00:00:27,450 kanssa muuttujia, ja tiedot, ja aiheuttaa ohjelman kaatumisen. 10 00:00:27,450 --> 00:00:30,490 Mutta he todella todella hyテカdyllinen ja ne auttavat meitテ、 todella hyvテ、 tapa 11 00:00:30,490 --> 00:00:33,340 siirtテ、テ、 tiedot takaisin ja edestakaisin vテ、lillテ、 toimintoja, 12 00:00:33,340 --> 00:00:35,490 ettテ、 emme muuten pysty tekemテ、テ、n. 13 00:00:35,490 --> 00:00:37,750 >> Ja niin mitテ、 me todella halua tehdテ、 tテ、ssテ、 juna 14 00:00:37,750 --> 00:00:41,060 sinun on hyvテ、 osoitin kuria, niin ettテ、 voit kテ、yttテ、テ、 osoittimia tehokkaasti 15 00:00:41,060 --> 00:00:43,850 tehdテ、 ohjelmia niin paljon parempi. 16 00:00:43,850 --> 00:00:48,220 Kuten sanoin viitteitテ、 antaa meille eri tapa siirtテ、テ、 dataa toimintoja. 17 00:00:48,220 --> 00:00:50,270 Nyt jos muistatte aikaisemmin video, kun 18 00:00:50,270 --> 00:00:53,720 puhuimme kiikaritテ、htテ、imellテ、, mainitsin 19 00:00:53,720 --> 00:01:00,610 ettテ、 kaikki tiedot, jotka ohitamme vテ、lillテ、 toiminnot C ohi arvo. 20 00:01:00,610 --> 00:01:03,070 Ja en ehkテ、 ole kテ、yttテ、nyt, ettテ、 termi, mitテ、 tarkoitin siellテ、 21 00:01:03,070 --> 00:01:07,170 oli se, ettテ、 olemme ohimennen kopioita tietojen. 22 00:01:07,170 --> 00:01:12,252 Kun vテ、litテ、mme muuttujan funktio, emme oikeastaan 窶銀€橘ulkee muuttuja 23 00:01:12,252 --> 00:01:13,210 toiminnon, eikテカ? 24 00:01:13,210 --> 00:01:17,670 Olemme kulkee kopio ettテ、 datan funktio. 25 00:01:17,670 --> 00:01:20,760 Toiminto tekee mitテ、 se tulee ja se laskee jotain arvoa, 26 00:01:20,760 --> 00:01:23,180 ja ehkテ、 kテ、ytテ、mme ettテ、 arvo kun se antaa sen takaisin. 27 00:01:23,180 --> 00:01:26,700 >> Siellテ、 oli yksi poikkeus tテ、mテ、 sテ、テ、ntテカ ohi arvon, 28 00:01:26,700 --> 00:01:31,210 ja tulemme takaisin, mitテ、 se on vテ、hテ、n myテカhemmin tテ、mテ、n videon. 29 00:01:31,210 --> 00:01:34,880 Jos kテ、ytテ、mme viitteitテ、 sijaan kテ、yttテ、テ、 muuttujia, 30 00:01:34,880 --> 00:01:38,180 tai sen sijasta kテ、yttテ、テ、 muuttujien itse tai kopioita muuttujien, 31 00:01:38,180 --> 00:01:43,790 voimme nyt kulkea muuttujat ympテ、rillテ、 vテ、lillテ、 toimii eri tavalla. 32 00:01:43,790 --> 00:01:46,550 Tテ、mテ、 tarkoittaa, ettテ、 jos teemme muutos yksi toiminto, 33 00:01:46,550 --> 00:01:49,827 ettテ、 muutos todella ottaa vaikutus eri toimintoa. 34 00:01:49,827 --> 00:01:52,160 Tテ、mテ、kin on asia, emme voineet tehdテ、 aikaisemmin, 35 00:01:52,160 --> 00:01:56,979 ja jos olet koskaan yrittテ、nyt vaihtaa arvo kaksi muuttujaa funktion, 36 00:01:56,979 --> 00:01:59,270 olet huomannut tテ、mテ、n ongelman erテ、テ、nlainen noususuunnassa, eikテカ? 37 00:01:59,270 --> 00:02:04,340 >> Jos haluamme vaihtaa X ja Y, ja me siirtテ、テ、 ne toiminto nimeltテ、テ、n swap, 38 00:02:04,340 --> 00:02:08,680 sisテ、llテ、 toiminto vaihtaa muuttujat tehdテ、 vaihto arvot. 39 00:02:08,680 --> 00:02:12,600 Yksi tulee kaksi, kaksi tulee yksi, mutta emme oikeastaan 40 00:02:12,600 --> 00:02:16,890 muuttaa mitテ、テ、n alkuperテ、isessテ、 toiminto, ettテ、 soittaja. 41 00:02:16,890 --> 00:02:19,550 Koska emme voi, emme vain tyテカskentelee jテ、ljennテカkset. 42 00:02:19,550 --> 00:02:24,760 Osoittimet kuitenkin, voimme todella siirtテ、テ、 X ja Y funktio. 43 00:02:24,760 --> 00:02:26,960 Tテ、mテ、 toiminto voidaan tehdテ、 jotain heidテ、n kanssaan. 44 00:02:26,960 --> 00:02:29,250 Ja niitテ、 muuttujia arvojen voi todella muuttaa. 45 00:02:29,250 --> 00:02:33,710 Joten se on aivan muutos kykymme tyテカskennellテ、 tiedot. 46 00:02:33,710 --> 00:02:36,100 >> Ennen kuin sukeltaa osoittimet, mielestテ、ni se kannattaa 47 00:02:36,100 --> 00:02:38,580 kun muutaman minuutin palata perusasioihin tテ、テ、llテ、. 48 00:02:38,580 --> 00:02:41,000 Ja katsoa, 窶銀€砧iten tietokoneen muistiin tyテカt 49 00:02:41,000 --> 00:02:45,340 koska nテ、mテ、 kaksi aihetta ovat menossa todella olla melko toisiinsa. 50 00:02:45,340 --> 00:02:48,480 Kuten ehkテ、 tiedテ、tte, tietokoneen jテ、rjestelmテ、ssテ、 51 00:02:48,480 --> 00:02:51,310 sinulla on kovalevy tai ehkテ、 Solid State Drive 52 00:02:51,310 --> 00:02:54,430 jonkinlainen tiedostojen tallennuspaikka. 53 00:02:54,430 --> 00:02:57,950 Se on yleensテ、 jossain naapurustossa 250 gigatavua 54 00:02:57,950 --> 00:02:59,810 ja ehkテ、 pari teratavua nyt. 55 00:02:59,810 --> 00:03:02,270 Ja se on silloin, kun kaikki tiedostoja lopulta elテ、テ、, 56 00:03:02,270 --> 00:03:04,870 vaikka tietokone on pois pois, voit ottaa sen takaisin 57 00:03:04,870 --> 00:03:09,190 ja lテカydテ、t tiedostot ovat siellテ、 uudelleen, kun jテ、rjestelmテ、 kテ、ynnistetテ、テ、n uudelleen. 58 00:03:09,190 --> 00:03:14,820 Mutta levyasemat, kuten kiintolevyn, HDD, tai Solid State Drive, SSD, 59 00:03:14,820 --> 00:03:16,050 ovat vain sテ、ilytystilaa. 60 00:03:16,050 --> 00:03:20,400 >> Emme voi oikeastaan 窶銀€逆ehdテ、 mitテ、テ、n datan, joka on kiintolevy, 61 00:03:20,400 --> 00:03:22,080 tai SSD-aseman. 62 00:03:22,080 --> 00:03:24,950 Jotta todella muuttaa tietoja tai siirtテ、テ、 sen ympテ、rillテ、, 63 00:03:24,950 --> 00:03:28,800 meidテ、n on siirtテ、テ、 sen RAM, random access memory. 64 00:03:28,800 --> 00:03:31,170 Nyt RAM, sinulla on paljon vテ、hemmテ、n tietokoneessa. 65 00:03:31,170 --> 00:03:34,185 Saatat olla jossain naapurustossa 512 megatavua 66 00:03:34,185 --> 00:03:38,850 jos sinulla on vanhempi tietokone, ja ehkテ、 kaksi, neljテ、, kahdeksan, 16, 67 00:03:38,850 --> 00:03:41,820 mahdollisesti jopa hieman enemmテ、n, gigatavua RAM-muistia. 68 00:03:41,820 --> 00:03:46,390 Niin, ettテ、 on paljon pienempi, mutta se on jossa kaikki haihtuvat tietojen olemassa. 69 00:03:46,390 --> 00:03:48,270 Siellテ、 voimme muuttaa asioita. 70 00:03:48,270 --> 00:03:53,350 Mutta kun me kテ、テ、nnテ、mme tietokoneesta virta, kaikki tiedot RAM tuhoutuu. 71 00:03:53,350 --> 00:03:57,150 >> Joten siksi meidテ、n on kiintolevylle entistテ、 pysyvテ、テ、 sijainnin se, 72 00:03:57,150 --> 00:03:59,720 niin, ettテ、 se exists- se olisi todella huono, jos joka kerta 73 00:03:59,720 --> 00:04:03,310 kテ、テ、nsimme tietokoneesta virta, joka tiedosto jテ、rjestelmテ、テ、mme on hテ、ivytetty. 74 00:04:03,310 --> 00:04:05,600 Joten teemme sisテ、llテ、 muistia. 75 00:04:05,600 --> 00:04:09,210 Ja joka kerta kun puhumme muisti, aika paljon, vuonna CS50, 76 00:04:09,210 --> 00:04:15,080 puhumme RAM, ei kiintolevyn. 77 00:04:15,080 --> 00:04:18,657 >> Joten kun siirrymme asiat muistiin, se vie jonkin verran tilaa. 78 00:04:18,657 --> 00:04:20,740 Kaikki tietotyyppejテ、 ettテ、 olemme tyテカskennelleet 79 00:04:20,740 --> 00:04:23,480 ryhtyテ、 eri mテ、テ、riテ、 tilaa RAM. 80 00:04:23,480 --> 00:04:27,600 Joten aina luoda kokonaisluku muuttuja, neljテ、 tavua muistia 81 00:04:27,600 --> 00:04:30,750 on varattu RAM joten sinun voi tyテカskennellテ、 ettテ、 kokonaisluku. 82 00:04:30,750 --> 00:04:34,260 Voit julistaa kokonaisluku, muuttaa sitテ、, mテ、テ、rittテ、テ、 sen 83 00:04:34,260 --> 00:04:36,700 arvoon 10 kasvatetaan yhdellテ、, niin edelleen ja niin edelleen. 84 00:04:36,700 --> 00:04:39,440 Kaikki mitテ、 tarvitsee tapahtua RAM, ja saat neljテ、 tavua 85 00:04:39,440 --> 00:04:42,550 tyテカskennellテ、 jokaisen kokonaisluku, jonka luot. 86 00:04:42,550 --> 00:04:45,410 >> Jokainen merkki sinua luoda saa yhden tavun. 87 00:04:45,410 --> 00:04:48,160 Se on vain, kuinka paljon tilaa on varastointiin tarvitaan merkki. 88 00:04:48,160 --> 00:04:51,310 Jokainen kellua, todellinen numero, saa neljテ、 tavua 89 00:04:51,310 --> 00:04:53,390 ellei se kaksinkertainen tarkkuuden liukuluku 90 00:04:53,390 --> 00:04:56,510 numero, jonka avulla voit on tarkempien ja numeroa 91 00:04:56,510 --> 00:04:59,300 desimaalipilkun jテ、lkeen menettテ、mテ、ttテ、 tarkkuus, 92 00:04:59,300 --> 00:05:01,820 joka kestテ、テ、 jopa kahdeksan tavua muistia. 93 00:05:01,820 --> 00:05:06,730 Pitkテ、 pitkテ、t, todella iso kokonaislukuja, myテカs kahdeksan tavua muistia. 94 00:05:06,730 --> 00:05:09,000 Montako tavua muistia do jouset ryhtyテ、? 95 00:05:09,000 --> 00:05:12,990 No katsotaanpa laittaa tappi tテ、hテ、n kysymykseen nyt, mutta me palata siihen. 96 00:05:12,990 --> 00:05:17,350 >> Joten takaisin tテ、mテ、n ajatuksen muistia iso joukko tavun kokoinen soluja. 97 00:05:17,350 --> 00:05:20,871 Se on todella kaikki se on, se on vain valtava joukko soluja, 98 00:05:20,871 --> 00:05:23,370 kuten muutkin array, joka olet perehtynyt ja nテ、hdテ、, 99 00:05:23,370 --> 00:05:26,430 paitsi jokainen elementti on yksi tavu leveテ、. 100 00:05:26,430 --> 00:05:30,030 Ja aivan kuten array, jokainen elementti on osoite. 101 00:05:30,030 --> 00:05:32,120 Jokainen elementti array on indeksi, ja me 102 00:05:32,120 --> 00:05:36,302 voi kテ、yttテ、テ、 tテ、tテ、 indeksiテ、 tehdテ、 ns random access array. 103 00:05:36,302 --> 00:05:38,510 Meillテ、 ei tarvitse aloittaa alussa array, 104 00:05:38,510 --> 00:05:40,569 kerrata lテ、pi jokaisen yksittテ、inen tekijテ、 sen, 105 00:05:40,569 --> 00:05:41,860 lテカytテ、テ、 mitテ、 etsimme. 106 00:05:41,860 --> 00:05:45,790 Voimme vain sanoa, haluan pテ、テ、stテ、 15. elementti tai 100. elementti. 107 00:05:45,790 --> 00:05:49,930 Ja voit vain kulkea, ettテ、 mテ、テ、rテ、 ja saada arvon etsit. 108 00:05:49,930 --> 00:05:54,460 >> Samoin jokainen sijainti muistiin on osoite. 109 00:05:54,460 --> 00:05:57,320 Joten muisti saattaa nテ、yttテ、テ、 suunnilleen tテ、ltテ、. 110 00:05:57,320 --> 00:06:01,420 Tテ、ssテ、 hyvin pieni kimpale muisti, tテ、mテ、 on 20 tavua muistia. 111 00:06:01,420 --> 00:06:04,060 Ensimmテ、iset 20 tavua koska minun kテ、sitellテ、テ、n siellテ、 alareunassa 112 00:06:04,060 --> 00:06:08,890 ovat 0, 1, 2, 3, ja niin alusta loppuun jopa 19. 113 00:06:08,890 --> 00:06:13,190 Ja kun minテ、 julistaa muuttujia ja kun kテ、ynnistテ、n tyテカskennellテ、 heidテ、n kanssaan, 114 00:06:13,190 --> 00:06:15,470 jテ、rjestelmテ、 tulee asettaa syrjテ、テ、n tilaa minulle 115 00:06:15,470 --> 00:06:17,595 Tテ、ssテ、 muistissa tテカihin minun muuttujia. 116 00:06:17,595 --> 00:06:21,610 Niin voisin sanoa, nieriテ、テ、 C vastaa pテ、テ、oman H. Ja mitテ、 tulee tapahtumaan? 117 00:06:21,610 --> 00:06:23,880 Hyvin jテ、rjestelmテ、 on menossa varattu minulle yhden tavun. 118 00:06:23,880 --> 00:06:27,870 Tテ、llテカin se valitsi tavu numero neljテ、, tavun osoitteessa neljテ、, 119 00:06:27,870 --> 00:06:31,310 ja se tulee sテ、ilyttテ、テ、 kirjain pテ、テ、oma H siellテ、 minua. 120 00:06:31,310 --> 00:06:34,350 Jos siis minテ、 sanon int nopeus raja vastaa 65, se on 121 00:06:34,350 --> 00:06:36,806 aikoo varata neljテ、 tavua muistia minulle. 122 00:06:36,806 --> 00:06:39,180 Ja se tulee kohdella neljテ、 tavua yhtenテ、 yksikkテカnテ、 123 00:06:39,180 --> 00:06:41,305 koska mitテ、 pyrimme jossa on kokonaisluku tテ、テ、llテ、. 124 00:06:41,305 --> 00:06:44,350 Ja se tulee sテ、ilyttテ、テ、 65 siellテ、. 125 00:06:44,350 --> 00:06:47,000 >> Nyt jo olen sellainen kerron hieman valhe, 126 00:06:47,000 --> 00:06:50,150 oikea, koska tiedテ、mme, ettテ、 tietokoneet tyテカ binary. 127 00:06:50,150 --> 00:06:53,100 He eivテ、t ymmテ、rrテ、, vテ、lttテ、mテ、ttテ、 mitテ、 pテ、テ、oma H on 128 00:06:53,100 --> 00:06:57,110 tai mitテ、 65 on, ne vain ymmテ、rtテ、テ、 binary, nollia ja ykkテカsiテ、. 129 00:06:57,110 --> 00:06:59,000 Ja niin todella mitテ、 olemme tallentaminen siellテ、 130 00:06:59,000 --> 00:07:03,450 ei ole kirjain H ja numero 65, vaan binテ、テ、riesitykset 131 00:07:03,450 --> 00:07:06,980 sen, joka nテ、yttテ、テ、 vテ、hテ、n jotain tテ、llaista. 132 00:07:06,980 --> 00:07:10,360 Ja erityisesti yhteydessテ、 kokonaisluku muuttujan, 133 00:07:10,360 --> 00:07:13,559 se ei tule vain sylkeテ、 se, se ei tule kohdella sitテ、 yhtenテ、 neljテ、stテ、 134 00:07:13,559 --> 00:07:15,350 tavu kimpale vテ、lttテ、mテ、ttテ、, se todella tapahtuu 135 00:07:15,350 --> 00:07:19,570 kohdella sitテ、 kuten neljテ、 yhden tavun paloina, mikテ、 saattaa nテ、yttテ、テ、 tテ、ltテ、. 136 00:07:19,570 --> 00:07:22,424 Ja vaikka tテ、mテ、 ei ole tテ、ysin totta joko, 137 00:07:22,424 --> 00:07:24,840 koska jotain kutsutaan endianness, joka emme ole 138 00:07:24,840 --> 00:07:26,965 menossa pテ、テ、stテ、 nyt, mutta jos olet utelias, 139 00:07:26,965 --> 00:07:29,030 voit lukea siitテ、 pikku ja iso endianness. 140 00:07:29,030 --> 00:07:31,640 Mutta vuoksi tテ、mテ、n vテ、itteen, vuoksi tテ、mテ、n videon, 141 00:07:31,640 --> 00:07:34,860 Haluan vain olettaa, ettテ、 on, on Itse asiassa, miten numero 65 olisi 142 00:07:34,860 --> 00:07:36,970 oltava edustettuina muisti kaikissa jテ、rjestelmissテ、, 143 00:07:36,970 --> 00:07:38,850 vaikka se ei ole tテ、ysin totta. 144 00:07:38,850 --> 00:07:41,700 >> Mutta katsotaanpa oikeastaan 窶銀€久ain saada eroon kaikista binary kokonaan, 145 00:07:41,700 --> 00:07:44,460 ja ajattele kuin H ja 65, se on paljon helpompaa 146 00:07:44,460 --> 00:07:47,900 ajatella sitテ、 kuten ettテ、 ihmisenテ、. 147 00:07:47,900 --> 00:07:51,420 Selvテ、, joten se vaikuttaa myテカs ehkテ、 vテ、hテ、n satunnainen ettテ、 I've- minun jテ、rjestelmテ、 148 00:07:51,420 --> 00:07:55,130 ei antanut minulle tavua 5, 6, 7, ja 8 tallentaa kokonaisluku. 149 00:07:55,130 --> 00:07:58,580 On syytテ、, liian, joka emme pテ、テ、se juuri nyt, mutta riittテ、テ、 150 00:07:58,580 --> 00:08:00,496 todeta, ettテ、 mitテ、 tietokone tekee tテ、テ、llテ、 151 00:08:00,496 --> 00:08:02,810 on luultavasti hyvテ、 liikkua sen osa. 152 00:08:02,810 --> 00:08:06,020 Ei anna minulle muisti, joka on vテ、lttテ、mテ、ttテ、 perテ、kkテ、in. 153 00:08:06,020 --> 00:08:10,490 Vaikka se aikoo tehdテ、 sen nyt jos haluan saada toisen merkkijonon, 154 00:08:10,490 --> 00:08:13,080 nimeltテ、テ、n sukunimi, ja haluan laittaa Lloyd siellテ、. 155 00:08:13,080 --> 00:08:18,360 Aion tテ、ytyy sovittaa yhteen merkki, jokaisen kirjaimen, joka on 156 00:08:18,360 --> 00:08:21,330 menossa vaatia yhden merkki, yhden tavun muistia. 157 00:08:21,330 --> 00:08:26,230 Joten jos voisin laittaa Lloyd minun array nテ、in olen melko hyvテ、 mennテ、, eikテカ? 158 00:08:26,230 --> 00:08:28,870 Mitテ、 puuttuu? 159 00:08:28,870 --> 00:08:31,840 >> Muista, ettテ、 jokainen merkkijono tyテカskentelemme jossa C pテ、テ、ttyy kenoviivaan nolla, 160 00:08:31,840 --> 00:08:33,339 emmekテ、 voi jテ、ttテ、テ、 ettテ、 tテ、ssテ、 joko. 161 00:08:33,339 --> 00:08:36,090 Meidテ、n tテ、ytyy varata yhden tavun muistia pitテ、テ、, ettテ、 niin me 162 00:08:36,090 --> 00:08:39,130 tietテ、テ、, milloin meidテ、n merkkijono on pテ、テ、ttynyt. 163 00:08:39,130 --> 00:08:41,049 Joten tテ、mテ、n jテ、rjestelyn siitテ、, miten asiat 164 00:08:41,049 --> 00:08:42,799 nテ、kyvテ、t muistissa voimin olla hieman satunnainen, 165 00:08:42,799 --> 00:08:44,870 mutta se todella on, miten useimmat jテ、rjestelmテ、t on suunniteltu. 166 00:08:44,870 --> 00:08:48,330 Linja niitテ、 ylテカs kerrannaisina neljテ、n syistテ、 uudelleen 167 00:08:48,330 --> 00:08:50,080 ettテ、 meidテ、n ei tarvitse pテ、テ、stテ、 juuri nyt. 168 00:08:50,080 --> 00:08:53,060 Mutta tテ、mテ、, niin riittテ、テ、, kun todetaan, ettテ、 Kun nテ、mテ、 kolme riviテ、 koodia, 169 00:08:53,060 --> 00:08:54,810 tテ、mテ、 on mitテ、 muisti voisi nテ、yttテ、テ、. 170 00:08:54,810 --> 00:08:58,930 Jos tarvitsen muistipaikkaa 4, 8, ja 12 pitテ、テ、 tietoni, 171 00:08:58,930 --> 00:09:01,100 tテ、mテ、 on mitテ、 minun muisti voisi nテ、yttテ、テ、. 172 00:09:01,100 --> 00:09:04,062 >> Ja vain olla erityisen pikkutarkka tテ、テ、llテ、, kun 173 00:09:04,062 --> 00:09:06,020 puhumme muistia osoitteet me yleensテ、 174 00:09:06,020 --> 00:09:08,390 se kテ、yttテ、テ、 heksadesimaali merkintテカjテ、. 175 00:09:08,390 --> 00:09:12,030 Joten miksi emme muuntaa kaikki nテ、mテ、 alkaen desimaalin on heksadesimaalilukuja 176 00:09:12,030 --> 00:09:15,010 vain koska se on yleensテ、 kuinka puhumme muistiin. 177 00:09:15,010 --> 00:09:17,880 Joten sen sijaan, ettテ、 0 kautta 19, mitテ、 meillテ、 on nolla 178 00:09:17,880 --> 00:09:20,340 X nollasta nolla x1 kolme. 179 00:09:20,340 --> 00:09:23,790 Ne ovat 20 tavua muistia ettテ、 me ovat tai me tarkastelemme tテ、ssテ、 kuvassa 180 00:09:23,790 --> 00:09:25,540 Juuri tテ、テ、llテ、. 181 00:09:25,540 --> 00:09:29,310 >> Joten kaikki tテ、mテ、 on sanottu, katsotaanpa askel poispテ、in muisti toisen 182 00:09:29,310 --> 00:09:30,490 ja takaisin viitteitテ、. 183 00:09:30,490 --> 00:09:32,420 Tテ、ssテ、 on tテ、rkein asia muistaa 184 00:09:32,420 --> 00:09:34,070 kuten me alkaa tyテカskennellテ、 viitteitテ、. 185 00:09:34,070 --> 00:09:36,314 Osoitin ei ole mitテ、テ、n enemmテ、n kuin osoite. 186 00:09:36,314 --> 00:09:38,230 Minテ、 sanon sen uudelleen, koska se on niin tテ、rkeテ、テ、, 187 00:09:38,230 --> 00:09:42,730 osoitin ei ole mitテ、テ、n enemmテ、n kuin osoite. 188 00:09:42,730 --> 00:09:47,760 Osoittimet ovat osoitteet paikkoihin muistiin jossa muuttujat elテ、テ、. 189 00:09:47,760 --> 00:09:52,590 Tietテ、en, ettテ、 se tulee toivottavasti hieman helpompi tyテカskennellテ、 heidテ、n kanssaan. 190 00:09:52,590 --> 00:09:54,550 Toinen asia, josta pidテ、n tehdテ、, on olla erテ、テ、nlainen 191 00:09:54,550 --> 00:09:58,510 kaavioita visuaalisesti edustavat mitテ、 tapahtuu eri riviテ、 koodia. 192 00:09:58,510 --> 00:10:00,660 Ja teemme tテ、mテ、n pari kertoja osoittimia, 193 00:10:00,660 --> 00:10:03,354 ja kun puhumme dynaaminen muistin jakamista samoin. 194 00:10:03,354 --> 00:10:06,020 Koska mielestテ、ni nテ、mテ、 kaaviot voi olla erityisen hyテカdyllistテ、. 195 00:10:06,020 --> 00:10:09,540 >> Joten jos sanon esimerkiksi int k minun koodi, mitテ、 tapahtuu? 196 00:10:09,540 --> 00:10:12,524 No mitテ、 pohjimmiltaan tapahtuu on Saan muisti varattu minulle, 197 00:10:12,524 --> 00:10:14,690 mutta en edes pidテ、 ajattele sitテ、 niin, minテ、 198 00:10:14,690 --> 00:10:16,300 haluan ajatella sitテ、 kuin laatikko. 199 00:10:16,300 --> 00:10:20,090 Minulla on laatikko ja se on vテ、rillinen vihreテ、 koska olen 200 00:10:20,090 --> 00:10:21,750 voi laittaa kokonaislukuja vihreテ、t laatikot. 201 00:10:21,750 --> 00:10:23,666 Jos se oli merkki I voi olla sininen laatikko. 202 00:10:23,666 --> 00:10:27,290 Mutta olen aina sanoa, jos Luon laatikko, johon mahtuu kokonaislukuja 203 00:10:27,290 --> 00:10:28,950 ettテ、 laatikko on vテ、rillinen vihreテ、. 204 00:10:28,950 --> 00:10:33,020 Ja otan pysyvテ、 merkki ja minテ、 kirjoitan k puolella se. 205 00:10:33,020 --> 00:10:37,590 Joten minulla on laatikko nimeltテ、 K, johon voin laittaa kokonaislukuja. 206 00:10:37,590 --> 00:10:41,070 Joten kun sanon int k, joka on mitテ、 tapahtuu pテ、テ、hテ、ni. 207 00:10:41,070 --> 00:10:43,140 Jos sanon k on viisi, mitテ、 teen? 208 00:10:43,140 --> 00:10:45,110 No, Laitan viisi ruutuun, oikea. 209 00:10:45,110 --> 00:10:48,670 Tテ、mテ、 on melko yksinkertainen, jos Sanon int k, luo laatikko kutsutaan k. 210 00:10:48,670 --> 00:10:52,040 Jos sanon k on 5, laittaa viisi syテカttテカテ、. 211 00:10:52,040 --> 00:10:53,865 Toivottavasti se ei ole liian paljon harppaus. 212 00:10:53,865 --> 00:10:55,990 Tテ、ssテ、 kun asiat menevテ、t vテ、hテ、n mielenkiintoinen kuitenkin. 213 00:10:55,990 --> 00:11:02,590 Jos sanon int * PK, no vaikka en tiedテ、, mitテ、 tテ、mテ、 merkitsee vテ、istテ、mテ、ttテ、, 214 00:11:02,590 --> 00:11:06,150 Se on selvテ、sti jotain tekemistテ、 kokonaisluku. 215 00:11:06,150 --> 00:11:08,211 Joten aion vテ、ri pienennテ、 vihreテ、-ish, 216 00:11:08,211 --> 00:11:10,210 Tiedテ、n, ettテ、 se on jotain tehdテ、 kokonaisluku, 217 00:11:10,210 --> 00:11:13,400 mutta se ei ole kokonaisluku itse, koska se on int tテ、hden. 218 00:11:13,400 --> 00:11:15,390 Siinテ、 on jotain hieman Eri siitテ、. 219 00:11:15,390 --> 00:11:17,620 Joten kokonaisluku on mukana, mutta muuten se on 220 00:11:17,620 --> 00:11:19,830 ei liian erilainen mitテ、 puhuimme. 221 00:11:19,830 --> 00:11:24,240 Se on laatikko, sen sai etiketti, se on pテ、テ、llテ、テ、n etiketti PK, 222 00:11:24,240 --> 00:11:27,280 ja se on pystyttテ、vテ、 pitテ、mテ、テ、n int tテ、hdet, mitテ、 ne ovat. 223 00:11:27,280 --> 00:11:29,894 Heillテ、 on jotain tekemistテ、 kanssa kokonaislukuja, selvテ、sti. 224 00:11:29,894 --> 00:11:31,060 Tテ、ssテ、 on viimeinen kuitenkin. 225 00:11:31,060 --> 00:11:37,650 Jos sanon PK = & K, huh, mitテ、 juuri tapahtui, eikテカ? 226 00:11:37,650 --> 00:11:41,820 Joten tテ、mテ、 satunnaisluku, sattumanvaraiselta numero, saa heittテ、テ、 laatikkoon siellテ、. 227 00:11:41,820 --> 00:11:44,930 Kaikki tテ、mテ、 on, on pk saa osoite k. 228 00:11:44,930 --> 00:11:52,867 Joten olen kiinni missテ、 k asuu muistissa, sen osoitteen, osoite sen tavua. 229 00:11:52,867 --> 00:11:55,200 Kaikki Mulla on sanon ettテ、 arvo on mitテ、 aion 230 00:11:55,200 --> 00:11:59,430 laittaa sisテ、lle minun laatikko kutsutaan PK. 231 00:11:59,430 --> 00:12:02,080 Ja koska nテ、mテ、 asiat ovat osoittimia, ja koska etsivテ、t 232 00:12:02,080 --> 00:12:04,955 klo merkkijono kuin nolla x kahdeksan nolla C seitsemテ、n neljテ、 kahdeksan 233 00:12:04,955 --> 00:12:07,790 kaksi nolla on luultavasti ei ole kovin mielekテ、stテ、. 234 00:12:07,790 --> 00:12:12,390 Kun me yleensテ、 visualisoida osoittimia, me todella tehdテ、 niin osoittimia. 235 00:12:12,390 --> 00:12:17,000 Pk antaa meille tiedot Meidテ、n tテ、ytyy lテカytテ、テ、 k muistiin. 236 00:12:17,000 --> 00:12:19,120 Joten periaatteessa PK on nuoli sen. 237 00:12:19,120 --> 00:12:21,670 Ja jos me kテ、velemテ、テ、n pituus Kyseisen nuoli, kuvitella 238 00:12:21,670 --> 00:12:25,280 se on jotain, voit kテ、vellテ、, jos me kテ、vellテ、 pitkin nuolen, 239 00:12:25,280 --> 00:12:29,490 aivan kテ、rjen ettテ、 nuoli, me lテカytテ、vテ、t sijainti muistiin 240 00:12:29,490 --> 00:12:31,390 jossa k asuu. 241 00:12:31,390 --> 00:12:34,360 Ja se on todella tテ、rkeテ、テ、 sillテ、 kun tiedテ、mme missテ、 k asuu, 242 00:12:34,360 --> 00:12:37,870 voimme alkaa tyテカskennellテ、 tiedot sisテ、llテ、 ettテ、 muistipaikka. 243 00:12:37,870 --> 00:12:40,780 Vaikka saamme pikkuinen bitti ennen itseテ、mme nyt. 244 00:12:40,780 --> 00:12:42,240 >> Joten mikテ、 on osoitin? 245 00:12:42,240 --> 00:12:45,590 Osoitin on tietoerテ、 jonka arvo on muisti osoite. 246 00:12:45,590 --> 00:12:49,740 Se oli, ettテ、 nolla x kahdeksan nolla jutut tekeillテ、, ettテ、 oli muisti osoite. 247 00:12:49,740 --> 00:12:52,060 Se oli paikalla muistissa. 248 00:12:52,060 --> 00:12:55,080 Ja tyypin osoitin kuvaa sellaista 249 00:12:55,080 --> 00:12:56,930 Tietojen lテカydテ、t ettテ、 muisti osoite. 250 00:12:56,930 --> 00:12:58,810 Joten siellテ、 int tテ、hti osa oikealla. 251 00:12:58,810 --> 00:13:03,690 Jos seuraan ettテ、 nuoli, se on menossa saavat minut sijainti. 252 00:13:03,690 --> 00:13:06,980 Ja ettテ、 sijainti, mitテ、 minテ、 lテカytテ、vテ、t siellテ、 minun esimerkki, 253 00:13:06,980 --> 00:13:08,240 on vihreitテ、 laatikko. 254 00:13:08,240 --> 00:13:12,650 Se on kokonaisluku, se mitテ、 minテ、 lテカytテ、vテ、t jos menen kyseiseen osoitteeseen. 255 00:13:12,650 --> 00:13:14,830 Tietotyyppi osoitin kertoo, mitテ、 256 00:13:14,830 --> 00:13:17,936 lテカydテ、t tuohon muisti osoite. 257 00:13:17,936 --> 00:13:19,560 Joten tテ、ssテ、 on todella cool juttu kuitenkin. 258 00:13:19,560 --> 00:13:25,090 Osoittimet avulla voimme kulkea muuttujia vテ、lillテ、 toimintoja. 259 00:13:25,090 --> 00:13:28,520 Ja todella siirtテ、テ、 muuttujia eikテ、 siirtテ、テ、 niistテ、 kopiot. 260 00:13:28,520 --> 00:13:32,879 Koska jos me tiedテ、mme tarkalleen missテ、 muistissa lテカytテ、テ、 muuttujan, 261 00:13:32,879 --> 00:13:35,670 meidテ、n ei tarvitse tehdテ、 kopion se, voimme vain mennテ、 kyseiseen paikkaan 262 00:13:35,670 --> 00:13:37,844 ja tyテカskennellテ、 ettテ、 vaihteleva. 263 00:13:37,844 --> 00:13:40,260 Joten pohjimmiltaan viitteitテ、 jテ、rjestテ、 Make tietokoneympテ、ristテカssテ、 264 00:13:40,260 --> 00:13:42,360 paljon enemmテ、n kuin todellisessa maailmassa, oikea. 265 00:13:42,360 --> 00:13:44,640 >> Joten tテ、ssテ、 on analogisesti. 266 00:13:44,640 --> 00:13:48,080 Oletetaan, ettテ、 minulla on muistikirja, oikealle, ja se on tテ、ynnテ、 muistiinpanoja. 267 00:13:48,080 --> 00:13:50,230 Ja haluaisin voit pテ、ivittテ、テ、 sen. 268 00:13:50,230 --> 00:13:53,960 Olet toiminto pテ、ivitykset toteaa, oikea. 269 00:13:53,960 --> 00:13:56,390 Tavalla olemme olleet tyテカskentelee toistaiseksi, mitテ、 270 00:13:56,390 --> 00:14:02,370 tapahtuu on otatte minun muistikirjan, siirryt kopion tallentaa, 271 00:14:02,370 --> 00:14:06,410 voit tehdテ、 Xerox kopio jokaisen sivun muistikirjan. 272 00:14:06,410 --> 00:14:09,790 Sinun jテ、ttテ、テ、 minun kannettavan takaisin pテカydテ、lleni kun olet valmis, 273 00:14:09,790 --> 00:14:14,600 voit mennテ、 ja yliviivaa asioita minun muistikirja, jotka ovat vanhentuneita tai vテ、テ、rin, 274 00:14:14,600 --> 00:14:19,280 ja sitten voit siirtテ、テ、 takaisin minua pino Xerox sivuja 275 00:14:19,280 --> 00:14:22,850 ettテ、 on kopio minun muistikirjan muutokset ettテ、 olet tehnyt sen. 276 00:14:22,850 --> 00:14:27,040 Ja siinテ、 vaiheessa, se on jopa minua kutsuvan toiminto, kuten soittajan, 277 00:14:27,040 --> 00:14:30,582 pテ、テ、ttテ、テ、 ottaa muistiinpanoja ja integroida ne takaisin kannettavassa. 278 00:14:30,582 --> 00:14:32,540 Joten siellテ、 on paljon portaita mukana tテ、ssテ、, juuri. 279 00:14:32,540 --> 00:14:34,850 Kuten eikテカ olisi parempi jos minテ、 vain sanoa, hei, voitko 280 00:14:34,850 --> 00:14:38,370 pテ、ivittテ、テ、 muistikirja minulle, kテ、den minun notebook, 281 00:14:38,370 --> 00:14:40,440 ja otat asioita ja kirjaimellisesti ylittテ、テ、 ne pois 282 00:14:40,440 --> 00:14:42,810 ja pテ、ivitテ、n muistiinpanoja kannettavassa. 283 00:14:42,810 --> 00:14:45,140 Ja sitten antaa minulle kannettavan takaisin. 284 00:14:45,140 --> 00:14:47,320 Sellainen mitテ、 viitteitテ、 jotta voisimme tehdテ、, 285 00:14:47,320 --> 00:14:51,320 he tekevテ、t tテ、ssテ、 ympテ、ristテカssテ、 paljon enemmテ、n kuin miten toimimme todellisuudessa. 286 00:14:51,320 --> 00:14:54,640 >> Hyvテ、 niin sitテ、hテ、n osoitin, Puhutaanpa 287 00:14:54,640 --> 00:14:58,040 miten viitteitテ、 toimivat C, ja miten voimme alkaa tyテカskennellテ、 heidテ、n kanssaan. 288 00:14:58,040 --> 00:15:02,550 Joten on hyvin yksinkertainen osoitin C kutsutaan nollaosoittimen. 289 00:15:02,550 --> 00:15:04,830 Null osoitin osoittaa mitテ、テ、n. 290 00:15:04,830 --> 00:15:08,310 Tテ、mテ、 todennテ、kテカisesti nテ、yttテ、テ、 se on oikeastaan 窶銀€黍le kovin hyテカdyllinen asia, 291 00:15:08,310 --> 00:15:10,500 mutta kuten nテ、emme vテ、hテ、n myテカhemmin, siihen 292 00:15:10,500 --> 00:15:15,410 ettテ、 tテ、mテ、 nollaosoittimen olemassa oikeastaan 窶銀€逆odella voi tulla kテ、tevテ、. 293 00:15:15,410 --> 00:15:19,090 Ja kun luot osoitin, ja et mテ、テ、ritテ、 sen arvo immediately- 294 00:15:19,090 --> 00:15:21,060 esimerkki, jossa sen arvo heti 295 00:15:21,060 --> 00:15:25,401 on pari liukuu takaisin jossa totesin, pk vastaa & K, 296 00:15:25,401 --> 00:15:28,740 PK saa K: n osoitteen, kuten nテ、emme, mitテ、 se tarkoittaa, 297 00:15:28,740 --> 00:15:32,990 nテ、emme miten koodia ettテ、 shortly- jos emme aseta sen arvoksi jotain 298 00:15:32,990 --> 00:15:35,380 mielekテ、s heti, sinun pitテ、isi aina 299 00:15:35,380 --> 00:15:37,480 aseta osoitin osoittamaan null. 300 00:15:37,480 --> 00:15:40,260 Sinun tulisi asettaa sen osoittamaan mitテ、テ、n. 301 00:15:40,260 --> 00:15:43,614 >> Se on hyvin erilainen kuin juuri lテ、hdテカssテ、 arvokas, koska 302 00:15:43,614 --> 00:15:45,530 ja sitten julistamisesta osoitin ja vain olettaen 303 00:15:45,530 --> 00:15:48,042 se null koska se on harvoin totta. 304 00:15:48,042 --> 00:15:50,000 Joten sinun tulisi aina asettaa arvon osoittimen 305 00:15:50,000 --> 00:15:55,690 null jos et aseta sen arvo jotain mielekテ、stテ、 vテ、littテカmテ、sti. 306 00:15:55,690 --> 00:15:59,090 Voit tarkistaa, onko osoittimen arvo on null kテ、yttテ、en yhtテ、suuruusoperaattorin 307 00:15:59,090 --> 00:16:05,450 (==), Kuten sinテ、kin vertailla tahansa kokonaisluku arvot tai merkki arvoja (==) 308 00:16:05,450 --> 00:16:06,320 yhtテ、 hyvin. 309 00:16:06,320 --> 00:16:10,994 Se on erityinen erテ、テ、nlainen jatkuva arvo, jota voit kテ、yttテ、テ、 testata. 310 00:16:10,994 --> 00:16:13,160 Joten se oli hyvin yksinkertainen osoitin, nollaosoittimen. 311 00:16:13,160 --> 00:16:15,320 Toinen tapa luoda osoitin on purkaa 312 00:16:15,320 --> 00:16:18,240 osoitteen muuttujan olet jo luonut, 313 00:16:18,240 --> 00:16:22,330 ja voit tehdテ、 tテ、mテ、n kテ、yttテ、en & operaattori osoite louhinta. 314 00:16:22,330 --> 00:16:26,720 Joka olemme jo nテ、hneet aiemmin Ensimmテ、isessテ、 kaaviossa esimerkiksi nテ、ytin. 315 00:16:26,720 --> 00:16:31,450 Joten jos x on muuttuja, joka olemme jo luonut tyypin kokonaisluku, 316 00:16:31,450 --> 00:16:35,110 sitten ja x on osoitin kokonaisluku. 317 00:16:35,110 --> 00:16:39,810 & X is- muistaa, ja aikoo poimia osoite asia oikealla. 318 00:16:39,810 --> 00:16:45,350 Ja koska osoitin on vain osoite, kuin ja x on osoitin kokonaisluku 319 00:16:45,350 --> 00:16:48,560 joiden arvo on, jos muistissa X elテ、mテ、ssテ、テ、n. 320 00:16:48,560 --> 00:16:50,460 Se on X: n osoite. 321 00:16:50,460 --> 00:16:53,296 Joten ja x on osoite x. 322 00:16:53,296 --> 00:16:55,670 Otetaanpa tテ、mテ、 yksi askel edelleen ja muodostaa jotain 323 00:16:55,670 --> 00:16:58,380 Viittasin vuonna ennen videon. 324 00:16:58,380 --> 00:17:06,730 Jos sov on joukko kaksinkertaistuu, sitten & Sov hakasulje i on osoitin 325 00:17:06,730 --> 00:17:08,109 kaksinkertainen. 326 00:17:08,109 --> 00:17:08,970 OK. 327 00:17:08,970 --> 00:17:12,160 sov hakasulje i, jos sov on joukko kaksinkertaistuu, 328 00:17:12,160 --> 00:17:19,069 sitten sov hakasulje i on i: nnen elementin, joka jono, 329 00:17:19,069 --> 00:17:29,270 ja & sov hakasulkeen i on missテ、 muisti i: nnen elementin ARR olemassa. 330 00:17:29,270 --> 00:17:31,790 >> Niin mitテ、 vaikutuksia tテ、テ、llテ、? 331 00:17:31,790 --> 00:17:34,570 Taulukot nimi, implisiittisesti Tテ、mテ、n koko juttu, 332 00:17:34,570 --> 00:17:39,290 on, ettテ、 matriisi nimi on todella itse osoitin. 333 00:17:39,290 --> 00:17:41,170 Olet tyテカstテ、nyt osoittimilla koko ajan 334 00:17:41,170 --> 00:17:45,290 aina, kun olet kテ、yttテ、nyt erilaisia. 335 00:17:45,290 --> 00:17:49,090 Muista esimerkistテ、 on kiikaritテ、htテ、imellテ、, 336 00:17:49,090 --> 00:17:53,420 loppupuolella videota esittテ、mテ、テ、n Esimerkiksi jos meillテ、 on funktio 337 00:17:53,420 --> 00:17:56,890 kutsutaan joukko int ja toiminto nimeltテ、テ、n joukko array. 338 00:17:56,890 --> 00:18:00,490 Ja haaste mテ、テ、rittテ、テ、 onko, tai mitテ、 339 00:18:00,490 --> 00:18:03,220 arvot, joita me tulostetaan loppuun toiminnon 340 00:18:03,220 --> 00:18:05,960 lopussa pテ、テ、ohjelma. 341 00:18:05,960 --> 00:18:08,740 >> Jos muistatte tテ、stテ、 esimerkki tai jos olet katsonut videon, 342 00:18:08,740 --> 00:18:13,080 te tiedテ、tte, ettテ、 kun teille-puhelun sarja int tehokkaasti ei tee mitテ、テ、n. 343 00:18:13,080 --> 00:18:16,390 Mutta asettamiseen array tekee. 344 00:18:16,390 --> 00:18:19,280 Ja minテ、 tavallaan tasapaksuja miksi nテ、in oli tuolloin. 345 00:18:19,280 --> 00:18:22,363 Sanoin vain, hyvin se on array, se on erityinen, tiedテ、tte, on olemassa syy. 346 00:18:22,363 --> 00:18:25,020 Syynテ、 on se, ettテ、 matriisi: n nimi on oikeastaan 窶銀€久ain osoitin, 347 00:18:25,020 --> 00:18:28,740 ja on tテ、mテ、 erityinen hakasulje syntaksin 348 00:18:28,740 --> 00:18:30,510 tehdテ、 asioita paljon mukavampi tyテカskennellテ、. 349 00:18:30,510 --> 00:18:34,410 Ja he tekevテ、t ajatus osoitin paljon vテ、hemmテ、n uhkaava, 350 00:18:34,410 --> 00:18:36,800 ja siksi ne ovat tavallaan on esitetty nテ、in. 351 00:18:36,800 --> 00:18:38,600 Mutta oikeasti paneelit ovat vain viitteitテ、. 352 00:18:38,600 --> 00:18:41,580 Ja siksi kun me teki muutoksen array, 353 00:18:41,580 --> 00:18:44,880 kun ohitimme array parametri toiminnon tai argumenttina 354 00:18:44,880 --> 00:18:50,110 toiminnon, sisテ、ltテカ taulukon todella muuttunut molemmissa callee 355 00:18:50,110 --> 00:18:51,160 ja soittaja. 356 00:18:51,160 --> 00:18:55,846 Joka sillテ、 kaikki muu muuttuja nテ、imme ei tapahtunut. 357 00:18:55,846 --> 00:18:58,970 Niin, ettテ、 on vain jotain pitテ、テ、 mielessテ、, kun olet tyテカskennellyt osoittimia, 358 00:18:58,970 --> 00:19:01,610 on, ettテ、 nimi array todella osoitin 359 00:19:01,610 --> 00:19:04,750 on ensimmテ、inen osa, joka array. 360 00:19:04,750 --> 00:19:08,930 >> OK joten nyt meillテ、 on kaikki nテ、mテ、 tosiasiat, nyt pitテ、テ、 kテ、ynnissテ、, oikea. 361 00:19:08,930 --> 00:19:11,370 Miksi me vテ、litテ、mme jossa jotain asuu. 362 00:19:11,370 --> 00:19:14,120 No kuten sanoin, se on melko hyテカdyllistテ、 tietテ、テ、, missテ、 jotain asuu 363 00:19:14,120 --> 00:19:17,240 niin voit mennテ、 sinne ja muuttaa sitテ、. 364 00:19:17,240 --> 00:19:19,390 Tyテカskennellテ、 sen kanssa ja todella on asia, ettテ、 te 365 00:19:19,390 --> 00:19:23,710 haluavat tehdテ、 muuttujan tulevat voimaan, eikテ、 pテ、ivテ、stテ、 joitakin kopio. 366 00:19:23,710 --> 00:19:26,150 Tテ、tテ、 kutsutaan dereferencing. 367 00:19:26,150 --> 00:19:28,690 Menemme viite ja muutamme arvoa siellテ、. 368 00:19:28,690 --> 00:19:32,660 Joten jos meillテ、 on osoitin ja sitテ、 kutsutaan PC, ja se osoittaa merkin, 369 00:19:32,660 --> 00:19:40,610 niin voimme sanoa * PC ja * PC on nimi mitテ、 lテカydテ、mme jos menemme 370 00:19:40,610 --> 00:19:42,910 osoitteeseen PC. 371 00:19:42,910 --> 00:19:47,860 Mitテ、 me lテカydテ、mme on luonteeltaan ja * PC on, miten puhumme tietojen ettテ、 372 00:19:47,860 --> 00:19:48,880 Sijainti. 373 00:19:48,880 --> 00:19:54,150 Jotta voisimme sanoa jotain * PC = D tai jotain, 374 00:19:54,150 --> 00:19:59,280 ja se tarkoittaa, ettテ、 mitテ、 tahansa oli muistiosoite PC, 375 00:19:59,280 --> 00:20:07,040 mitテ、 hahmo oli aiemmin siellテ、 on nyt D, jos sanomme * pc = D. 376 00:20:07,040 --> 00:20:10,090 >> Joten tテ、ssテ、 sitテ、 taas ollaan kanssa outoja C juttuja, oikea. 377 00:20:10,090 --> 00:20:14,560 Joten olemme nテ、hneet * aiemmin olevan jotenkin osa tiedoista tyyppi, 378 00:20:14,560 --> 00:20:17,160 ja nyt se kテ、ytetテ、テ、n hieman eri asiayhteydessテ、 379 00:20:17,160 --> 00:20:19,605 kテ、yttテ、テ、 tietoja paikassa. 380 00:20:19,605 --> 00:20:22,480 Tiedテ、n, ettテ、 se vテ、hテ、n sekava ja se on itse asiassa osa tテ、tテ、 koko 381 00:20:22,480 --> 00:20:25,740 kuten, miksi viitteet on tテ、mテ、 mytologia ympテ、rillテ、テ、n olevan niin monimutkainen, 382 00:20:25,740 --> 00:20:28,250 on erテ、テ、nlainen syntaksin ongelma, rehellisesti. 383 00:20:28,250 --> 00:20:31,810 Mutta * on kテ、yttテ、テ、 molemmissa yhteyksissテ、, molemmat osana tyypin nimi, 384 00:20:31,810 --> 00:20:34,100 ja nテ、emme hieman myテカhemmin muutakin. 385 00:20:34,100 --> 00:20:36,490 Ja nyt on dereference operaattori. 386 00:20:36,490 --> 00:20:38,760 Niin se menee viittaus, se sisテ、テ、nkテ、yntien tiedot 387 00:20:38,760 --> 00:20:43,000 paikassa osoittimen, ja voit manipuloida sitテ、 mieleisekseen. 388 00:20:43,000 --> 00:20:45,900 >> Nyt tテ、mテ、 on hyvin samankaltainen vierailevat naapuri, oikea. 389 00:20:45,900 --> 00:20:48,710 Jos tiedテ、t mitテ、 naapuri asuu, olet 390 00:20:48,710 --> 00:20:50,730 ei hengailua lテ、himmテ、istテ、si. 391 00:20:50,730 --> 00:20:53,510 Tiedテ、t satut tiedテ、, missテ、 he asuvat, 392 00:20:53,510 --> 00:20:56,870 mutta se ei tarkoita, ettテ、 nojalla ottaa tテ、tテ、 tietoa 393 00:20:56,870 --> 00:20:59,170 olet vuorovaikutuksessa niiden kanssa. 394 00:20:59,170 --> 00:21:01,920 Jos haluat olla vuorovaikutuksessa niiden kanssa, sinun tテ、ytyy mennテ、 heidテ、n talonsa, 395 00:21:01,920 --> 00:21:03,760 sinun tテ、ytyy mennテ、 missテ、 he asuvat. 396 00:21:03,760 --> 00:21:07,440 Ja kun teette sen, niin voit olla vuorovaikutuksessa 397 00:21:07,440 --> 00:21:09,420 niitテ、 aivan kuin haluat. 398 00:21:09,420 --> 00:21:12,730 Ja samalla tavoin muuttujia, sinun tテ、ytyy mennテ、 heidテ、n osoitteensa 399 00:21:12,730 --> 00:21:15,320 jos haluat vuorovaikutuksessa niitテ、, et voi vain tiedテ、 osoitetta. 400 00:21:15,320 --> 00:21:21,495 Ja miten voit mennテ、 osoitteeseen on kテ、yttテ、テ、 *, dereference operaattori. 401 00:21:21,495 --> 00:21:23,620 Mitテ、 mieltテ、 olet tapahtuu jos yritテ、mme ja dereference 402 00:21:23,620 --> 00:21:25,260 osoitin, jonka arvo on nolla? 403 00:21:25,260 --> 00:21:28,470 Muista, ettテ、 null osoitin osoittaa mitテ、テ、n. 404 00:21:28,470 --> 00:21:34,110 Joten jos yritテ、t ja dereference mitテ、テ、n tai mennテ、 osoitteeseen mitテ、テ、n, 405 00:21:34,110 --> 00:21:36,800 mitテ、 luulet tapahtuu? 406 00:21:36,800 --> 00:21:39,630 No jos arvasit segmentointi vika, olisit oikeassa. 407 00:21:39,630 --> 00:21:41,390 Jos yritテ、t dereference nollaosoittimen, 408 00:21:41,390 --> 00:21:43,140 sinulla segmentointi vika. Mutta odota, 409 00:21:43,140 --> 00:21:45,820 ei minテ、 sanon teille, ettテ、 jos et tule 410 00:21:45,820 --> 00:21:49,220 asettaa arvoa Osoitin jotain merkityksellistテ、, 411 00:21:49,220 --> 00:21:51,000 sinun pitテ、isi asettaa nollaksi? 412 00:21:51,000 --> 00:21:55,290 Tein ja todella segmentointi vika on erテ、テ、nlainen hyvテ、n kテ、ytテカksen. 413 00:21:55,290 --> 00:21:58,680 >> Oletko koskaan julistettu muuttuva ja ei mテ、テ、ritetty sen arvo vテ、littテカmテ、sti? 414 00:21:58,680 --> 00:22:02,680 Joten sanoit int x; et todella antaa sen mitテ、テ、n 415 00:22:02,680 --> 00:22:05,340 ja sitten myテカhemmin koodissa, tulostamaan x arvo, 416 00:22:05,340 --> 00:22:07,650 ottaa vielテ、 liitetテ、テ、n se mitテ、テ、n. 417 00:22:07,650 --> 00:22:10,370 Usein saat nolla, mutta joskus 418 00:22:10,370 --> 00:22:15,000 saattaa saada joitakin satunnaisia 窶銀€杵umero, ja sinulla ei ole aavistustakaan mistテ、 se tuli. 419 00:22:15,000 --> 00:22:16,750 Samoin voi asiat tapahtua viitteitテ、. 420 00:22:16,750 --> 00:22:20,110 Kun julistaa osoitin int * PK esimerkiksi, 421 00:22:20,110 --> 00:22:23,490 ja et mテ、テ、ritテ、 sen arvo, saat neljテ、 tavua muistia. 422 00:22:23,490 --> 00:22:25,950 Riippumatta neljテ、 tavua muisti jテ、rjestelmテ、 voi 423 00:22:25,950 --> 00:22:28,970 toteavat, ettテ、 on joitakin mielekkテ、itテ、 arvoa. 424 00:22:28,970 --> 00:22:31,760 Ja on saattanut olla jotain jo olemassa, ettテ、 425 00:22:31,760 --> 00:22:34,190 ei enテ、テ、 tarvita toisen toiminto, joten sinun tテ、ytyy vain 426 00:22:34,190 --> 00:22:35,900 mitテ、 tietoja oli siellテ、. 427 00:22:35,900 --> 00:22:40,570 >> Mitテ、 jos olet yrittテ、nyt tehdテ、 dereference jotkut osoite, ettテ、 olet テ、lテ、-oli 428 00:22:40,570 --> 00:22:43,410 jo tavua ja tietoa siellテ、, se on nyt teidテ、n osoitin. 429 00:22:43,410 --> 00:22:47,470 Jos yritテ、t dereference ettテ、 osoitin, saatat olla Messing kanssa jonkin verran muistia 430 00:22:47,470 --> 00:22:49,390 ettテ、 ette aio sotkea kaiken. 431 00:22:49,390 --> 00:22:51,639 Ja itse asiassa voisi tehdテ、 jotain todella tuhoisia, 432 00:22:51,639 --> 00:22:54,880 kuten murtaa toinen ohjelma, tai rikkoa toinen toiminto, 433 00:22:54,880 --> 00:22:58,289 tai tehdテ、 jotain ilkeテ、 ettテ、 et aio tehdテ、 ollenkaan. 434 00:22:58,289 --> 00:23:00,080 Ja niin siksi se on todella hyvテ、 idea 435 00:23:00,080 --> 00:23:04,030 asettaa viitteitテ、 null jos テ、lテ、 aseta ne jotain merkityksellistテ、. 436 00:23:04,030 --> 00:23:06,760 Se on luultavasti parempi Pテ、ivテ、n pテ、テ、tteeksi oman ohjelman 437 00:23:06,760 --> 00:23:09,840 kaatumisen sitten se tehdテ、 jotain, joka mokaa 438 00:23:09,840 --> 00:23:12,400 toisesta ohjelmasta tai toiminnon. 439 00:23:12,400 --> 00:23:15,207 Tテ、mテ、 kテ、yttテ、ytyminen on todennテ、kテカisesti vielテ、 vテ、hemmテ、n ihanteellinen kuin vain kaatuu. 440 00:23:15,207 --> 00:23:17,040 Ja niin siksi se on todella hyvテ、 tapa 441 00:23:17,040 --> 00:23:20,920 pテ、テ、stテ、 asettaa viitteitテ、 null jos et aseta niitテ、 442 00:23:20,920 --> 00:23:24,540 mielekkテ、テ、seen arvo heti, arvo ettテ、 tiedテ、t 443 00:23:24,540 --> 00:23:27,260 ja ettテ、 voit turvallisesti dereference. 444 00:23:27,260 --> 00:23:32,240 >> Joten tulla takaisin nyt ja katsomaan klo yleinen syntaksi tilanteen. 445 00:23:32,240 --> 00:23:37,400 Jos sanon int * p ;, mitテ、 minテ、 olen juuri tehnyt? 446 00:23:37,400 --> 00:23:38,530 Mitテ、 olen tehnyt on tテ、mテ、. 447 00:23:38,530 --> 00:23:43,290 Tiedテ、n arvo p on osoite koska kaikki osoittimet ovat vain 448 00:23:43,290 --> 00:23:44,660 osoitteet. 449 00:23:44,660 --> 00:23:47,750 Voin dereference p kテ、yttテ、en * operaattori. 450 00:23:47,750 --> 00:23:51,250 Tテ、ssテ、 yhteydessテ、 tテ、ssテ、, aivan Top muistaa * on osa tyypin. 451 00:23:51,250 --> 00:23:53,510 Int * on tietotyyppi. 452 00:23:53,510 --> 00:23:56,150 Mutta voin dereference p kテ、yttテ、en * operaattori, 453 00:23:56,150 --> 00:24:01,897 ja jos teen niin, jos menen kyseiseen osoitteeseen, mitテ、 lテカydテ、n tテ、hテ、n osoitteeseen? 454 00:24:01,897 --> 00:24:02,855 Lテカydテ、n kokonaisluku. 455 00:24:02,855 --> 00:24:05,910 Joten int * p on pohjimmiltaan sanomalla, p on osoite. 456 00:24:05,910 --> 00:24:09,500 Voin dereference p ja jos En, aion lテカytテ、テ、 kokonaisluku 457 00:24:09,500 --> 00:24:11,920 klo ettテ、 muistipaikka. 458 00:24:11,920 --> 00:24:14,260 >> OK joten sanoin oli toinen Harmillista tテ、hdet 459 00:24:14,260 --> 00:24:17,060 ja tテ、テ、llテ、 on, jos se Harmillista tテ、htien kanssa on. 460 00:24:17,060 --> 00:24:21,640 Oletko koskaan yrittテ、nyt julistaa useita muuttujia samantyyppisiテ、 461 00:24:21,640 --> 00:24:24,409 samalla rivillテ、 koodia? 462 00:24:24,409 --> 00:24:27,700 Niin toisen, teeskennellテ、, ettテ、 linja, koodi Minulla on oikeastaan 窶銀€虐iellテ、 vihreテ、 463 00:24:27,700 --> 00:24:29,366 ei ole olemassa ja se vain kertoo int x, y, z ;. 464 00:24:29,366 --> 00:24:31,634 465 00:24:31,634 --> 00:24:34,550 Mitテ、 se tehdテ、, on itse luoda kolme kokonaisluku muuttujat sinulle, 466 00:24:34,550 --> 00:24:36,930 yksi nimeltテ、テ、n X, yksi nimeltテ、テ、n y, ja yksi nimeltテ、テ、n z. 467 00:24:36,930 --> 00:24:41,510 Se on tapa tehdテ、 se ilman ottaa jakaa pテ、テ、lle kolme riviテ、. 468 00:24:41,510 --> 00:24:43,890 >> Tテ、ssテ、 missテ、 tテ、hteテ、 saada テ、rsyttテ、vテ、テ、 uudelleen vaikka, 469 00:24:43,890 --> 00:24:49,200 koska * on itse asiassa osa Sekテ、 tyypin nimi ja osa 470 00:24:49,200 --> 00:24:50,320 muuttujan nimi. 471 00:24:50,320 --> 00:24:56,430 Joten jos sanon int * px, py, pz, mitテ、 itse saada on osoitin kokonaisluku 472 00:24:56,430 --> 00:25:01,650 nimeltテ、テ、n px ja kaksi kokonaislukua, py ja pz. 473 00:25:01,650 --> 00:25:04,950 Ja se on luultavasti ole mitテ、 Haluamme, ettテ、 ei ole hyvテ、. 474 00:25:04,950 --> 00:25:09,290 >> Joten jos haluan luoda useita viitteitテ、 samalla rivillテ、, samaa tyyppiテ、, 475 00:25:09,290 --> 00:25:12,140 ja tテ、hdet, mitテ、 todella tarvitsevat tehdテ、, on sanoa int * pa, * pb, * PC. 476 00:25:12,140 --> 00:25:17,330 477 00:25:17,330 --> 00:25:20,300 Nyt ottaa sanoi juuri, ettテ、 ja nyt kerron tテ、mテ、n, 478 00:25:20,300 --> 00:25:22,170 luultavasti koskaan tee tテ、tテ、. 479 00:25:22,170 --> 00:25:25,170 Ja se on luultavasti hyvテ、 asia rehellisesti, sillテ、 saatat vahingossa 480 00:25:25,170 --> 00:25:26,544 jテ、ttテ、テ、 tテ、hti, jotain. 481 00:25:26,544 --> 00:25:29,290 Se on luultavasti parasta ehkテ、 julistaa vinkin eri radoille, 482 00:25:29,290 --> 00:25:31,373 mutta se on vain toinen niitテ、 harmittaa syntaksin 483 00:25:31,373 --> 00:25:35,310 asioita tテ、hdet, jotka tekevテ、t viitteitテ、 niin vaikea tyテカskennellテ、. 484 00:25:35,310 --> 00:25:39,480 Koska se on juuri tテ、mテ、 syntaktinen sotku sinun tテ、ytyy tyテカskennellテ、 kautta. 485 00:25:39,480 --> 00:25:41,600 Kテ、ytテ、ntテカテ、 se todella tulee toinen luonto. 486 00:25:41,600 --> 00:25:45,410 Olen edelleen tehdテ、 virheitテ、 se silti ohjelmoinnin jテ、lkeen 10 vuotta, 487 00:25:45,410 --> 00:25:49,630 joten テ、lテ、 hテ、tテ、テ、nny jos jotain tapahtuu teille, se on melko yleinen rehellisesti. 488 00:25:49,630 --> 00:25:52,850 Se on todella sellainen virhe on syntaksin. 489 00:25:52,850 --> 00:25:54,900 >> OK joten olen sellainen luvattujen ettテ、 olisimme uudelleen 490 00:25:54,900 --> 00:25:59,370 kテ、site kuinka suuri on merkkijono. 491 00:25:59,370 --> 00:26:02,750 No jos olen kertonut sinulle, ettテ、 string, olemme todella sellainen 492 00:26:02,750 --> 00:26:04,140 valehdellut sinulle koko ajan. 493 00:26:04,140 --> 00:26:06,181 Ei ole tietoa tyyppi nimeltテ、テ、n merkkijono, ja itse olen 494 00:26:06,181 --> 00:26:09,730 mainitsi tテ、mテ、n yksi meidテ、n aikaisintaan videoita tietotyypit, 495 00:26:09,730 --> 00:26:13,820 merkkijonon oli tietotyyppi joka luotiin sinulle CS50.h. 496 00:26:13,820 --> 00:26:17,050 Sinun tテ、ytyy #include CS50.h voidakseen kテ、yttテ、テ、 sitテ、. 497 00:26:17,050 --> 00:26:19,250 >> No merkkijono on oikeastaan 窶銀€久ain alias jotain 498 00:26:19,250 --> 00:26:23,600 nimeltテ、テ、n char *, Osoitin merkki. 499 00:26:23,600 --> 00:26:26,010 No osoittimia, muistaa, ovat vain osoitteet. 500 00:26:26,010 --> 00:26:28,780 Joten mikテ、 on koko tavuina merkkijonon? 501 00:26:28,780 --> 00:26:29,796 No se on neljテ、 tai kahdeksan. 502 00:26:29,796 --> 00:26:32,170 Ja syy sanon neljテ、 tai kahdeksan johtuu siitテ、, ettテ、 itse asiassa 503 00:26:32,170 --> 00:26:36,730 riippuu jテ、rjestelmテ、n, jos kテ、ytテ、t CS50 ide, char * on koko char 504 00:26:36,730 --> 00:26:39,340 * On kahdeksan, se on 64-bittinen jテ、rjestelmテ、. 505 00:26:39,340 --> 00:26:43,850 Jokainen osoite muistissa on 64 bittiテ、 pitkテ、. 506 00:26:43,850 --> 00:26:48,270 Jos kテ、ytテ、t CS50 laitetta tai millテ、 tahansa 32-bittinen kone, 507 00:26:48,270 --> 00:26:51,640 ja olet kuullut ettテ、 termi 32-bittinen kone, mikテ、 on 32-bittinen kone? 508 00:26:51,640 --> 00:26:56,090 No se vain tarkoittaa, ettテ、 jokainen osoite muistissa on 32 bittiテ、 pitkテ、. 509 00:26:56,090 --> 00:26:59,140 Ja niin 32 bittiテ、 on neljテ、 tavua. 510 00:26:59,140 --> 00:27:02,710 Joten char * on neljテ、 tai kahdeksan tavua riippuen jテ、rjestelmテ、テ、n. 511 00:27:02,710 --> 00:27:06,100 Ja todellakin kaikki tietotyypit, ja osoitin tietoja 512 00:27:06,100 --> 00:27:12,030 tyyppi, koska kaikki osoittimet ovat vain osoitteet, neljテ、 tai kahdeksan tavua. 513 00:27:12,030 --> 00:27:14,030 Joten uudelleen tテ、mテ、n kaavio ja nyt tehdテ、 514 00:27:14,030 --> 00:27:18,130 tテ、mテ、 video vテ、hテ、n liikuntaa tテ、テ、llテ、. 515 00:27:18,130 --> 00:27:21,600 Joten tテ、ssテ、 on kaavio lテ、hdimme pois aivan alussa videon. 516 00:27:21,600 --> 00:27:23,110 Mitテ、 tapahtuu nyt, jos sanon * pk = 35? 517 00:27:23,110 --> 00:27:26,370 518 00:27:26,370 --> 00:27:30,530 Mitテ、 se tarkoittaa, kun sanon, * pk = 35? 519 00:27:30,530 --> 00:27:32,420 Ota toinen. 520 00:27:32,420 --> 00:27:34,990 * PK. 521 00:27:34,990 --> 00:27:39,890 Vuonna yhteydessテ、 tテ、テ、llテ、, * on dereference operaattori. 522 00:27:39,890 --> 00:27:42,110 Joten kun dereference operaattori on kテ、ytetty, 523 00:27:42,110 --> 00:27:48,520 menemme osoite viittasivat PK, ja me muutumme mitテ、 lテカydテ、mme. 524 00:27:48,520 --> 00:27:55,270 Joten * PK = 35 tehokkaasti tekee tテ、mテ、n kuvan. 525 00:27:55,270 --> 00:27:58,110 Joten se on periaatteessa syntaktisesti identtinen ja ottaa sanoi k = 35. 526 00:27:58,110 --> 00:28:00,740 527 00:28:00,740 --> 00:28:01,930 >> Vielテ、 yksi. 528 00:28:01,930 --> 00:28:05,510 Jos sanon int m, luon uusi muuttuja nimeltテ、 m. 529 00:28:05,510 --> 00:28:08,260 Uusi laatikko, se on vihreテ、n laatikon koska se tulee pitテ、テ、 kokonaisluku, 530 00:28:08,260 --> 00:28:09,840 ja se on merkitty m. 531 00:28:09,840 --> 00:28:14,960 Jos sanon m = 4, laitoin kokonaisluku tuohon laatikkoon. 532 00:28:14,960 --> 00:28:20,290 Jos vaikkapa PK = & m, miten Tテ、ssテ、 kaaviossa muutos? 533 00:28:20,290 --> 00:28:28,760 Pk = & m, Muistatteko mitテ、 & Operaattori tekee tai kutsutaan? 534 00:28:28,760 --> 00:28:34,430 Muista, ettテ、 & jotkut muuttujan nimi on osoite muuttujan nimi. 535 00:28:34,430 --> 00:28:38,740 Joten mitテ、 sanomme on PK saa osoitteen m. 536 00:28:38,740 --> 00:28:42,010 Ja niin tehokkaasti, mitテ、 tapahtuu kaavio on, ettテ、 PK ei enテ、テ、 viittaa 537 00:28:42,010 --> 00:28:46,420 k, mutta pistettテ、 m. 538 00:28:46,420 --> 00:28:48,470 >> Jテ、lleen osoittimet ovat hyvin hankala tyテカskennellテ、 539 00:28:48,470 --> 00:28:50,620 ja he ottavat paljon kテ、ytテ、ntテカ, mutta koska 540 00:28:50,620 --> 00:28:54,150 kykynsテ、 avulla voit vテ、littテ、テ、 dataa toimintojen 541 00:28:54,150 --> 00:28:56,945 ja todella on ne Muutokset tulevat voimaan, 542 00:28:56,945 --> 00:28:58,820 saada pテ、テ、n ympテ、ri on todella tテ、rkeテ、テ、. 543 00:28:58,820 --> 00:29:02,590 Se todennテ、kテカisesti on kaikkein monimutkainen Uutta me keskustelemme CS50, 544 00:29:02,590 --> 00:29:05,910 mutta arvo, jota saada kテ、yttテ、mテ、stテ、 osoittimia 545 00:29:05,910 --> 00:29:09,200 paljon suurempi komplikaatioiden jotka tulevat opetteleminen. 546 00:29:09,200 --> 00:29:12,690 Joten toivotan teille parasta onni oppia viitteitテ、. 547 00:29:12,690 --> 00:29:15,760 Olen Doug Lloyd, tテ、mテ、 on CS50. 548 00:29:15,760 --> 00:29:17,447