>> [Musiikkia]
>> DOUG Lloyd: Osoittimet, tﾃ､ssﾃ､ me olemme.
Tﾃ､mﾃ､ on todennﾃ､kﾃｶisesti aio olla vaikein aihe
ettﾃ､ puhumme CS50.
Ja jos olet lukenut mitﾃ､ﾃ､n viitteitﾃ､
ennen saatat olla hieman uhkaava menee tﾃ､mﾃ､n videon.
On totta viitteitﾃ､ sallimme mahdollisuuden
kenties tyriﾃ､ aika pahasti kun olet
kanssa muuttujia, ja tiedot, ja aiheuttaa ohjelman kaatumisen.
Mutta he todella todella hyﾃｶdyllinen ja ne auttavat meitﾃ､ todella hyvﾃ､ tapa
siirtﾃ､ﾃ､ tiedot takaisin ja edestakaisin vﾃ､lillﾃ､ toimintoja,
ettﾃ､ emme muuten pysty tekemﾃ､ﾃ､n.
>> Ja niin mitﾃ､ me todella halua tehdﾃ､ tﾃ､ssﾃ､ juna
sinun on hyvﾃ､ osoitin kuria, niin ettﾃ､ voit kﾃ､yttﾃ､ﾃ､ osoittimia tehokkaasti
tehdﾃ､ ohjelmia niin paljon parempi.
Kuten sanoin viitteitﾃ､ antaa meille eri tapa siirtﾃ､ﾃ､ dataa toimintoja.
Nyt jos muistatte aikaisemmin video, kun
puhuimme kiikaritﾃ､htﾃ､imellﾃ､, mainitsin
ettﾃ､ kaikki tiedot, jotka ohitamme vﾃ､lillﾃ､ toiminnot C ohi arvo.
Ja en ehkﾃ､ ole kﾃ､yttﾃ､nyt, ettﾃ､ termi, mitﾃ､ tarkoitin siellﾃ､
oli se, ettﾃ､ olemme ohimennen kopioita tietojen.
Kun vﾃ､litﾃ､mme muuttujan funktio, emme oikeastaan 窶銀橘ulkee muuttuja
toiminnon, eikﾃｶ?
Olemme kulkee kopio ettﾃ､ datan funktio.
Toiminto tekee mitﾃ､ se tulee ja se laskee jotain arvoa,
ja ehkﾃ､ kﾃ､ytﾃ､mme ettﾃ､ arvo kun se antaa sen takaisin.
>> Siellﾃ､ oli yksi poikkeus tﾃ､mﾃ､ sﾃ､ﾃ､ntﾃｶ ohi arvon,
ja tulemme takaisin, mitﾃ､ se on vﾃ､hﾃ､n myﾃｶhemmin tﾃ､mﾃ､n videon.
Jos kﾃ､ytﾃ､mme viitteitﾃ､ sijaan kﾃ､yttﾃ､ﾃ､ muuttujia,
tai sen sijasta kﾃ､yttﾃ､ﾃ､ muuttujien itse tai kopioita muuttujien,
voimme nyt kulkea muuttujat ympﾃ､rillﾃ､ vﾃ､lillﾃ､ toimii eri tavalla.
Tﾃ､mﾃ､ tarkoittaa, ettﾃ､ jos teemme muutos yksi toiminto,
ettﾃ､ muutos todella ottaa vaikutus eri toimintoa.
Tﾃ､mﾃ､kin on asia, emme voineet tehdﾃ､ aikaisemmin,
ja jos olet koskaan yrittﾃ､nyt vaihtaa arvo kaksi muuttujaa funktion,
olet huomannut tﾃ､mﾃ､n ongelman erﾃ､ﾃ､nlainen noususuunnassa, eikﾃｶ?
>> Jos haluamme vaihtaa X ja Y, ja me siirtﾃ､ﾃ､ ne toiminto nimeltﾃ､ﾃ､n swap,
sisﾃ､llﾃ､ toiminto vaihtaa muuttujat tehdﾃ､ vaihto arvot.
Yksi tulee kaksi, kaksi tulee yksi, mutta emme oikeastaan
muuttaa mitﾃ､ﾃ､n alkuperﾃ､isessﾃ､ toiminto, ettﾃ､ soittaja.
Koska emme voi, emme vain tyﾃｶskentelee jﾃ､ljennﾃｶkset.
Osoittimet kuitenkin, voimme todella siirtﾃ､ﾃ､ X ja Y funktio.
Tﾃ､mﾃ､ toiminto voidaan tehdﾃ､ jotain heidﾃ､n kanssaan.
Ja niitﾃ､ muuttujia arvojen voi todella muuttaa.
Joten se on aivan muutos kykymme tyﾃｶskennellﾃ､ tiedot.
>> Ennen kuin sukeltaa osoittimet, mielestﾃ､ni se kannattaa
kun muutaman minuutin palata perusasioihin tﾃ､ﾃ､llﾃ､.
Ja katsoa, 窶銀砧iten tietokoneen muistiin tyﾃｶt
koska nﾃ､mﾃ､ kaksi aihetta ovat menossa todella olla melko toisiinsa.
Kuten ehkﾃ､ tiedﾃ､tte, tietokoneen jﾃ､rjestelmﾃ､ssﾃ､
sinulla on kovalevy tai ehkﾃ､ Solid State Drive
jonkinlainen tiedostojen tallennuspaikka.
Se on yleensﾃ､ jossain naapurustossa 250 gigatavua
ja ehkﾃ､ pari teratavua nyt.
Ja se on silloin, kun kaikki tiedostoja lopulta elﾃ､ﾃ､,
vaikka tietokone on pois pois, voit ottaa sen takaisin
ja lﾃｶydﾃ､t tiedostot ovat siellﾃ､ uudelleen, kun jﾃ､rjestelmﾃ､ kﾃ､ynnistetﾃ､ﾃ､n uudelleen.
Mutta levyasemat, kuten kiintolevyn, HDD, tai Solid State Drive, SSD,
ovat vain sﾃ､ilytystilaa.
>> Emme voi oikeastaan 窶銀逆ehdﾃ､ mitﾃ､ﾃ､n datan, joka on kiintolevy,
tai SSD-aseman.
Jotta todella muuttaa tietoja tai siirtﾃ､ﾃ､ sen ympﾃ､rillﾃ､,
meidﾃ､n on siirtﾃ､ﾃ､ sen RAM, random access memory.
Nyt RAM, sinulla on paljon vﾃ､hemmﾃ､n tietokoneessa.
Saatat olla jossain naapurustossa 512 megatavua
jos sinulla on vanhempi tietokone, ja ehkﾃ､ kaksi, neljﾃ､, kahdeksan, 16,
mahdollisesti jopa hieman enemmﾃ､n, gigatavua RAM-muistia.
Niin, ettﾃ､ on paljon pienempi, mutta se on jossa kaikki haihtuvat tietojen olemassa.
Siellﾃ､ voimme muuttaa asioita.
Mutta kun me kﾃ､ﾃ､nnﾃ､mme tietokoneesta virta, kaikki tiedot RAM tuhoutuu.
>> Joten siksi meidﾃ､n on kiintolevylle entistﾃ､ pysyvﾃ､ﾃ､ sijainnin se,
niin, ettﾃ､ se exists- se olisi todella huono, jos joka kerta
kﾃ､ﾃ､nsimme tietokoneesta virta, joka tiedosto jﾃ､rjestelmﾃ､ﾃ､mme on hﾃ､ivytetty.
Joten teemme sisﾃ､llﾃ､ muistia.
Ja joka kerta kun puhumme muisti, aika paljon, vuonna CS50,
puhumme RAM, ei kiintolevyn.
>> Joten kun siirrymme asiat muistiin, se vie jonkin verran tilaa.
Kaikki tietotyyppejﾃ､ ettﾃ､ olemme tyﾃｶskennelleet
ryhtyﾃ､ eri mﾃ､ﾃ､riﾃ､ tilaa RAM.
Joten aina luoda kokonaisluku muuttuja, neljﾃ､ tavua muistia
on varattu RAM joten sinun voi tyﾃｶskennellﾃ､ ettﾃ､ kokonaisluku.
Voit julistaa kokonaisluku, muuttaa sitﾃ､, mﾃ､ﾃ､rittﾃ､ﾃ､ sen
arvoon 10 kasvatetaan yhdellﾃ､, niin edelleen ja niin edelleen.
Kaikki mitﾃ､ tarvitsee tapahtua RAM, ja saat neljﾃ､ tavua
tyﾃｶskennellﾃ､ jokaisen kokonaisluku, jonka luot.
>> Jokainen merkki sinua luoda saa yhden tavun.
Se on vain, kuinka paljon tilaa on varastointiin tarvitaan merkki.
Jokainen kellua, todellinen numero, saa neljﾃ､ tavua
ellei se kaksinkertainen tarkkuuden liukuluku
numero, jonka avulla voit on tarkempien ja numeroa
desimaalipilkun jﾃ､lkeen menettﾃ､mﾃ､ttﾃ､ tarkkuus,
joka kestﾃ､ﾃ､ jopa kahdeksan tavua muistia.
Pitkﾃ､ pitkﾃ､t, todella iso kokonaislukuja, myﾃｶs kahdeksan tavua muistia.
Montako tavua muistia do jouset ryhtyﾃ､?
No katsotaanpa laittaa tappi tﾃ､hﾃ､n kysymykseen nyt, mutta me palata siihen.
>> Joten takaisin tﾃ､mﾃ､n ajatuksen muistia iso joukko tavun kokoinen soluja.
Se on todella kaikki se on, se on vain valtava joukko soluja,
kuten muutkin array, joka olet perehtynyt ja nﾃ､hdﾃ､,
paitsi jokainen elementti on yksi tavu leveﾃ､.
Ja aivan kuten array, jokainen elementti on osoite.
Jokainen elementti array on indeksi, ja me
voi kﾃ､yttﾃ､ﾃ､ tﾃ､tﾃ､ indeksiﾃ､ tehdﾃ､ ns random access array.
Meillﾃ､ ei tarvitse aloittaa alussa array,
kerrata lﾃ､pi jokaisen yksittﾃ､inen tekijﾃ､ sen,
lﾃｶytﾃ､ﾃ､ mitﾃ､ etsimme.
Voimme vain sanoa, haluan pﾃ､ﾃ､stﾃ､ 15. elementti tai 100. elementti.
Ja voit vain kulkea, ettﾃ､ mﾃ､ﾃ､rﾃ､ ja saada arvon etsit.
>> Samoin jokainen sijainti muistiin on osoite.
Joten muisti saattaa nﾃ､yttﾃ､ﾃ､ suunnilleen tﾃ､ltﾃ､.
Tﾃ､ssﾃ､ hyvin pieni kimpale muisti, tﾃ､mﾃ､ on 20 tavua muistia.
Ensimmﾃ､iset 20 tavua koska minun kﾃ､sitellﾃ､ﾃ､n siellﾃ､ alareunassa
ovat 0, 1, 2, 3, ja niin alusta loppuun jopa 19.
Ja kun minﾃ､ julistaa muuttujia ja kun kﾃ､ynnistﾃ､n tyﾃｶskennellﾃ､ heidﾃ､n kanssaan,
jﾃ､rjestelmﾃ､ tulee asettaa syrjﾃ､ﾃ､n tilaa minulle
Tﾃ､ssﾃ､ muistissa tﾃｶihin minun muuttujia.
Niin voisin sanoa, nieriﾃ､ﾃ､ C vastaa pﾃ､ﾃ､oman H. Ja mitﾃ､ tulee tapahtumaan?
Hyvin jﾃ､rjestelmﾃ､ on menossa varattu minulle yhden tavun.
Tﾃ､llﾃｶin se valitsi tavu numero neljﾃ､, tavun osoitteessa neljﾃ､,
ja se tulee sﾃ､ilyttﾃ､ﾃ､ kirjain pﾃ､ﾃ､oma H siellﾃ､ minua.
Jos siis minﾃ､ sanon int nopeus raja vastaa 65, se on
aikoo varata neljﾃ､ tavua muistia minulle.
Ja se tulee kohdella neljﾃ､ tavua yhtenﾃ､ yksikkﾃｶnﾃ､
koska mitﾃ､ pyrimme jossa on kokonaisluku tﾃ､ﾃ､llﾃ､.
Ja se tulee sﾃ､ilyttﾃ､ﾃ､ 65 siellﾃ､.
>> Nyt jo olen sellainen kerron hieman valhe,
oikea, koska tiedﾃ､mme, ettﾃ､ tietokoneet tyﾃｶ binary.
He eivﾃ､t ymmﾃ､rrﾃ､, vﾃ､lttﾃ､mﾃ､ttﾃ､ mitﾃ､ pﾃ､ﾃ､oma H on
tai mitﾃ､ 65 on, ne vain ymmﾃ､rtﾃ､ﾃ､ binary, nollia ja ykkﾃｶsiﾃ､.
Ja niin todella mitﾃ､ olemme tallentaminen siellﾃ､
ei ole kirjain H ja numero 65, vaan binﾃ､ﾃ､riesitykset
sen, joka nﾃ､yttﾃ､ﾃ､ vﾃ､hﾃ､n jotain tﾃ､llaista.
Ja erityisesti yhteydessﾃ､ kokonaisluku muuttujan,
se ei tule vain sylkeﾃ､ se, se ei tule kohdella sitﾃ､ yhtenﾃ､ neljﾃ､stﾃ､
tavu kimpale vﾃ､lttﾃ､mﾃ､ttﾃ､, se todella tapahtuu
kohdella sitﾃ､ kuten neljﾃ､ yhden tavun paloina, mikﾃ､ saattaa nﾃ､yttﾃ､ﾃ､ tﾃ､ltﾃ､.
Ja vaikka tﾃ､mﾃ､ ei ole tﾃ､ysin totta joko,
koska jotain kutsutaan endianness, joka emme ole
menossa pﾃ､ﾃ､stﾃ､ nyt, mutta jos olet utelias,
voit lukea siitﾃ､ pikku ja iso endianness.
Mutta vuoksi tﾃ､mﾃ､n vﾃ､itteen, vuoksi tﾃ､mﾃ､n videon,
Haluan vain olettaa, ettﾃ､ on, on Itse asiassa, miten numero 65 olisi
oltava edustettuina muisti kaikissa jﾃ､rjestelmissﾃ､,
vaikka se ei ole tﾃ､ysin totta.
>> Mutta katsotaanpa oikeastaan 窶銀久ain saada eroon kaikista binary kokonaan,
ja ajattele kuin H ja 65, se on paljon helpompaa
ajatella sitﾃ､ kuten ettﾃ､ ihmisenﾃ､.
Selvﾃ､, joten se vaikuttaa myﾃｶs ehkﾃ､ vﾃ､hﾃ､n satunnainen ettﾃ､ I've- minun jﾃ､rjestelmﾃ､
ei antanut minulle tavua 5, 6, 7, ja 8 tallentaa kokonaisluku.
On syytﾃ､, liian, joka emme pﾃ､ﾃ､se juuri nyt, mutta riittﾃ､ﾃ､
todeta, ettﾃ､ mitﾃ､ tietokone tekee tﾃ､ﾃ､llﾃ､
on luultavasti hyvﾃ､ liikkua sen osa.
Ei anna minulle muisti, joka on vﾃ､lttﾃ､mﾃ､ttﾃ､ perﾃ､kkﾃ､in.
Vaikka se aikoo tehdﾃ､ sen nyt jos haluan saada toisen merkkijonon,
nimeltﾃ､ﾃ､n sukunimi, ja haluan laittaa Lloyd siellﾃ､.
Aion tﾃ､ytyy sovittaa yhteen merkki, jokaisen kirjaimen, joka on
menossa vaatia yhden merkki, yhden tavun muistia.
Joten jos voisin laittaa Lloyd minun array nﾃ､in olen melko hyvﾃ､ mennﾃ､, eikﾃｶ?
Mitﾃ､ puuttuu?
>> Muista, ettﾃ､ jokainen merkkijono tyﾃｶskentelemme jossa C pﾃ､ﾃ､ttyy kenoviivaan nolla,
emmekﾃ､ voi jﾃ､ttﾃ､ﾃ､ ettﾃ､ tﾃ､ssﾃ､ joko.
Meidﾃ､n tﾃ､ytyy varata yhden tavun muistia pitﾃ､ﾃ､, ettﾃ､ niin me
tietﾃ､ﾃ､, milloin meidﾃ､n merkkijono on pﾃ､ﾃ､ttynyt.
Joten tﾃ､mﾃ､n jﾃ､rjestelyn siitﾃ､, miten asiat
nﾃ､kyvﾃ､t muistissa voimin olla hieman satunnainen,
mutta se todella on, miten useimmat jﾃ､rjestelmﾃ､t on suunniteltu.
Linja niitﾃ､ ylﾃｶs kerrannaisina neljﾃ､n syistﾃ､ uudelleen
ettﾃ､ meidﾃ､n ei tarvitse pﾃ､ﾃ､stﾃ､ juuri nyt.
Mutta tﾃ､mﾃ､, niin riittﾃ､ﾃ､, kun todetaan, ettﾃ､ Kun nﾃ､mﾃ､ kolme riviﾃ､ koodia,
tﾃ､mﾃ､ on mitﾃ､ muisti voisi nﾃ､yttﾃ､ﾃ､.
Jos tarvitsen muistipaikkaa 4, 8, ja 12 pitﾃ､ﾃ､ tietoni,
tﾃ､mﾃ､ on mitﾃ､ minun muisti voisi nﾃ､yttﾃ､ﾃ､.
>> Ja vain olla erityisen pikkutarkka tﾃ､ﾃ､llﾃ､, kun
puhumme muistia osoitteet me yleensﾃ､
se kﾃ､yttﾃ､ﾃ､ heksadesimaali merkintﾃｶjﾃ､.
Joten miksi emme muuntaa kaikki nﾃ､mﾃ､ alkaen desimaalin on heksadesimaalilukuja
vain koska se on yleensﾃ､ kuinka puhumme muistiin.
Joten sen sijaan, ettﾃ､ 0 kautta 19, mitﾃ､ meillﾃ､ on nolla
X nollasta nolla x1 kolme.
Ne ovat 20 tavua muistia ettﾃ､ me ovat tai me tarkastelemme tﾃ､ssﾃ､ kuvassa
Juuri tﾃ､ﾃ､llﾃ､.
>> Joten kaikki tﾃ､mﾃ､ on sanottu, katsotaanpa askel poispﾃ､in muisti toisen
ja takaisin viitteitﾃ､.
Tﾃ､ssﾃ､ on tﾃ､rkein asia muistaa
kuten me alkaa tyﾃｶskennellﾃ､ viitteitﾃ､.
Osoitin ei ole mitﾃ､ﾃ､n enemmﾃ､n kuin osoite.
Minﾃ､ sanon sen uudelleen, koska se on niin tﾃ､rkeﾃ､ﾃ､,
osoitin ei ole mitﾃ､ﾃ､n enemmﾃ､n kuin osoite.
Osoittimet ovat osoitteet paikkoihin muistiin jossa muuttujat elﾃ､ﾃ､.
Tietﾃ､en, ettﾃ､ se tulee toivottavasti hieman helpompi tyﾃｶskennellﾃ､ heidﾃ､n kanssaan.
Toinen asia, josta pidﾃ､n tehdﾃ､, on olla erﾃ､ﾃ､nlainen
kaavioita visuaalisesti edustavat mitﾃ､ tapahtuu eri riviﾃ､ koodia.
Ja teemme tﾃ､mﾃ､n pari kertoja osoittimia,
ja kun puhumme dynaaminen muistin jakamista samoin.
Koska mielestﾃ､ni nﾃ､mﾃ､ kaaviot voi olla erityisen hyﾃｶdyllistﾃ､.
>> Joten jos sanon esimerkiksi int k minun koodi, mitﾃ､ tapahtuu?
No mitﾃ､ pohjimmiltaan tapahtuu on Saan muisti varattu minulle,
mutta en edes pidﾃ､ ajattele sitﾃ､ niin, minﾃ､
haluan ajatella sitﾃ､ kuin laatikko.
Minulla on laatikko ja se on vﾃ､rillinen vihreﾃ､ koska olen
voi laittaa kokonaislukuja vihreﾃ､t laatikot.
Jos se oli merkki I voi olla sininen laatikko.
Mutta olen aina sanoa, jos Luon laatikko, johon mahtuu kokonaislukuja
ettﾃ､ laatikko on vﾃ､rillinen vihreﾃ､.
Ja otan pysyvﾃ､ merkki ja minﾃ､ kirjoitan k puolella se.
Joten minulla on laatikko nimeltﾃ､ K, johon voin laittaa kokonaislukuja.
Joten kun sanon int k, joka on mitﾃ､ tapahtuu pﾃ､ﾃ､hﾃ､ni.
Jos sanon k on viisi, mitﾃ､ teen?
No, Laitan viisi ruutuun, oikea.
Tﾃ､mﾃ､ on melko yksinkertainen, jos Sanon int k, luo laatikko kutsutaan k.
Jos sanon k on 5, laittaa viisi syﾃｶttﾃｶﾃ､.
Toivottavasti se ei ole liian paljon harppaus.
Tﾃ､ssﾃ､ kun asiat menevﾃ､t vﾃ､hﾃ､n mielenkiintoinen kuitenkin.
Jos sanon int * PK, no vaikka en tiedﾃ､, mitﾃ､ tﾃ､mﾃ､ merkitsee vﾃ､istﾃ､mﾃ､ttﾃ､,
Se on selvﾃ､sti jotain tekemistﾃ､ kokonaisluku.
Joten aion vﾃ､ri pienennﾃ､ vihreﾃ､-ish,
Tiedﾃ､n, ettﾃ､ se on jotain tehdﾃ､ kokonaisluku,
mutta se ei ole kokonaisluku itse, koska se on int tﾃ､hden.
Siinﾃ､ on jotain hieman Eri siitﾃ､.
Joten kokonaisluku on mukana, mutta muuten se on
ei liian erilainen mitﾃ､ puhuimme.
Se on laatikko, sen sai etiketti, se on pﾃ､ﾃ､llﾃ､ﾃ､n etiketti PK,
ja se on pystyttﾃ､vﾃ､ pitﾃ､mﾃ､ﾃ､n int tﾃ､hdet, mitﾃ､ ne ovat.
Heillﾃ､ on jotain tekemistﾃ､ kanssa kokonaislukuja, selvﾃ､sti.
Tﾃ､ssﾃ､ on viimeinen kuitenkin.
Jos sanon PK = & K, huh, mitﾃ､ juuri tapahtui, eikﾃｶ?
Joten tﾃ､mﾃ､ satunnaisluku, sattumanvaraiselta numero, saa heittﾃ､ﾃ､ laatikkoon siellﾃ､.
Kaikki tﾃ､mﾃ､ on, on pk saa osoite k.
Joten olen kiinni missﾃ､ k asuu muistissa, sen osoitteen, osoite sen tavua.
Kaikki Mulla on sanon ettﾃ､ arvo on mitﾃ､ aion
laittaa sisﾃ､lle minun laatikko kutsutaan PK.
Ja koska nﾃ､mﾃ､ asiat ovat osoittimia, ja koska etsivﾃ､t
klo merkkijono kuin nolla x kahdeksan nolla C seitsemﾃ､n neljﾃ､ kahdeksan
kaksi nolla on luultavasti ei ole kovin mielekﾃ､stﾃ､.
Kun me yleensﾃ､ visualisoida osoittimia, me todella tehdﾃ､ niin osoittimia.
Pk antaa meille tiedot Meidﾃ､n tﾃ､ytyy lﾃｶytﾃ､ﾃ､ k muistiin.
Joten periaatteessa PK on nuoli sen.
Ja jos me kﾃ､velemﾃ､ﾃ､n pituus Kyseisen nuoli, kuvitella
se on jotain, voit kﾃ､vellﾃ､, jos me kﾃ､vellﾃ､ pitkin nuolen,
aivan kﾃ､rjen ettﾃ､ nuoli, me lﾃｶytﾃ､vﾃ､t sijainti muistiin
jossa k asuu.
Ja se on todella tﾃ､rkeﾃ､ﾃ､ sillﾃ､ kun tiedﾃ､mme missﾃ､ k asuu,
voimme alkaa tyﾃｶskennellﾃ､ tiedot sisﾃ､llﾃ､ ettﾃ､ muistipaikka.
Vaikka saamme pikkuinen bitti ennen itseﾃ､mme nyt.
>> Joten mikﾃ､ on osoitin?
Osoitin on tietoerﾃ､ jonka arvo on muisti osoite.
Se oli, ettﾃ､ nolla x kahdeksan nolla jutut tekeillﾃ､, ettﾃ､ oli muisti osoite.
Se oli paikalla muistissa.
Ja tyypin osoitin kuvaa sellaista
Tietojen lﾃｶydﾃ､t ettﾃ､ muisti osoite.
Joten siellﾃ､ int tﾃ､hti osa oikealla.
Jos seuraan ettﾃ､ nuoli, se on menossa saavat minut sijainti.
Ja ettﾃ､ sijainti, mitﾃ､ minﾃ､ lﾃｶytﾃ､vﾃ､t siellﾃ､ minun esimerkki,
on vihreitﾃ､ laatikko.
Se on kokonaisluku, se mitﾃ､ minﾃ､ lﾃｶytﾃ､vﾃ､t jos menen kyseiseen osoitteeseen.
Tietotyyppi osoitin kertoo, mitﾃ､
lﾃｶydﾃ､t tuohon muisti osoite.
Joten tﾃ､ssﾃ､ on todella cool juttu kuitenkin.
Osoittimet avulla voimme kulkea muuttujia vﾃ､lillﾃ､ toimintoja.
Ja todella siirtﾃ､ﾃ､ muuttujia eikﾃ､ siirtﾃ､ﾃ､ niistﾃ､ kopiot.
Koska jos me tiedﾃ､mme tarkalleen missﾃ､ muistissa lﾃｶytﾃ､ﾃ､ muuttujan,
meidﾃ､n ei tarvitse tehdﾃ､ kopion se, voimme vain mennﾃ､ kyseiseen paikkaan
ja tyﾃｶskennellﾃ､ ettﾃ､ vaihteleva.
Joten pohjimmiltaan viitteitﾃ､ jﾃ､rjestﾃ､ Make tietokoneympﾃ､ristﾃｶssﾃ､
paljon enemmﾃ､n kuin todellisessa maailmassa, oikea.
>> Joten tﾃ､ssﾃ､ on analogisesti.
Oletetaan, ettﾃ､ minulla on muistikirja, oikealle, ja se on tﾃ､ynnﾃ､ muistiinpanoja.
Ja haluaisin voit pﾃ､ivittﾃ､ﾃ､ sen.
Olet toiminto pﾃ､ivitykset toteaa, oikea.
Tavalla olemme olleet tyﾃｶskentelee toistaiseksi, mitﾃ､
tapahtuu on otatte minun muistikirjan, siirryt kopion tallentaa,
voit tehdﾃ､ Xerox kopio jokaisen sivun muistikirjan.
Sinun jﾃ､ttﾃ､ﾃ､ minun kannettavan takaisin pﾃｶydﾃ､lleni kun olet valmis,
voit mennﾃ､ ja yliviivaa asioita minun muistikirja, jotka ovat vanhentuneita tai vﾃ､ﾃ､rin,
ja sitten voit siirtﾃ､ﾃ､ takaisin minua pino Xerox sivuja
ettﾃ､ on kopio minun muistikirjan muutokset ettﾃ､ olet tehnyt sen.
Ja siinﾃ､ vaiheessa, se on jopa minua kutsuvan toiminto, kuten soittajan,
pﾃ､ﾃ､ttﾃ､ﾃ､ ottaa muistiinpanoja ja integroida ne takaisin kannettavassa.
Joten siellﾃ､ on paljon portaita mukana tﾃ､ssﾃ､, juuri.
Kuten eikﾃｶ olisi parempi jos minﾃ､ vain sanoa, hei, voitko
pﾃ､ivittﾃ､ﾃ､ muistikirja minulle, kﾃ､den minun notebook,
ja otat asioita ja kirjaimellisesti ylittﾃ､ﾃ､ ne pois
ja pﾃ､ivitﾃ､n muistiinpanoja kannettavassa.
Ja sitten antaa minulle kannettavan takaisin.
Sellainen mitﾃ､ viitteitﾃ､ jotta voisimme tehdﾃ､,
he tekevﾃ､t tﾃ､ssﾃ､ ympﾃ､ristﾃｶssﾃ､ paljon enemmﾃ､n kuin miten toimimme todellisuudessa.
>> Hyvﾃ､ niin sitﾃ､hﾃ､n osoitin, Puhutaanpa
miten viitteitﾃ､ toimivat C, ja miten voimme alkaa tyﾃｶskennellﾃ､ heidﾃ､n kanssaan.
Joten on hyvin yksinkertainen osoitin C kutsutaan nollaosoittimen.
Null osoitin osoittaa mitﾃ､ﾃ､n.
Tﾃ､mﾃ､ todennﾃ､kﾃｶisesti nﾃ､yttﾃ､ﾃ､ se on oikeastaan 窶銀黍le kovin hyﾃｶdyllinen asia,
mutta kuten nﾃ､emme vﾃ､hﾃ､n myﾃｶhemmin, siihen
ettﾃ､ tﾃ､mﾃ､ nollaosoittimen olemassa oikeastaan 窶銀逆odella voi tulla kﾃ､tevﾃ､.
Ja kun luot osoitin, ja et mﾃ､ﾃ､ritﾃ､ sen arvo immediately-
esimerkki, jossa sen arvo heti
on pari liukuu takaisin jossa totesin, pk vastaa & K,
PK saa K: n osoitteen, kuten nﾃ､emme, mitﾃ､ se tarkoittaa,
nﾃ､emme miten koodia ettﾃ､ shortly- jos emme aseta sen arvoksi jotain
mielekﾃ､s heti, sinun pitﾃ､isi aina
aseta osoitin osoittamaan null.
Sinun tulisi asettaa sen osoittamaan mitﾃ､ﾃ､n.
>> Se on hyvin erilainen kuin juuri lﾃ､hdﾃｶssﾃ､ arvokas, koska
ja sitten julistamisesta osoitin ja vain olettaen
se null koska se on harvoin totta.
Joten sinun tulisi aina asettaa arvon osoittimen
null jos et aseta sen arvo jotain mielekﾃ､stﾃ､ vﾃ､littﾃｶmﾃ､sti.
Voit tarkistaa, onko osoittimen arvo on null kﾃ､yttﾃ､en yhtﾃ､suuruusoperaattorin
(==), Kuten sinﾃ､kin vertailla tahansa kokonaisluku arvot tai merkki arvoja (==)
yhtﾃ､ hyvin.
Se on erityinen erﾃ､ﾃ､nlainen jatkuva arvo, jota voit kﾃ､yttﾃ､ﾃ､ testata.
Joten se oli hyvin yksinkertainen osoitin, nollaosoittimen.
Toinen tapa luoda osoitin on purkaa
osoitteen muuttujan olet jo luonut,
ja voit tehdﾃ､ tﾃ､mﾃ､n kﾃ､yttﾃ､en & operaattori osoite louhinta.
Joka olemme jo nﾃ､hneet aiemmin Ensimmﾃ､isessﾃ､ kaaviossa esimerkiksi nﾃ､ytin.
Joten jos x on muuttuja, joka olemme jo luonut tyypin kokonaisluku,
sitten ja x on osoitin kokonaisluku.
& X is- muistaa, ja aikoo poimia osoite asia oikealla.
Ja koska osoitin on vain osoite, kuin ja x on osoitin kokonaisluku
joiden arvo on, jos muistissa X elﾃ､mﾃ､ssﾃ､ﾃ､n.
Se on X: n osoite.
Joten ja x on osoite x.
Otetaanpa tﾃ､mﾃ､ yksi askel edelleen ja muodostaa jotain
Viittasin vuonna ennen videon.
Jos sov on joukko kaksinkertaistuu, sitten & Sov hakasulje i on osoitin
kaksinkertainen.
OK.
sov hakasulje i, jos sov on joukko kaksinkertaistuu,
sitten sov hakasulje i on i: nnen elementin, joka jono,
ja & sov hakasulkeen i on missﾃ､ muisti i: nnen elementin ARR olemassa.
>> Niin mitﾃ､ vaikutuksia tﾃ､ﾃ､llﾃ､?
Taulukot nimi, implisiittisesti Tﾃ､mﾃ､n koko juttu,
on, ettﾃ､ matriisi nimi on todella itse osoitin.
Olet tyﾃｶstﾃ､nyt osoittimilla koko ajan
aina, kun olet kﾃ､yttﾃ､nyt erilaisia.
Muista esimerkistﾃ､ on kiikaritﾃ､htﾃ､imellﾃ､,
loppupuolella videota esittﾃ､mﾃ､ﾃ､n Esimerkiksi jos meillﾃ､ on funktio
kutsutaan joukko int ja toiminto nimeltﾃ､ﾃ､n joukko array.
Ja haaste mﾃ､ﾃ､rittﾃ､ﾃ､ onko, tai mitﾃ､
arvot, joita me tulostetaan loppuun toiminnon
lopussa pﾃ､ﾃ､ohjelma.
>> Jos muistatte tﾃ､stﾃ､ esimerkki tai jos olet katsonut videon,
te tiedﾃ､tte, ettﾃ､ kun teille-puhelun sarja int tehokkaasti ei tee mitﾃ､ﾃ､n.
Mutta asettamiseen array tekee.
Ja minﾃ､ tavallaan tasapaksuja miksi nﾃ､in oli tuolloin.
Sanoin vain, hyvin se on array, se on erityinen, tiedﾃ､tte, on olemassa syy.
Syynﾃ､ on se, ettﾃ､ matriisi: n nimi on oikeastaan 窶銀久ain osoitin,
ja on tﾃ､mﾃ､ erityinen hakasulje syntaksin
tehdﾃ､ asioita paljon mukavampi tyﾃｶskennellﾃ､.
Ja he tekevﾃ､t ajatus osoitin paljon vﾃ､hemmﾃ､n uhkaava,
ja siksi ne ovat tavallaan on esitetty nﾃ､in.
Mutta oikeasti paneelit ovat vain viitteitﾃ､.
Ja siksi kun me teki muutoksen array,
kun ohitimme array parametri toiminnon tai argumenttina
toiminnon, sisﾃ､ltﾃｶ taulukon todella muuttunut molemmissa callee
ja soittaja.
Joka sillﾃ､ kaikki muu muuttuja nﾃ､imme ei tapahtunut.
Niin, ettﾃ､ on vain jotain pitﾃ､ﾃ､ mielessﾃ､, kun olet tyﾃｶskennellyt osoittimia,
on, ettﾃ､ nimi array todella osoitin
on ensimmﾃ､inen osa, joka array.
>> OK joten nyt meillﾃ､ on kaikki nﾃ､mﾃ､ tosiasiat, nyt pitﾃ､ﾃ､ kﾃ､ynnissﾃ､, oikea.
Miksi me vﾃ､litﾃ､mme jossa jotain asuu.
No kuten sanoin, se on melko hyﾃｶdyllistﾃ､ tietﾃ､ﾃ､, missﾃ､ jotain asuu
niin voit mennﾃ､ sinne ja muuttaa sitﾃ､.
Tyﾃｶskennellﾃ､ sen kanssa ja todella on asia, ettﾃ､ te
haluavat tehdﾃ､ muuttujan tulevat voimaan, eikﾃ､ pﾃ､ivﾃ､stﾃ､ joitakin kopio.
Tﾃ､tﾃ､ kutsutaan dereferencing.
Menemme viite ja muutamme arvoa siellﾃ､.
Joten jos meillﾃ､ on osoitin ja sitﾃ､ kutsutaan PC, ja se osoittaa merkin,
niin voimme sanoa * PC ja * PC on nimi mitﾃ､ lﾃｶydﾃ､mme jos menemme
osoitteeseen PC.
Mitﾃ､ me lﾃｶydﾃ､mme on luonteeltaan ja * PC on, miten puhumme tietojen ettﾃ､
Sijainti.
Jotta voisimme sanoa jotain * PC = D tai jotain,
ja se tarkoittaa, ettﾃ､ mitﾃ､ tahansa oli muistiosoite PC,
mitﾃ､ hahmo oli aiemmin siellﾃ､ on nyt D, jos sanomme * pc = D.
>> Joten tﾃ､ssﾃ､ sitﾃ､ taas ollaan kanssa outoja C juttuja, oikea.
Joten olemme nﾃ､hneet * aiemmin olevan jotenkin osa tiedoista tyyppi,
ja nyt se kﾃ､ytetﾃ､ﾃ､n hieman eri asiayhteydessﾃ､
kﾃ､yttﾃ､ﾃ､ tietoja paikassa.
Tiedﾃ､n, ettﾃ､ se vﾃ､hﾃ､n sekava ja se on itse asiassa osa tﾃ､tﾃ､ koko
kuten, miksi viitteet on tﾃ､mﾃ､ mytologia ympﾃ､rillﾃ､ﾃ､n olevan niin monimutkainen,
on erﾃ､ﾃ､nlainen syntaksin ongelma, rehellisesti.
Mutta * on kﾃ､yttﾃ､ﾃ､ molemmissa yhteyksissﾃ､, molemmat osana tyypin nimi,
ja nﾃ､emme hieman myﾃｶhemmin muutakin.
Ja nyt on dereference operaattori.
Niin se menee viittaus, se sisﾃ､ﾃ､nkﾃ､yntien tiedot
paikassa osoittimen, ja voit manipuloida sitﾃ､ mieleisekseen.
>> Nyt tﾃ､mﾃ､ on hyvin samankaltainen vierailevat naapuri, oikea.
Jos tiedﾃ､t mitﾃ､ naapuri asuu, olet
ei hengailua lﾃ､himmﾃ､istﾃ､si.
Tiedﾃ､t satut tiedﾃ､, missﾃ､ he asuvat,
mutta se ei tarkoita, ettﾃ､ nojalla ottaa tﾃ､tﾃ､ tietoa
olet vuorovaikutuksessa niiden kanssa.
Jos haluat olla vuorovaikutuksessa niiden kanssa, sinun tﾃ､ytyy mennﾃ､ heidﾃ､n talonsa,
sinun tﾃ､ytyy mennﾃ､ missﾃ､ he asuvat.
Ja kun teette sen, niin voit olla vuorovaikutuksessa
niitﾃ､ aivan kuin haluat.
Ja samalla tavoin muuttujia, sinun tﾃ､ytyy mennﾃ､ heidﾃ､n osoitteensa
jos haluat vuorovaikutuksessa niitﾃ､, et voi vain tiedﾃ､ osoitetta.
Ja miten voit mennﾃ､ osoitteeseen on kﾃ､yttﾃ､ﾃ､ *, dereference operaattori.
Mitﾃ､ mieltﾃ､ olet tapahtuu jos yritﾃ､mme ja dereference
osoitin, jonka arvo on nolla?
Muista, ettﾃ､ null osoitin osoittaa mitﾃ､ﾃ､n.
Joten jos yritﾃ､t ja dereference mitﾃ､ﾃ､n tai mennﾃ､ osoitteeseen mitﾃ､ﾃ､n,
mitﾃ､ luulet tapahtuu?
No jos arvasit segmentointi vika, olisit oikeassa.
Jos yritﾃ､t dereference nollaosoittimen,
sinulla segmentointi vika. Mutta odota,
ei minﾃ､ sanon teille, ettﾃ､ jos et tule
asettaa arvoa Osoitin jotain merkityksellistﾃ､,
sinun pitﾃ､isi asettaa nollaksi?
Tein ja todella segmentointi vika on erﾃ､ﾃ､nlainen hyvﾃ､n kﾃ､ytﾃｶksen.
>> Oletko koskaan julistettu muuttuva ja ei mﾃ､ﾃ､ritetty sen arvo vﾃ､littﾃｶmﾃ､sti?
Joten sanoit int x; et todella antaa sen mitﾃ､ﾃ､n
ja sitten myﾃｶhemmin koodissa, tulostamaan x arvo,
ottaa vielﾃ､ liitetﾃ､ﾃ､n se mitﾃ､ﾃ､n.
Usein saat nolla, mutta joskus
saattaa saada joitakin satunnaisia 窶銀杵umero, ja sinulla ei ole aavistustakaan mistﾃ､ se tuli.
Samoin voi asiat tapahtua viitteitﾃ､.
Kun julistaa osoitin int * PK esimerkiksi,
ja et mﾃ､ﾃ､ritﾃ､ sen arvo, saat neljﾃ､ tavua muistia.
Riippumatta neljﾃ､ tavua muisti jﾃ､rjestelmﾃ､ voi
toteavat, ettﾃ､ on joitakin mielekkﾃ､itﾃ､ arvoa.
Ja on saattanut olla jotain jo olemassa, ettﾃ､
ei enﾃ､ﾃ､ tarvita toisen toiminto, joten sinun tﾃ､ytyy vain
mitﾃ､ tietoja oli siellﾃ､.
>> Mitﾃ､ jos olet yrittﾃ､nyt tehdﾃ､ dereference jotkut osoite, ettﾃ､ olet ﾃ､lﾃ､-oli
jo tavua ja tietoa siellﾃ､, se on nyt teidﾃ､n osoitin.
Jos yritﾃ､t dereference ettﾃ､ osoitin, saatat olla Messing kanssa jonkin verran muistia
ettﾃ､ ette aio sotkea kaiken.
Ja itse asiassa voisi tehdﾃ､ jotain todella tuhoisia,
kuten murtaa toinen ohjelma, tai rikkoa toinen toiminto,
tai tehdﾃ､ jotain ilkeﾃ､ ettﾃ､ et aio tehdﾃ､ ollenkaan.
Ja niin siksi se on todella hyvﾃ､ idea
asettaa viitteitﾃ､ null jos ﾃ､lﾃ､ aseta ne jotain merkityksellistﾃ､.
Se on luultavasti parempi Pﾃ､ivﾃ､n pﾃ､ﾃ､tteeksi oman ohjelman
kaatumisen sitten se tehdﾃ､ jotain, joka mokaa
toisesta ohjelmasta tai toiminnon.
Tﾃ､mﾃ､ kﾃ､yttﾃ､ytyminen on todennﾃ､kﾃｶisesti vielﾃ､ vﾃ､hemmﾃ､n ihanteellinen kuin vain kaatuu.
Ja niin siksi se on todella hyvﾃ､ tapa
pﾃ､ﾃ､stﾃ､ asettaa viitteitﾃ､ null jos et aseta niitﾃ､
mielekkﾃ､ﾃ､seen arvo heti, arvo ettﾃ､ tiedﾃ､t
ja ettﾃ､ voit turvallisesti dereference.
>> Joten tulla takaisin nyt ja katsomaan klo yleinen syntaksi tilanteen.
Jos sanon int * p ;, mitﾃ､ minﾃ､ olen juuri tehnyt?
Mitﾃ､ olen tehnyt on tﾃ､mﾃ､.
Tiedﾃ､n arvo p on osoite koska kaikki osoittimet ovat vain
osoitteet.
Voin dereference p kﾃ､yttﾃ､en * operaattori.
Tﾃ､ssﾃ､ yhteydessﾃ､ tﾃ､ssﾃ､, aivan Top muistaa * on osa tyypin.
Int * on tietotyyppi.
Mutta voin dereference p kﾃ､yttﾃ､en * operaattori,
ja jos teen niin, jos menen kyseiseen osoitteeseen, mitﾃ､ lﾃｶydﾃ､n tﾃ､hﾃ､n osoitteeseen?
Lﾃｶydﾃ､n kokonaisluku.
Joten int * p on pohjimmiltaan sanomalla, p on osoite.
Voin dereference p ja jos En, aion lﾃｶytﾃ､ﾃ､ kokonaisluku
klo ettﾃ､ muistipaikka.
>> OK joten sanoin oli toinen Harmillista tﾃ､hdet
ja tﾃ､ﾃ､llﾃ､ on, jos se Harmillista tﾃ､htien kanssa on.
Oletko koskaan yrittﾃ､nyt julistaa useita muuttujia samantyyppisiﾃ､
samalla rivillﾃ､ koodia?
Niin toisen, teeskennellﾃ､, ettﾃ､ linja, koodi Minulla on oikeastaan 窶銀虐iellﾃ､ vihreﾃ､
ei ole olemassa ja se vain kertoo int x, y, z ;.
Mitﾃ､ se tehdﾃ､, on itse luoda kolme kokonaisluku muuttujat sinulle,
yksi nimeltﾃ､ﾃ､n X, yksi nimeltﾃ､ﾃ､n y, ja yksi nimeltﾃ､ﾃ､n z.
Se on tapa tehdﾃ､ se ilman ottaa jakaa pﾃ､ﾃ､lle kolme riviﾃ､.
>> Tﾃ､ssﾃ､ missﾃ､ tﾃ､hteﾃ､ saada ﾃ､rsyttﾃ､vﾃ､ﾃ､ uudelleen vaikka,
koska * on itse asiassa osa Sekﾃ､ tyypin nimi ja osa
muuttujan nimi.
Joten jos sanon int * px, py, pz, mitﾃ､ itse saada on osoitin kokonaisluku
nimeltﾃ､ﾃ､n px ja kaksi kokonaislukua, py ja pz.
Ja se on luultavasti ole mitﾃ､ Haluamme, ettﾃ､ ei ole hyvﾃ､.
>> Joten jos haluan luoda useita viitteitﾃ､ samalla rivillﾃ､, samaa tyyppiﾃ､,
ja tﾃ､hdet, mitﾃ､ todella tarvitsevat tehdﾃ､, on sanoa int * pa, * pb, * PC.
Nyt ottaa sanoi juuri, ettﾃ､ ja nyt kerron tﾃ､mﾃ､n,
luultavasti koskaan tee tﾃ､tﾃ､.
Ja se on luultavasti hyvﾃ､ asia rehellisesti, sillﾃ､ saatat vahingossa
jﾃ､ttﾃ､ﾃ､ tﾃ､hti, jotain.
Se on luultavasti parasta ehkﾃ､ julistaa vinkin eri radoille,
mutta se on vain toinen niitﾃ､ harmittaa syntaksin
asioita tﾃ､hdet, jotka tekevﾃ､t viitteitﾃ､ niin vaikea tyﾃｶskennellﾃ､.
Koska se on juuri tﾃ､mﾃ､ syntaktinen sotku sinun tﾃ､ytyy tyﾃｶskennellﾃ､ kautta.
Kﾃ､ytﾃ､ntﾃｶﾃ､ se todella tulee toinen luonto.
Olen edelleen tehdﾃ､ virheitﾃ､ se silti ohjelmoinnin jﾃ､lkeen 10 vuotta,
joten ﾃ､lﾃ､ hﾃ､tﾃ､ﾃ､nny jos jotain tapahtuu teille, se on melko yleinen rehellisesti.
Se on todella sellainen virhe on syntaksin.
>> OK joten olen sellainen luvattujen ettﾃ､ olisimme uudelleen
kﾃ､site kuinka suuri on merkkijono.
No jos olen kertonut sinulle, ettﾃ､ string, olemme todella sellainen
valehdellut sinulle koko ajan.
Ei ole tietoa tyyppi nimeltﾃ､ﾃ､n merkkijono, ja itse olen
mainitsi tﾃ､mﾃ､n yksi meidﾃ､n aikaisintaan videoita tietotyypit,
merkkijonon oli tietotyyppi joka luotiin sinulle CS50.h.
Sinun tﾃ､ytyy #include CS50.h voidakseen kﾃ､yttﾃ､ﾃ､ sitﾃ､.
>> No merkkijono on oikeastaan 窶銀久ain alias jotain
nimeltﾃ､ﾃ､n char *, Osoitin merkki.
No osoittimia, muistaa, ovat vain osoitteet.
Joten mikﾃ､ on koko tavuina merkkijonon?
No se on neljﾃ､ tai kahdeksan.
Ja syy sanon neljﾃ､ tai kahdeksan johtuu siitﾃ､, ettﾃ､ itse asiassa
riippuu jﾃ､rjestelmﾃ､n, jos kﾃ､ytﾃ､t CS50 ide, char * on koko char
* On kahdeksan, se on 64-bittinen jﾃ､rjestelmﾃ､.
Jokainen osoite muistissa on 64 bittiﾃ､ pitkﾃ､.
Jos kﾃ､ytﾃ､t CS50 laitetta tai millﾃ､ tahansa 32-bittinen kone,
ja olet kuullut ettﾃ､ termi 32-bittinen kone, mikﾃ､ on 32-bittinen kone?
No se vain tarkoittaa, ettﾃ､ jokainen osoite muistissa on 32 bittiﾃ､ pitkﾃ､.
Ja niin 32 bittiﾃ､ on neljﾃ､ tavua.
Joten char * on neljﾃ､ tai kahdeksan tavua riippuen jﾃ､rjestelmﾃ､ﾃ､n.
Ja todellakin kaikki tietotyypit, ja osoitin tietoja
tyyppi, koska kaikki osoittimet ovat vain osoitteet, neljﾃ､ tai kahdeksan tavua.
Joten uudelleen tﾃ､mﾃ､n kaavio ja nyt tehdﾃ､
tﾃ､mﾃ､ video vﾃ､hﾃ､n liikuntaa tﾃ､ﾃ､llﾃ､.
Joten tﾃ､ssﾃ､ on kaavio lﾃ､hdimme pois aivan alussa videon.
Mitﾃ､ tapahtuu nyt, jos sanon * pk = 35?
Mitﾃ､ se tarkoittaa, kun sanon, * pk = 35?
Ota toinen.
* PK.
Vuonna yhteydessﾃ､ tﾃ､ﾃ､llﾃ､, * on dereference operaattori.
Joten kun dereference operaattori on kﾃ､ytetty,
menemme osoite viittasivat PK, ja me muutumme mitﾃ､ lﾃｶydﾃ､mme.
Joten * PK = 35 tehokkaasti tekee tﾃ､mﾃ､n kuvan.
Joten se on periaatteessa syntaktisesti identtinen ja ottaa sanoi k = 35.
>> Vielﾃ､ yksi.
Jos sanon int m, luon uusi muuttuja nimeltﾃ､ m.
Uusi laatikko, se on vihreﾃ､n laatikon koska se tulee pitﾃ､ﾃ､ kokonaisluku,
ja se on merkitty m.
Jos sanon m = 4, laitoin kokonaisluku tuohon laatikkoon.
Jos vaikkapa PK = & m, miten Tﾃ､ssﾃ､ kaaviossa muutos?
Pk = & m, Muistatteko mitﾃ､ & Operaattori tekee tai kutsutaan?
Muista, ettﾃ､ & jotkut muuttujan nimi on osoite muuttujan nimi.
Joten mitﾃ､ sanomme on PK saa osoitteen m.
Ja niin tehokkaasti, mitﾃ､ tapahtuu kaavio on, ettﾃ､ PK ei enﾃ､ﾃ､ viittaa
k, mutta pistettﾃ､ m.
>> Jﾃ､lleen osoittimet ovat hyvin hankala tyﾃｶskennellﾃ､
ja he ottavat paljon kﾃ､ytﾃ､ntﾃｶ, mutta koska
kykynsﾃ､ avulla voit vﾃ､littﾃ､ﾃ､ dataa toimintojen
ja todella on ne Muutokset tulevat voimaan,
saada pﾃ､ﾃ､n ympﾃ､ri on todella tﾃ､rkeﾃ､ﾃ､.
Se todennﾃ､kﾃｶisesti on kaikkein monimutkainen Uutta me keskustelemme CS50,
mutta arvo, jota saada kﾃ､yttﾃ､mﾃ､stﾃ､ osoittimia
paljon suurempi komplikaatioiden jotka tulevat opetteleminen.
Joten toivotan teille parasta onni oppia viitteitﾃ､.
Olen Doug Lloyd, tﾃ､mﾃ､ on CS50.