[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.