DAVID MALAN: Hello, eta ongietorria itzuli CS50. Beraz, aste honetan lau amaiera da. Bakar lehenengo iragarkia. Deiturikoak bosgarren Astelehena, beraz, ez da datozen datozen astelehen honetan. Aukera hau aldatu da SAT / UNSAT kalifikazioa eskutitz bat, edo gutun kalifikazioa SAT / UNSAT. Annoyingly, prozesua ez duela eskatzen sinadura, izan ere, bete behar duzu horiek Gehitu / jaitsiera pink forma bat da. Teknikoki, SAT du / UNSAT delako bertsioa eta gutun kalifikazioa bertsioa izan desberdin katalogoa zenbakiak. Baina big deal ez. Just etorri nirekin edo Rob edo edozein puntutan Lauren. Edo posta elektronikoz gurekin ez baduzu, eduki mota tramiteak, gaur egun behar duzu, eta guk duzula hartzen laguntzeko izango da duten zainketa astelehena baino lehen. Ondo da, beraz, gaur - egia esan, ez dago oihartzuna apur bat. Ahal dugun tonu me down pixka bat? Ados. Beraz, gaur egun, gai bat aurkezten dugu erakusle gisa ezagutzen da. Aitortu eta hori da bat dut konplexuagoak egiteko gai garela joera klase honetan estaltzeko, edo benetan edozein sarrera ikastaroa erabiltzen duen C. Baina nire hitza da, bereziki, zure burua pixka bat gehiago tolestuta sentitzen bada gaur egun eta asteetan etorri. Ez da duzun ordezkaria honetan okerrago esan nahi du, besterik gabe, edozein dela bereziki sofistikatua gai bat da agintzen dudala, aste batzuk Hori dela eta, guztiak ere harrigarria badirudi egingo atzera begirako erraza. Gaur egun, oraindik ere gogoratzen dut. Elliott jantokia nintzen eserita, hurrengo nire TF Nishat Mehta eserita, izan zen Elliott etxe bizi. Eta arrazoi batzuk, honetan Gaia besterik klik egiten duenean. Zein da ere borrokatu dut esan nahi zenbat denbora pixka bat da, baina ez dut nire onena egingo ekiditeko, hala nola, edozein laguntzeko Gai bat, azken finean, hori da borroka oso indartsua da. Izan ere, gai bat eztabaidatu dugu asteak etorri da hori segurtasun-, eta, nola ez duzu ustiatzeko makinak modutan ez ziren nahi du. Eta ustiategi horiek dira normalean bugs, akats baten emaitza dugu pertsona batzuk ez ulertzeko arabera egin azpiko ezarpen xehetasun programen bidez egiten dira. Azken hau egiteko gehiago, erabiltzaileak guztiak badirudi errespetatzen, 10 jokatu nuela pentsatu nuen apur bat claymation aurrerapena bigarren Kopuru Binky izendatu zuten ekarri gure lagun batek bizitzan Stanford at, irakasle Nick Parlante. Beraz, aukera ematen dizu ematen dit hau Binky du aurkezpenik hemen. [Bideo-erreprodukzioa] -Aizu, Binky. Esnatu. Erakuslea pasatzeko garaia da. -Zer da hori? Erakusleak buruz ikasi? Oh, goodie. [END bideo-erreprodukzioa] DAVID MALAN: Hau da Stanford informatika. Modu horretan etorri. [Txaloak] DAVID MALAN: Sentitzen dut, Nick. Beraz, gogora ekarri duen azken orduan amaitu dugu Benetan zirraragarria cliffhanger honetan Horren bidez, funtzio hau besterik ez zuen funtzionatzen. Gutxienez intuizioa, eta sentitu lan egin behar da, adibidez. Besterik gabe, balioak trukea bi zenbaki osoen. Baina gogoratzen noiz inprimatutako dugu hori urtean, nagusia eta balioak jatorrizko bi, oraindik ere zituzten eta bi, eta ez bi eta bat. Hargatik aldatzeko benetan me gehiagoko tresnari. Eta idatzi dut kodea hezur pixka batean aurrera hemen, non x dut aldarrikatzen duten 1 izango da, eta 2 izango da. Inprimatu ondoren, dut, bai beren Honekin inprimatu f balioak. Erreklamatu ondoren, I behera hemen horiek aldatu behar dugu. Leku huts bat utzi dut hemen egiteko gaur egun bete besterik ez da une batean. Ondoren, erreklamatu noa dela bi aldagai dira trukatu. Ondoren, inprimatu dut itzazu berriro. Eta, beraz, espero dugu, 1 ikusi behar dut, 2. 2, 1. Duten super simple da Helburua orain. Beraz, nola joaten gara trukea bi aldagai? Beno, bada, hemen proposatzen dut edalontziak horiek ordenagailu batean memoria irudikatzeko dezake. Batzuk ziztadak bat da, hau gutxi ziztadak bat da. Ezin izan boluntario dugu etorri eta nahastu gurekin trago batzuk, ezagutzen bada? Goazen gora. Zein da zure izena? Jess: Jess. DAVID MALAN: Jess? Gora etorri, Jess. Ez baduzu axola, jarri behar dugu Google duzun Glass beraz dugu betikotzeko honetan. Ados, beira. Bideo bat grabatu. Eta OK, onak gara Jess joan hemen. Guztiak eskubidea. Niza zu ezagutzeaz. Beraz, zer egin dut, zer egin? - Ahal baduzu, bada, nahiko azkar - besterik ez pours gurekin laranja edalontzi erdi bat zukua eta esne edalontzi erdi bat, eraginkortasunez zenbakiak ordezkari 1 bat Kopako 2 eta beste kopa batean. Hori ona metrajea izango. Jess: Barkatu. DAVID MALAN: Ez, ez. Ados da. Niza. Ondo da, beraz, lau byte dugu laranja zukua merezi. Deitzen dugu bertan balioa 1. Orain, beste lau byte esne merezi. 2 baloratzen deitu dira. X eta y, beraz, hurrenez hurren. Eskubidea, eta, beraz, orain esku zeregin bada - zuretzat, Jess, guztien aurrean zure ikaskideen - x eta y, hala nola balioak elkartruka nahi dugu zukua laranja beste kopa eta kopa honetan esnea, nola dezakezu - benetan egin aurretik da - hau egiten joan? Ados, jakintsua erabakia. Beraz, pixka bat memoria gehiago behar duzu. Hargatik esleitu aldi baterako kopa, duzu bada. Eta orain, jarraitu x eta y swap. Bikain. Beraz, oso ondo egina. Eskerrik asko, Jess. Hemen daukazu. Oroigarri txiki bat. Ados, eta, beraz, jakina, super simple idea. Erabat intuitiboa behar dela pixka bat gehiago biltegiratze espazioa - Formulario honetan, kopa bat - benetan nahi izanez gero Trukatu bi aldagai horiek. Hargatik egin du hain zuzen ere. Hemen non nago aldarrikatzen dut artean izango egiten zenbait aldaketa egingo, dut aurrera eta temp deklaratzen. Eta berdintasuna, esateko, x it dut. Ondoren balioaren aldatu dut besterik Jess x bezala, hemen egin duen esnea eta laranja zukua y berdintasuna izateko. Eta y aldatzeko berdina izan dut ez x, orain izango litzateke, zeren zirkulu bat trabatuta, baizik eta tenporala. Non I aldi baterako -, edo non Jess aldi baterako, jarri laranja zukua duten clobbering aurretik esne duen kopa. Hargatik aurrera me orain, eta hau egiteko. Deitzen noswap.c. Eta orain, utzi swap no me exekutatu. Eta, hain zuzen ere, ikusten dut zabaltzeko galtzen dut leihoa pixka bat, x 1, y 2. Eta, ondoren, x 2, y 1 da. Baina gogoratzen astelehenean gauza egin dugu pixka bat ezberdinean zeinaren dut ordez inplementatu helper funtzio bat, duzu bada, hori izan zen benetan hutsunea. Da aldatu deitu nuen. Eman nituen bi parametroak, eta nik deitzen deitzen naiz eta haiek b. Egia, deitu x eta y nuen. Ez dago ezer gelditu da hori egiten from me. Baina, ondoren, argudiatzen da nuke pixka bat anbiguoa. Astelehena abisuaren delako dugun aldarrikatu parametro horiek izan ziren balioak kopiak gainditu sartu Beraz, zure zerbait messes kontuan, nire ustez, erabiltzen baduzu berdin aldagaiak. Beraz ordez dut deitu bat eta b, besterik gabe, argitasuna. Baina gehien deitu genezakeen ezer nahi dugu. Eta kopiatu eta itsatsi dut eraginkorrean ez gora kodea honetan Hemen sartzen behera. Besterik ez dut ikusi duelako lan egiten duela. Beraz, forma nahiko ona izan da. Eta nire x aldatu dut, nire x bat, nire eta nire b b y y. Beraz, beste era batera esanda, zehatza bera logika. Zehatza gauza bera Jess zuela. Eta, ondoren, gauza bat sortu egin behar dut Hemen, jakina, orain deitu honetan funtzioa, edo deitu funtzio hau. Beraz, funtzio hori deitu egingo dut bi sarrera, x eta y, eta sakatu Gorde. Eskubidea, eta, beraz, funtsean, gauza bera. Izan ere, ziurrenik Nik egin programa alferrik konplexua funtzio bat besterik hartzen idazten kode lerro batzuk sei dut berriz Aurretik inplementatu hori hiru. Hargatik aurrera me orain eta remake hau, egin swap ez. Guztiak eskubidea, dena izorratu nuen hemen. Hau akats bat izan behar duzu, hori gerta ikustea gero eta normalean zure gisa programak lortu konplexuagoak. Baina ez da erraza fix bat. Dezagun atzera korritu me up hemen. Eta zer gertatzen da lehen errorea ikusten dut hau? Inplizituki aitorpena. Zer esan nahi du normalean adierazteko? Oh, prototipoa ahaztu dut. Konpiladoreak irakasteko ahaztu dut swap duten existitzen da, nahiz eta joan zen ez du hasieratik at existitzen Programaren. Beraz, besterik ez naiz hutsunea, swap esanen, int, int b bat, puntu eta koma. Beraz, ez noa da reimplement joan. Baina orain zer da hemen behera datorrenean. Oharra eta, koma bat eza hemen, eta hori ez da beharrezkoa ezartzeko. Hargatik hau remake dit, egin swap ez. Askoz hobeto forma. Exekutatu swap ez. Eta madarikatua da. Orain gara berriro, non ziren astelehenean dugu, non gauza ez ziren aldatu. Eta zer intuiziozko azalpena da Horregatik, hori gertatzen da? Bai? Ikaslea: [INAUDIBLE]. DAVID MALAN: Horixe. A eta B, beraz, x eta y kopiak dira. Eta, hain zuzen ere, edozein momentutan izan zara funtzio bat deituz, beraz, oso urrun dagoela igarotzen ints bezalako aldagai - bezala swap dago hemen zain - you guys dira ale igaroz. Orain dela esan nahi du pixka bat hartzen du denbora bat, split bigarren, alde ordenagailu bit kopiatzeko batetik beste zatiak sartu aldagaia. Baina hori ez da akordio handi bat, besteak beste. Baina, hala ere, Oraindik dute kopia bat. Eta, beraz, orain, swap testuinguruan, Izan ere am I arrakastaz eta b aldakor. Izan ere, utzi egin azkar bat behatu egiaztatu. Inprimatu f% i da, linea berria. Eta dezagun batean plug. Orain egin gauza bera b. Eta utzi egin gauza bera hemen. Eta orain, utzi ildo horiek kopia me berriro funtzioa behealdean nire hiru interesgarri ildo ondoren exekutatu izan da, eta inprimatu eta b berriro ere. Beraz, orain egin dezagun hau, egin swap ez. Utzi terminal-leiho bat egin zidan bit taller, ahal dugun ikus dezaten it gehiago aldi berean. Eta exekutatu swap ez. x 1, y 2. bat da, 1, b 2. Eta gero, bat da, 2, b 1 da. Beraz, lanean ari da, besterik gabe, Jess bezalako egin hemen barruan swap du. Baina, jakina, eragina ez da beharrik aldagai nagusia da. Beraz, trikimailu bat ikusi dugu, zeinaren dugu hau konpondu ahal izan da, ezta? Duzunean scoping honen aurrean alea, besterik gabe, ezin duzu punt eta x egin eta y aldagaiak zer nolako ordez? Egiteko horiek global asmoz. Jarri horiek oso fitxategia goian egin dugun bezala, nahiz eta 15 jokoan. Aldagai global bat erabiltzen dugu. Baina minutu bat 15 testuinguruan, arrazoizkoa da global bat izateko aldagaia taula ordezkari gisa, zeren 15.c osoa da joko hori gauzatzeko buruz. Hori da fitxategia eta egin. Baina kasu honetan hemen, naiz funtzioa swap bat deituz. Bi aldagai aldatu nahi dut. Eta hasi besterik ez da sloppy sentitzeko behar da Gure guztien soluzioa bada arazoak exekutatu esparrua dugu gai da, eta horregatik da globala. Oso azkar gure programa delako nahastea nahiko bihurtu da. Eta oso gutxi egin dugu 15.c. ondorioz; Baina ez da bat bihurtzen da hobeto elkarrekin. Utzi zidan benetan atzera eta ezabatu inprimatu f horrek, besterik gabe, kode hau errazteko. Eta utzi niri proposatzen honetan, hain zuzen ere, ez da txarra. Baina horren ordez izartxoak dut batzuetan galtzen gehitu ko, eta, horren ordez, ezin dut aktibatu bat sartu da, funtzio benetan dabil. Beraz, atzera me hemen eta onartzen esaten asterisko beti da zaila, ko, beraz, esan dut. Dut Fess igo dela. Guztiak eskubidea. Eta orain, zer dut Horren ordez, zer egin? Beraz, lehenik eta behin, zehaztu dut ordez int bat igaroz sartzen diren swap funtzioa beharrean nago int izar esanen du. Orain, zer izar adierazi du? Hau erakuslea duten kontzeptua dela Binky, claymation pertsonaia izan zen, une duela aipatuz. Beraz, bada, int star, esanahia esaten dugu orain, hau da, hori ez da izango bere balioa k gainditu. Ez da kopiatu beharreko sartu joan Baizik eta, baten helbidea da onartuko da, oraindik joan Beraz, gogora ekarri zure ordenagailuaren barruan memoria-sorta oso bat da, bestela RAM bezala ezagutzen. Eta ahari besterik ez da bat byte sorta osoa. Beraz, zure Mac edo PCak bi gigabyte, 2 daukazula milioi memoria byte. Orain, besterik gabe, besterik suposatzen duten mantentzeko gauza polita eta antolatuan, dugu helbide bat esleitu - zenbaki bat - behin RAM byte ordenagailuan. Horiek 2 byte oso lehen milioi zenbakia zero da. Hurrengo byte zenbaki bat, zenbakia bi, gora an modu dot dot guztiak dot, eta gutxi gorabehera 2 milioi. Beraz byte zenbakia dezakezu Ordenagailuaren memoria. Hargatik bere gain hartzen duten hori zer helbide bat esan nahi dugu. Beraz, int izar bat, zer ikusten dut joan swap sartu onartuz orain da baten helbidea. Ez da bere balioa, baina, edozein posta helbidea ez da, beraz, hitz egin - bere RAM duen kokapena. Eta, era berean, b, joan naiz gauza bera esan. Int, izarra, b. Bat alde batera, teknikoki izar gisa zitekeen beste lekutan joan. Baina izarra izaten dugu normalizatzeko eskubidea ondoan datu mota. Beraz aldatu sinadura orain esan nahi du, ematen dit du int baten helbidea, eta dei duen helbide bat. Eta ematen dit baten beste helbide INT eta helbidea b deitzen. Baina orain nire kodea hemen aldatzeko. Int temp deklaratzen dut galtzen duelako - hau da, oraindik ere, mota int - baina gordetzeko bat dut, zer balio du? Argi izan, naiz jarriz bat dut kode idatziaren gisa oraintxe? Kokalekua naiz jarriz batean. Baina ez dut proba kokapena, gaur egun, ezta? Temp besterik Jess 'hirugarren kopa existitzen zegoen, zertarako? Balio bat gordetzeko. Esnea edo laranja zukua. Ez benetan gorde helbide gauza horiek, edozein dela ere, eta horrek bat sentitzen gutxi real honetan zentzugabeko mundu mailan ere. Beraz, benetan, zer aldi baterako jarri nahi dut ez da baten helbidea, baina baten edukia. Beraz, 123 bezalako zenbaki bat bada, hau da, memoria byte 123RD hori bat besterik ez gertatzen okupatzailea izan da, balioa batean gertatzen okupatzailea izan. To helbide horretara joan nahi dut, bada, Izar bat esan behar dut. Era berean, banintz, zer aldatu behar helbide bat, aldatu dut hau hasteko. Nahi dut zer dagoen en gordetzeko bada kokapena zer kokaguneko-en b, b star star. Beraz, azken finean, nahiz eta hori ez da nahiko urtean hondoratu gabe - eta ez nuke espero hain azkar litzateke hori - guztiak konturatzen ari naiz, hori aurretik horiek nire aldagai ko, Esaera ez hartu balioak. Ez aldatu balioak. Baizik, eta horiek joan helbideak eta balioa. Helbide horretara joan eta aldaketa balioa ez dago. Beraz, orain utzi atzera korritu me up goian, besterik lerro hau konpontzeko hemen, aldatu prototipoa etor. Baina behar dut beste gauza bat egin. Intuizioa, ez dut aldatu motak Argumentu swap hori espero, Zer gehiago behar dut nire kodea aldatzeko? Noiz swap deitzen dut. Oraintxe, zer delako am Pasa eta oraindik ere aldatu behar dut? Balioa x eta y-ren balioa, edo esnea eta laranja zukua. Baina ez dut nahi hori egin. Ordez nahi dut zer pasatzen? X eta kokapena y kokapena. Zeintzuk dira bere posta-helbideak, nolabait esateko. Beraz, hori egin, ez dago & ikurra da. AMPERSAND helbide bezalako soinuak mota. beraz, n, ampersand, helbidea x, y eta helbidea. Beraz, nahita da erabiltzen dugun ampersands denean funtzioa deituz, eta izarrak noiz eta deklaratzen denean funtzioa gauzatzeko. Eta besterik ampersand uste bezain operadore helbidea, eta izar gisa Hara joan operadorea - edo gehiago, ongi da, dereference operadorea. Beraz, hitz asko besterik ez da esan orain, zorionez, swap da joan zuzena izan behar du. Dezagun aurrera egitea eta me - dezagun benetan fitxategia izenez aldatu, lest Programa honetan oraindik ere deitzen swap ez. It swap.c dugun deituko orain aldarrikatzen dut. Beraz, aldatu. Puntu, barra, trukatzeko. Eta orain, hain zuzen ere, x 1, y 2. Eta, ondoren, x 2, y bat da. Beno, ikus dezagun ez badugu egin hau pixka bat ezberdinean zer gisa gertatzen da hemen. Lehenik eta behin, utzi gerturatzeko me gure pantailan marrazten hemen. Eta utzi proposatzen momentu bat - eta betiere, hemen marraztu dut islatu egingo da han orain - let me proposatzen hemen memoria-sorta oso bat da, edo RAM, nire ordenagailua barruan. Eta hau ziztadak kopurua izango da, esan dezagun, 1. Hau byte kopurua 2 izango da. Eta, oro har mordo bat egin dut, eta ondoren dot dot puntu sorta egiteko ez dagoela adierazi du, 2 milioi gauza horiek. 4, 5, eta abar. Beraz, ez dira lehenengo bost byte nire ordenagailuaren memoria. Guztiak eskubidea? Oso 2 milioi out gutxi. Baina orain proposatzen dut honako hau. X hori joatea proposatzen dut gorde kopurua 1 eta y va kopurua 2 gordetzeko. Eta utzi aurrera me orain eta adierazten balio horiek honela. Egin dezagun honela. Ematen dit, besterik gabe, segundo bat. Bigarrena. Ados. Pixka bat egin nahi dut - egin dezagun berriro. Bestela, naiz eta joan erabiliz zenbaki bereko, nahi gabe, hainbat aldiz. Beraz, besterik ez, beraz, hainbat zenbakiak dugu hitz, dezagun deitzen byte honetan zenbakia 123, 124, 125, 126, eta dot dot dot. Eta utzi zidan, orain aldarrikatzen dut joan jarri balioa 1 hemen, eta balioa 2 hemen, bestela, x eta y bezala ezagutzen. Beraz, beraz, besterik ez da gertatzen hau da, x, y hau da. Eta batzuk ausaz aukera bidez, ordenagailua, sistema eragilea, gertatu x jarri kokapenean zenbakia 123. Eta y azkenean kokapena 124 at - madarikatua da. Dute, konpondu behar dut hori. Oh man, zuk nahi dut hau egiteko? Bai, eta konpondu nahi dut b gaur egun honi buruz egokia. Barkatu, hau berria. 127, 131, eta nik ez zuen nahi izan da konplexua da, baina zergatik aldatu dut zenbakiak ez? Nahi dut ints nahi duelako Egia esan, lau byte izan. Beraz, izan gaitezen honi buruz anal super. Beraz, 1 bada gertatzen zaie 123, 2 da, helbide honetan izango da 127 delako 4 baino byes kanpoan da. Hori da dena. Eta guztia dugu ahaztu munduko helbideak beste. Beraz, 123 x kokapena da, y kokapena 127 da. Eta orain, zer egin behar dut benetan egin nahi? Noiz swap deitu dut orain, zer benetan gertatzen ari da? Beno, noiz swap deitzen naiz, ari naiz pasatzen x eta y helbidea helbidea. Beraz, adibidez, bada, bi pieza horiek paper orain irudikatzeko bi argumentuak A eta B trukatzeko, zer naiz horiek lehenengo idazteko joan, azken horrek erreferentzia gisa deitu dut? Zehazki, 123. Dut, beraz, hau aldarrikatzen da. Honek parametro bat da. X helbidea naiz jarriz bertan. Zer da hori? Zer da hori? Ez, ez. Hori Ados. Oraindik ere ona, oraindik ere ona da. Beraz, hau da. Eta orain, bigarren paper pieza on, hau da, b izango da, eta zer naiz behar bezala idatziz joan paper hau? 127. Gauza bakarra dela aldatu geroztik, beraz, gure istorioa kontatzeko aurreko da, baizik eta literalki baino 1 eta 2, naiz to 123 eta 127 igaroko dugu. Eta orain, naiz horien barruan jartzea joan kutxa honek guztiak, ezta? Beraz, kutxa beltza, orain dela adierazten swap funtzioa. Bien bitartean, goazen orain norbait ezartzeko swap funtzioa. Litzateke norbaitek hemen nahi boluntarioak? Goazen gora. Zein da zure izena? Charlie. Ondo da, Charlie. Goazen gora. Beraz, Charlie da jolasteko joan Gure kutxa beltzak rola. Eta Charlie, zer egin nahi nizuke orain swap ezartzea da, horrela, , emandako bi helbideak horiek, benetan ziren zoazen balioak aldatzeko. Eta zure belarrira xuxurlatzen dut nola telebista hemen exekutatu. Beraz, aurrera, eta kutxa beltza zara. Bertan iristeko. Zer balio bat ikusten zenuen, eta zer balio ikusten b duzu? Charlie: bat da, 123 eta 127 b da. DAVID MALAN: OK, zehazki. Orain gelditu besterik ez dago une bat. Lehenik eta behin, orain egin behar duzu, kodearen arabera - zein Orain dut tira sortu pantailan - da apur bat esleitu izango memoria pixka izeneko aldi baterako. Beraz, aurrera noa, eta emango dizu memoria hori. Beraz, hau da, hirugarren aldagai bat izango da duzula irisgarria temp deitzen duzu. Eta zer egingo duzu idatzi paper temp buruz? Charlie: erakusleak, ezta? DAVID MALAN: OK, ondo ez erakusleak derrigorrez. Kode-lerro ditudan beraz eskuin hegalean nabarmenduta, dezagun hasteko dago. Izar bat esaten du. Beraz, gaur egun, gordetzeko kopurua 123. Eta besterik gabe, intuizioa, zer zuen izar 123 esan nahi du? Baina bereziki, bada 123, izar bat, zer esan nahi du? Baten balioa. Edo gehiago, kasualitatez, joaten. Beraz, hori proposatu zidan, eta eskuan en eskua, aurrera eta tratatzen duten balitz bezala mapa bat da. Oinez eta zure burua baino gehiago, informatika-en memoria, eta gauden, zer da kokapena 123 at. Zehazki. Beraz, ikusi kokapena 123 gara zer, argi dago? Ados, beraz, zer balio zaude orain aldi baterako jarri da? Zehazki. Beraz, aurrera eta hori egiteko. Eta idatzi kopurua 1 piezaren gainean paper hori gaur egun izeneko aldi baterako. Eta orain, hurrengo urratsa dela ezartzea duzu zer izango. Beno, eskuin hegalean kode-lerro hurrengo izar b da. b, la noski, helbide bat gordetzen du. Duten helbideak 127. Star b zer esan nahi du, kasualitatez, hitz egitea? Kokaleku horretan joan. Beraz, aurrera eta aurkitu zer kokapena 127 at. Ados. Jakina, kokapena 127 at, da, oraindik ere balio du 2. Beraz, zer egingo duzu dendan whatever batean kokaguneko da? Beraz, izar bide bat kokalekua joatea. Zer kokalekua bat? Zehazki. Beraz, orain, aldatu nahi izanez gero, zer kokapena hartan da - Aurrera egingo dut eta exekutatu borragoma dira hemen. Eta orain, berriro jarri eskuila da. Nora joango idatzi hori hutsik koadroan orain? Zehazki. Beraz, hau, kode lerro, argi - utzi zer Charlie horrek eten egiten nau eta Azpimarratu hemen, zer zen besterik egin da kutxa horretan idazteko kokapena 123 at balioa izan zela aurrez b. Eta beraz, gaur egun dugu, hain zuzen ere inplementatu kodea bigarren hau. Orain, baina, tamalez, ez da oraindik, lerro bat falta dira. Orain zer tenporala da, literalki? Jakina da zenbaki bat. Hori ez da helbide bat. Besterik ez da zenbaki bat, Ordena aste batetik aldagai bat. Eta orain, izar b denean, horrek esan nahi diozu b helbidera joan, eta hori ikastaroa hemen. Beraz, behin heldu duzu - Aurrera egingo dut, eta ezabatuko zer benetan han - eta zer egiten ari zaren Orain, idazteko kokapena 127 at joan? Charlie: Temp, hau da bat. DAVID MALAN: Temp, hau da bat. Eta zer gertatzen da aldi baterako azkenean? Beno, ez dugu benetan jakin. Ez dugu benetan axola. Edonoiz inplementatu dugu funtzio bat beraz, orain arte, aldagai lokalak edozein duzu dira, hain zuzen ere, tokian tokiko. Eta desagertu besterik ez dute. Direnean eragilearen arabera irabazitako sistema azkenean. Izan ere, aldi baterako jarraitzen du, beraz, balioa 1 da, funtsean, sort of gurekin izanarren. Guztiak eskubidea, beraz, txalo Kopako bat Charlie eman izan dugu gero. Oso ondo egin. Guztiak eskubidea, beraz, zer gehiago egiten du hau esan dezakegu? Beraz bihurtzen da dugun izan gutxi batzuk zuria gezurrak kontatzea denbora luzez. Izan ere, bihurtzen da kate bat dela, denbora hori guztia, ez da benetan per se karaktere-sekuentzia. Da mota intuizioa da hori. Baina teknikoki har, kate bat datu-mota barruan dugun deklaratu du CS50 liburutegia mundu errazteko Klase lehen asteetan ere. Zer kate bat benetan da helbidea da pertsonaia bat, nonbait RAM ere. Kate bat da eta benetan zenbaki bat, 123 bezalako edo 127, hori gertatzen demarcate non kate bat hasten da ordenagailuaren memoria. Baina ez du adierazten katea, berez, berez. Ikusi eta hau honela esan daiteke. Let me aurrera eta ireki kode batzuk, hori da, besteak beste Gaur egungo iturburu kodea adibide. Eta aurrera joan eta ireki dut sortu, esan dezagun, konparazio-0.c. Hau buggy programa hori joan da honela ezartzen. Lehenengoa. Zerbait esan nahi dut. Ondoren, aurrera noa, eta lortu katea erabiltzailearen hurrengo lerroan. Ondoren, berriro ere esan dut. Ondoren, beste bat eskuratu dut Erabiltzaile kate. Eta aldez aurretik abisatu bat naiz erakusten s izeneko aldagai bat, kateak, eta kate horiek beste izeneko t aldagai batean. Eta orain, erreklamatzeko oso noa arrazoiz, s bada berdin dela berdin t, kate berdinak dira. Gauza bera idazten duzunean. Bestela, kateak dira ez da gauza bera. Azken finean, bi ints, bi sarrera badugu karaktereak, bi karroza, bi bikoitzak, edozein datu-mota hitz egin dugu buruz beraz, orain arte horiek konparatzea da - gogoratzen, oso argi dugu, berriz, duela ez duzula egin, ez delako bakar berdin ikurra da, noski esleitzeko operadorea. Beraz, hori akats bat izango litzateke. Berdin berdin ikurra erabiliko dugu, horrek, hain zuzen ere konparatzen berdintasunerako benetako gauza. Baina hori buggy aldarrikatzen dut. Joaten naiz, aurrera egiteko bada, eta alderatu zero, eta, ondoren, ez dot barra alderatu zero. Eta, idatzi nuen esan dezagun, kaixo. Eta gero, esan dezagun kaixo berriro. Literalki gauza bera, ordenagailua erreklamazioak hainbat gauza ondo idatzi dut. Orain, agian gaizki idatzi nuen zerbait. Nire izena idatzi dut une honetan. Esan nahi dut, kaixo. Hello. Desberdina da bakar batera. Beno, zergatik da hori? Zer da benetan gertatzen kanpaia azpian? Beno, benetan zer gertatzen ari azpian kanpaia katea da, ondoren, Idatzitako adibidez, lehenengo aldiz horretan dut kaixo hitza da, noski. Baina adierazten dugu hori izanez gero azpian kanpaia, gogorarazten duen kate array bat da. Eta esan dugun bezala, askoz ere iraganean. Beraz, hori bada array marraztu dut hau bezala, nago zerbait adierazten nahiko joan zer ago une bat egin dugu antzekoa. Eta egia esan, ez da zerbait berezia hemen ere. Zer egin zen zehaztu dugu kate bakoitzaren amaieran? Bai, backslash zero honetan, hau da, besterik ordezkari bidea, literalki, 00000000. Zortzi 0 errenkadan bit. Ez dakit, sinceramente, hori zer da ondoren. Hori besterik mordo bat gehiago RAM nire ordenagailuan barruan. Baina hau array bat da. Array buruz hitz egin dugu aurretik. Eta array buruz hitz egin dugu, normalean kokapena zero izateaz gain, ondoren, eta, ondoren, bi. Baina, besterik erosotasunerako da. Eta hori da, oso-osorik erlatiboa. Denean benetan ari zaren memoria lortzean ordenagailua, da ikastaroaren edozein da 2 milioi bakoitiak byte batzuk, seguru. Beraz, benetan kanpaia azpian, Denbora honetan guztian, bai. Hori oso ondo tarte zero izango da. Baina dig duzu ere sakonago azpian bada kanpaia, hori benetan aurre-zenbakia 123. Helbide honetan 124 da. Helbide honetan 125 da. Eta ez dut torlojua denbora honetan. Hauek dira gaur egun ko byte gain arrazoirik? Zein handia da karaktere bat? Karaktere bat byte bat besterik ez da. Int bat da, normalean lau byte. Horregatik da 123 egin dut, 127, 131, eta abar. Orain mantentzeko math errazagoa dezaket eta besterik egin gehi 1. Eta hau, gaur egun, zer da benetan joan kanpaia azpian an. Beraz, honen antzeko zerbait deklaratzen duzu, katea, hau da, benetan - bihurtzen da - char izarra. Star, jakina, esan nahi du helbidea, aka erakuslea. Beraz, zerbait helbidea da. Zer da helbidea da? Beno - Duen bakarra oso ikusi ahal izango naiz Garrantzitsuena, ari naiz egiten, edo uste Egiten ari naiz. Beraz, kate - tristea zera da, monitore bat dut bertan, non I ikusi ahal izan da. Ondo da, beraz, kate s da zer Aurretik deklaratu nuen. Baina bihurtzen da, apur bat eskerrak CS50 liburutegian magia, hori guztia denbora kate ditu, hitzez hitz char izarra izan da. Izar berriro esan nahi erakuslea edo helbidea. Izan ere, hori da flanking char hitza esan nahi da pertsonaia baten helbidea. Beraz, gero katea deitzen da, eta nik idatzi H-E-L-L O-ere, orain zer proposatzen du lortu literalki dira kate guztiak itzuli Garai honetan, nahiz eta beharrean dugu oversimplified mundua? Zer katea benetan lortu du itzultzeko balio gisa itzultzeko? Kasu honetan, 123, esate baterako. Aurretik esan dugu lortu duten kate besterik gabe, kate bat itzultzen du, sekuentzia baten karaktereak. Baina zuri bat gezur apur bat. Modu lortu katea benetan lan egiten kanpaia azpian da bat lortzen Erabiltzaile kate. Pertsonaiak duten plops da berak memoria-motak. Backslash zero bat jarri amaieran karaktere-sekuentzia horien. Baina orduan, zer kate lortu du hitzez hitz itzultzeko? Literalki itzultzen duen helbidea Oso lehen RAM byte duten erabiltzen duten indarra da. Eta bihurtzen da hori bakarrik itzuli helbide bakarra katean pertsonaia lehen, hau da, osotasunean duen aurkitzeko nahikoa katea. Beste era batera esanda, lortu katea ez du 123 eta 124 eta 125 itzultzeko. Ez du me emateko luzea byte duten guztien zerrenda nire katea erabiliz. Bat delako, guztiak atzera itzuli dira. Eta bi, lehenengo helbide oinarritzen da, I irudikatu ahal non katea amaitu da. Nola? Berezia null pertsonaia da, backslash zero amaieran. Beraz, beste era batera esanda, bada inguruan pasatzen duzu - aldagai barruan - duen karaktere baten helbidea, eta bere gain hartzen edozein kate amaieran, edozein gara gizakiak karaktere-sekuentzia kateak pentsatzea, bere gain hartzen baduzu kate inolako dago amaieran backslash zero bat, urrezko zara. Ahal duzu beti delako aurkitu kate baten amaieran. Orain zer ari da benetan, ondoren, joan programa honetan? Zergatik programa hau da, konparazio-0.c, buggy? Zer da benetan ari aldean? Bai? Ikaslea: [INAUDIBLE]. DAVID MALAN: Horixe. Kokapenak da alderatuz kateak ere. Hala bada, erabiltzaileak idatzitako en kaixo behin, egin dudan bezala, memoria azkenean baliteke hau atsegin bila. Erabiltzaileari, ondoren, kaixo motak berriro, baina katea berriro deituz, c da ez da bereziki azkarra irakatsi ez baduzu izan kodea idatziz argia da. C - ordenagailuak, eta, oro har - hitza idazten baduzu kaixo berriro ere, zer lortu duzu ezagutzen duzu. Ari zaren bigarren array bat iritsi memoria, hori bai, gertatzen dena izango da H-E-L-L-O gordetzeko, eta abar. Bera begiratu behar da joan Gurekin gizakiak, baina helbide honetan agian ez da 123 izan. Besterik ez da, beraz, baliteke gertatuko dela sistema eragileak eskuragarri batzuk Adibidez, espazio kokapena at - esan dezagun zerbait arbitrarioa, atsegin dute hau kokapena 200 da. Eta hau kokapena 201 da. Eta hau kokapena 202 da. Ideia ez dago non hori daukagu memoria egongo. Baina, zer esan nahi du, hau da, zer dela gordetzeko, azken finean, s da? Kopurua 123. Zer t gordetzeko joan, hau arbitrarioa adibide? Kopurua 200. Guztiak, eta horrek esan nahi du, orduan, jakina, 123 ez da berdina 200. Eta, beraz, hau baldintza bada inoiz Egia ebaluatzen. Get kate desberdinak erabiliz memoria zatiak aldi bakoitzean. Orain ikusiko dugu berriro beste adibide bat da. Let me aurrera eta ireki kopia-0.c. Adibide honetan, hori gertatzen da aldarrikatzen dut saiatu - baina huts egiten - bi kateak kopiatzeko honela. Zerbait esan nahi dut erabiltzaileari. Ondoren, naiz bat iritsi katea eta deitu s. Eta orain, egiaztapen hau egiten ari naiz hemen. Hau, berriz, atzera aipatu dugu. Baina katea bueltan null lor dezake, beste izaera berezia, edo bereziak sinboloa, esan dezagun. Da, bada, memoria. Esate baterako, erabiltzaileak da benetan zaila da, eta mota atrocious izateaz karaktere kopurua at teklatua eta hits Sartu. Karaktere kopurua besterik ezin badu RAM sartzen edozein dela crazy for arrazoia, bai eta lortu katea agian Oso ondo itzultzeko null. Edo zure programa bera asko egiten ari bada beste gauza, eta ez besterik katea ez get memoria nahikoa arrakasta, agian amaituko da null itzuli du. Baina izan gaitezen zehatzago zer da hori ere. Zer s datu mota bat da, benetan? Char izarra. Beraz bihurtzen da orain zuritu dezakegu kopiak null geruza. Bihurtzen da, nulua da - Bai, jakina, bereziak sinboloa. Baina zer gertatzen da benetan? Benetan, null sinbolo bat besterik ez da, guk gizakiak erabili zero adierazten baita. C egileek, eta, beraz, ordenagailu oro har, erabaki zuen duela urte duten, zer jakin behar duzu. Zergatik ez dugu bermatuko ez duen erabiltzailea datu da, inoiz, inoiz, inoiz bye zero gordetzen? Izan ere, nahiz eta nire Adibidez arbitrarioak en aurretik, ez nuen hasi numerazioa zero at byte. Batean hasi nintzen. Banekien jende hori delako munduko erabaki zero erreserbatu inoren RAM gisa byte zerbait berezia. Arrazoia izanik, edonoiz nahi duzun seinalerik zerbait gaizki joan da helbideen aldean, zuk itzuli nulua - Besterik zero gisa ezaguna - eta badakizu ez dagoela da, ez baitago egiaztatzeko datuak helbide zero da, argi eta garbi Akats bat gertatu dela esan nahi du. Eta horregatik konbentzio arabera, dugu, begiratu nulua eta bueltan zerbait Kasu horietan, bat bezala. Beraz, bada, beherantz korritzen dugu orain, hau da, besterik gabe, ondoren, zenbait error egiaztapena, besterik gabe, kasu zerbait gaizki joan [batekin? fidantza?] guztiz eta irten programatik goiz itzuli. Lerro honek orain berridatzi litezke honen ondorioz, eta horrek esan nahi du, eta zer? Ezkerreko aldean, ematen dit beste pertsonaia bat, eta deitu t erakuslea. Zer naiz, t barruko I gordetzeko oinarritutako kode-lerro bat honetan? Kokapena naiz gordetzeko. Zehazki kokalekua Hori izan zen. Hala bada, erabiltzaileak kaixo idatzitako, eta lehen kaixo gertatzen sortu amaitzeko Hemen, ondoren, zenbakia 123 da itzultzea lortu tik joan katea eta gordeko - esan dugun bezala - s. Noiz deklaratzen dut erakuslea beste Karaktereen eta deitu t bat, zer da zenbakia literalki sortu Amaierara joan Istorioa arabera t? Beraz, 123. Beraz, orain bai, teknikoki eta s t dira zehatza seinalatuz memoria zatiak berean. Beraz, orain konturatzen zer egin behar dut frogatzeko programa hau da, akatsak. Lehen erreklamatu dut, eta inprimatu f, capitalizing katea kopia. Orduan, pixka bat egiten dut ERROREA egiaztatzen. Ziurtatu dut. Dezagun ziurtatu kate t hori da Gutxienez luzera zero baino handiagoa da, beraz, ez dago karaktere batzuk ez benetan larriz. Eta, ondoren, hau gogoratzen baliteke Aurreko adibide. Goiko 2 - Zein da ctype.h fitxategia. T-tarte zero ematen dit zero katea t izaera. Eta 2 bereko goiko balioa, eta noski, maiuskulaz bihurtzen da. Beraz, intuizioa, hau nabarmendu line kodea da lehen capitalizing t letra. Baina ez da, capitalizing intuizioa, s gutun lehen. Baina aurretik ari zaren pentsatzen bada, zer naiz Programa hau exekutatu dut ikusteko eta inprimatu bai jatorrizko s, eta deiturikoak kopia, t? Benetan ari dira berdinak izango. Eta zergatik dira joan bera izan behar dute? Biak ari dira to seinalatuz zehazki gauza bera. Beraz, egin dezagun. Egin kopia zero. Ados biltzen ditu. Let kopia zero exekutatu me. Let kaixo antzeko zerbait idatzi dit minuskulaz guztiak eta ondoren sakatu Sartu. Eta hori aldarrikatu jatorrizko s bai dela eta kopia berdin-berdinak dira, hain zuzen ere. Beraz, benetan zer gertatu da hemen? Demagun irudi hau marraztu dit baten istorioa kontatu nahi apur bat modu ezberdin. Zer da benetan gertatzen azpian kanpaia zerbait deklaratzen dut atsegin char Irteeran s, edo kate s, Erakuslea nago lortzean - gertatzen den lau byte izateko CS50 tresnan eta ordenagailu askotan. Eta hau deitzera noa. Eta hau, gaur egun balio ezezagun batzuk. Noiz aldagai bat deklaratzeko duzu, ez baduzu balio bat jarri zeure burua ez dago, nor badaki zer ez. Batzuk ausazko sekuentzia izan liteke tik aurreko exekuzio-bit. Beraz, nire kode-lerro batean, lortu egin dut katea, eta, ondoren, gorde bueltan s balioa kate nolabait - eta, azkenean, atzeko azala, nola lortuko dugu kate lanak, nolabait bideratzen bat array ziurrenik itxura hau atsegin apur bat. H-E-L-L-O, backslash zero. Dezagun hori dela helbide 123 besterik lehenengo koherentzia. Beraz, katea itzultzen, en nabarmendutako lerroa dago, itzultzen du zenbakia, esan 123. Beraz, benetan zer s barruan doa hemen? Beno, benetan zer doa s barruan 123 da. Baina sinceramente, apur bat dut lortzean Helbide hauek guztiek nahastu, hauek arbitrarioak, zenbaki guztiak. 123, 124, 127. Hargatik, benetan errazteko mundu pixka bat. Noiz erakusleak buruz hitz egin dugu, sinceramente, nahi Gurekin gizakiak, nor demontre axola non gauzak memorian dira? Hori erabat arbitrarioak. Nola mendekoak dira da joan askoz ahari erabiltzaileak. Mendekoak dira, noiz egunean da joan programa exekutatu beharko duzu, beharbada, eta zer sarrera erabiltzaileari ematen dizu. Xehetasunak garrantzirik on etxebizitza gara. Hargatik abstraktu kanpoan eta esan, denean, kode-lerro bat exekutatzen baduzu hau atsegin, char izar s bueltan lortzen katea get balioa. Zergatik ez dugu besterik ordez marraztuko duguna mantentzeko erakuslea deituz nahiz bezala da zerbait seinalatuz? Beraz, orain aldarrikatzen dut hori sortu ez da erakusle bat da - kanpaia azpian helbide bat da. Baina besterik ez da, seinalatuz en byte lehen katea izan da itzuli. Orain naiz kodearen bada itzuli hona, zer gertatzen den lerro? Beno, lerro hau nabarmendu, gaur egun ere, Itxuraz, beste bat naiz geratuko aldagai izeneko t. Baina, aldi berean da erakuslea, beraz, joan naiz marrazteko bezala, teoria, zehatza tamaina bera kutxa. Eta hori t deitzera noa. Eta orain joan gara itzuliz gero kodearen berriro, denean s gordetzeko I barruan t, zer naiz, teknikoki t barruan jarriz? Beno, teknikoki, hau kopurua 123 izan zen. Beraz, benetan idazten egon beharko nuke zenbakian dago, 123. Baina dezagun da goi maila. t da, besterik ez bada erakuslea, intuizioa, besterik ez da hori. Hori da, hori da dena izateaz han gordetzen. Beraz, interesgarria azken lerroetan kodea, eta noiz joan benetan dut zero pertsonaia capitalizing t, zer gertatzen da? Beno, t tarte zero orain apuntatzen zer pertsonaia, ustez? To h da seinalatuz. T tarte zero delako - gogoratzen, hau zaharra da sintaxia. t-tarte zero besterik esan t kate bat bada, t parentesi zero esan zero lortzean indarra duen pertsonaia. Beraz, zer esan nahi du benetan dago, array honek joan - eta bai, hau 123 izan daiteke, honetan 124 izan daiteke. Baina hori guztia da erlatiboa, gogoratu. Bakoitzean array bati buruz hitz egiten ari gara buruz hitz egiten ari abantaila erlatiboa indizeak. Eta, beraz, orain ezin dugu suposatuko hori t tarte zero h da. Beraz, bada, goiko 2 deitzen dut, eta zer dela benetan egiten capitalizing letra maiuskulaz H. h minuskulaz du Baina, jakina, zer da? Berean darn katea da seinalatuz. Beraz, hau da, hori gertatzen ari dira kode hau, beraz, oso urrun. Beraz, zer da, orduan inplikazioa? Nola bi arazo horiek konpondu dugu? Nola konparatu benetako kateak dugu? Beno intuizioa, nola litzateke bi alderatuz buruz berdintasunerako benetako kateak? Zer esan nahi du bi galtzen kateak berdinak dira? Argi eta garbi, haien helbideak ez dira memorian, berdin, hori gutxi delako maila ezartzeko xehetasun. Karaktere guztiak ez dira berdinak. Hargatik proposatu zidan, eta utzi niri aurkezteko bertsio bat compare.c de Hemen, beraz, konparazio-1.c. Orain proposatzen dugun oraindik lortu erakuslea izeneko s, eta bertan denda itzultzeko kate get balioa. Egin dezagun gauza bera t. Beraz, kode bat ere ez da ezberdina. Pixka bat gehitu nahi dut gehiago error orain egiaztapena. Beraz, orain ari gara atzera peeling moduko zer kate baten CS50 geruza honetan benetan, gehiago anal izan behar dugu ziur nola egin, ez dugu gehiegi bezalako null balioak baliogabeak dira. Beraz, besterik ez naiz egiaztatu du. Egiten ez bada eta berdintasunaren null t ez du berdinak null, horrek esan nahi du Ados gaude. Parte kateak ez hondatzeko sortu lortzean bai kate horien. Eta, agian, ezin duzu asmatzeko, orain, zer ez CMP STR zentzuzkoa egin? Katea alderatu. Hala bada java programa duzun aurretik, hau da, metodo berdin bezalakoa da katea klasea. Baina duzun dutenek ez programatu aurretik, hau da, besterik gabe, c funtzio bat. Bat etorriko gertatzen da izeneko fitxategi string.h. Hori da, non oso izendatu zuten. Eta konparatzeko katea - Ahaztu dut bere erabilera, baina inoiz ez duela axola. Gogora ekarri ahal izango dugu? man, irabiatu alderatu. Eta hori aterako joan Linux programatzaileak eskuliburua. Eta, ez da sinceramente, apur bat críptica. Baina hemen ikusten dut, hori bai. String.h sartu behar izan dut. Eta hemen dio deskribapena azpian, "The katea cmp konparatzen bi kateak S1 eta S2. "Eta S1 eta S2 itxuraz bi argumentuak pasatu sartu Ez dut gogoratzen zer eraikiak da, baina orain konturatu - eta ikusi ahal izango duzu hau dagoeneko denean man orriak erabiltzen dituzun baduzu dute guztiak - char izar besterik ez da sinonimo kate batekin. Beraz, bi kateak, S1 alderatzen ditu eta S2, eta zenbaki oso bat itzultzen du gutxiago baino handiagoa edo berdina edo zero baino handiagoa S1 aurkitzen badu, hurrenez hurren, izan baino gutxiago edo berdina, edo izan S2 baino handiagoa da. Hori besterik esaten modu oso konplexua duten konparatzeko katea itzultzen zero bi kateak dira intuizioa bada berdin-berdina, pertsonaia egiteko pertsonaia for pertsonaia. Negatiboa bada kopurua itzultzen du s, alfabetikoki, suposatzen da t aurretik etorri. Edo zenbaki positiboa bada itzultzen s ustezko t ondoren etorriko alfabetikoki. Beraz, erraz hau funtzioa, ezin Adibidez, duzu, ordenatzeko bat hitz-sorta osoa? Beraz, honen bertsio berria da, joan naiz Aurrera joan eta compare1 egiteko. Dot barra konparazio bat. Kaixo en dizut idatzi xeheak ere. To kaixo idatzi dut minuskulaz guztiak berriro. Eta, zorionez, gaur egun, konturatuko Gauza bera ondo idatzi dut. Bien bitartean, kaixo en badut idatzi txikiagoa Kasu eta maiuskulaz Kaixo eta alderatu ditu, ondo idatzi dut gauza desberdinak. Ez soilik dira helbideak desberdinak dira, baina alderatzen ari gara pertsonaiak behin eta berriro. Beno, goazen eta konpondu bat beste arazo orain. Let me ireki bertsio bat kopia, orain helbideak Arazo hau honela. Eta hau bat bila joan apur bat konplexuagoa da. Baina, zer arazo buruz pentsatzen badugu konpondu behar da, espero dugu hau izango da: besterik gabe, une batean Garbitu orain. Beraz, lehen lerroan, karaktere Irteeran t, en layman en termino lezake norbaitek proposatu zer lerro hau hemen esan nahi du? Char izar t, zer da hori egiten? Good. Sortu erakuslea batzuk memorian lekua. Eta utzi pixka bat findu me. Deklaratzeko aldagai hori gordeko char batzuk helbide memorian, besterik apur bat gehiago egokia izan behar du. Ados, beraz, orain eskuinaldetik, dut inoiz ikusi ez funtzio horietako bat aurretik, malloc. Baina, zer esan nahi du? Memoria esleipena. Memoria esleipena. Beraz bihurtzen da, orain arte, ez dugu ez dute benetan indartsua izan zuen modu sistema eragilea galdetuz, ematen dit memoria batzuk. Baizik eta, gaur egun dugun funtzioa izeneko malloc horrela, ez da zehazki hori. Nahiz eta hau pixka bat da distrazio oraintxe, nabarituko dela bi parentesi artekoa da zenbaki bat besterik ez da izango. Non galdera Nik idatzitako marka zenbaki bat izan daiteke. Eta zenbaki hori esan nahi du, ematen dit 10 byte. Give me 20 byte. Give me 100 byte. Malloc eta bere onena egingo to galdetu sistema eragilea - Linux, kasu honetan - hey, beren 100 byte RAM eskuragarri dauden? Hala bada, itzultzeko byte horiek niri horietatik helbide itzuli byte horiek, agian? Oso lehen bat. Beraz, hemen ere - eta hori da nagusi C, edonoiz eres en helbideak aurre? Ia beti ari zaren aurre lehen, hala nola, helbidea, ez du axola nola handi bat memoria zatia izateaz ari zaren entregatu atzera, nolabait esateko. Hargatik hemen murgiltzeko. Nola esleitu saiatzen ari naiz asko byte, zehazki? Beno. Katea s luzera - dezagun egiteko adibide bat. S kaixo bada, H-E-L-L-O, zer da katea s luzera, noski? Beraz, bost da. Baina 1 plus bat egiten ari naiz hori, zergatik? Zergatik sei byte nahi dut ordez bost? Null pertsonaia. Ez dut nahi off utzi behar honetan bereziak null pertsonaia. Egin dut Kaixo kopia bat bada, eta delako besterik egin H-E-L-L-O, baina nik ez dut jarri duten izaera berezia, ordenagailua agian ez izan, aukera, barra batek zeron ez niretzat. Eta, beraz, dut irudikatu nahi saiatzean kopia luzera, uste dut 20 karakterekoa da, edo milioi bat karaktere besterik ez dut inoiz gertatuko backslash zero bat hit. Beraz, sei byte gorde behar dugu H-E-L-L-O, backslash zero. Eta, ondoren, hau da, besterik gabe, super anal izan. Demagun ahaztu dut char baten tamaina da. Bere ko byte esaten mantendu dugu. Da normalean. Teorian, zerbait izan zitekeen ezberdinak, Mac bat edo bat desberdinetan PC. Beraz, operadore hau bihurtzen da izeneko sizeof pasatzen duzu dut bada datu-mota baten izena - bezala char edo int, float edo - esango du, dinamikoki, zenbat byte karaktere bat hartzen du, honen bereziki ordenagailuan. Beraz, hau da, besterik gabe, modu eraginkorrean aldiz 1 edo esaten duena bezalakoa aldiz ez du ezer egiten. Baina egiten ari naiz, besterik gabe, super anal izan nahi du, badaezpada karaktere bat desberdina Zure ordenagailuan versus nirea, modu honetan matematika da beti begiratu behar. Azkenik, behera begiratu hemen null dut, beti praktika onak - berriro, edonoiz erakusleak ari gara aurre. Malloc ez bada gai eman byes sei me - hau da, zaila da, baina, kasu - itzultzeko bat berehala. Eta orain, aurrera eta kopiatu katea honela. Eta hau ezaguna da, sintaxia, rol ezberdin bat bada ere. Aurrera joan eta katea lortu dut s luzera eta gorde n. Ondoren, naiz berdin i batetik bestera joateko joan zeron sortu eta n, besteak beste, baino handiagoa edo berdina. Beraz, iterazio bakoitzean, jarri dut Ith s pertsonaia Ith en t izaera. Beraz, zer da benetan azpian gertatzen kanpaia hemen? Beno, bada, adibidez, s - eta hitza H-E-L-L-O dut ondo idatzi eta han backslash zero da. Eta berriro ere, hau seinalatuz hemen s da. Hemen eta orain, t. Eta hau da, orain joanda memoria kopia bat, ezta? Malloc eman dit, oro har, memoria zatia. Ez dakit, hasiera batean, zer kokaleku horietan guztietan. Beraz, hauek bezala, uste dut galdera ikurrak sorta oso bat. Baina laster hasiko naiz zerotik begizta s, t luzera bidez gora parentesi zero eta t tarte 1 - eta hau jarri dut orain goiburu on - t tarte zero eta s tarte zero esan dut izango kopiatzeko joan iteratively hemen h, E-L-L-O. Plus, egin nuen plus duelako 1, backslash zero. Beraz, orain konparazio-1.c kasuan, azkenean, inprimatu dut bada t kapitalizazioa, behar dugu ikusten da hori ez da aldatzen. Dezagun aurrera me orain, eta hori egin. Beraz, copy1. Dot barra copy1. To kaixo, Sartu idatzi dut. Eta orain, nabarituko, kopia bakarra kapitalizatzen da. Benetan daukat, zeren bi memoria zatiak. Zoritxarrez, polit batzuk egin ahal izango duzu txarra eta nahiko arriskutsua gauzak hemen. Let me tira sortu adibide bat hemen, orain, ematen dizkigun gutxi baten adibidea lerro desberdinetan. Beraz, intuizioa hemen, lehen lerroan kode, izar int x, geratuko da izeneko x aldagai bat. Eta zer datu mota da aldagai hori? Zer aldagaia datu mota da? Ez zela cliffhanger du. Datu mota int izarra da. Beraz, zer esan nahi du? x izango da gorde int baten helbidea. Hori bezain erraza da. Y da gordetzeko joan int baten helbidea. Zer hirugarren lerroa kodea du hor? Esleitzean da zenbat byte, seguru asko? Lau. Delako int baten tamaina da Oro har, lau, lau malloc ematen zatia baten helbidea atzera me memoria, zeinen byte lehena gordetzen dira, gaur egun, x. Orain pixka bat mugitzen ari gara, azkar. Star x zer esan nahi du? Helbide horretara joan nahi da, eta zenbakia jarri zer dago? Jarri kopurua 42 ez. Star y esan zer y at da joan jarri eta 13 zenbakia ez. Baina itxaron minutu bat. Zer da eta une honetan? Zer da helbide y gordetzeko? Ez dakigu, ezta? Ez dugu inoiz ere behin erabili zereginaren operadore y inplikatuz. Beraz, y como line bigarren an deklaratu kode batzuk zabor balio handi bat da galdera-marka nolabait esateko. Seinalatu izan daiteke ausaz memoria ezer, eta horrek Oro har, ez da txarra. Beraz, laster hit dugu lerro bezala, star y funtzioak 13 itzultzen du, zerbait gaizki, zerbait oso txarra da to Binky gertatuko. Beraz, zer azkenean joan en ikusi Hemen Binky minutu hau gertatzen edo, beraz begiratu. [Bideo-erreprodukzioa] -Aizu, Binky. Esnatu. Erakuslea pasatzeko garaia da. -Zer da hori? Erakusleak buruz ikasi? Oh, goodie. -Beno, hasteko, gara asmatzen dut erakusleak pare bat behar du. -Ados. Kode hau bideratzen bi erakusleak ezin diren osoko zenbakiak seinalatu. -Ados, bai, bi erakusleak ikusten dut. Baina ez dirudi izango ezer seinalatuz. -Hori da. Hasieran, erakusleak ez ezer seinalatu. Gauzak seinalatu behar dira, deitu pointees, eta horiek ezartzeko sortu da aparteko urratsa. -Oh, eskuinera, eskuinetik. Hori banekien. Pointees dira bereizita. Beraz, nola ez pointee bat esleitu duzu? -Ados. Beno, kode hau bideratzen berria zenbaki oso bat pointee, eta zati honetan ezartzen x nahi du seinalatu. -Aizu, itxura hobea. Beraz, zerbait egin da. -Ados. Dereference dut erakuslea x gordetzeko kopurua 42 bere pointee sartu. Trikimailu hau, nire magia behar dut dereferencing du makila. -Zure dereferencing du makila magikoa? Uh, hori handia. -Horixe kodea itxura. Dut sortu kopurua, eta - -Aizu, begira. Hor doa. Beraz, x honela dereference on bat egiten gezi bere pointee sartzeko. Kasu honetan, 42 gordetzeko han. Hey, saiatu erabiltzen zenbakia gordetzeko Beste erakuslea bitartez 13, y. -Ados. Dut joan Hemen y eta get 13 zenbakia sortu. Eta gero, makila hartu du eta dereferencing bakarrik - Tira! -Oh, aupa. Ez zuen lan. Esan, Binky, ez dut uste y dereferencing ideia ona da, konfiguratzeko pointee duelako aparteko urratsa da. Eta ez dut uste inoiz egin dugu. -Hmm. Puntu ona. -Bai, erakuslea y bideratu dugu. Baina ez dugu inoiz ezarri da to pointee bat seinalatu. -Hmm. Oso observant. -Aizu, bila ari zaren ona dago, Binky. Konpondu ahal izango duzu, beraz, eta puntu x gisa pointee bera? -Bai. Nire makila magikoa erabili dut erakuslea esleitzeko. -Hau da, joan izan nahi du lehen bezala, arazoa? -Ez. Horrek ez du ukitu pointees du. Aldatzen da, besterik gabe, bat erakuslea seinalatzen bestera gauza bera. -Oh, ikusten dut. Orain y x toki berean puntu. Beraz, itxaron. Orain y finkoa da. Pointee ditu. Beraz, makila dastatu ahal izango dituzu berriro dereferencing du 13 baino gehiago bidaltzeko. -Ados. Hemen doa. -Aizu, hori begiratu. Orain y lanak dereferencing. Eta erakusleak dira partekatzen delako ko pointee hori dute, bai ikus 13. -Bai. Partekatuz. Whatever. Beraz, joan switch lekuak dugu orain? -Oh, begira. Ari gara denbora. -Baina - -Just gogoratu hiru erakuslea arauak. Zenbaki bat, oinarrizko egitura da duzula erakuslea. Eta puntu baino gehiagoko da pointee bat. Baina erakuslea eta pointee bereziak dira. Eta komun error da sortu erakuslea da, baina ahaztu emandako pointee bat. Zenbakia bi, erakuslea dereferencing hasten erakuslea, eta honela, bere gezi baino gehiago bere pointee sartzeko. Guztiak ezagutzen dugun bezala, horrek bakarrik lan egiten ez bada pointee bat, eta hori lortzen itzuli da araua zenbaki bat da. Kopurua hiru, erakusle esleipena hartzen ko erakuslea eta aldaketak egiteko puntu erakuslea beste gisa pointee berdinak. Beraz, esleipena egin ondoren, bi erakusleak borondatea berean pointee seinalatu. Batzuetan izeneko partekatzea. Eta hori guztia ez da egin behar da, benetan. Bye bye orain. [END bideo-erreprodukzioa] DAVID MALAN: Beraz erakusleak on gehiago, hurrengo Binky aste on gehiago. Ikusiko dugu astelehenean.