>> [Musika jotzen]
>> DOUG LLOYD: erakusleak, hemen gaude.
Hau, seguru aski joan izan zailena gaia
CS50 buruz hitz egin dugu.
Eta zuk irakurri bada erakusleak buruz ezer
pixka bat izan baino lehen, agian beldurra bideo honetan sartu.
Egia da erakusleak ez gaitasuna baimendu behar dituzu
to agian hondatzeko nahiko gaizki zaudenean
aldagaiak, eta datuekin lan, eta eragiten zure programa huts.
Baina benetan erabilgarria benetan ari dira eta gurekin modu benetan handia ematen dute
Datu atzera pasatzeko eta dagozkio funtzioen artean,
bestela ezin da egin garela.
>> Eta orain zer dugu benetan hemen egin nahi trena da
erakuslea diziplina ona izan behar duzu, eta, beraz, Hori erakusleak eraginkorrean erabili ahal izango dituzu
Zure programak askoz hobeto egiteko.
Esan dudan bezala erakusleak ezberdinak ematen dizkigute funtzioen artean datuak pasatzeko modu.
Orain gogoratzen duzu batetik bada lehenago bideo bat, betiere
buruz hitz egin genuen esparrua aldagai, aipatu dut
duten artean igaroko ditugun datu guztiak C funtzioak balioa gainditu.
Eta ez dut erabiltzen dute epe, zer ez, esan nahi dut
zela datuen kopiak pasatzen ari gara.
Noiz aldagai bat gainditu dugu funtzio bat, ez gara benetan aldakorra pasatuz
funtzioa, ezta?
Kopia bat pasatzen ari gara funtzioaren lan datu horiek.
Funtzio hauek nahi duena egiten eta balio batzuk kalkulatzen du,
eta, agian, balio hori erabiltzen dugu denean, ematen du atzera.
>> Ez zen salbuespen bat balio pasatuz arau hau,
eta egingo da itzuli dugu zer dela da geroago pixka bat bideo honetan.
Erakusleak erabiltzen dugun ordez aldagai erabiliz,
edo aldagai erabiliz ordez beraiek edo aldagai kopiak,
orain dugu aldagai inguruan pasa daiteke beste modu batean funtzioen artean.
Horrek esan nahi du egiten badugu funtzio bat aldatuz gero,
Aldaketa hori benetan hartuko beste funtzio bat ere eragingo.
Berriz ere, zerbait dela ezin izan dugu aldez aurretik,
eta inoiz ez duzu aldatu egin baduzu funtzio bat bi aldagai balioa,
Arazo hau nabaritu duzun herrestan moduko, ezta?
>> X eta Y, eta guk trukatu nahi badugu horiek gainditu swap izeneko funtzio bat,
funtzioaren barruan trukatu du aldagai truke balioak egin.
One bi bihurtzen da, bi bihurtzen bat, baina ez dugu benetan
ezer aldatu original batean funtzioa, deitzailearen ere.
Ezin duelako ditugu, ez gara bakarrik horien kopiak batera lanean.
Erakusleak, nahiz eta, ahal dugun benetan pasatzen X eta Y funtzio bat da.
Funtzio hori egin ahal izango Haiekin zerbait.
Eta aldagai balio horiek benetan alda daiteke.
Beraz, hori ere aldaketa bat nahiko da datuekin lan egiteko dugun gaitasuna.
>> Aurretik murgiltze sartu dugu erakusleak, uste dut merezi
minutu gutxi batzuk hartzen go oinarriak itzuli hona.
Eta nola begirada bat izan ordenagailuaren memoria lanak
Bi irakasgai horiek joan delako Nahiko elkarrekin lotuta benetan.
Seguruenik ezagutzen duzun bezala, zure sistemari buruzko
disko gogor bat behar duzu, edo agian sendo bat egoera drive,
fitxategiak gordetzeko kokapena nolabaiteko.
Izan ohi da nonbait ere 250 gigabyteko auzoan
Agian Terabyte pare bat orain.
Eta non da zure guztia fitxategiak, azken finean, bizi,
nahiz eta ordenagailua ixtean off, atzera aktiba dezakezu
eta aurkituko dituzu zure fitxategiak daude berriro zure sistema berrabiarazi behar dituzu.
Baina disko-unitateak, disko bat bezala, HDD bat, edo solidoa egoera drive, SSD bat,
biltegiratze leku besterik ez dira.
>> Ezin benetan egiten dugu ezer datu hori diskoan dago,
edo solidoa egoera unitatean.
Benetan aldatu datuak edo mugitzeko inguruan,
mugitu behar dugu RAM, ausazko sarbidea memoria.
Orain RAM, asko duzu Ordenagailuaren gutxiago.
Nonbait izan dezakezu 512 megabyte auzoan
ordenagailu zaharrago bat izanez gero, agian, bi, lau, zortzi, 16,
ziurrenik ere apur bat gehiago, RAM gigabyte.
Beraz, hori askoz ere txikiagoa da, baina hori da non datuak lurrunkorren guztia existitzen.
Hori da, non gauzak aldatzeko aukera izango dugu.
Baina gure ordenagailua itzaltzeko dugu, RAM datu guztiak suntsitu.
>> Beraz, horregatik disko gogorra izan behar dugu Da kokapena iraunkorrenak egiteko,
Horrela, exists- litzateke izan benetan txarra bada, aldi bakoitzean dugu
Gure ordenagailua itzali, behin gure sistema fitxategia ezabatzen da.
Beraz RAM barruan lan egiten dugu.
Eta aldi bakoitzean buruz hitz egiten ari gara memoria, nahiko askoz, CS50,
dugu RAM, ez disko gogor ari gara hitz egiten.
>> Beraz, gauzak mugitzen gara memorian, hartzen du espazio kopuru jakin bat.
Datu mota guztiek izan dugu lan batekin
hartu eman ezberdinak RAM lekua zenbatekoak.
Beraz, aldi bakoitzean, zenbaki oso bat sortzen duzunean aldakorra, lau byteko memoria
albo batera ari RAM duzun orain osokoa dela lan.
Osokoa aldarrikatu dezakezu, aldatu da, esleitu
10 balio bat handitzen den banan, beraz, eta abar.
Guztiak gertatuko RAM, eta lau byte lortuko duzu
berarekin lan bakoitzean Sortzen dituzun zenbaki oso.
>> Pertsonaia bakoitzak dituzu sortu byte bat lortzen.
Hori espazio besterik zenbat da pertsonaia bat gorde behar.
Karroza guztietan, benetako bat kopurua, lau byte lortzen
bikoitza ezean doitasun puntu mugikorreko
zenbakia, horri esker, digituak zehatzagoak edo gehiago dute
du dezimal ondoren doitasun galdu gabe,
bertan hartu zortzi memoria byte.
Long Longs, osokoak benetan handia, ere hartu zortzi memoria byte.
Zenbat byteko memoria Zer hartu kateak sortu?
Beno dezagun jarri pin bat galdera horretan oraingoz, baina etorri egingo da itzuli dugu.
>> Beraz, memoria ideia hau bezala itzuli byte tamainako zelula multzo handi bat.
Hori da benetan egiten da, da, besterik zelula-multzo handi bat,
beste edozein array bezala Oraindik ezagutzen eta ikusi,
elementu guztietan izan ezik byte bat zabal.
Eta besterik array bat bezala, elementu guztietan helbide bat dauka.
Array baten elementu guztietan indize bat, eta guk ditu
Indize hori erabili ahal deiturikoak egin Array ausazko sarbidea.
Guk ez dugu izan nahi hasiko array hasieran,
guztietan zehar batetik bestera joateko elementu bakar haietan,
zer bilatzen ari gara aurkitzeko.
Besterik esan dezakegu, behar iritsi nahi dut Elementu 15a edo 100 elementua.
Eta besterik dezakezu zenbaki hori gainditu eta balio bilatzen ari zaren lortuko.
>> Antzera kokapena guztietan memorian helbide bat dauka.
Beraz, zure memoria lukeen honelako itxura.
Hona hemen zati oso txiki bat memoria, hau 20 memoria byte da.
Lehenengo 20 byte delako nire helbideak ez behealdean
0, 1, 2, 3, eta beraz, 19 gehienez modu guztietan.
Eta noiz aldagaiak deklaratzen dut eta denean, haiekin lan egiten hasten naiz,
sisteman dago ezarrita joan Alde batera niretzat espazio batzuk
Memoria honetan lan egiteko Nire aldagai batzuekin.
Hau honela, esan nuen, char c berdinen capital H. Eta zer gertatuko?
Beno sistema da joan albo batera me byte da.
Kasu honetan byte kopurua peskizan lau, helbide lauretan byte,
eta nik gordetzeko joan letra kapital H han niretzat.
Orduan diot int abiadura badu muga berdinen 65, da
lau albo batera joan memoria byte niretzat.
Eta nik horiek tratatzeko joan lau byte unitate bakar gisa
zer garen lanean ari delako batez zenbaki oso bat dago hemen.
Eta nik 65 gordetzeko han doa.
>> Orain Mota jada nago diozu gezur bat pixka bat,
eskubidea, badakigu delako ordenagailuak bitarrean lan.
Ez dute ulertzen nahitaez kapital H a zer da
edo zer 65 a da, ez bakarrik binary, zeroen eta ulertu.
Eta, beraz, benetan zer ari gara ez gordetzeko
Ez da letra H eta 65 zenbakia, baizik eta irudikapen bitarraren
kontratuan, zein itxura bat txiki honen antzeko zerbait.
Eta, batez ere Osoko aldagai maila aztertu,
ez da besterik txu sartu, Ez da, lau bat bezala tratatzeko joan
byte zatia nahitaez, orain benetan joan
lau bat byte zatiak bezala tratatzen, honen antzeko zerbait begiratu dezake.
Eta hori ez da Egia osoki,
izeneko zerbait delako endianness bat, horrek ez gara
orain sartuko, baina Oraindik buruzko bitxia bada,
irakurri ireki dezakezu txikian eta endianness big.
Baina argudio honen mesedetan, Bideo honetan mesedetan,
Demagun besterik ez dela, in Izan ere, nola zenbakia 65 litzateke
egon ordezkatuta memoria sistema guztietan,
ez da erabat egia bada ere.
>> Baina dezagun benetan besterik lortu binary guztiak kentzeko osorik,
eta besterik H bezala pentsatzen eta 65, da asko errazago
pentsatu bezala gizaki gisa duten.
Ondo da, beraz, badirudi ere, agian bat ausazko I've- nire sistema hori gutxi
ez zuen ematen dit byte 5, 6, 7, eta 8 osokoa gordetzeko.
Ez dago arrazoi bat da, gehiegi, eta horrek Ez dugu, oraintxe sartu, baina nahikoa
esatea zer egin ordenagailua hemen egiten da
da seguruenik bere aldetik mugimendu ona.
Ez eman dit hori da memoria nahitaez atzera itzuli.
Nahiz eta orain egiten ari kate beste lortu nahi badut,
abizenak deitzen, eta nahi dut Lloyd jarri hor.
Bat egokitzeko behar noa pertsonaia, horren letra bakoitza da
bat eskatzeko pertsonaia, memoria byte.
Beraz, bada Lloyd jarri izan dut nire array sartu Hau atsegin nahiko ongi joan, eskubidea dut?
Zer falta da?
>> Gogoratu kate bakoitzak egiten dugun lan C backslash zero batekin amaitzen batera,
eta ezin dugu aipatu gabe utzi nahi dela hemen, bai.
Byte bat alde batera utzi behar ditugu oroimenaren orain ditugun eduki
Badakizu, gure katea da amaitu.
Moldaketa hau, beraz, berriro Bide gauzetako
memoria kemen agertzen apur bat ausazko izan,
baina, egia da, nola Sistema gehienetan diseinatuta daude.
Lerro gehienez multiploak on lau, arrazoiak direla eta berriro
ez dugun behar den oraintxe sartu.
Baina hau, beraz, nahikoa da hori esaten Hiru kode lerro hauen ondoren,
hau da like zer memoria begiratu dezake.
Memoria kokapenak behar dut bada 4, 8, 12 eta nire datuak eduki,
hau da like zer nire memoria begiratu dezake.
>> Eta besterik ez da izan bereziki pedantekeriazko hemen, denean
dugu memoria buruz hitz egiten ari helbideak ohi dugu
hacerlo notations hamaseitar erabiliz.
Beraz, zergatik ez horiek guztiak bihurtu dugu idazkera hamaseitarra hamartar bertatik
Hori besterik ez da, oro har, delako nola Memoria nahi dugu.
Beraz, 0 izatearen bitartez 19, zer dugu zero da
x zero zero x1 hiru bidez.
Horiek dira 20 memoria byte garela Izan edo ari irudi honetan ikusten ari garen
hementxe.
>> Beraz, esan zuen hori guztia, dezagun urratsa kanpoan oroimenetik bigarren bat
eta erakusleak itzuli.
Hemen da garrantzitsuena Gauza bat gogoratu
erakusleak Hasteko dugu.
Erakuslea ezer ez da helbide bat baino gehiagotan.
Da berriro esaten dut Garrantzitsua hori da,
erakuslea ezer ez da helbide bat baino gehiagotan.
Erakusleak helbideak kokapenak dira memorian aldagaiak non bizi.
Zorionez bihurtzen dela jakiteak Pixka errazagoa haiekin lan egiteko.
Gustatzen Beste gauza egin da sort dute
ren ikusmen diagramak zer da ordezkari Kode lerro ezberdinetan gertatzen ari da.
Eta hau pare bat egingo dugu, erakusleak aldiz,
Noiz eta dinamikoa buruz hitz egiten dugu memoria esleipena baita.
Uste dut diagrama horiek duten delako bereziki lagungarria izan daiteke.
>> Adibidez esaten dut, hala bada, int k nire kodea, zer gertatzen ari da?
Beno, zer ari den gertatzen ari dena, funtsean, Naiz memoria albo batera niretzat lortzean dut,
baina ez dut ere gustatzen dela pentsatzen duten bezala, I
pentsatu kutxa bat bezalakoa gustatzen.
Kutxa bat daukat, eta hori da koloreko berdea dudalako
Osoko zenbaki jarri ahal kutxak berde batean.
Pertsonaia dut bat izan zen bada Koadro urdin bat izan liteke.
Baina beti esaten dut, sortzen ari naiz, bada Hori integers eutsi ahal kutxa bat
koadro hori koloreko da berdea.
Eta markatzaile iraunkor bat hartzen dut eta haren alde on k idatzi dut.
Beraz k izeneko koadro bat daukat, I bertan sartu integers jarri daiteke.
Beraz, int k esan nuen, hori da nire buruan zer gertatzen den.
K berdin bost esaten badut, zer egiten ari naiz?
Beno, naiz jarriz bost koadroan, eskubidea.
Hau da, nahiko erraza da, bada Esan int k, sortu k izeneko koadro bat.
K berdin 5 esaten badut, jarri bost kutxan.
Zorionez, ez da hori gehiegi jauzi bat askoz.
Hemen da non puntu bat gutxi interesgarri arren.
Int * PK esaten badut, ondo ez badut, are Badakizu zer esan nahi du honek nahitaez,
eta argi eta garbi lortu zerbait zenbaki oso bat egin.
Beraz, nik margotu dut Kutxa hau berde-ish,
Badakit zerbait lortu da zenbaki oso bat egin,
baina ez da zenbaki oso bat, berez, int izar bat delako.
Ez dago zerbait zertxobait Horri buruz ezberdinetan.
Beraz, zenbaki oso baten parte hartzen duten, baina bestela da
ez oso ezberdina zertaz ari garen.
Kutxa bat da, bere got etiketa bat, etiketa PK eramateagatik da,
eta eskuratzeko gai da int izarrak, zernahi dira horiek.
Zerbait egin behar dute Osoko zenbaki batera, argi eta garbi.
Hemen azken lerroan arren.
Esan badut PK = & k, Tira, besterik zer gertatu zen, ezta?
Beraz ausazko zenbaki hau, itxuraz ausazko zenbakia, lortzen kutxan bota han.
Guztiak, hau da, PK da k helbide lortzen.
Beraz, ez dut non k memoria bizi da itsastea dut, bere helbidea, bere byte helbidea.
Guztiak egiten ari naiz da esaten dut balio horixe da Noa
nire PK izeneko koadroan barruan jarri.
Eta gauza horiek dira erakusleak, eta ari delako
zero x bezalako kate batean Zortzi zero c zazpi lau zortzi
Bi zero da seguruenik ez oso esanguratsuak.
Denean, oro har, ikusteko dugu erakusleak, Egia esan, beraz, ez dugu erakusle gisa.
Pk informazioa ematen digu k aurkitu memorian behar dugu.
Beraz, funtsean PK da, gezi bat dauka.
Eta luzera bagabiltza gezi hori, pentsa
Zerbait oinez dezakezu on da, bagenu Gezia luzera zehar oinez,
gezi hori oso puntan, dugu memorian kokapena aurkituko
non k bizi da.
Eta hori oso garrantzitsua da behin jakin dugu non k bizi delako,
to datuekin lan egiten hasteko aukera izango dugu Memoriaren barruan.
Nahiz eta ez gabiltza teeny bat lortzeko aurretik geure buruari hozkatu oraingoz.
>> Beraz, zer erakuslea da?
Erakuslea datu bat, zeinen da balio memoria-helbide bat da.
Hori izan zen zero x zortzi zero gauza dela joan, memoria-helbide bat izan zen.
Hori memoria kokapena zegoen.
Eta erakuslea motaren mota deskribatzen
Datuen at aurkituko memoria helbide hori.
Beraz, ez da int izar parte eskubidea da.
Gezi hori jarraitu nuen bada, da me eramango kokapena bat egingo da.
Eta kokapen hori, zer I Han topatuko nire adibide,
berde koloreko kutxa bat da.
Zenbaki oso bat da, hori da dut joan nintzen helbide horretara bada topatuko.
Datu bat mota erakuslea deskribatzen zer
egingo memoria helbide hartan aurkituko dituzu.
Beraz, hemen benetan cool gauza izan arren.
Erakusleak pasatzeko aukera ematen digu funtzioen artean aldagaiak.
Eta benetan pasatzen aldagai eta ez horien kopiak gainditu.
Baldin badakigu delako zehazki non memoria aldakorreko bat aurkitzeko,
ez dugu behar beste kopia bat egin nahi du da, bakarrik joan ahal kokaleku horren
eta aldakorra horrekin lan egiteko.
Beraz esentzia erakusleak ere ordenatu egiteko ordenagailua ingurune batean
Mundu errealean bezala, askoz gehiago da, ezta.
>> Hortaz, hona hemen analogia bat da.
Demagun koaderno bat behar dut, eskubidea, eta ohar betea da.
Eta nahi nuke eguneratzeko duzu.
Funtzio bat zarela eguneratzeak notak, eskubidea.
Modu batean izan gara orain arte lanean, zer
gertatzen da nire koaderno hartu ahal izango duzu, kopia dendan joan beharko duzu,
Xerox kopia bat egin ahal izango duzu koadernoaren orrialde bakoitzean.
Nire koaderno back zaizu Nire mahai gainean amaitzen duzunean,
joan eta gauzak zeharkatuko egindako dituzu nire koaderno hori data edo oker daude,
eta, ondoren, atzera pasa behar dituzu me Xerox-orriak pila
nire koaderno erreplika bat da Hori da nik egindako aldaketak.
Eta une horretan, ez da niri eman bezala zenbakira deituz funtzioa, deitzailearen bezala,
zure oharrak hartu erabakitzeko eta horiek integratzeko atzera nire koadernoan sartu.
Beraz, ez dago urrats asko da Hemen sartuta, eskubidea.
Like ez litzateke hobea izango da I esaten ez bada, beno, ahal duzun
nire koaderno eguneratu Niri, entregatu nire koaderno,
eta gauzak hartu eta literalki zeharkatuko itzazu
eta nire ohar eguneratu nire koadernoan.
Eta gero eman dit nire koaderno atzera.
Hori da, zer nolako erakusleak egiten uzten digu,
ingurune honek asko egin dute nola jarduten dugun errealitatean bezala gehiago.
>> Beraz Ondo da zer erakuslea da, hitz egin dezagun
erakusleak nola C egiten dute lan, eta buruz nola haiekin lan egiten hasteko aukera izango dugu.
Beraz, ez da erakuslea oso erraza da C in the null erakuslea izeneko.
Ezer null erakuslea puntu.
Hau ziurrenik badirudi bezala Egia esan, ez da gauza oso erabilgarria,
baina ez dugu ikusiko gisa gutxi geroago, hain zuzen,
null erakuslea hau badela benetan erabilgarri etorriko.
Eta, betiere, erakuslea bat sortu duzu, eta Ez duzu bere balioa immediately- ezarri
ezartzeko adibide bat bere balioa berehala
Bikote diapositibak bat izango da atzera non PK berdinen & k esan dut,
PK k helbide lortzen, gisa zer esan nahi duen ikusiko dugu,
hori nola kode ikusiko dugu shortly- ez badugu bere zerbait balio ezarri
esanguratsu berehala, beti behar duzu
ezarri erakuslea null seinalatu.
Ezer ez seinalatu ezarri beharko zenuke.
>> Hori da, baino oso desberdina besterik balio utzita dagoen moduan
eta, ondoren, bat deklaratzen erakuslea eta besterik suposatuz
nulua da hori gutxitan egia delako.
Beraz ezarri behar duzu beti erakuslea balioa
null ez baduzu, bere balioa ezarri zerbait esanguratsua berehala.
Egiaztatu ahal izango duzu erakuslea balioa ala null berdintasuna operadorea erabiliz
(==), Bezala edozein zenbaki konparatzea balioak edo pertsonaia balioak erabiliz (==)
baita.
Konstante moduko berezi bat da Hori probatzeko erabili ahal izango duzu balio.
Beraz, hori izan zen, oso erraza da erakuslea, null erakuslea.
Sortuko beste modu bat erakuslea da ateratzeko
aldagai baten helbidea Dagoeneko sortutako,
eta hau erabiliz egiten duzu & operadorea helbide erauzketa.
Zein Jadanik Aurretik ikusi ditugu lehen-diagrama adibidea erakutsi dut.
Beraz, x aldagai bat dugu bada Dagoeneko mota osokoa sortu,
Orduz & x zenbaki oso bat erakuslea da.
& X da- gogoratu, eta hau da ateratzeko joan eskubideari buruzko gauza helbidea.
Eta erakuslea geroztik besterik helbide bat da, baino & x zenbaki oso bat erakuslea da
bere balioa non in memoria x bizitza da.
Da x helbidea.
Beraz & x x helbidea da.
Ikus dezagun urrats bat gero eta zerbait konektatzeko
Aipatu aurretik, bideo bat egin nahi nuen.
ARR bikoitzak array bat bada, orduan & ARR kortxetea i erakuslea da
bikoitzarekin.
ONDO DA.
ARR kortxetea i, bada ARR bikoitzak multzo bat da,
ondoren, ARR kortxetea i da i-garren array duten elementua,
eta & ARR kortxetea i da, non ere memoria i-garren ARR elementua existitzen.
>> Beraz, zer inplikazio hemen?
Arrayak izen bat, inplikazioa Gauza oso honen,
da array baten izena dela Egia esan, bera erakuslea.
Zuk dira lanean erakusleak guztiak batera
matrize erabili duzun aldi bakoitzean.
Adibidez batetik gogoratu esparrua aldagai on,
bideoa aurkeztuko dut amaiera gertu Adibide bat non funtzio bat dela
Multzo int eta bat izeneko Multzo array izeneko funtzioa.
Eta zehazteko erronka ala ez, edo zer egin
balioak, inprimatutako dugu funtzioaren amaieran,
Programa nagusia amaieran.
>> Gogoratzen baduzu Adibide horretatik aurrera edo duzun bideoa Ikusi izan bada,
noiz deia duzu- badakizu Multzo int eraginkortasunez ez du ezer egiten.
Baina array ditu betetzen deia egiteko.
Eta nintzaion zergatik glossed garai hartan kasua izan zen.
Esan dut, bai nik array bat, da, bereziak, badakizu, ez dago arrazoi bat.
Arrazoia da array en izen da benetan erakuslea besterik ez,
eta ez da berezi honetan kortxetea sintaxia
Gauza asko ikusgarriago lan egiteko.
Eta baten ideia egiten dute erakuslea asko gutxiago beldurra,
eta horregatik moduko ari dira modu horretan aurkezten.
Baina benetan multzo besterik ez dira erakusleak.
Zergatik eta hori dugu array aldaketa bat egin,
array bat gainditu dugu, parametro gisa funtzio bat edo argumentu bezala
funtzio bat, array-aren edukia benetan callee biak ere aldatu
deitzen duen ere.
Beste mota guztietan bertan aldakorreko ikusi genuen, ez zen horrelakorik egin.
Beraz, zerbait mantendu behar da axola duzunean erakusleak lan egiten ari zaren,
dela baten izena benetan array erakuslea
Array horretan lehenengo elementua da.
>> Ados beraz, gaur egun hauetan denok hechos, gorde dezagun, ezta.
Zergatik ez dugu zaindu buruz non zerbait bizi da.
Esan dudan bezala, ondo, nahiko da erabilgarria non zerbait bizi ezagutu
beraz, ez joan ahal izango duzu eta aldatzeko.
Berarekin lan eta benetan gauza egin behar duzula
to take aldakorra efektu hori egin nahi, eta ez du ondoriorik izango da kopia batzuk.
Hau dereferencing deitzen da.
Go erreferentzia dugu eta balioa aldatzen ditugu han.
Beraz, erakuslea izan dugu, eta bada deitzen PC, eta puntu pertsonaia bat da,
orduan esan dezakegu * pc eta * pc da zer aurkituko dugu bazoaz izena
helbide ordenagailuari.
Zer han aurkituko dugu da pertsonaia bat eta * Pc da erreferentzia-datuen dugu artan
kokapena.
Beraz, antzeko zerbait esan genezake * Pc = D edo horrelako zerbait,
eta hori esan nahi du edozein dela memoria helbide pc zen,
edozein dela pertsonaia zen, aldez aurretik Han, gaur egun, D, dugu esan * bada pc = D.
>> Beraz, hemen ere joaten gara elkarrekin Zenbait bitxi C stuff, eskubidea.
Beraz, ikusi dugu * Aurretik izateaz nolabait datu-mota zati,
eta orain dela erabiltzen ari pixka bat eta beste testuinguru batean
kokaleku batera, datuak sartzeko.
Ezagutzen dut pixka bat nahasgarria da eta hori da benetan osotasun horren zati
bezala, zergatik erakusle mitologia honetan Horien inguruan, beraz, konplexua izateaz gain,
sintaxia arazo baten antzeko zerbait da, egia esanda.
Baina * bai testuinguru batzuetan erabiltzen da, bi motako izena parte bezala,
eta ikusiko dugu, apur bat geroago beste zerbait ere bai.
Eta oraintxe da dereference operadorea.
Beraz doa erreferentzia da, Datu sartzen da
erakuslea kokalekua, aldi berean, manipulatu borondate aukera ematen du.
>> Orain hori oso antzekoa da Zure bizilaguna bisitatuz, eskubidea.
Badakizu zer zure bizilaguna bizi, zaren
Ez zintzilik zure bizilaguna.
Gertatuko den zaren jakin Badakizu non bizi dira,
baina horrek ez du esan nahi ezagutza hori izatearen bertutea
haiekin elkarreraginean ari zara.
Horiek elkarreragin nahi baduzu, beren etxera joan behar duzu,
non bizi dira joan behar duzu.
Eta behin hori egin duzu, ondoren, elkarreragin dezakezu
haiekin besterik nahi duzu litzaidake nahi.
Eta, era berean, aldagai, beren helbidera joan behar duzu
horiek elkarreragin nahi baduzu, Ezin duzu besterik ez badakizu helbidea.
Eta bide batez, joan helbide duzu da *, dereference operadorea erabili.
Zure ustez, zer gertatzen saiatzen gara eta erreferentzia kenduta bada
erakuslea zeinaren balioa nulua?
Gogoratzen nulua dela erakuslea nothing puntu.
Saiatu behar duzu eta hala bada erreferentzia kenduta nothing edo helbide nothing batera doaz,
zer uste duzu gertatzen da?
Beno igarri baduzu segmentazio hutsegite, eskubidea izango litzaidake.
Saiatu eta erreferentzia kenduta baduzu null erakuslea,
segmentazio bat jasaten baduzu hutsegite. Baina itxaron,
ez duzu esango dut, hori ez bazoaz
Zure balioa ezarri zure zerbait esanguratsua erakuslea,
null ezarri behar duzu?
Egin nuen, eta, egia esan, segmentazioa errua portaera ona mota da.
>> Dute inoiz aldagai bat deklaratu eta Ez esleitzen bere balioa berehala?
Beraz, besterik gabe esan duzun int x; Egin ez benetan esleitu ezer
eta gero zure kodea an, x balioa inprimatu behar dituzu,
oraindik ez izatea esleitzen da ezer.
Maiz jasoko duzu zero, baina batzuetan
ausazko zenbaki batzuk eskuratu daitezke, eta Auskalo non zetorren duzu.
Era berean, ahal gauzak erakusleak gertatuko.
When erakuslea deklaratzeko int * adibidez PK,
eta ez baduzu, esleitu balio bat, lau byte memoria lortu nahi duzun.
Ren Whatever lau byte memoria-sistemak
Hori esanguratsua balio batzuk aurkitu.
Eta han izan liteke Zerbait dagoeneko ez dagoela
dagoeneko ez da beharrezkoa beste batek funtzioa, besterik ez duzu, beraz,
edozein dela ere, datu zen han.
>> Zer dereference egiten saiatu ezkero Han izan ziren don't- duzun helbide batzuk
Dagoeneko byte eta informazioaren ez, hori da orain zure erakuslea.
Saiatu baduzu eta erakuslea erreferentzia kenduta, zuk be memoria batzuk aldatzeari liteke
ez duzula asmoa dena nahastea.
Eta, hain zuzen ere egin ahal izango duzu Zerbait benetan suntsitzaileak,
bezalako beste programa bat hautsi, edo funtzio bat apurtu,
edo zerbait maltzur hark egin ez duzu nahi batere egin.
Eta beraz, horregatik da Egia esan, ideia ona da
Zure erakusleak ezartzeko baduzu null Ez ezarri horiek zerbait esanguratsua da.
Da ziurrenik hobeto Zure programa egunaren amaieran
gero, huts egiteko egin da Zerbait hori torlojuak eman
beste programa edo funtzio beste.
Portaera hori da, ziurrenik, nahiz eta besterik behera gelditzen baino ideal gutxiago.
Eta beraz, horregatik da Egia esan, ohitura onak
Zure erakusleak ezarri iritsi sartu nahi null ez dituzun horiek ezarri bada
balio esanguratsua Berehala, badakiela balio bat
eta segurtasunez ahal duzula dereference.
>> Hargatik itzuli orain eta begirada bat Egoeraren sintaxia orokorra.
Esan int * p bada ;, zer egin dut?
Zer egin dut hau.
Badakit p balioa helbidea da erakusleak guztiak besterik ez direlako
helbideak.
Ahal dudan erreferentzia kenduta p * operadorea erabiliz.
Testuinguru honetan, hemen, oso at goi Gogoratu * motako zati da.
Int * datu-mota da.
Baina erreferentzia kenduta ahal dut p * operadorea erabiliz,
eta, beraz, ez dut bada, joan nintzen helbide horretara bada, zer egingo dut aurkitu helbide hartan?
Zenbaki oso bat aurkituko dut.
Beraz, int * p da, funtsean, esanez, p helbidea da.
Ahal dudan p dereference eta bada Nik bai, zenbaki oso bat aurkituko dut
memoria kokaleku horretan.
>> Ez zen beste OK beraz, esan nuen izarrez gauza gogaikarriak
eta hemen, non duten izarrez gauza gogaikarriak.
Probatu duzu inoiz deklaratzeko Mota bereko aldagai bat baino gehiago
Kode-lerro berean?
Beraz, bigarren bat, itxurak lerro hori, kodea benetan daukat han berdean
Ez dago, eta besterik ez dio int x, y, z ;.
Zer egin nahi da, benetan sortu Hiru zenbaki oso zuretzat aldagaiak,
x izeneko bat, inork deitzen y, eta inork deitzen z.
Egin gabe modu bat da Hiru lerro kalera zatitu izatea.
>> Hemen da non izarrak lortzeko gogaikarriak berriro, nahiz eta,
* benetan parte delako bai eredu horrekin, eta parte-ren
aldagai izen baten.
Eta horrela esan badut int * px, py, Pz, zer I benetan lortu osoko bat erakuslea da
px eta bi zenbaki oso, py eta Pz deitzen.
Eta hori da, ziurrenik, ez zer , nahi dugun hori ez da ona.
>> Beraz anitz erakusleak sortu nahi dut lerro berean, mota bereko,
eta izarrak, benetan zer behar dut egin da int * pa esan, * pb, * pc.
Orain izatea besterik ez dela esan zuen eta orain hau kontatzeko,
Ziurrenik inoiz egin.
Eta seguruenik, gauza ona da, egia esanda, oharkabean agian delako
izar bat da, horrelako zerbait aipatu gabe utzi nahi.
Onena da seguru asko, agian deklaratzeko lerro banakako erakusleak,
baina besterik beste bat da gogaikarriak sintaxia horietako
osatzen duten izarrez gauzak erakusleak, beraz, zaila da lan egiteko.
Sintaktiko hau besterik ez delako nahaspila bidez lan egin behar duzu.
Praktikarekin egiten du Bigarren izaera benetan bihurtu.
Oraindik ere huts egiten dut berarekin oraindik 10 urtez programazio ondoren,
beraz, ez da egoera zerbait gertatzen bada duzu, nahiko ohikoa da, egia esanda.
Benetan da mota horretako sintaxia akats bat.
>> Ados, beraz, mota horretako agindu dut hori berrirakurtzeko genuke
nola handi kontzeptua katea da.
Beno zuk esan dut hori bada katea, benetan dugu motatako
denbora guztian gezurretan duzu.
There izeneko datu-mota ez katea, eta, hain zuzen ere I
aipatu batean gure Datu mota on goiztiarrena bideoak,
kate hori datu-mota bat izan zela zuretzat sortu zen cs50.h. ere
# Include duzu Ordena erabili ere cs50.h.
>> Beno esaldia benetan Zerbait aliasa
char * izeneko, a pertsonaia baten erakuslea.
Beno erakusleak, oroitzapen, besterik ez dira helbideak.
Beraz, zer tamaina da Kate bat byte?
Beno, lau edo zortzi da.
Eta arrazoia esan nuen lau edo Zortzi delako benetan
sistema araberakoa, badarabilzu CS50 ide, char * char bat tamaina da
* Zortzi da, 64-bit sistema bat da.
Memoria helbide guztiekin da 64 bit luze.
CS50 Appliance erabiltzen ari bada edo edozein 32-bit makina erabiliz,
eta entzun dituzu epe hori 32-bit makina, zer 32-bit makina bat da?
Beno, esan besterik bakoitza memorian helbidea da 32 bit luze.
Eta beraz, 32 bit lau byte da.
Beraz char * bat, lau edo zortzi Zure sistemaren arabera byte.
Eta hain zuzen ere, datu-motak identifikatzeko, eta edozein datu erakuslea
idazten, erakusleak guztiak bidezkoak dira geroztik helbideak, lau edo zortzi byte.
Hargatik berrirakurtzeko honetan diagrama eta dezagun bukatzeko
Bideo honetan ariketa apur bat hemen.
Hortaz, hona hemen Diagraman utzi dugun ekin Oso bideoaren hasieran.
Beraz, zer gertatzen da orain esaten dut * PK = 35 bada?
Beraz, zer ez diodanean, esan nahi da, * PK = 35?
Hartu segundo bat.
* PK.
Testuinguru hemen, * da dereference operadorea.
Beraz, noiz dereference operadorea erabiltzen da,
to helbidea adierazi joan gara PK arabera, eta zer aurkituko dugu aldatuko dugu.
Beraz * PK = 35 eraginkorrean Hau ez irudian.
Beraz, funtsean, sintaktikoki ren denaren berdina esanik k = 35.
>> Bat gehiago.
Int m esaten badut, nik ere sortu m izeneko aldagai berri bat.
Koadro bat, izan ere, kutxa berde da Honez zenbaki oso bat eduki behar,
eta m da etiketatu.
M = 4 esaten badut, jarri dut zenbaki oso kutxa horretan.
Say PK = & m, nola ez bada diagram aldaketa hori?
PK = & m, zer gogoratzen duzu & Operadorea du edo deitzen da?
Gogoan izan eta aldagai izen batzuk name aldagai baten helbidea da.
Beraz, zer esaten ari gara da PK m helbide lortzen.
Eta beraz, modu eraginkorrean zer gertatzen diagram dela PK puntu jada ez
, baina m puntuak K-ra.
>> Berriz erakusleak oso dira delikatua batera lan
eta asko hartuko dute Praktikan, baina delako
uzten gaitasuna funtzioen artean datuak pasatzeko
eta benetan dute horiek Aldaketak,
Inguruan zure burua lortzean da benetan garrantzitsua.
Ziurrenik da zailena Gai CS50 eztabaidatzeko dugu,
baina balio duzula erakusleak erabiliz lortu
Urrun konplikazioak outweighs duten horiek ikasteko datoz.
Beraz, onena nahi dut zorte erakusleak buruz ikasteko.
Naiz Doug Lloyd, hau CS50 da.