[Musika jotzen] David J. MALAN: Guztiak eskubidea hori CS50 eta aste honetan bost hasiera da. Gaur egun, beraz, zure eserlekua kuxin azpian, ez duzu ezer aurkitu. Baina, batez ere, hauek aurkitu behar duzu, gutxi gure estimua tokenaren lana jarri duzun guztia Hamabost zelairatu da. Kendu, besterik gabe, apur zirkulua an beheko aldean jokatzen hasteko klaseko gainerako. Beraz, gogora ekarri du, edo arazoren bat ezarri ezagutu lau, joan den asteburu honetan, Beste partida bat dakar idatziz. Baina denbora honetan datza bat erabiliz benetako saguaren, ez da testu-interfaze atsegin Hamabost-jokoa izan zen. Eta jokoa dela datza aurretik duzun, duzun edo ez, ikusi hurrengo hau, honen antzeko zerbait pixka bat dirudi. Nire terminal sartu dut GDB hemen leiho batean. Eta aurrera joan eta exekutatu dut langileen irtenbidea, eta horrek dezakezu sarbidea eguneratzea 50 exekutatzen ondoren, ohikoa den bezala. Baina jarri txiki bat sartu dut sekretu moduan, apur bat Pazko arrautza, izenekoak Jainkoak modua, arabera Jainkoaren jarriz argv1 batean. Eta nire norabide jarraitu nahi dut, it exekutatzen nire egin Arazo direktorioa ezarri. Beraz, orain bertsio bat ikusiko duzu Breakout jokoa da. Izan ere, hau ez da esku-modua da. Beraz, benetan da - wowed izan arren, baliteke - nahiko erraza Jainkoaren modua ezartzeko en Breakout, hamabost Game ez bezala, horietatik batzuk jorratu izana hacker ediziorako. Breakout en Jainkoa nahikoa da moduan, besterik gabe, zer, pala duen intuizioa? Just egin berdina edozein da horizontalean baloia da. Eta beti bezala, hau lockstep en baloia mugitzen Joko hau izango inoiz ez, inoiz ez, inoiz galdu baloia eta aldi bakoitzean irabaziko dituzu. Baina aste honetan hacker edizioan ez bakarrik Jainkoaren modua baino gehiago. Bada beste ezaugarri multzo bat da. Horien artean, laserrak. Beraz, benetan bazara pazientziarik duzu behera filmatzen adreilu has daiteke eta beste batzuk. Eta nahi dutenentzat gustatuko litzaidake for neurtzeko estandar versus hacker edizioa, ikusten dut aste honetan duten hacker edizioa nahita da gehixeago doable, esateko, Jainkoaren baino Modu hamabost Game izan zen. Hala bada tarte bat ari zaren, eta bila batzuk osagarriak fun bila zabiltzan ezaugarri do interes gero murgiltzeko. Orain, ia-ia, let me seinalatu Gauza bat atera ere bai. GDB, horietatik batzuk, agian, ez dute oraindik ukitu pertsonalki, hau da, fina. Baina orain, benetan denbora erabiltzen eskuratzeko honetan eroso eta tresna honekin zure bizitza delako egingo askoz errazagoa da, benetan. Rob en GDB pare bat hitzaldia bakoitzeko Duela aste, gogoratzen GDB araztailea hori da. Tresna bat ematen dizu exekutatu da zure programa exekutatu, baina urratsez urrats, lerro ditu lerro, beraz, Poke inguruan dezakezu, beraz, gauzak gertatzen ari dela ikusten duzu, beraz, dela inprimatu ahal izango duzu aldagaien balioak. Labur esanda, ematen du, beraz, askoz gehiago printDef baino potentzia du. Orain Admittedly, interfazea nahiko urrutira. Zuri-beltza eta testu-interfazea gehienak. Komandoak, eta hauek oso gogorra lehenengo mailan gogoratu. Baina, nahiz eta erdi hartu duzu agian Ordu bat, ordu bat, upfront hori jarri denbora inbertsioa egitea, konfiantza me. Zalantzarik gabe, seihilekoa amaitu aurretik gorde egingo da magnitude bat duzu gehiago hori baino denbora. Beraz, goiz aste dive sartu en Eta Breakout dagokionez, dakizu Horretarako, hain luzea izan duzun bezala, banaketa-kodea edo zure kodea Zure direktorioa Pst4 aurrerapena ere. Gdb ezagutzen duzula exekutatu daiteke. / Breakout. Hau da ireki joan honen antzeko leiho bat. Demagun neure burua ematen dit gehiago terminal-leiho batean. Eta gero, zer aurrera noa eta ez, ez da, besterik gabe exekutatu. Lehenengo ezarri break puntu bat dut berreskuratzeko, horri esker, pausatu behar duzu jakin bat leku exekuzioa. Just gauzak sinpleak joan naiz mantentzeko lerro batean apurtu besterik idatzita zenbaki bat. Demagun benetan me berriro ireki leiho hau da bat delako txiki txiki bat dago. Beraz, zer naiz orain, hemen egingo da ireki nuen nire terminal leihoan. Tira, ez gara joan. Beraz, orain atzera joan nintzen dropbox, Pst4 eta exekutatu gdb. / breakout sartu, nabarituko Ezarri bat apurtu dut lerro bat puntu atseden. Eta orain, joan naiz Animatu eta mota exekutatu. Eta noiz egin nuen, ezer ez nabarituko badirudi gertatuko. Badira pop up ez. Ez grafikoa gabe Erabiltzaile interfaze oraindik. Baina hori ulergarria naiz dudalako hitzez hitz, lerro bat nire programa batean. Eta nabarituko dudan azkar birbidaliko, zehazki, gaur egun, 62, guztiak ere fitxategi honen goialdean apurtu da iruzkinak eta konstanteak bezalako gauzak eta oraingoz gauza izanarren. Beraz, orain nago nagusiaren barruan dut, , badirudi line 62. Eta hori banaketa kodea, abisuaren. Ireki dut hau galtzen joan da, era berean, nire tanta kutxa direktorioa Pst4 alegia, breakout.c sartu. Eta joan I behera bada eta behera eta behera, eta utzi aurrera ni eta piztu nire lerro-zenbakiak. Zer ikusi dut, gero korrituko dut linea 62, hain zuzen lerroan duten pausatu dugu gainean. Lerro hau hemen, eta, beraz, 62 da Non izango buruz ari gara. Beraz, orain GDB ere, aurrerago joan nintzen gero, eta idatzi orain hurrengo, sartu da joan lerroa exekutatu. Eta voila, ditugu izenekoak g leihoa. Zer GWindow bat ezagutzen baduzu da, ez kezkatu. Zehaztutako aurkeztuko dizkizu nahi du, ongi gidatua bideo bat spec barneratua. Baina orain egin dezagun hau pixka bat gehiago interesgarria. Let leiho hau mugitu me baino gehiago alde pixka bat. Let leihoa dit apur bat handiagoa da, beraz, gehiago ikusten dut. Eta orain, goazen aurrera me egin eta hurrengo berriro. Eta ez dira nire adreiluz. Idatzi dut hurrengo berriro Orain, baloia ikusten dut. Eta idatzi dut hurrengo berriz ere bada orain, pala ikusten dut. Eta zorionez gedit hau ez da benetan me erakutsiz lankideen guztia nahi dut. Baina orain ez dut hurrengo berriz ere bada, hurrengo berriro, besterik ez naiz aldagai batzuk geratuko. Eta edozein bat inprimatu ahal izango dut mutil hauek daudelarik. Inprimatu adreilu, grabatuak bizitza. Eta, orain, jarraituko dut egin bada ondoan, konturatu egingo dudala izan begizta horren barruan. Baina kodea da exekutatu joan zehazki dut espero. Beraz, funtzio honetan hit I, itxaron Klik eta, egin da joan hori literalki da. Beraz, galdu egin kontrol zirudien dut programaren bidez. GDB ez da me emanez gonbita bat. Baina ez kezkatu. Nire jokoa joan, egin klik nonbait. Eta voila, orain hasten line 86 da. Beraz, berriro ere, eskerga da, azken finean, arazketa arazoak. Dezakezu literalki delako zehar Zure kodea, inprimatu eta gauza asko, askoz gehiago. Baina oraingoz, tresna horiek bakarrik, lortu behar duzu nahiko urrun. Beraz, ari gara, noski, itxura bat hartu grafikoak, orain, bat-batean egiten. Eta orain, gure mundu txiki bat lortzen interesgarriena. Eta, badakizu, agian, batzuk bideoak sarean dugula horiek praka duzula ikusten ari dira arazo multzo baten zati gisa. Dituzte, eta nik filmatu dira, nahita, zuri baten atzean aurka. Eta horietako batzuk irakaskuntza Fellows testu batzuk marrazten buruzko pantaila hori gainjarriko Horietako aldean. Baina noski, hau ez da guztia Mundu errealean interesgarria. Hau besterik batekin aretoan hitzaldi bat da big pantaila zuri eta atzean. Eta gure ekoizpen harrigarria taldea sort egiten duen guztia itxura ederra out by Izan mozketaren ondoren edo ezer overlaying edo egiten dugu nahi ez. Orain aste honetan motibatzeko eta Benetan, non joan ahal izango duzu, azken finean, informatika batera. Ez bakarrik arazoa ondoren lau. Baina, jakina, beste edo oso baten ondoren curriculum oso harrigarria da zer ahal duzun egin egun hauetan terminoetan bereziki grafikoak. Batzuk ikusi dezake hau online inguruan nagusiak. Baina erakutsiko nuela pentsatu nuen, eta besterik gabe, minutu pare, zer ohi bat ordenagailu teknologia eta zer CGI, infografia egun hauetan egin ahal abesti ezagun batekin eta, agian, pelikula. [MUSIKA - LANA DEL Ray, "Gazte eta eder] HIZLARIA: 1 besterik pixka bat da harrigarria da, agian, besterik gabe, nola nonahiko - [Txaloak] HIZLARIA 1: kokapena besterik ez dut. Baina benetan harrigarria da, uste dut, besterik ez nola nonahiko softwarea eta kode eta Tresna hau atsegin benetan. Beraz, norabidea zaporea da eta bertan joan ahal izango duzu. Oh, ez gehiago Appliance gaur. Beno, benetan tragikoa erritmoaren da Emandako puntu saiatu besterik ez dut egin. Eskubidea, eta, beraz dezagun abiarazteko Fusio berriro. Gogorarazi geroago. Guztiak eskubidea dute, eta lortu beharko duzu beti bat alde batera jo zenuen email bat lortu bada horrela nabarituko. Eskubidea, eta, beraz, azken astean gogoratzen duten hasi da atzera-azal hau dugu geroago kate bat bezala ezagutzen da. katea datu-mota hori gogorarazten CS50 liburutegian izendatu zuten. Eta prestakuntza gurpilak zati da egingo dela, orain hasiko off hartzeko. Erabilgarria kontzeptua hasieratik izan zen. Baina orain iritsi da joan interesgarri eta gehiago indartsu benetan ikusten kanpaia azpian, kate bat da, besterik gabe, zer esan genuen? Bai, beraz, llamado char * da. * Eta bertan adierazten du ez dagoela da Helbide mota batzuk parte hartzen dute. Eta beraz, char * esan duzun esan besterik ez duzu aldagai baten datu mota bat da, erakuslea da orain. Izan ere, ez dagoela izarra dago besterik esan nahi du zarela geratuko izenekoak erakuslea. Eta erakuslea hori itxuraz joan gordetzeko, eta helbidea noski, karaktere bat. Orain, zergatik ez du zentzurik hau? Beno, zer kate bat da kanpaia azpian? Beno, denbora pixka bat gara esaten kanpaia azpian duen katea da besterik h-e-l-l-o, adibidez. Baina honi buruz hitz egin dugu , funtsean, array bat izanik. Sorta bat, eta, ondoren, begiratu apur bat honetan bezala, horietako bakoitzean hartzen mokadu bat. Eta gero, esan dugu ez dagoela da zerbait berezia atzera hemen, backslash 0, edo nulua amaiera. Denbora honetan guztian, beraz, hemen du kate bat izan da. Baina benetan, kate bat da benetan helbide bat. Helbideak eta, ikusiko dugun bezala, ohi dira 0x dute aurrizki konbentzio arabera. Zer esan nahi du 0x adierazteko? Norbaitek ezagutzen? Beraz, esan nahi du, besterik ez da hamaseitarrean. Beraz, gogora ekarri, duzu, agian, benetan, pst tik 1, nire ustez, bero-up batean galdera benetan galdetu gain idazkera hamaseitarra bitarra eta hamartarra da. Eta motibazioa hemen da hamaseitarra 16 daukazula at zure eskura zenbakiak. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, eta jarraian batek, b, c, d, e, f. Eta zenbatzen duzu horiek guztiak galtzen, 16 guztira, lortuko duzu. Beraz, honetan kontraste batekin dago hamartar, non 10 dugu zenbakiak, bederatzi bidez, 0. Bitarra da kontrastea da non besterik ez dugu, 0 eta 1. Baina, egun besterik dezakezu amaieran irudikatzeko zenbakiek berdinak, baina zertxobait ezberdinean. Eta hamaseitarrean ohikoa delako bihurtzen da - eta hori ikusiko dugu geroago ikastaroan - denean ere iritsi web testuinguruaren programazio HTML eta kolore-kodeak, hamaseitarra atsegina da. Digitu bakoitza delako, bihurtzen da, adierazten lau bit ezin hobeto. Beraz, lerro mota bat besterik ez da sortu nicely dugu azkenean gisa ikusten. Beraz, hori izango Ox123 edo zerbait horrela, adierazten helbide 123 nonbait nire barruan ordenagailuaren memoria. Baina, noski, arazo batzuk sortzen delako azpiko honetan ezartzeko. Eta gogoratzen dut, hartu duten labankada bat hau bezalako funtzio bat ezartzeko - alderatu etenaren 0 dot c azken astean, hori nahiz eta zen bezala begiratu da eskubidea, ez, besterik gabe, ezin konparatu bi kateak behar bezala. Bota dut kanpoan nagusia, eta bota dut kanpoan iruzkinak besterik buruzko ikuspegia kodea duten interes hemen. Eta gorri hura da, akatsak dituelako. Zer arrazoi dela? Beno, goiko ez denean deklaratu dut Kate bat, zer zen benetan gertatzen kanpaia azpian? Beno, let me baino gehiago joan da, proiektatuko hemen eta marraztu duten. Beraz, deklaratu nuen, berriro ere, katea s GetString. Beraz, aurrera joan behar dut orain eta marraztu s benetan da. Plaza bat izango da hemen da joan. Eta aldarrikatzen dut duten 32 bit da. Gutxienez da normalean, gutxienez CS50 an ordenagailu asko-tresna. It s deitzera noa. Baina orain dela gogorarazten dugu izeneko GetString. Beraz GetString itzultzen, jakina, kate bat. H-e-l-l o-motak Erabiltzaileak sartu kaixo katea itzultzen. Eta kate hori, besterik gabe, esan dugun bezala, eta ondorioz sortu nonbait, zure ordenagailuaren memorian amaieran 0 barra batekin. Hau marraztu dut array bezala - edo karaktere bloke Alboko - benetan dela. Eta orain, zer da GetString benetan itzuli? Zein izan dira GetString itzuli denbora hori guztia? Beno, esaten dugu aste hauetan, aldez aurretik, kate bat itzultzen du. Baina, teknikoki, zer ez Bueltan GetString itxuraz? Ikusleak: helbide bat. HIZLARIA: 1 helbide bat. Zehazki helbide itzultzen du oso lehen ziztadak, edozein da. Mantentzea besterik ez dut bat, bi, hiru erabiliz da, komenigarria delako. Lehenengo helbidea itzultzen du katean pertsonaia. Eta aurreko astean esan genuen hori dela nahikoa. Ezin dugu beti irudikatu non katea amaieran zerbait gainean, errepikatzean agian, batekin begizta edo berriz, begizta edo antzeko zerbait dela, bakarrik "backslash 0" bilatzen, bereziak Sentinel pertsonaia. Eta, ondoren, ezagutzen dugun kate hori gertatzen luzera izango - kasu honetan - bost. Beraz, teknikoki zer GetString du da Ox123 itzultzen du kasu honetan. Eta teknikoki, gero, zer gertatzen da gorde dugu, s barruan, Ox123. Egunaren bukaeran, nahiz eta hau, nahiz eta kontzeptu berria, erakusle da, dute Oraindik besterik aldagai. Baina bit gordetzeko gertatuko direla kolektiboki irudikatzeko helbide bat. Beraz, teknikoki guztiak dira lortzen s gordetzen dira Ox123 da. Baina gizakiak gara - gaur egun, besteak beste, aurrera - benetan ez, arreta normalean gertatzen, zer da benetako helbidea da memoria zati batzuk. Besterik xehetasun-maila txikia da izan intelektualki interesgarri. Beraz, hau desegin noa. Eta horren ordez, gero eta maila altua, besterik esan denean erakusleak buruz ari gara hitz egiten duten Besterik gehiago marraztu dut lagungarria gezi hori transmititzen du ideia bera eta laburpenak kanpoan zer benetako Particulars azpiko helbidea ez da. Orain atzera joan gara kodea, zer gertatu da azken astean dugu katea t bada berdinen GetString? Beno, nik berriro ere bada, kaixo mota Une honetan, lortu dut memoria zatia beste. h-e-l-l-o backslash 0. Baina deitu nuen GetString delako bigarren aldiz - eta hau ezagutzen dut begira tik iturburu kodea GetString - nahiz da koinzidentzia kaixo izan zen, nahiz eta bitan idatzitako, GetString ez da optimizatu saiatzeko joan eta azkarra izan. Besterik ez da, beste zatia iritsi ordenagailua, hau da, memoria helbide batean izango da. Dezagun inori esan 456. Eta, orduan, zer da joan itzuliko da? 456 itzuliko da joan gordetzeko eta bertan t. Beraz, zer da benetan gertatzen, buruzko ezkerraldean zatia da beste bat izan dut memoria, 32 bit normalean. Eta hor dago Ox456 joan behar. Baina, berriro ere, ez naiz hauetan interesa bereziki, zenbakiak jada. Besterik ez naiz abstraktuan joan marraztu gezi baten ondorioz. Beraz, hau da, orain berria azalpen bat. Baina, aldi berean zehatza ideia hori da izan da denbora honetan guztian gertatzen. Eta, beraz, arrazoia eta, ondoren, lehen honetan Konparatu beste bertsio zen buggy azken astean, zergatik da? Denean berdin berdin s baduzu t zer zara benetan kanpaia azpian alderatuz? Helbideak ari zara alderatuz. Eta besterik gabe, intuizioa, argi eta garbi, Ox123 ez da berdina Ox456 joan. Zenbaki horiek, bit horiek besterik ez dira desberdinak. Eta, beraz, koherentziaz, azken astean esan hainbat gauza idatzi duzu, nahiz eta hitzak izan ziren, hitzez hitz berdinak. Beraz, hau konpondu dugu. Layman en dagokionez, zer izan zen konpontzen da? Ikusleak: Erabili funtzio bat. HIZLARIA 1: Erabili funtzio bat. Ko edo parte hartzen ari dira, zalantzarik gabe, baina funtzio bat, zer egin? Ikusleak: kateak konparatzeko. HIZLARIA: 1 kateak konparatzeko. Beraz, hemen funtsezko arazoa zen zela besterik ez dut kontuan hartu kateak kalitatea izango definitu haien helbideak konparazioa. Eta, jakina, hori besterik muda orain behin zer gertatzen den ulertu kanpaia azpian. Benetan alderatu kateak ikusi bada Horrela, giza bat berdinak dira bi kateak berdinak kontuan hartu litzateke alderatu pertsonaia behar dugu pertsonaia for pertsonaia. Orain egin nezakeen hau oso tediously. Baina familiarly, gara begizta batek erabiltzen du. Eta bakarrik alderatu s tarte t tarte i aurka i. s tarte i gehi 1 t tarte aurka i plus 1, eta abar, barruan begizta bat. Eta lekuen dut edozein bi karaktere bada datoz, edo konturatzen naiz ooh hori bada, s t baino laburragoa edo luzeagoa t baino Berehala esan dezaket faltsuak, Oraindik ez dira berdinak. Baina, s eta t bidez dut bada, eta esan berean, bera, bera, bera, berean, amaiera kateak bai, esan dezaket Egia da, berdinak dira. Beno, zorionez, urte norbait idatzi zuen Gurekin kodea duten. Eta hori StrComp deitu dute katea alderatu ditu. Eta nahiz eta pixka kontagailu bat da intuitiboa, StrComp itzultzen 0 horiek galtzen bi kateak, s eta t berdinak dira. Baina balio negatiboa itzultzen du s bada beharko t alfabetikoki aurretik etorri edo balio positibo behar bada etorri t alfabetikoki ondoren. Beraz, nahi izanez gero, inoiz zerbait ordenatzeko, bihurtzen da StrComp hori erabilgarria da. Ez baitu esan bai edo ez, berdin edo ez. Dituzu ordenatzen zentzua gustatzen hiztegi bat agian. StrComp beraz, s koma t berdin funtzioak 0 itzultzen du esan nahi kateak dira benetan berdinak. Duenak idatzi zuen funtzio hori delako urte zentzuzkoa erabiltzen begizta bat egiteko edo, aldiz, begizta edo horrelako zerbait karaktere baino gehiago integratzeko berriro eta behin eta berriro. Baina bi arazo sortu hemen. Hau izan zen copy0.c. Eta gorriz bi da flawed delako. Eta zer egiten dugu hemen? Beno, lehenengo GetString deitu nuen. Eta s balioa bueltan gordetzen dut. Beraz, hori da antzeko moduan Argazkian goiko zati honetan. Baina, zer dator ondoren? Beno, goazen aurrera nau eta kentzeko hau osoan mordo bat. Denboran atzera egingo dugu, non dugu izan da, hau da, orain koherente batera lerro bat han. I egiaztatu. S bada berdin berdin 0. Orain, azkar bat albo ohar, noiz baliteke GetString 0 itzultzeko? Ez dago behar adina memoria. Eskuin? Arraroa hori gertatuko da, Zalantzarik gabe, ordenagailu bat da an got megs ehunka edo are RAM kontzertuak. Baina, nola teorian, itzultzeko 0, batez ere Erabiltzaileak ez du elkarlanean aritzeko. Ez duzu, modu ez bezala asmoa idatzitako ezer eta trikimailu Itzuli sartu GetString 0 eraginkortasunez. Beraz, hori egiaztatzeko da joan. Duzun edozein galtzen hasi delako lortzeko, dagoeneko, segmentazio hutsegite - izan ere, ziurrenik, iturria izan da frustrazio batzuk - horiek dira ia beti emaitza memoria lotutako akats. Nolabait sortu messed duzun aldean bat erakuslea, nahiz eta ez duzu konturatzen ez zen erakuslea. Beraz, eragindakoak izan dezakezu segmentazio aste bat erabiliz hasieran hutsegite baten antzeko zerbait begizta edo pixka bat begizta eta array bat Urrunegi joan array batzuk mugak iragan izendatu dituzu bi aste hasi bereziki. Egin duzu, agian, nahiz eta arazo batean ezarri Breakout lau. Nahiz eta ziurrenik ez du ikusi edozein banaketa kodea Izarren Breakout, bihurtzen da GRect duten eta GOval eta beste hainbat gauza, horiek dira benetan erakusleak kanpaia azpian. Baina Stanford, gu bezala, larrua moduko duten xehetasun gutxienez liburutegiak for helburuekin, askoz dugun bezala katea eta char * da. Baina GRect eta GOval eta horiek guztiak gauzak you guys diren edo erabil aste honetan daude, azken finean, memoria helbideak. Ez besterik ez duzu ezagutzen. Beraz, ez da harritzekoa, orduan, agian, batzuk baino gehiago bidaia agian duzula segmentazio hutsegite. Baina zer da interesgarria hemen, orain, 0 dugu dugu egiaztatu ondoren katea t lortzen s. Beno, let me t deklaratzen. Marrazteko, plaza bat egingo dut, 32 bit, deitu t. Eta, ondoren, egin dut lortzen s. Beno, zer esan nahi du? Beno, pixka bat zaila dela uste Irudia buruz jakintsua. Baina dezagun pentsatu zer x barruan da? Zer da literalki, aldagai honen barruan? Ox123 balioa du. Beraz, esan katea t lortzen s, besterik literalki esan hartzeko kopurua s, eta horrek Ox123 da eta Ox123 jarri. Edo pictorially, badut mota abstraktuak kanpoan xehetasun horretako ditu hitzez hitz egiten eragina hau baita. Beraz, orain, uste itzuli zenean, azken astean aurretik kapitalista T. I dugu egin parentesi T 0. Beno, T-tarte 0, nahiz bat da erakuslea da, nahiz eta gisa tratatzeko dezakezu array bat da, plaza bat tarte idazkera. Beraz, non da T-tarte 0? Beno, h da. Eta beraz, kode-lerro hori erabili dugu, bi goiko, zein c type.h hori da goiburu-fitxategia da, non da oso izendatu zuten. H. hau zaren capitalizing Baina noski, hori berean zehatza h hori da s barruan, nolabait esateko. Eta, beraz, orain, aldatu egin duzu, edo kapitalizatutako bai jatorrizko eta izenekoak kopia. Zuen duzulako ez egin kopia giza modu bat izan nahi luke. Beraz, zer izan zen fix hemen, copy1.c azken astean? Funtzioak, eta, beraz, benetan izan dugu kopiatzeko katea. Eta, batez ere, zer egin behar dugu egin ahal izateko kate kopiatzeko? Beno, bertsio hau berde hemen nago da nahiko maila baxua egingo. Baina, egia esan, funtzio honekin ezin dira laguntzeko. Baina oinarrizko bat, eta gehien familiar bat, gutxienez, izango da laster digu ezagunak, hau da - lehenengo on-line bat, beraz, berdez kode orain. Rewrote dut s * karaktere gisa. Ez funtzionala ez aldea dago. Bota dut kanpoan CS50 liburutegia eta It dut deituz, zer da char * bat. Orain, dot, dot, dot, han izan ziren zenbait errore egiaztapena ez da hori interesgarri buruz hitz egiteko berriro. Beraz, orain t izendatu. Handiegia da char * bat. Beraz, apur bat karratu marraztu dut aurretik bezalako pantaila. Baina eskuin aldean, malloc, da memoria esleitu esan genuen. Beraz, memoria esleitu pusketa batzuk. Eta zenbat byte egiten dugu benetan nahi esleitu, ez dirudi? Beno, s luzera katea. Hala bada kaixo esan da bost izango da. Esan h-e-l-l-o dugu. Bost byte beraz. Baina gero plus 1, 1, zergatik? 0 pertsonaia. Ez badugu utzi gela lasaia honetan dugun agian nahi gabe sortu egoeraren bat non katea da h-e-l-l-o. Eta, ondoren, hurrengo denbora GetString da deitu eta idatzi dut, adibidez, David, D-a-v-i-d, ordenagailua joan Hori da benetan pentsatzea h-e-l-l-o-d-bat-v-i-d ez delako ez hitz horiek artean hausteko. Beraz, break behar dugu. Beraz, ez dugu nahi, bost. Sei byte nahi dugu. Eta byte diot. Baina denbora Karaktereen tamaina da. Teknikoki karaktere ia beti byte bakar bat. Baina gure kodea eramangarri egiteko, beraz, hitz egiteko eta horrela lan egiten du ordenagailu desberdinetan nahiz eta agian bada izan zertxobait azpian ezberdinak kanpaia, eta oro noa esan Karaktereen tamaina, beraz, nire kodea du beti funtzionatzen. Eta ez dut besterik konpilatu berritzea nire ordenagailu delako edo erabili beste plataforma batzuetan. Beraz dut 6 aldiz tamaina karaktere bat, eta hori gertatzen 1 izan behar. Beraz, bide malloc zezakeen ematen dit sei byte. Zer da benetan hori egiten? Beno, goazen atzera jaurti me denbora hemen non daude istorioa dugu. Beraz, bada, atzera joan naiz hemen, deklaratu dut izeneko t char * bat. Nik orain izeneko sei byte for malloc. Eta orain, horiek sei marraztu dut besterik array lehenago bezala byte. Baina, egia esan, ez dakit zer array honen barruan. Memoria esleitu bada bihurtzen da hori ezin duzu fidatzen ez dagoela da, zenbait balioa ez da ezaguna. It zitekeen zerbait erabilitako bestela, beste funtzio batzuk, beste batzuk kode lerro idatzi duzu. Beraz, oro har dugu deitu zabor horiek balioak eta horiek marrazteko, beharbada, gisa galdera ikurrak, besterik adierazi dugun ez dakit zer da benetan bertan. Eta hori big deal ez da hain luzea dugu smart nahikoa dira horiek gainidatzi zabor zenbakien balioak edo karakteretan buruz dugun zaintzeko. Beraz, kasu honetan ere, Zer egin behar dut? Beno, nire lerro kodea ondoan, lau izan dut. INT 0 get i, n lortuko katea s luzera. Beraz, begizta ezaguna da. Baino txikiagoa edo berdina da n I, ohi da, batez ere. Baina oraingoan nahita da. +, Eta, ondoren, I + I, besterik gabe, egin t tarte i lortzen s. Nire irudi honen itxura duelako at Une honetan, t batean gordetzen da memoria ausazko zatia duen helbidea diren balioak dira generoa. Baina berehala egin dudan bezala t tarte 0 jartzen dit hemen. Eta zer amaitzen ohitu marraztuta dago? Amaituko dugu h jarriz. Hori delako zer s tarte 0 da. Eta, ondoren, gauza bera egiteko e, eta l, eta l, eta o. n, zergatik joan nintzen bidez n bera? 0 pertsonaia delako. Beraz, argi izan behar du, eta, ondoren, badut benetan ezabatuko edozein dela ere zabor horiek balioak dira eta, ondoren, benetan marraztu en Zer espero dut, hori s tarte 1, 2, 3, 4, plus hori amaierako pertsonaia berriak. Eta, beraz, orain dot iraganeko jarraitu dugu, bada, dot, lotura zuzena bertsioan dot eta larriz t tarte 0 nuke, la noski, izan capitalizing besterik honetan Guy hemen, zein kontzeptualki, izan da, azken finean, helburua. Beraz, hori da erakuslea da. Eta eman duzu erabili astez Gaur egun, kateak testuinguruan. Baina kanpaia azpian Oraindik dute apur bat konplexuagoa da. Baina haiei buruzko bazaude honetan piktoriko Inprimaki I proposatzen ari dira ziurrenik ez dute beldurgarriak duten guztiak agian, lehen, lehen begiratuan, badirudi, bereziki, berriak, besteak beste, sintaxia erabiliz. Erakusleak buruzko edozein galdera, kateak, edo karakteretan? Bai? Publikoa: Ezin duzu atzera to [INAUDIBLE] da? HIZLARIA: 1 ziur. Ikusleak: Beraz, nola zure azken etorriko lerro, ez duzu bat * t line eta lerroan s * bat? Ez da erreferentzia duzu - HIZLARIA: 1 Ah, benetan ona galdera bat. Zergatik ez da * t eta * s bat behar dut? Labur-labur, azken astean, gure bezalakoa delako aldatzeko funtzioa, esan nuen denean dituzu erakuslea bitartekoak arabera horrek ez joan egin dugun bezala, fisikoki etapa izan zen benetan erabili star operadorea. Bihurtzen da, plaza-tarte hori idazkera da, zer deitu sintaktikoa dugu azukrea, besterik sexy modu bat da bere takigrafia idazkera esateko zehazki zer deskribatzen ari zaren. Baina apur bat gehiago intuitiboa da. Eta egiteko arriskua dagoen honetan, badirudi gehiago konplexua behar baino izan, benetan zer gertatzen ari da hemen honako hau da: - Diot * t esan nahi izanez gero, joan helbidea t gordetzen dira. Beraz, literalki, t bada gordetzeko h horren helbidea hasiera batean, * t bitarteko joan hemen. Orain, zer t tarte 0 esan nahi du? Zehatza gauza bera. Besterik ez da apur bat gehiago Erabiltzaileak lagunarteko idazten. Baina ez dut egin oraindik. Ezin dut besterik esateko * t lortzen * s. Zer egingo dut gero egiten delako? Jarriz izango nuke h, h, h, h, h Gauza osoan zehar. Eskuin? * T delako da, t-en helbide joan. Baina barruan gaude begizta baten. Eta zer balio naiz incrementing, jakina, iterazio bakoitzean? i. Baina, ez, aukera bat da hemen, ezta? Nahiz eta hau sentitzen da lortzean bezalako pixka bat sofistikatuagoa plaza-tarte idazkera baino denbora pixka bat erabiltzen dugu - nire h aldaketa desegin me han - hala ere, hau da, orain apur bat lortzeko fancier, oinarrizko ideia, bada, * t esan nahi du, eta hemen, * t besterik ez da t-en helbide joan. Baina zer helbidea izan zen t? Zenbakia erabiliz mantendu dugu? Ox456 bezala, dezagun atzera ekarri duten besterik gabe, eztabaida mesedetan. Beno, nahi dut, e batean lortu bada, t katea, nahi dut joan, funtsean, 456. Edo, hobeto esanda, 457. Behar dut bat gehitzeko. Baina hori egin ahal izango dut, ezta? T, nahiz eta marrazki delako mantendu dut gezi bat bezala, gaur egun ere, oso bat besterik ez zenbakia, Ox456. Eta gehitu dut bat dagoela, edo gehiago oro har, gehitu dut dagoela I can benetan, zehazki non eskuratu nahi dut. Beraz, ez dut hori izanez gero - eta hau da, zer egun erakuslea aritmetika - Lerro hau ezabatu ahal dut. Zein da, sinceramente, argiagoa eta uste dut apur bat gehiago lagungarri irakurtzeko. Baina hau ez da zuzena gutxiago. Kode-lerro hau gaur egun erabiltzen ari da erakuslea aritmetika. Joan dela esaten honako helbide - edozein dela t hasiera da, eta horrek t gehi i, eta hori da, hasiera batean, 0 da, eta hori handia da. T hori hasieran esan nahi duelako plus 1, gehi 2, gehi 3, eta abar. Eta s-rekin akordio bera. Beraz sintaktiko honetan azukrea. Baina ulertzeko zer ari da benetan gertatzen kanpaia azpian, argudiatu nuke, da, benetan erabilgarria eta berez. Esan nahi du, gaur egun, ez delako ez da askoz gehiago magia gertatzen kanpaia azpian. Ez dira askoz gehiago izango da geruza ezin dugun zuritu zuretzat itzuli. Hau da, c. Eta hau da programazioa. Benetan ona galdera. Ondo da, beraz, akatsak izan zela programaren aurreko nengokion. swap zen flawed. Lan egin zuen, badirudi bada. Gogora ekartzea besterik ez da esnea gustatzen eta laranja zukua - dudan hasi gaurko manifestazio edateko. Beraz, laranja zukua eta gisa esnea, eduki bat erabili genuen aldi baterako aldakorra, tmp, egiteko aldi baterako, beraz, ondoren, izan dugu aldatu bere balioa, eta gero eguneratu b. Baina funtzio hau, esan dugu, edo honen programaren funtzio hau zen: idatzia izan zen, oker eta flawed, zergatik? Bai? Ikusleak: [INAUDIBLE]. HIZLARIA: 1 Zehazki, noiz swap deitu - edo, oro har, duzunean deitu gehien funtzio - funtzioa duten argudioak badira primitiboak, nolabait esateko, eta ints karakteretan eta bikoitzak eta karroza, gauzak egin gabe ko, kopia bat ari zaren pasatzen argumentua. Beraz, bada, x zen eta 1 y 2 izan zen, bat joan 1 izan behar da, eta b 2 izango da. Baina beste zatiek izateko ari dira joan bit zatiak desberdinak du memoria gertatuko dela gordetzeko behar berdin-berdin balio. Beraz, kode hau da super perfektua eta b trukea ere. Etan aldaketa ez da ona - - Azken astean adibide x eta y. Berriro, dutelako Oraindik okerreko eremua. Orain, nola konpontzen joango gara? Funtzioa egin behar izan dugu uglier begiratu apur bat. Baina, berriro ere, kontuan hartu zer honek esan nahi du, besterik gabe. Eta egia esan, let me, koherentzia, aldatzen gauza ez da, beraz, berdin- zer egin dugu. Aipatu dut azken astean bezala, ez du axola non doan. Izan ere, normalean, jarri nahi baduzu star ondoan aldagai izena. Baina apur bat errazagoa izango litzateke, uste dut * planteatzea ondoan datu gisa esan nahi du mota erakuslea da Kasu honetan int bat. Beraz, zer egiten ari naiz hemen I? Ez eman dit int beti esaten dut int beste bat, eta jarraian, Horietako bat, eta b deituz. Give me int baten helbidea. Give me int beste baten helbidea. Deitu horiek, eta b a-helbideak. Eta ondoren * idazkera erabiliz behera behean, helbideen horietako bakoitzaren joan jo behar da, bai lortu edo ezarri bere balioa. Baina bada salbuespen bat hemen. Zergatik ez dute I * baten ondoan aurkitu? Zergatik ez dut hau, adibidez? I behar bezala joan guztietan sentitzen da eta gauza osoa zuzendu. Bai? Ikusleak: [INAUDIBLE]. HIZLARIA 1: ez dut deklaratu Kate gisa tmp. Beraz, deklaratzen litzateke kasu honetan, tmp bat int baten helbidea izan. Baina hori ez da aski zer nahi dut, arrazoi pare bat. Ikusleak: Ez duzu nahi horiek aldatu ahal izateko. HIZLARIA: 1 Zehazki, ez dut aldatu nahi tmp duen ezer. tmp besterik ez da aste-ko gauzak. Guztiak dut nahi aldagai bat da zenbaki batzuk gordetzeko. Ez dut, nahiz eta helbideak zaintzeko une honetan. Behar dut, 32 bit edo beraz, int bat gordetzeko. Eta 32 bit horietan jarri nahi dut edozein dela ere ez da, beraz, hitz egiteko, baina zer bat da, hain zuzen ere. Helbide bat bada, * baita esan nahi du Hara joan eta balioa 1 izango dira. Esate baterako, azken astean, adibide batean edo b-ren kasuan, lortu 2 balioa. Beraz, benetan zer gertatzen ari da? Demagun argazki bat hemen marraztuko ditu me bakarrik aurre gain, gaur egun zati bat. Baina hau agertzen jarraituko du denbora luzez. Hori, nire erreklamatzeko, zein da zure ordenagailuaren da memoria bat exekutatzen duzun itxura programa, edozein programa. Programa bat exekutatzen baduzu, oso goian ordenagailuaren RAM - Baietz uste du Laukizuzen hau, benetan, zure gisa ordenagailuaren RAM memoria, guztiak 101 bilioi byte ditu, guztiak bi milioi byte, haren bi gigabyte guztiak, edozein dela kantitatea duzu, hau da, dezagun, marraztu laukizuzen bat. Eta, programa bat exekutatzen baduzu aldarrikatzen dut Microsoft Word edo Chrome bezalako edo horrelako ezer egin, bit duen Microsoft edo Google idatzi - programa horien kasuan - zure ordenagailuaren memorian kargatzen non exekutatu ahal izango dira, azkar eta elikatutako CPU sartu da, eta horrek ordenagailua garunak da. Eta TAM ari dira oso gordetzen Zure programa goian, nolabait esateko. Bestela esanda, honen zati bat galtzen da memoria, klik bikoitza duzun Microsoft Word, bit etorri disko gogorra off. Dute RAM kargatzen. Eta horiek shove dugu gora, oso goian laukizuzena kontzeptuala da. Beno, zure memoria gainerako da gauza ezberdinak egiteko erabiltzen da. Oso goian abiarazi ikusten duzu datuak eta uninitialize datuak. Hau da, egin behar da gehien bat, eta konstanteak edo aldagai globalak duten balioak. Baina, denbora eta beste gehiago. Ondoren, zeure, zein izango duzu itzuli behar dugu. Baina behealdeko zati hori da bereziki germane oraintxe. Deiturikoak pila da. Beraz, gehienak D aretoa edozein like hemen campusa, erretiluak horiek baduzula besterik gabe, bata bestearen gainean eta horrek on pila elikadura eta whatnot jarri ahal izango duzu. Sistema informatiko batean pila oso antzekoa da. Erretiluan berriz ezean, dugu erabili jantokia eta, noski, ondorioz, gauzak egiteko erretiluak du edo fotograma - hauek ditugu deituko - ordenagailuko batean memoria erabiltzen da eduki aldagaiak eta baloreak. Beraz, benetan zer gertatzen den kanpaia azpian? Beno, let me baino gehiago irauli pantaila hemen. Eta dezagun besterik arreta behean momentu bat parte. Hau nire zati behean bada ordenagailuaren memoria bihurtzen da naizenean deitu funtzio nagusiak - den gertatzen, sinceramente, Niretzat automatikoki - Bat memoria zatia at lortu dut nire RAM beheko nolabait esateko. Eta hau da, non da nagusiak aldagai lokalak joan. Non argc eta argv agian da joan, eta edozein aldagai dut deklaratzeko barruan nagusiak. Amaituko dute behealdean nire ordenagailuaren RAM. Orain dela suposatzen nagusia deiak funtzio bat swap bezala, egin zuten bezala, azken astean? Beno, funtsean jarri berri dugu erretilu bat, marko berria, nire memoria zatia gainean. Eta hau bezala deskribatu dut trukatzeko funtzioa dute. Orain zer swap barruan da? Beno, azken astean programan oinarritzen da, eta Batetik, ikusi besterik ez dugu zati bat da, swap en markoaren barruan, edo swap en an iturria, zer aldagai? Beno, a eta b. Horiek bertako argumentuak ziren delako, plus bat hirugarren tmp. Beraz, benetan, eta hau marraztu izan nuen apur bat gehiago garbian. Dezagun aurrera me eta etiketa desegin. Eta utzi niri erreklamatzeko badakiela zer? bat da, ziurrenik, azkenean, hemen doaz. B dago, azkenean, hemen doaz. Tmp da eta, azkenean, hemen doaz. Orain, ordena agian izan apur bat desberdina da. Baina kontzeptu honen ideia da. Eta besterik gabe, kolektiboki, hau da, zer swap en markoa deitu dugu, edo jangela-areto tray. Eta nagusiak aztertzen dira berdinak. Baina ez dut marraztu duten. Baina non argc eta argv eta edozein bere x eta y aldagai bezala, tokiko baita ere izan daiteke. Beraz, kontuan hartu zer gertatzen ari da benetan denean swap deitu. Noiz swap deitzen duzunean, exekutatzen kodea bezalako hau da, ari zaren pasatuz, en buggy bertsioa, eta b x eta y-ren kopia gisa. Beraz, bada, orain ez dut marraztuko honetan pantailan - got hobea lortzeko honetan - Istorioa, beraz, neu nintzen kontatzeko buggy bertsio hau izan zen, noiz dugu deitu aldatu literalki bat eta b igaro osokoak gisa, benetan zer gertatzen ari da? Beno, benetan zer gertatzen ari da hori. Let me aurretik joan eta besterik gabe desegin argitzeko espazio batzuk hemen. Beraz, hau da nire ordenagailuaren memoria da. Beraz, bada, nik, adibidez - egia esan dezagun modu honetan - aldarrikatzen dut, hau da, x, gordetzeko bada balioa 1 besterik astetik bezala. Eta hau da, y, balio gordetzeko 2 bezala, azken astean. Eta hau da nagusia, noiz swap deitzen diot nik, horrela, neure burua emanez sarbide bat eta b tmp eta, hori aldarrikatzen dut hau da, eta hau da, 1. Hau da, b. Hau da, 2. Hau deitzen da aurkitu. Eta, hasiera batean, zabor-balio batzuk ditu benetan dut bat arte gordetzeko, den 1. Ondoren, aurrera joan nintzen, eta aldatu zer izan nahi duzu? B-ren balioa. Eta, beraz, orain bi izan dut hemen. Eta, ondoren, b lortzen tmp esan genuen. Berriz ere, bezala behatu bat egiaztatzeko, hirugarren kodea hemen lerroa besterik ez da hau ko, b lortzen tmp. Eta, beraz, azkenik, zer egin dezaket? Aurrera joan nintzen eta aldatzeko b izan behar edozein dela ere tmp balioa da, hau da, 1. Ez dut ukitu tmp berriro. Baina orain, arazoa lehenbailehen swap gisa itzultzen da, baina ez delako gozamenerako kopiak balio batzuk, ez dago itzulera ez da aitorpena bertan esplizituki. Zer da benetan gertatzen ari dena? Beno, funtsean, memoria honek guztiak - Ados, itxuraz borragoma gustatzen bakarra garai batean hatz - besterik gabe desagertu egingo da. Orain errealitatea ez da inora. Baina ez pentsa dezakezu Orain, galdera-marka gisa. Da jada ez duelako Erabilera-benetan. Eta ez da balio horiek egiten. Beraz, bertsio berdearen kasuan kode hau, zer ordez ari swap pasa? Beraz, helbideak. Beraz, x-helbidea eta y helbidea. Beraz, gero berriro kontatu hau azkena denbora, eta marraztu dut swap berriro, baina erakusleak, hau izanik, hau b izanik, eta baloia tmp honetan, zer da benetan batean gordeta berde honetan nire kode bertsio non pasatzen dut helbideak? X erakuslea bat izango da joan. Beraz, gezi bat marraztu behar izan nuen. Baina horrek bera erabiltzen arbitrarioa da aurretik, adibidez. Demagun hau dela Ox123 antzeko zerbait. Eta hori Ox127 izango delako lau byte urruntzen da delako bat int, beraz Ox127. Eta berriro, burujabetza batzuk hartzen ari naiz zenbakiak ere. Askoz luketen baino txikiagoak dira benetan, eta ordena ezberdinean. Baina hori nola irudi da gaur egun, desberdinak dira. Baina berdea kode hau erabili dut eta int tmp dut * bat. * Bide honako hauek egiteko aukera, hartu helbide bat da eta bertara joateko, den 1. Eta hori da, orduan aurkitu dut. Bien bitartean, kodea hurrengo lerroan Hemen, * bat lortzen b, zer esan nahi du? Beno, * bat, beraz, hemen lortzen * b, horrek esan nahi du joaten. Eta horrek esan nahi du, jarri balioa ez. Azkenik, kode-lerro azken besterik gabe, esan zuen * b lortzen tmp. Beraz, b dio Hara joan eta gainidatzi batera aurkitu, eta, kasu honetan, va , izango da berriz ere, 1. Hori dela eta, berdea bertsioa gure kodea lanak, gorria, berriz, bertsio inoiz egin. Hori guztia, besterik gabe, nola behera irakiten memoria kudeatzen da eta non da benetan al jartzen ordenagailuaren RAM. Eta, orain, baina gauza bat da pila ari da erabiltzen. Diseinua galdera? Erakusleak On? Edo swap on? Ondo da, beraz, malloc, oroitzapen, ez zuen honen antzeko zerbait. Hau super simple adibide izan zen. Eta hau bat izan duten Binky sartu gaituzte, nahiz eta nahiko azkar, klase amaieran. Dammit, ez dago berriro ere joaten gara. Beraz, gogora ekarri zela adibide dela Binky sartu gaituzte, nahiz eta zertxobait azkar klase amaieran. Eta hemen malloc erabiltzen ditugu benetan bigarren aldiz. Den lehen aldia delako erabiltzen dugu sortzeko nahikoa RAM, esleitu nahikoa RAM kate bat gordetzeko. Denbora honetan Binky mantendu da erraza da. Beraz, besterik gabe, gorde nahi da int bat, itxuraz. Eta hori da, guztiz fina. Apur bat arraroa da, sinceramente, nahi erabili malloc bat int esleitu. Baina Nick en claymation puntua izan zen Benetan, besterik gabe, zer kontatu istorioa gertatzen den edo ez gerta memoria mistreat duzu. Beraz, kasu honetan ere, programa honetan egin gauza batzuk. Lehenengo kasuan, hemen ere, adierazten erakuslea izeneko x int bat. Deklaratzen ondoren, erakuslea izeneko y int bat. X-en gordetzen gero, zer? Beste norbaitek orain. Zer lortzen x gordetzea arabera Programa honen hirugarrena? Ikusleak: [INAUDIBLE]. HIZLARIA 1: Beno, ez da nahiko byte, per esan. Be zehatzagoa orain. Zer lortzen x gordetzen dira? Helbide bat, entzun nuen uste dut. Beraz, zer ez malloc itzultzeko? malloc behaviorally bideratzen memoria zatia da. Baina, nola ez izateko ematen da? Zer itzultzen da? Lehenengo byte helbidea memoria zatia da. Orain, super erraza da. Byte bakar bat da, eta horrek esan nahi du aurre atzera ari gara da osoan gauza helbidea. Beraz, x eta gero gordetzen dira, helbide memoria zati hori. Bien bitartean, zer gertatzen da gero? Beraz, benetan, goazen aurrera eta marraztu out benetako azkar honetan. Hala bada baino gehiago gara pantaila eta hemen hau jokatu dugu int * x, int * y zer egin niretzat da? Hori besterik ez da egingo aldarrikatzen dut honen antzeko zerbait deitu eta x, y hau eta deitu y. Bien bitartean, kodea lerroa da hirugarrena int baten tamaina esleitu egingo, gertatzen den, izan - Sentitzen dut esan ko aurretik int bat ekarri dut - lau tipikoa ordenagailu byte. Gutxienez CS50 tresnarekin. Beraz, hau da, esleitu joan nor da, daki? Nonbait hemen. Eta hori zenbait gordetzen helbide idi, nork daki? Baina zer itzuli iritsi helbide hori da. Baina hau marraztu dugu pictorially besterik gabe gezi baten ondorioz. Orain, hurrengo lerro * x 42 lortzen. Zer esan nahi du * x layman en dagokionez esan nahi du? Just joaten. Helbide horretara joan. Edo beste era batera esanda, jarraitu gezi eta 42 jarri ez. Baina gero zerbait txarra gertatu Binky nahi, ezta? Gogoratzen lerroa bost hemen, * y consigue 13, hain zuzen ere, unlucky zenbakia, egin Gurekin zer? Beno, * y bitartez joaten. Beno, hori ez da ematen balio bat gabe, ezta? Kodea ez dauka y izateaz ezer egingo. X genuen ari hasieratu helbide bat. Baina y izendatu zuten sortu top. Baina orduan, puntu eta koma, baliorik ez izan zen benetan jarri. Beraz, arrazoizko da hau deitzeko zabor balio bat. Nork daki zer ez? Bit erabiltzen ziren aztarnarik da kodea, aurreko lerro batzuk nire programa. Hala bada joaten esan dut, hau da, adibidez, Ideia ez dago non gezi hori daukat amaituko da. Eta hori egiten duzunean, normalean lortu segmentaziuo hutsegitea bat. Dereference Nahi izanez gero, beraz, hitz egiten, edo helbide bat ez da joan benetan zilegizko helbide bat, gauza txarrak gertatuko dira. Eta hori da, zehatz-mehatz zer gertatu zen Binky pentsatzea. Beraz, gogora ekarri istorioa Nick hori zela hemen kontatzea ideia bera izan zen zer gisa Ilusioa duen Nik marrazten taula daude klarion. X eta y dira deklaratu. Ondoren, tamaina baziren dugu int bat eta gordetzen x. Ondoren, hurrengo lerro genuen * x. Hau Nick en makila magikoa izan zen dereferencing du. Jarri 42 memorian azpimarratu x arabera. Baina hau da, non gauza joan horribly okerra da. Eskuin? Saiatu dereference y dugu. Baina y akastunak izan balio, ezta? Beheko aldean, ezker-eskuan gezi duten izkinan, ez da benetan ezer seinalatuz. Zer egiten nuen moduko da egin hemen taula gainean. Beraz, gauza txarrak gertatuko dira, segmentazio errua, edo Binky errua, kasu honetan. Baina orduan dugu konpondu bada x eginez lortzen y istorioa nola aldaketa ez? Beno, ez dut x y lortzen bada, hori eraginkortasunez esaten dute bera edozein dela ere, hau da, idi-zerbait da, bera izan da hemen, Idi-zerbait. Edo pictorially gezi bat marraztu dugu. Beraz, hemen Binky batera taula gainean, hurrengo lerro batekin kodea, * y esan nahi du joaten. Non dago? Baino gehiago esan nahi du, hemen. 13 eta noiz izango litzateke, eguneratu dugu dakar besterik ez da joan eta 13 idatziz hemen orain. Beraz, agian, ez dira guztiz Lehen begiratuan erraza. Baina, eta laburpena berean jargon erabili nahi duten Binky zen hemen erabiliz, beraz, Lehenengo bi esleitu erakusle da, x eta y, baina ez pointees du. Pointees eta ez da Oro har, erabiltzen den terminoa. Baina erabat erakuslea da. Baina, zer gertatzen ari den adierazi da Binky en nomenklatura ere. Hurrengo lerro hau, noski, int pointee bat bideratzen. Bat memoria zatia Beraz - zirenak I gainean Eskuineko aldean, ez dago - eta jaurtiketa x berdin da seinalatu. Dereferences x 42 honetan gorde nahi memoria dela seinalatuz. Eta, ondoren, hau da, noski, txarra izan zen. Y ez baitzen seinalatuz ezer oraindik ere. Hau konpontzen du. Beraz, hau da, oraindik ere akatsak programa. Just delako bidez ari gara putz kode lerro eta esaten line, oi bai, utzi ez du huts egin. Hori txarra da. Odds dira programaren besterik joan abortatzeko guztiz line hartan. Baina kendu nahi duzu bada izorratu lerroa eta ordeztu da, azken bi lerroak ez baduzu, esleitu - erakuslea esleitzeko erabiliz - y ra puntu t x seinalatu. Eta gero dereference oso seguru modu y. Beraz, ez utzi digu? Beno, bihurtzen duten kanpaia azpian CS50 liburutegian, erakusleak dira Erabilitako zehar. Eta benetan dizugu zuritu hasteko itzuli luze baino lehen geruza. Baina bihurtzen da, adierazpen bat batzuk ezagutzen ere izan daiteke, batez ere, erosoagoa, Egia esan, oso ezaguna duten webgunea, edo pila gainezka, egun hauetan. Baina honetan, egia esan, oso tekniko esanahia. Orain badakigu zer pila bat da. Da erretiluak pila bat bezalakoa da jantokia baten barruan. Edo barruan ordenagailuaren du memoria bere markoak horiek diren funtzioak erabiltzen du. Beno, bihurtzen da hori delako Oso erraza da ezarpen memoria eta deiturikoak on fotograma pila, benetan hartu dezakezu kontrola informatika-sistema bat nahiko erraz. Sistema bat sartu ahal izango duzu aldatu bada jendea gurekin ez bezala, gure idatzizko kodea batez ere, ondo. Gu bezala erabiltzen bada zatiak memoria edo erabilera array of - are gehiago, normalean - baina batzuetan ahaztu egiaztatzea gure mugak array duzu lukeen bezala dute, batzuetan zeure burua eta iterated Urrunegi amaieran array bat iragana modu. Onena kasuan, zure programa agian besterik kraska. Segmentaziuo hutsegitea, mota lotsa da. Ez da handia, baina ez da, nahitaez, izugarri txarra. Baina zure programa da, benetan bada, benetako erabiltzaileen ordenagailuetan da abian bada web orri bat on benetako ausazko pertsona Interneten daude, kolpeak dezazun jendea bultzatu gauza txarrak zure kodea da Oro har, ez da gauza ona delako aukera bat hartu behar dela esan nahi du ordenagailuaren kontrola. Eta hau da, begiratu joan pixka bat críptica. Baina beldurra nuela pentsatu nuen batera Azken horren adibide hemen. Kodea hemen adibide bat. Eta ez da ona Wikipedia Artikulu hori ibiltzen bidez zehatzago hau. Behean deitzen nagusian daukat foo, 1 argv batean igaroz. Eta hori besterik ez da, beraz, ahal duzun hori exekutatu programa, eta pasatu arbitrarioak sarrera bat. Eta gero, foo izendatu sortu top Kate bat onartuz, edo gehiago hain zuzen ere, char * bat. Deklaratzen ondoren, karaktere sorta bat. Deitu buffer bat, oro har, tamaina 12. Beraz, 12 karakteretan dezakezu doitzeko barruan c izeneko array hori. Eta, ondoren, funtzio berri hau erabiltzen du, hau da, ez da berria, baina zaila ulertzeko, memoria kopia. Memorian kopiatzen da barra, eta hori izan zen aldagaiak iraganean n, edozein Erabiltzaile argv 1 tekleatutako c sartu. Zenbat byte? Bar luzera katea. Beraz, beste era batera esanda, erabiltzaileak mota behar izanez gero, h-e-l-l-o Sartu, kate-luzera kaixo da bost. Beraz byte horietako bost iritsi da joan array izeneko c, a sartu eta horrek tamaina 12 da. Baina zer gertatzen da, erabiltzaileak askoz luzeagoa motak hitza da 13 edo 14 karaktere karaktere edo 100 karaktere edo gehiago? Nora joan dira? Beno, marko, eta erretilu jangela-areto pila batean, joaten ari dute. Eta besterik ez da berridazten hasteko joan beste gauza hori dagoeneko pila horretan, gainezka pila, nolabait esateko. Pictorially, beraz, modu honetan pentsatzen. Hau da, besterik gabe, koloretsua bertsioa Irudian gara marrazten. Behealdean, esan dezagun, ez da nagusia. Eta goian, orain ikusten ari zara marko, kolorez kodetuta dago orain, bat foo izeneko funtzioa. Baina zer da interesgarria hemen buruz foo da hemen bere markoa da. Beraz, besterik ez dut atsegin marraztuko baina urdin argia egin zuen. Eta orain, hau da, non c tarte 0 doa. Eta hau, non c parentesi da 11 da azkenean joan. Bestela esanda, gertatzen da izango da plaza gisa irudikatzen. Baina dezazun bada byte plopping behera - edo karakteretan - Amaierara ari dira joan sortu kokapena 0 modu guztiak sortu 11 delako 0 ordenatuta. Baina non 13an pertsonaia da azkenean joan? Non dago 14an? Non 50 pertsonaia da azkenean joan? Behera jarraitzea da joan. Nahiz eta marraztuko dugu delako pila duen irudi hazi da, helbideak, bihurtzen da, joan txiki helbideak, txiki erakusleak, handira helbideak. Beraz, mantentzen besterik ez da gora eta gora. Hala bada, erabiltzaileak mota kaixo, hori handia. Bug Ez, ez dago arazorik, guztion seguru. Baina erabiltzaileak zer egiten zaitugu motak bada deitu adversarial kodea, irudikatzen oro bezala, atentatua, erasoa, erasoa, erasoa, zer gertatuko da? Beno, sarrera guztiak galtzen duten erabiltzaileak Idatzitako ez da, besterik gabe, lagunarteko batzuk edo karaktere katea iraingarritzat. Egia esan, ez da karaktere-sekuentzia bat konpilatu baduzu ere, da benetan kodea. Agian kodea da ezabatzen duten guztiak zure disko gogorrean fitxategiak edo zabor-posta bidaltzen edo horrelako zerbait. Nabarituko zer hori da gakoa hemen da txarra lasaia lortu zortea bada gainidatzi memoria zatia gorria - horrek ez nuen nire irudi marrazteko baina hau Wikipedia argazki hemen - bere deiturikoak itzulera helbidea. Janaria itzultzen denean, swap itzultzen, nola ordenagailua ez du jakin nahi joan Hemen gora behera hemen? Edo segmentu teknologiako sortu batez ere, nola ez trukatzeko batetik joan jakin kodea - 0 eta 1-en osatzen duten swap - itzuli nagusiak? Badago deiturikoak itzulera helbidea da gordetzen duten pila berean marko batean, an berean kafetegia tray. Hala bada txarra lasaia da clever nahikoa jarri kodea erasoa, erasoa kodea, erasoa kodea, eta zortea - to - askotan trial eta errore bidez gainidatziko dela gorria itzulerako helbidea, helbidea eta lehenago oso goian. Iragarki 0835C080. Honez idatzia atzeraka sortu goian arrazoiak direla eta, agian, ikusiko dugu berriro. Honetan zenbaki hori da. Hala bada txarra lasaia lortzen zortea edo smart nahikoa da gorria gainidatzi memoria biluztera helbide batera kodea zuen duela nolabait Zure ordenagailuan injektatzen, asmatzeko eta horren kodea da itzuli joan bezain laster foo gisa exekutatzen da egin? Txarra lasaia en kodea. Erasoa kode hau, beraz, AAA, berriro ere, agian bidali spam, fitxategi guztiak ezabatuko agian zure disko gogorrean. Baina horixe da benetan pila bat gainezkatzea da, edo buffer inbaditu, edo bat bufferrerako gainezkatzea erasoa. Eta oso, oso ohikoa da idatzitako programak egun honetan C, C + +, eta, nahiz eta beste hizkuntza batzuk. Ohar hori scary on egiten zaitugu Txiste batekin amaituko da. [Barreak] Ikusi duzu, asteazkenean. Hurrengo CS50 at - Beraz, disko lanparak out nago, baina, gaur egun, itxaron, gantz-free esnea, telefono erdia liburu bat, laranja zukua edaten duten dut gaur. USB kablea, giltza bat. [Musika jotzen]