[Jwe mizik] DAVID J. Malan: Tout dwa sa a se CS50 ak sa a se kòmanse nan semèn senk. Se konsa, jounen jodi a, anba kousen chèz ou a, ou pa pral jwenn anyen. Men, pi wo a, ou ta dwe jwenn sa yo, yon ti kras montre apresiyayon nou an pou tout nan travay la ke ou mete nan jwèt la nan Kenz. Senpleman retire sèk la ti kras sou la anba yo kòmanse jwe pou la rès nan klas la. Se konsa, sonje ke, oswa konnen ke pwoblèm mete kat yo, ki soti fen semèn sa a, enplike nan ekri yon lòt jwèt. Men, fwa sa a li enplike lè l sèvi avèk yon aktyèl itilizatè grafik koòdone, se pa yon textuelle koòdone tankou Jwèt nan Kenz te ye a. Men, jwèt la ki bay manti devan yo nan ou, si ou pa te ankò wè sa a kap vini an, sanble yon ti kras yon bagay tankou sa a. Mwen pral antre nan tèminal mwen fenèt isit la nan gdb. Men, mwen pral ale pi devan epi kouri a solisyon anplwaye yo, kote ou ka gen aksè nan apre kouri aktyalizasyon 50 kòm dabitid. Men, mwen pral mete l 'nan yon ti kras sekrè mòd, yon ti kras Pak ze, sa yo rele Bondye mòd, pa mete Bondye nan argv1. Apre sa, mwen gen swiv enstriksyon pwòp m 'yo, kouri l 'nan pwòp mwen pwoblèm mete anyè. Se konsa, kounye a ou wè yon vèsyon konplè nan jwèt la nan levasyon. An reyalite, sa a se pa-men mòd. Se konsa, li la aktyèlman - wowed menm si ou ka - bèl trivial aplike Bondye mòd nan Levasyon, kontrèman ak jwèt nan Kenz, ki kèk nan ou ta ka genyen aborder pou edisyon an HACKER. Nan levasyon Li sifizan nan Bondye mòd tou senpleman fè sa, entwitif ak pedal la? Jis fè li egal a la tou sa pozisyon orizontal la se nan boul la. Se konsa, lontan ke ou fè sa nan lockstep ak boul la deplase jwèt sa a pral pa janm, tout tan, tout tan tout tan manke boul la epi ou pral genyen chak fwa. Men, nan edisyon HACKER yo semenn sa a gen pi plis pase jis mòd Bondye. Genyen yon nimewo nan karakteristik lòt. Nan mitan yo, lazer. Se konsa, ke si ou reyèlman pran pasyans ou ka kòmanse tire desann brik yo ak yon lòt moun kèk. Se pou moun nan nou ki ta renmen detèmine estanda kont HACKER edisyon, mwen ka wè ke yo semenn sa a edisyon HACKER fè espre a se yon ti kras pi plis pratik, di, pase Bondye mòd te la avèk jwèt nan Kenz. Se konsa, si w ap chèche yon detire ak w ap chèche pou kèk plezi plis karakteristik fè plonje nan si nan enterè yo. Koulye a, plis pratikman, kite m 'pwen soti yon sèl bagay yo tou. Gdb, ki kèk nan ou ka pa gen ankò manyen pèsonèlman, ki se amann. Men koulye a, se reyèlman tan nan jwenn itilize sa a ak konfòtab ak zouti sa a paske li pral fè lavi ou pi fasil, se vre wi. Pou chak konferans Rob a sou gdb yon koup nan semèn de sa, sonje ki gdb se yon debugjeur. Li se yon zouti ki pèmèt ou kouri ou pwogram men kouri li etap pa etap liy, pa liy, pou ke ou ka pike alantou li, pou ke ou wè bagay k ap pase, se konsa ke ou ka enprime soti valè nan varyab. Nan ti bout tan, li ba ou pou pi plis pouvwa pase printDef fè. Koulye a, Byensir, koòdone nan se trè Esoteric. Nwa ak blan koòdone textuelle pou pati ki pi. Kòmandman sa yo se yon ti jan difisil sonje an premye. Men, menm si li ta ka pran ou mwatye yon èdtan, yon èdtan, yo mete ki inicio envestisman nan tan nan li, mete konfyans mwen. Sètènman pa nan fen semès la li pral sove ou yon lòd nan grandè plis tan pase sa. Se konsa, yo byen bonè nan plonje nan semèn pous Men, an tèm de levasyon, konnen ke ou ka fè sa toutotan ou gen distribisyon Kòd la oswa kòd pwòp ou a nan pwogrè nan anyè Pst4 ou. Konnen ke ou ka kouri gdb. / Levasyon. Sa a se ale nan louvri moute yon fenèt tankou sa a. Kite m 'ba tèt mwen plis nan yon fenèt tèminal. Lè sa a, ki sa mwen pral ale pi devan ak fè sa, li pa nan jis kouri li. Mwen pral premye mete yon pwen kraze sonje, ki pèmèt ou pran yon poz ekzekisyon nan yon kote ki an patikilye. Jis kenbe bagay senp mwen pral kraze nan liy yon sèl jis pa sezisman nimewo nan yon sèl. Kite m 'aktyèlman re-louvri fenèt sa a paske li ap resevwa yon ti kras ti la. Se konsa, sa m ap kounye a pral fè isit la se si mwen louvri moute fenèt tèminal mwen. Vini non sou, gen nou ale. Se konsa, kounye a si mwen tounen nan Dropbox, Pst4 epi kouri gdb. / levasyon antre, remake Mwen pral kraze yon sèl yo mete yon ti repo pwen nan liy yon sèl. Epi, koulye a mwen pral ale devan ak kalite kouri. Men, lè m 'fè, remake pa gen anyen sanble rive. Gen nan pa gen moute pòp. Gen nan pa gen grafik koòdone itilizatè ankò. Men, sa a konprann paske mwen se literalman nan liy yon sèl nan pwogram m 'yo. Men, remake ke mwen te vit voye, espesyalman kounye a 62, paske tout bagay la nan tèt yo nan sa a ranpli se bagay sa yo tankou kòmantè ak konstan ak entérésan bagay pou kounye a. Se konsa, koulye a, mwen se andedan nan prensipal yo, li sanble, nan liy 62. Lè sa a se jis distribisyon an Kòd, sonje. Si m 'louvri sa a moute pa prale a, Menm jan tou, nan anyè bwat gout mwen an Pst4, nan breakout.c. Men, si mwen desann, li desann e desann, ak kite m 'ale pi devan epi vire sou nimewo liy m 'yo. Ki sa mwen pral wè, si mwen woulo liv desann nan liy 62, se egzakteman liy ki nou te Sarepta sou. Se konsa, liy sa a isit la, 62, se kote n ap sou yo dwe. Se konsa, kounye a nan gdb, si mwen ale pi devan epi tape kounye a kap vini an, antre nan li a ale nan egzekite ki liy. Epi vwala, nou gen la sa yo rele fenèt g. Si abitye avèk ki sa yon GWindow se, pa enkyete. Espèk a ap entwodui ou nan li, jan byen ke yon nimewo nan videyo solisyon entegre nan espèk a. Men koulye a, se pou yo fè sa-a yon ti kras pi plis enteresan. Kite m 'deplase fenèt sa a sou bò lanmè a yon ti kras. Kite m 'fè fenèt la yon ti kras pi gwo pou m ka wè plis. Epi, koulye a kite m 'ale pi devan ak fè pwochen ankò. E genyen anpil brik m 'yo. Si mwen tape pwochen ankò koulye a mwen wè boul la. Men, si mwen tape pwochen ankò koulye a mwen wè pedal la. Men, erezman sa a jdi se pa reyèlman kolabore pa montre m ' tou sa m 'vle. Men koulye a, si m 'fè pwochen ankò, pwochen ankò, mwen se jis deklare kèk varyab. Apre sa, mwen ka enprime yon moun nan mesye sa yo soti. Enprime brik, simagri lavi moun. Epi, koulye a si mwen kontinye fè kap vini an, remake ke mwen ap andedan nan ki bouk. Men, kòd la ki pral egzekite egzakteman jan Mwen atann mwen. Se konsa, lè m 'frape fonksyon sa a, Rete tann pou klike, li la pral fè li literalman sa. Se konsa, mwen te sanble yo te pèdi kontwòl sou pwogram lan. Gdb pa an, ap ban m 'yon lòt èd memwa. Men, pa enkyete. Ale nan jwèt m 'yo, klike sou yon kote. Epi vwala, kounye a li resèt nan liy 86. Se konsa, ankò, li nan anpil valè, finalman, pou pwoblèm debogaj. Paske ou ka literalman etap nan Kòd ou a, bagay sa yo ekri an lèt detache deyò epi yo anpil, anpil, plis ankò. Men, pou kounye a, sa yo ki zouti pou kont li ta dwe pran ou trè lwen. Se konsa, nou ap, nan kou, pran yon gade nan Graphics, koulye a, tout nan yon toudenkou. Epi, koulye a mond nou an vin yon ti kras plis enteresan. E ou konnen, petèt, ki soti nan kèk nan la videyo sou entènèt ke nou gen sa yo bout pantalon ke ou ve yo te ap gade kòm yon pati nan seri pwoblèm. Apre sa, yo ve yo te tire, fè espre, kont yon seri blan. Se konsa, kèk nan yo gen ansèyman an Fellows desen kèk tèks sou la ekran ki nan kouvri sou bò a nan yo. Men, nan kou, sa a se pa tout sa ki enteresan nan mond lan reyèl. Sa a se jis yon konferans sal ak yon gwo ekran blan ak twal yon. Ak etonan nou an ekip pwodiksyon sòt nan fè tout bagay gade bèl apre reyalite a pa cultures soti oswa kouvri anyen nou fè oswa ou pa vle. Koulye a, jis motive semèn sa a ak reyèlman, kote ou ka ale, finalman, ak syans òdinatè. Pa sèlman apre yo fin pwoblèm mete kat. Men apre, lè yon lòt kou oswa yon tout pwogram etid li a etonan sa ou kapab fè jou sa yo an tèm de grafik an patikilye. Gen kèk nan ou ta ka gen pou wè sa a ap koule tankou dlo alantou sou entènèt. Men, mwen te panse mwen ta montre w, pou jis yon koup la minit, yon aperçu nan sa ki teknoloji òdinatè ak sa ki CGI, grafik sou òdinatè kapab fè jou sa yo ak yon chante ki familye e petèt fim. [Klas Mizik - Lana DEL RAY, "YOUNG ak bèl] Oratè 1: Se jis yon ti jan etonan, petèt, jis ki jan omniprezant - [Aplodisman] Oratè 1: Mwen jis telechaje li. Men, li la vrèman etonan, mwen panse ke, jis ki jan omniprezant lojisyèl ak Kòd ak zouti tankou sa a reyèlman yo. Se konsa, sa a, se yon goute nan yon direksyon ki nan ki ou ka ale. Oh, pa gen okenn Aparèy plis jodi a. Oke, sa a, se distribisyon aktyèlman trajik bay pwen an Mwen jis te eseye fè. Tout dwa, se konsa kite a lanse Fizyon ankò. Fè m 'pita. Tout dwa, epi ou ta dwe gen leve yon voye yon imèl kòm yon sou kote si ou te fè jwenn yon remake tankou sa. Tout dwa, se konsa sonje ke semèn pase a nou te kòmanse kale tounen sa a pita li te ye kòm fisèl. fisèl rapèl yon kalite done ki nan te deklare nan bibliyotèk la CS50. Lè li nan yon pati nan wou yo fòmasyon ki pral kounye a kòmanse pran an. Se te yon konsèp itil byen bonè nan. Men koulye a, li pral jwenn plis enteresan ak plis pouvwa anpil aktyèlman wè ke anba kapo a, yon kòd se sèlman sa ki, t 'nou te di? Yeah, se konsa li a yon sa yo rele * Char. Men, * a gen vle di ke gen nan kèk kalite adrès enplike nan sa. Se konsa, lè ou di Char * ou jis vle di yon varyab ki gen done di ki kalite se yon konsèy kounye a. Lefèt ke gen nan zetwal la gen jis vle di ke w ap deklare yon sa yo rele konsèy. Epi ki konsèy ki pral aparamman magazen adrès la nan, nan kou, yon Char. Koulye a, poukisa sa a fè sans? Oke, sa se yon fisèl anba kapo a? Oke, pou kèk tan nou ve yo te di ke yon fisèl anba kapo a se jis H-e-L-l-o, pou egzanp. Men, nou te pale sou sa a kòm ke yo te, esansyèlman, yon etalaj. Ak yon etalaj ta Lè sa a, gade yon ti kras plis tankou sa a, ak chak nan sa yo pran yon mòde. Lè sa a, nou te di ke gen nan yon bagay espesyal tounen isit la, nan 0 antislach, oswa nil Terminator. Se konsa, tout tan tout tan sa a, sa a isit la te gen yon fisèl. Men, reyèlman, yon kòd se aktyèlman yon adrès. Ak adrès, jan nou pral wè, yo souvan genyen prefiks yo ak 0x pa konvansyon. Ki sa ki 0x endike? nenpòt moun ki konnen? Se konsa, li jis vle di ekzadesimal. Se konsa, ou ta ka sonje, aktyèlman, ki soti nan PST 1, mwen kwè, youn nan cho moute a- kesyon aktyèlman mande sou ekzadesimal notasyon nan adisyon a binè ak desimal. Ak motivasyon a isit la se ke ak ekzadesimal ou gen 16 chif a jete ou. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ki te swiv pa yon, B, C, D, E, f. Men, si ou konte tout moun sa yo leve, ou jwenn yon total de 16. Se konsa, sa a se nan kontra ak desimal, kote nou gen 10 chif, 0 atravè nèf. Li nan nan kontra ak binè kote nou jis gen 0 ak 1. Men, nan fen jounen an ou kapab jis reprezante chif yo menm, men yon ti jan yon lòt jan. Lè ekzadesimal se komen paske kòm li vire soti - epi nou pral wè sa a pita nan kou a - menm lè nou jwenn nan pwogram entènèt nan yon kontèks HTML ak kòd koulè, ekzadesimal se bèl. Paske chak chif, vire soti, reprezante kat Bits pafètman. Se konsa, li jis kalite nan liy moute joliman kòm n ap pètèt wè. Se konsa, sa a ta kapab Ox123 oswa yon bagay tankou sa yo, indican adrès 123 yon kote andedan nan mwen memwa òdinatè a. Men, nan kou, gen kèk pwoblèm sa yo rive Se poutèt sa kache aplikasyon. Men, sonje ke mwen te pran yon koud nan mete ann aplikasyon yon fonksyon tankou sa a - konpare priz 0 dot c semèn pase a, ki menm si li te sanble ak li te dwat, li tou senpleman pa t 'konpare de strings kòrèkteman. Mwen te jete prensipal yo, epi mwen te voye jete lwen kòmantè sa yo jis yo konsantre nan sou kòd la sa a, se nan enterè isit la. Epi li an wouj paske li nan buggy. Pou sa ki rezon ki fè? Oke, nan gen nan tèt lè mwen te deklare yon kòd, ki sa ki te vrèman ale sou anba kapo a? Oke, kite m 'janbe lòt bò nan la ekran isit la epi trase sa. Se konsa, mwen te deklare, ankò, GetString fisèl la. Se konsa, mwen pral ale pi devan kounye a epi yo trase yo pou sa li vrèman se. Li nan pral fè yon kare isit la. Men, mwen pral reklame ki sa a, se 32 miyèt moso. Omwen li nòmalman se, omwen sou CS50 nan aparèy nan yon anpil nan òdinatè. Mwen pral rele li s. Men koulye a, sonje ke nou rele GetString. Se konsa, GetString retounen, nan kou, yon kòd. Si kalite itilizatè nan h-e-L-l o-antre nan fisèl la alo vin tounen. Epi ki fisèl, jan nou jis di, fini moute yon kote nan memwa òdinatè w lan an ak yon 0 antislach nan fen an. Mwen pral pran sa a tankou etalaj la - oswa vwazen blòk nan karaktè - ke li aktyèlman se. Epi, koulye a, ki sa ki GetString aktyèlman retounen? Ki sa ki te GetString te retounen tout tan sa a? Bon, nou di, nan semenn anvan, li retounen yon kòd. Men, plis teknikman, ki sa ki GetString retounen aparamman? ODYANS: Yon adrès. Oratè 1: Yon adrès. Espesyalman li retounen adrès la nan mòde an trè premye, tou sa li se. Mwen jis kenbe lè l sèvi avèk yon sèl, de, twa paske li nan pratik. Li retounen adrès la nan premye a karaktè nan fisèl la. Epi nou te di semèn pase ke ki se ase. Paske nou ka toujou konnen ki kote nan fen fisèl la jis pa iteration sou li, petèt, ak yon pou bouk oswa yon bouk pandan y ap oswa yon bagay tankou ki, jis kap chèche "antislach 0", pèsonaj la Sentinel espesyal. Lè sa a, nou konnen ke fisèl la k ap pase yo nan longè - nan ka sa a - senk. Se konsa, teknikman sa GetString fè se li retounen Ox123 nan ka sa a. Men, teknikman sa ki Lè sa a, k ap pase se ke nou sere, andedan nan yo, Ox123. Nan fen jounen an, menm si sa a se nouvo konsèp, endikasyon yo, yo ap jis varyab. Men, yo rive nan magazen Bits ki kolektivman reprezante yon adrès. Se konsa, teknikman tout sa yo vin ki estoke nan yo se Ox123. Men, nou kòm moun - ki gen ladan pati jodi a - yo se reyèlman pa ale nan pran swen, anjeneral, sa ki adrès aktyèl la se nan kèk ti moso nan memwa. Li nan jis ba nivo detay gen entelektyèlman enteresan. Se konsa, mwen pral defèt sa a. Men, olye de sa, plis wo nivo, jis di ke lè nou ap pale de pwent Mwen pral jis trase plis user-zanmitay flèch ki tradwi nan menm lide ak rezime yo ale Nap nan sa ki vrè a adrès kache a se. Koulye a, si nou tounen nan kòd la, ki sa ki ki te pase semèn pase a si nou gen fil t egal GetString? Oke, si mwen ankò, di ki kalite nan alo tan sa a mwen pral jwenn yon lòt ti moso nan memwa. H-e-L-l-o antislach 0. Men, paske mwen te rele GetString yon dezyèm fwa - e mwen konnen sa a soti nan gade nan nan Kòd sous pou GetString - menm menm si li nan koensidans ki alo te tape nan de fwa, GetString se pa pral pou yo eseye optimize yo epi yo dwe entelijan. Li nan jis pral jwenn yon lòt ti moso nan memwa nan òdinatè a, ki se yo pral nan yon lòt adrès. Se pou yo abitrèman jis di 456. Lè sa a, ki sa ki li pral retounen? Li nan ale nan retounen 456 ak magazen li nan t. Se konsa, sa se reyèlman ale sou, sou la sou bò gòch bò la se mwen gen yon lòt moso nan memwa, 32 Bits tipikman. Ak nan gen ki pral ale Ox456. Men, ankò, mwen pa enterese nan sa yo nimewo patikilye ankò. Mwen jis ale nan abstrè trase li kòm yon flèch. Se konsa, sa a se kounye a yon eksplikasyon nouvo. Men, li la lide nan menm egzak ki nan te pase tout tan sa a. Se konsa, rezon ki fè yo lè sa a, ke sa a premye vèsyon an compare te buggy semèn pase a se poukisa? Lè ou fè si yo egal egal t Ki sa yo ou se vre wi: anba kapo a konpare? Ou ap konpare adrès yo. Epi jis entwitif, byen klè, Ox123 a pa pral Ox456 egal-ego. Moun sa yo ki nimewo, sa yo ki Bits yo se jis diferan. Se konsa, toujou, semèn pase a li te di ou tape bagay diferan, menm si la mo yo te motamo menm bagay la. Se konsa, nou ranje sa a. An tèm pwofàn la, sa ki te ranje a? ODYANS: Sèvi ak yon fonksyon. Oratè 1: Sèvi ak yon fonksyon. Oswa zetwal yo definitivman patisipe, men sèvi ak yon fonksyon fè sa? ODYANS: Pou konpare strings yo. Oratè 1: Pou konpare strings yo. Se konsa, pwoblèm nan fondamantal isit la te ke mwen te jis konsidere a bon jan kalite nan strings yo dwe defini nan konparezon nan adrès yo. Men, evidamman sa se sèlman bèbè kounye a yon fwa ou konprann sa k ap pase sou anba kapo a. Vrèman konpare strings yo wè si yo ap egal nan fason ke yon moun ta konsidere de strings yo dwe egal nou bezwen konpare yo karaktè pou N. pou karaktè. Koulye a, mwen te kapab gen fè sa a trè tediously. Men, familyerman, nou lè l sèvi avèk yon pou bouk. Epi jis konpare yo bracket mwen kont t bracket mwen. s bracket mwen plis 1 kont t bracket mwen plis 1, ak pou fè, andedan kèk kalite bouk. Men, si mwen wè nenpòt karaktè de ki diferan, oswa si mwen reyalize ke Ooh, s se pi kout pase T oswa pi lontan pase t Mwen kapab imedyatman di fo, yo ap pa menm bagay la. Men, si mwen jwenn nan s ak t ak di menm, se li menm, se li menm, se li menm, se li menm, nan fen tou de strings, mwen kapab di vre, yo se egal-ego. Oke, Erezman, ane de sa yon moun te ekri ki Kòd pou nou. Apre sa, yo rele l 'StrComp pou fisèl konpare. Men, menm si li nan yon vann san preskripsyon ti kras entwisyon, StrComp retounen 0 si moun de strings, s ak t yo se menm bagay la. Men, li retounen valè negatif si yo ta dwe vini anvan t lòd avèk lèt ​​alfabè oswa pozitif valè si li ta dwe vini apre t lòd avèk lèt ​​alfabè. Se konsa, si ou te janm vle sòt yon bagay, li vire soti ki StrComp se itil. Paske li pa jis di wi oswa non, egal oswa ou pa. Li ba ou yon sans de kòmann-nan tankou yon vanyan diksyonè. Se konsa, StrComp, s vigil t egal egal 0 vle di ke nan strings se vrèman egal-ego. Paske, moun ki te ekri fonksyon sa a ane de sa prezimableman itilize yon pou bouk oswa yon pandan y ap bouk oswa yon bagay tankou sa entegre sou karaktè yo ankò ak ankò e ankò. Men, de pwoblèm leve isit la. Sa a te copy0.c. Ak de la nan wouj se paske li nan defekte. Ak sa ki t 'nou fè isit la? Oke, premye fwa mwen rele GetString. Apre sa, mwen estoke valè a retounen nan s. Se konsa, sa a, se bèl anpil menm bagay la tou kòm pati sa a nan tèt nan imaj la. Men, sa ki vin apre sa? Oke, kite m 'ale pi devan epi debarase m nan yon pakèt antye nan sa a. Nou pral remonte nan tan kote nou jis gen s, ki se kounye a ki konsistan avèk liy yon sèl moute a. Mwen tcheke. Si yo egal egal 0. Koulye a, yon nòt bò rapid, lè ta ka GetString retounen 0? Genyen pa memwa ase. Dwa? Li ra ke sa a ki pral rive, sètènman sou yon òdinatè ki nan te resevwa dè santèn de mèg oswa menm jig nan RAM. Men, li te kapab, nan teyori, retounen 0, espesyalman si la itilizatè pa kolabore. Genyen fason yo pretann tankou ou gen pa antre anyen ak jwe fent GetString nan retounen 0 efektivman. Se konsa, li pral tcheke pou sa. Paske si nenpòt nan ou te kòmanse jwenn, deja, fot segmentation - ki te gen pwobableman gen yon sous nan kèk fristrasyon - sa yo se prèske toujou rezilta a nan erè memwa ki gen rapò ak. Yon jan kanmenm ou messed moute ak konsiderasyon nan yon konsèy, menm si ou pa t 'konnen te gen yon konsèy. Se konsa, ou ta ka genyen pwovoke segmentation fot osi bonè ke yon semèn lè l sèvi avèk yon bagay tankou yon pou bouk oswa pandan y ap yon bouk ak etalaj yon pa ale twò lwen sot pase yo limit yo nan kèk etalaj ki ou te deklare, nan semèn de nan an patikilye. Ou ta ka te fè li menm nan pwoblèm mete kat ak levasyon. Menm si ou pwobableman pa gen pou wè nenpòt ki zetwal yo nan kòd la distribisyon pou Levasyon, li vire soti ki moun ki GRect ak GOval ak lòt bagay sa yo, sa yo se aktyèlman endikasyon anba kapo a. Men, Stanford, tankou nou, sòt de kache ki detay omwen pou bibliyotèk yo rezon, anpil tankou nou fè pou fisèl ak * Char. Men, GRect ak GOval ak tout moun ki bagay ou mesye yo oswa yo pral lè l sèvi avèk semèn sa a se finalman memwa adrès. Ou jis pa konnen li. Se konsa, li pa etone lè sa a, petèt, ke ou ta ka vwayaj sou kèk segmentation fot. Men, sa ki nan enteresan isit la kounye a, si apre nou fin tcheke pou 0 nou fè fisèl t vin s. Oke, kite m 'deklare t. Mwen pral trase li kòm yon kare, 32 Bits, rele li t. Lè sa a, mwen pral fè vin s. Oke, sa sa vle di? Oke, li nan yon ti kras difisil panse sou li foto ki gen bon konprann. Men, kite a panse osijè de sa ki andedan x? Ki sa ki nan literalman andedan sa a varyab? Valè Ox123 a. Se konsa, lè m 'di fisèl t ap vin a, ki jis literalman vle di pran nimewo a nan s, ki se Ox123 li mete l 'Ox123. Oswa pictorially, si mwen kalite abstrè lwen ke detay li gen nan efè nan literalman fè sa a kòm byen. Se konsa, koulye a, panse tounen nan semèn pase a lè nou leve, li mwen kapitalis T. te fè T bracket 0. Oke, T bracket 0, menm si li nan yon konsèy, ou ka trete li tankou si li nan yon etalaj, ak yon kare notasyon bracket. Se konsa, kote se T bracket 0? Oke, li nan h la. Se konsa, lè nou sèvi ak ki liy nan Kòd, de anwo kay la, ki se nan ki c type.h dosye header, ki nan kote li a deklare. Ou ap valorizasyon sa a H. Men, nan Natirèlman, sa a, se h nan menm egzak ki nan andedan nan yo, se konsa pale. Se konsa, kounye a ou te chanje oswa pwofite kapitalize tou de orijinal la a ak sa yo rele kopi. Paske ou pa t 'fè yon kopi nan la fason ki yon moun ta vle li nan dwe. Se konsa, sa ki te ranje a isit la, nan copy1.c semèn pase a? Fonksyon, se konsa nou te kapab aktyèlman kopi fisèl la. Men, fondamantalman, ki sa nou bezwen fè yo nan lòd yo kopye fisèl la? Oke, nan vèsyon sa-a vèt isit la mwen se pral fè li san patipri ba nivo. Gen aktyèlman fonksyon yo te ka ede ak sa. Men, yonn nan pi fondamantal, epi pifò nan abitye yon sèl, omwen, byento pral abitye nan nou, se sa ki annapre yo - Se konsa yon sèl sou liy lan premye nan kòd nan vèt kounye a. Mwen jis reekri yo kòm * Char. Gen nan pa gen fonksyonèl diferans la. Mwen jis jete lwen bibliyotèk la CS50 ak Mwen rele li sa li ye, yon * Char. Koulye a, dot, dot, dot, paske te gen kèk erè kont kouran, sa a pa enteresan pale sou ankò. Se konsa, koulye t deklare. Li tou se yon * Char. Se konsa, mwen trase yon kare ti kras sou ekran an tankou anvan an. Men, sou bò men dwat-ou, malok, nou te di a se memwa asiyen. Se konsa, asiyen kèk ti moso nan memwa. Ak konbyen bytes fè nou aktyèlman vle asiyen, li sanble? Oke, longè fil nan s. Se konsa, si li nan alo sa a, se yo pral senk. Nou pral di H-e-L-L-o. Se konsa, senk bytes. Men, Lè sa a, plis 1, poukisa 1? N. a 0. Si nou pa kite plas pou nèg sa a nou ta ka aksidantèlman kreye yon sitiyasyon kote fisèl la se h-e-L-L-o. Lè sa a, GetString nan tan kap vini yo se rele ak mwen tape nan, pou egzanp, David, D-yon-v-mwen-d, òdinatè a ki pral panse ke yo se aktyèlman H-e-L-l-o-d-yon-v-mwen-d paske gen nan pa gen okenn kraze nan ant mo sa yo. Se konsa, nou bezwen ke repo. Se konsa, nou pa vle senk. Nou vle sis bytes. Men, bytes m'ap di a. Men, li la gwosè reyèlman tan nan Char. Teknikman Char se prèske toujou yon multiple sèl. Men, jis fè kòd nou yo pòtab, se konsa pale, konsa ke li ap travay sou òdinatè diferan menm si yo ka gen yon ti jan diferan anba a kapo, mwen pral generic di gwosè nan Char pou ke Kòd mwen an ap toujou travay. Apre sa, mwen pa gen compile li jis paske mwen mete yo ajou òdinatè mwen oswa itilize kèk platfòm diferan. Se konsa, mwen te gen 6 fwa gwosè a nan yon Char, ki k ap pase yo 1. Se konsa, ki malok vle di te kapab ban m 'sis bytes. Ki sa ki se ki aktyèlman ap fè? Oke, kite m 'woule tounen nan tan isit la kote nou nan istwa a. Se konsa, si m 'ale tounen isit la, mwen te deklare yon * Char rele t. Mwen te rele koulye a malok pou sis bytes. Epi, koulye a mwen pral trase sa yo sis bytes jis tankou etalaj la pi bonè. Men, mwen aktyèlman pa konnen sa ki nan andedan sa a etalaj. Si ou asiyen memwa li vire soti ki ou pa ka fè konfyans ki gen nan kèk li te ye valè la. Li te kapab yo te itilize pa yon bagay lòt moun, kèk fonksyon lòt, gen kèk lòt liy nan kòd ki ou te ekri. Se konsa, nou pral jeneralman rele sa yo fatra valè epi trase yo, petèt, kòm mak kesyon, jis ki endike ke nou pa konnen ki sa la aktyèlman la. Epi sa a, pa gen okenn kontra gwo toutotan nou yo entelijan ase yo recouvrir moun fatra valè ak nimewo oswa charaktèr ke nou pran swen sou. Se konsa, nan ka sa a sa mwen pral fè? Oke, liy m 'nan kòd kap vini an, mwen gen kat. Int mwen jwenn 0, n ap vin la longè fil nan s. Se konsa, yon abitye pou bouk. Mwen se mwens pase oswa egal a n, ki se nòmalman se pi wo a. Men, fwa sa a li nan ekspre. Mwen + +, ak Lè sa a, Mwen tou senpleman fè t bracket mwen vin la. Paske foto mwen sanble sa a nan moman sa a, ki estoke nan t se nan adrès sa a moso o aza nan memwa valè ki gen yo se enkoni. Men, le pli vit ke mwen fè t bracket 0 ki mete m 'isit la. Ak sa ki fini moute resevwa trase a? Nou fini mete h. Paske sa a, se sa ki nan nan nan bracket 0. Lè sa a, menm bagay la pou E, ak L, ak L, ak o. n, poukisa m 'ale nan yon egal a n? Paske nan pèsonaj la 0. Se konsa, jis yo dwe klè, lè sa a, si mwen aktyèlman efase tou sa sa yo fatra valè yo ak Lè sa a aktyèlman trase nan sa m 'atann, sa a se s, 1 bracket 2, 3, 4, plis ki nan fin nouvo karaktè. Se konsa, kounye a si nou kontinye sot pase yo dot la, dot, dot nan vèsyon sa-a kòrèk ak kapitalize t bracket 0 mwen ta, nan Natirèlman, ap valorizasyon jis sa a nèg isit la, ki concept, te finalman objektif la. Se konsa, ki nan tout konsèy la se. Men, ou ve yo te lè l sèvi avèk yo pou semèn kounye a nan kontèks la nan strings. Men, anba kapo a yo ap yon ti kras plis konplèks. Men, si ou panse osijè de yo nan sa a imaj fòm Mwen pwopoze ke yo ap pwobableman pa tout sa ki pè menm jan yo ta ka premye sanble nan premye gade, patikilyèman ak sa yo sentaks nouvo. Nenpòt kesyon sou pwent, strings, oswa charaktèr? Yeah? ODYANS: Èske ou ka ale tounen [fèbl a]? Oratè 1: Asire w. ODYANS: Se konsa, kouman vini nan anpil sot pase yo ou liy, ou pa gen yon * T liy ak yon s * nan liy a? pa ou gen referans a la - Oratè 1: Ah, yon kesyon vrèman bon. Poukisa nou pa mwen gen yon t * ak yon s *? Paske yon ti tan, semèn pase a, tankou nan nou an swap fonksyon, mwen t 'di ke lè ou te gen yon konsèy vle di la pa kote ou ale la jan nou te fè fizikman sou sèn nan, te aktyèlman sèvi ak operatè a zetwal. Li sanble ke sa a bracket kare- notasyon se sa nou ap rele Massachusetts Institute of Technology sik, ki se jis yon fason sexy nan li di notasyon steno li a pou egzakteman sa w ap dekri. Men, li la yon ti kras plis entwisyon. Lè sa a risk pou yo fè sa a sanble pi fasil pou konplike pase sa li bezwen yo dwe, sa ki reyèlman ale sou isit la se sa ki annapre yo - Si mwen di t * sa vle di ale nan adrès la ki estoke nan t. Se konsa, literalman, si t ap estoke adrès sa a nan h okòmansman, * vle di t ale isit la. Koulye a, sa ki t bracket 0 vle di? Menm bagay egzak. Se jis nan yon itilizatè ti kras pi plis zanmitay ekri. Men, mwen pa fè ankò. Mwen pa ka jis di * T * vin s. Paske sa ki ta mwen ap fè lè sa a? Mwen ta dwe mete h, h, h, h, h nan tout tout bagay la. Dwa? Paske * T se ale nan adrès la nan t. Men, nou ap andedan nan yon bouk. Ak sa ki valè mwen incrementing, nan kou, sou chak iteration? mwen. Men, gen nan yon opòtinite isit la, dwa? Menm si sa a santi l tankou li a ap resevwa yon ti kras pi plis sofistike pase notasyon a kare-bracket nou te itilize pou kèk tan - kite m 'defèt chanjman h mwen gen - menm si sa a se kounye a ap resevwa yon ti kras amateur, lide a debaz yo, si * T vle di isit la ak * T se jis ale nan adrès la nan t. Men, sa ki te adrès la nan t? Nimewo a nou kenbe lè l sèvi avèk? Tankou Ox456, se pou yo pote ki tounen jis pou dedomajman pou la nan diskisyon. Oke, si mwen vle jwenn nan e la nan t fisèl, mwen jis vle pou yo ale nan, esansyèlman, 456. Oswa olye, 457. Mwen jis bezwen ajoute yon sèl. Men, mwen ka fè sa, dwa? Paske t, menm si mwen kenbe desen li kounye a kòm yon flèch, li nan jis yon nimewo, Ox456. Men, si mwen ajoute youn nan sa, oswa plis jeneralman, si mwen ajoute mwen ak sa yo ki mwen kapab aktyèlman jwenn egzakteman ki kote mwen vle. Se konsa, si mwen aktyèlman fè sa - ak sa a se sa ki kounye a yo rele aritmetik konsèy - Mwen ka retire liy sa a. Ki se, franchman, mwen panse ke pi klè ak yon ti kras itilizatè plis zanmitay li. Men, sa a se pa mwens kòrèk. Liy sa a nan kòd koulye a, se lè l sèvi avèk aritmetik konsèy. Li nan di yo ale nan la swiv adrès - tou sa yo kòmanse nan t se, ki se t plis mwen, ki okòmansman se 0, ki se gwo. Paske sa vle di nan konmansman an nan t 1 plis, plis 2, plis 3, ak pou fè. Men, kontra a menm ak s. Se konsa, Massachusetts Institute of Technology sik yo pou sa. Men, konprann sa ki reyèlman ale sou anba kapo a, mwen ta diskite, se aktyèlman itil nan ak tèt li. Paske sa vle di kounye a gen pa pi plis majik ale sou anba kapo a. Gen pa pral yo dwe anpil plis kouch ke nou ka kale do pou ou. Sa a se c. Ak sa a se pwogramasyon. Reyèlman bon kesyon. Tout dwa, kidonk sa a te ke buggy pwogram mwen te refere li a pi bonè. swap te defekte. Si t 'sanble yo travay. Sonje byen, jis tankou ak lèt ​​la ak ji a zoranj - ki mwen te kòmanse bwè demonstrasyon a jodi a. Se konsa, jis menm jan ak ji a zoranj ak lèt la, nou t 'gen yo sèvi ak yon pou yon ti tan varyab, tan, kenbe yon pou yon ti tan pou nou te kapab Lè sa a, chanje valè li yo ak Lè sa a, mete b. Men, sa a fonksyon, nou te di, oswa sa a pwogram nan kote sa a fonksyon te ekri nan Liv la te mal ak defekte, poukisa? Wi? ODYANS: [fèbl]. Oratè 1: Egzakteman, lè ou rele swap - oswa plis jeneralman, lè ou rele pi nenpòt - si agiman yo ak sa yo ki fonksyon yo primitif, se konsa pale, antye ak charaktèr ak double ak flote, bagay sa yo san yo pa zetwal yo, w ap pase nan yon kopi agiman an. Se konsa, si x ak te 1 y te 2, yon ki pral yo dwe 1 epi b a pwal 2. Men, yo ap ale nan dwe fragman diferan nan Bits, fragman diferan nan memwa ki rive yo dwe estoke valè ki idantik. Se konsa, sa a Kòd se super pafè nan échanjé A ak B. Li pa bon nan échanjé - nan egzanp semèn pase a - x ak y. Paske ankò, yo ap nan sijè ki abòde lan sa ki mal. Koulye a, ki jan nou te ale sou fixing sa a? Nou te gen fè fonksyon an gade yon uglier ti kras. Men, ankò, konsidere sa sa a jis vle di. Men, aktyèlman, kite m ', pou konsistans, chanje yon sèl bagay se konsa li a ki idantik ak ki sa nou jis te fè. Kòm mwen mansyone semèn pase a, li pa fè sa gen pwoblèm kote li ale. An reyalite, anjeneral ou ta mete a etwal akote non an varyab. Men mwen panse ke li ta yon ti kras pi fasil yo konsidere * kap vini an nan la done ki kalite kòm sa vle di li nan yon konsèy nan yon Int nan ka sa a. Se konsa, sa m 'fè la a? M ap di pa ban m 'yon Int ki te swiv pa yon lòt Int, rele yo a ak b. Ban m 'adrès la nan yon Int. Ban m 'adrès la nan yon lòt Int. Rele moun ki adrese yon b ak. Lè sa a, lè l sèvi avèk notasyon a * desann anba a, ale nan chak nan sa yo adrès jan sa nesesè swa jwenn oswa mete valè li yo. Men, gen nan yon eksepsyon isit la. Poukisa mwen pa gen yon * pwochen nan tan? Poukisa mwen pa fè sa, pou egzanp? Li santi l tankou mwen ta dwe jis ale tout deyò epi yo korije tout bagay la. Yeah? ODYANS: [fèbl]. Oratè 1: Mwen pa te deklare tan kòm yon fisèl. Se konsa, sa a ta deklare, nan ka sa a, yon tan yo dwe adrès la nan yon Int. Men, sa a pa byen sa m 'vle, pou yon koup nan rezon ki fè. ODYANS: Ou pa vle swap yo. Oratè 1: Egzakteman, mwen pa vle swap anyen ak tan. tan se jis semèn-yon sèl bagay. Tout sa mwen vle se yon varyab nan magazen kèk nimewo. Mwen pa menm pran swen sou adrès nan moman sa a. Mwen jis bezwen 32 Bits oswa se konsa nan magazen yon Int. Apre sa, mwen vle mete nan 32 moun ki Bits tou sa ki pa nan yon, se konsa pale, men ki sa ki nan yon, jis yo dwe plis presi. Paske si yon se yon adrès, * yon vle di ale la epi pou yo jwenn valè a 1. Pou egzanp, nan egzanp semèn pase a oswa nan ka b a, jwenn valè a nan 2. Se konsa, sa ki reyèlman ale sou? Kite m 'desine yon foto isit la ki pral sèlman toumante apa yon pati nan jodi a. Men, sa a yo ap kontinye parèt pou kèk tan. Sa a, mwen reklame, se sa ki òdinatè w lan an memwa sanble lè ou kouri nan yon pwogram nan, nenpòt pwogram lan. Lè ou kouri nan yon pwogram nan tèt la anpil nan RAM òdinatè w lan an - se konsa panse a rektang sa a, se vre wi, menm jan ou RAM òdinatè a oswa memwa yo, tout 101 milya dola bytes nan li yo, tout de milya dola bytes yo, tout jigokte de nan li, tou sa kantite a ou gen se, kite a trase li kòm yon rektang. Apre sa, mwen reklamasyon ke lè ou kouri nan yon pwogram tankou Microsoft Word oswa Chrome oswa yon bagay tankou sa, Bits yo ki Microsoft oswa ki Google te ekri - nan ka yo nan pwogram sa yo - yo chaje nan memwa òdinatè w lan an kote yo ka ekzekite plis byen vit, yo t'ap manje nan CPU a, ki se sèvo yo nan òdinatè a. Ak nan TAM yo ap estoke nan anpil nan tèt pwogram ou an, se konsa pale. Nan lòt mo, si sa a se yon ti moso nan memwa, lè ou doub klike sou Microsoft Word, Bits yo vin sou kondwi a difisil. Yo jwenn chaje nan RAM. Epitou, n ap bouskile yo moute nan tèt la anpil sa a rektang concept. Oke, rès la nan memwa ou a se itilize pou bagay diferan. Nan tèt la anpil ou wè inisyalize done ak uninitialize done. Sa a te fè, pou pati ki pi, ak konstan oswa varyab mondyal ki gen valè. Men, plis sou sa yo yon lòt lè. Lè sa a, ou gen pil wòch la, ki nou pral tounen vin jwenn. Men, nan pati anba a se yon pati nan sa a, se patikilyèman konvnabl kounye a. Li nan chemine a sa yo rele. Se konsa, jis tankou nan pi fò sal nenpòt D isit la sou lakou lekòl la, ou gen sa yo plato ki jis pile sou tèt chak lòt yo sou ki ou ka mete manje ak etajèr. Chemine a nan yon sistèm òdinatè se yon bagay ki menm jan an. Eksepte Lè nou konsidere ke plato a, menm jan nou itilize nan sal à, nan kou, ki te vle di pote bagay sa yo plato yo oswa ankadreman yo - kòm nou pral rele yo - nan yon nan òdinatè memwa ki itilize yo kenbe varyab ak valè. Se konsa, sa ki vrèman ale sou anba kapo a? Oke, kite m 'baskile sou nan ekran an isit la. Men, nan kite konsantre jis sou la pati anba pou yon moman. Si sa a se pati ki anba mwen memwa òdinatè a, li vire soti lè m ' rele fonksyon prensipal - ki k ap pase, franchman, otomatikman pou m '- Mwen jwenn yon ti moso nan memwa nan la anba nan RAM mwen se konsa yo pale. Lè sa a se kote prensipal la varyab lokal ale. Li nan kote arg ak argv petèt ale a, epi nenpòt varyab mwen deklare andedan nan prensipal la. Yo fini nan pati anba a nan RAM òdinatè mwen an. Koulye a, sipoze ke apèl prensipal yon fonksyon tankou swap, tankou li te fè semèn pase a? Oke, nou esansyèlman mete yon plato nouvo, yon nouvo ankadreman, sou moso mwen nan memwa. Men, mwen pral dekri sa a kòm ki fè pati fonksyon an swap. Kounye a ki sa ki andedan nan swap? Oke, ki baze sou pwogram semèn pase a ak youn nan nou jis te wè yon ekstrè nan, andedan nan ankadreman swap la, oswa sou swap la plato, yo se sa ki varyab? Oke, yon ak b. Paske moun yo te agiman lokal li yo, plis yon twazyèm, tan. Se konsa, reyèlman, mwen te kapab trase sa a yon ti kras plis propr. Kite m 'ale pi devan epi defèt etikèt la. Men, kite m 'reklamasyon ke ou konnen ki sa? yon se pwobableman ale nan fini isit la. B ki pral fini isit la. Men, tan ki pral fini isit la. Koulye a,, k'ap kòmande nou yo ta ka gen yon ti kras diferan. Men, concept sa a se lide la. Epi jis kolektivman, sa a se sa nou pral rele ankadreman swap a, oswa manje-sal plato. Men, kontra a menm ak prensipal la. Men, mwen pa pral rdesine sa. Men, sa a kote arg ak argv ak nenpòt nan varyab lokal li yo tankou x ak y ta ka kòm byen. Se konsa, kounye a konsidere sa ki vrèman k ap pase lè ou rele swap. Lè ou rele swap, egzekite Kòd tankou sa a, w ap pase nan, nan la vèsyon buggy, A ak B kòm kopi x ak y. Se konsa, si mwen kounye a trase sa a sou ekran an - te rive nan jwenn pi bon nan sa a - se konsa istwa a mwen te di tèt mwen te nan vèsyon sa-a buggy, lè nou rele swap pase nan literalman a ak b kòm nonm antye yo, sa ki vrèman rive? Oke, sa ki vrèman k ap pase sa a. Kite m 'ale pi devan epi defèt jis klè moute kèk espas isit la. Se konsa, sa a se memwa òdinatè mwen an. Se konsa, si mwen gen, pou egzanp - aktyèlman kite a fè li fason sa a - si mwen reklamasyon ke sa a se x, estoke valè a 1 jis tankou semèn pase a. Lè sa a se y, estoke valè a 2 jis tankou semèn pase a. Lè sa a se prensipal yo, lè m'ap rele swap, kidonk bay tèt mwen aksè a yon ak b ak tan, mwen pral reklamasyon ke sa a se yon ak sa a se 1. Sa a se b. Sa a se 2. Se sa yo rele tan. Men, okòmansman, li gen kèk valè fatra jouk tan mwen aktyèlman magazen an li yon, ki se 1. Apre sa, mwen ale pi devan epi chanje yon yo dwe ki sa? Valè B a. Se konsa, koulye a, mwen gen de isit la. Lè sa a, nou te di b vin tan. Yon fwa ankò, jis kòm yon saniti tcheke, twazyèm lan liy nan Kòd isit la se tou senpleman sa a yon sèl, b vin tan. Se konsa, anfen, ki sa mwen fè? Mwen ale pi devan epi chanje b yo dwe tou sa valè a nan tan se, ki se 1. Mwen pa manyen tan ankò. Men koulye a,, pwoblèm nan se le pli vit ke swap retounen, paske li pa nan Distribiye tounen kèk valè, gen nan pa gen retounen deklarasyon klèman nan li. Ki sa ki nan aktyèlman pase? Oke, esansyèlman tout bagay sa a memwa - OK, aparamman gonm nan renmen sèlman yon sèl dwèt nan yon tan - jis disparèt. Koulye a, an reyalite li pa pral nenpòt kote. Men, ou ka panse a li kounye a kòm mak kesyon. Paske li nan pa gen okenn ankò aktyèlman nan itilize. E pa gen anyen yo fè ak valè sa yo. Se konsa, nan ka a nan vèsyon an vèt nan sa a Kòd, ki sa ki olye se ke yo te pase nan swap? Se konsa, adrese. Se konsa, adrès la nan x ak adrès ki nan y. Se konsa, si nou re-di istwa sa a yon dènye tan, epi mwen aktyèlman trase swap ankò, Men, se avèk endikasyon, sa a ke yo te yon, sa a yo te b, ak sa a tan ke yo te, ki sa ki aktyèlman estoke nan yon nan sa a vèt vèsyon nan kòd m 'kote m ap pase nan adrès? Li nan ale nan gen yon konsèy x. Se konsa, mwen te kapab desine yon flèch. Men, kite a sèvi ak abitrè a menm egzanp tankou anvan. Se pou nou di ke sa a se yon bagay tankou Ox123. Ak sa a se pral fè Ox127 paske li nan kat bytes lwen paske li nan yon Int, se konsa Ox127. Li di ankò, mwen pran kèk libète ak nimewo yo. Yo ap pi piti anpil pase yo ta aktyèlman ap ak nan yon lòd diferan. Men, sa a ki jan foto a se kounye a diferan. Men, lè mwen sèvi ak kòd sa a vèt ak mwen Int tan jwenn * a. * Yon vle di fè bagay sa yo, pran an adrese sa a, se nan yon epi ale nan li, ki se 1. Epi sa a, sa m 'Lè sa a, mete yo nan tan. Pandan se tan, nan liy nan pwochen nan Kòd isit la, * yon vin b, ki sa sa vle di? Oke, * yon, se konsa ale isit la vin * b, ki vle di ale la. Lè sa vle di mete valè a la. Finalman, liy ki sot pase yo nan Kòd tou senpleman di * b vin tan. Se konsa, b di ale la ak recouvrir li ak tan ki, nan ka sa a, ki pral yo dwe, ankò, 1. Lè sa a se poukisa vèsyon an vèt nan travay Kòd nou an, Lè nou konsidere ke wouj la vèsyon pa janm te fè. Li tout jis klou desann nan ki jan la memwa se jere ak ki kote li nan aktyèlman mete yo nan ou RAM òdinatè a. Men, pou kounye a, sa a, se youn nan bagay ki ki se chemine a te itilize pou. Kesyon sou Layout a? Sou endikasyon? Oswa sou swap? Tout dwa, se konsa malok, sonje, te fè yon bagay tankou sa a. Sa se te yon super egzanp ki senp. Lè sa a te yon sèl la ki Binky prezante nou, kwake byen byen vit, nan fen klas la. Dammit, gen nou ale ankò. Se konsa, sonje ke sa a te egzanp lan ki Binky prezante nou, kwake yon ti jan byen vit nan fen klas la. Ak isit la nou itilize malok reyèlman pou yon dezyèm fwa. Paske premye fwa nou itilize li nan kreye ase RAM, asiyen ase RAM nan magazen yon kòd. Fwa sa a, Binky kenbe li senp. Se konsa, li nan magazen jis yon Int, aparamman. Epi sa a, totalman amann. Li se yon etranj ti kras, franchman, sèvi ak malok asiyen yon sèl Int. Men, pwen an nan claymation Nick a te vrèman jis rakonte istwa a nan sa ki k ap pase oswa ou pa rive lè ou maltrete memwa. Se konsa, nan ka sa a, pwogram sa a te fè yon bagay kèk. Nan pwemye ka a isit la, li menm yon konsèy rele x nan yon Int. Li Lè sa a, deklare yon konsèy rele y nan yon Int. Li Lè sa a, magazen nan x, ki sa? Yon lòt moun kounye a. Ki sa ki vin estoke nan x dapre liy nan twazyèm nan pwogram sa a? ODYANS: [fèbl]. Oratè 1: Oke, pa byen bytes, pou chak di. Gen plis egzak kounye a. Ki sa ki vin estoke nan x? Yon adrès, mwen panse ke m 'te tande l'. Se konsa, sa malok retounen? malok konpòtman repati yon ti moso nan memwa. Men, ki jan li ba ou aksè nan li? Li retounen ki sa? Postal la nan multiple nan premye nan moso la nan memwa. Koulye a, sa a se senp super. Se jis nan yon sèl multiple, ki vle di nan adrese nou ap vin tounen se la adrès nan tout bagay la. Se konsa, ki estoke nan x lè sa a, se adrès la sa a ti moso nan memwa. Pandan se tan, ki sa k ap pase answit? Se konsa, aktyèlman, se pou yo ale pi devan epi trase sa-a vit soti reyèl. Se konsa, si nou janbe lòt bò nan ekran an isit la ak nou jwe sa a soti Int * x ak Int * y ki pral fè sa pou mwen? Mwen reklamasyon ke li nan jis pral fè yon bagay tankou sa a ak rele li x, ak sa a ak rele li y. Pandan se tan, liy nan twazyèm nan Kòd la se ale nan asiyen gwosè a nan yon Int, ki k ap pase yo - regrèt si m 'te di yon sèl mwen anvan m 'te vle di yon sèl Int - kat bytes sou yon òdinatè òdinè. Omwen ak aparèy la CS50. Se konsa, sa a ki pral asiyen li, ki moun ki konnen? Yon kote soti isit la. Ak sa a se ki estoke nan kèk bèf adrès, ki moun ki konnen? Men, sa k ap pase jwenn tounen se ke adrès. Men, nou pral pran sa a pictorially kòm jis yon flèch tankou sa. Koulye a, nan liy nan pwochen * x vin 42. Ki sa ki * x vle di nan tèm pwofàn la? Jis ale la. Ale nan ki adrès. Oswa nan lòt mo, swiv la flèch li mete 42 la. Men, Lè sa a, yon move bagay ki te pase Binky, dwa? Sonje byen, liy senk isit la, * y ap vin 13, tout bon yon nimewo malheureux, te fè sa pou nou? Oke, * vle di y ale la. Bon, sa a pa te bay yon valè ankò, dwa? Kòd la pa gen y ke yo te initialisé anyen. Nou te x ke yo te initialisé nan yon lari yo. Men, y te deklare moute tèt. Men, lè sa a yon virgules, pa gen okenn valè te aktyèlman mete nan li. Se konsa, li jis yo rele sa a yon fatra valè. Ki moun ki konnen sa ki nan genyen? Li nan sold yo nan Bits ki te itilize pa kèk liy anvan yo nan kòd nan pwogram m 'yo. Se konsa, si mwen di ale la, sa a se tankou, Mwen pa gen okenn lide kote sa a flèch la se ale nan fini. Epi sa a, lè ou tipikman jwenn yon fay segmentation. Si ou aksidantèlman dèreferans, se konsa yo pale, oswa ale nan yon adrès sa a pa aktyèlman yon adrès lejitim, move bagay rive. Epi sa a, egzakteman sa ki te pase panse Binky. Se konsa, sonje ke istwa a ki Nick te di isit la se te lide a menm jan ak sa ki Mwen te trase ak ilizyon an lakre sou tablo a la. X ak Y yo te deklare. Lè sa a, nou resevwa lajan gwosè a nan yon Int ak estoke l 'nan x. Lè sa a, liy nan pwochen nou te fè * x. Sa a te majik ralonj Nick a nan dereferencing. Sa mete 42 nan memwa a vize deyò pa x. Men, sa a se kote bagay sa yo ale oribleman mal. Dwa? Nou te eseye y dèreferans. Men, y te gen kèk valè fos, dwa? Sa flèch nan anba a sou bò gòch kwen, se pa aktyèlman montre anyen. Li nan kalite fè sa mwen te fè isit la sou tablo a. Se konsa, move bagay rive, segmentation fòt, oswa Binky mal, nan ka sa a. Men, si nou Lè sa a, ranje ki pa fè x vin y ki jan fè chanjman nan istwa? Oke, si m 'fè x vin y, sa a, se efektivman menm bagay la tou kòm li te di tou sa sa a se, bèf yon bagay ki pral fè menm bagay la isit la, Bèf-yon bagay. Oswa pictorially nou pral trase yon flèch. Se konsa, isit la sou tablo a ak Binky, ak liy nan pwochen nan Kòd, * y vle di ale la. Ki kote ki gen la? Sa vle di plis pase isit la. Lè nou mete sa yo dwe 13 li jis enplike nan prale ak ekri 13 isit la kounye a. Se konsa, petèt pa konplètman dwat nan premye gade. Men, yo Rekapitilasyon ak yo sèvi ak jagon an menm ki Binky te lè l sèvi avèk isit la, se konsa de premye asiyen endikasyon yo, x ak y, men se pa pointees yo. Men, pointees se pa yon jeneralman itilize tèm. Men, konsèy absoliman se. Men, li la sa k ap pwente nan nan nomanklatur Binky a. Liy sa a kap vini an, nan kou, repati yon pointee Int. Se konsa, yon ti moso nan memwa - jan mwen te trase sou sou bò men dwat-ou gen - li mete x egal a lonje dwèt sou li. Sa a x dereferences nan magazen 42 nan memwa a ke li nan montre nan. Lè sa a, sa a, nan kou, te yon move bagay. Paske y pa te montre nan anyen ankò. Sa a fiks li. Se konsa, sa a se toujou pwogram buggy. Jis paske nou ap mouche nan la liy Kòd pa liy yo t'ap di konsa, o byen, kite l aksidan la. Sa se yon move bagay. Chans yo se pwogram lan jis ale nan avote tout ansanm nan ki liy. Men, si ou te yo retire te fè aksidan an liy ak ranplase li ak de ki sot pase a liy gen ou yo bay - lè l sèvi avèk plasman konsèy - y nan pwen x kòm t pwen. Lè sa a, ou dèreferans y nan yon fason trè an sekirite. Se konsa, kote sa a kite nou fè? Oke, sanble ke anba kapo a nan bibliyotèk la CS50, endikasyon yo itilize nan tout. Epitou, n ap aktyèlman kòmanse kale tounen ke kouch anvan lontan. Men, li sanble tou, yon ekspresyon ki kèk nan ou ta ka dwe abitye avèk, patikilyèman sa yo ki pi alèz, se aktyèlman sa yo ki an yon popilè trè sit entènèt, oswa debòde chemine, jou sa yo. Men, sa a aktyèlman gen anpil teknik sans. Nou kounye a konnen ki sa yon pil se. Se tankou yon pil nan plato ki anba po andedan nan yon sal manje. Oswa andedan nan òdinatè a ou memwa li yo sa yo ankadreman ke yo te itilize pa fonksyon. Oke, li vire soti ke paske yo te ke trè senp aplikasyon memwa ak ankadreman sou sa yo rele an- chemine, ou ka aktyèlman pran kontwòl nan yon sistèm òdinatè fasil. Ou ka Hack nan yon sistèm si moun tankou nou pa genyen ekri Kòd nou patikilyèman byen. Si moun tankou nou sèvi ak fragman nan memwa oswa itilize ranje - menm pi souvan - men pafwa bliye tcheke nan limit nan etalaj nou an jan ou ta ka gen tèt ou pafwa, ak iteratif fason twò lwen sot pase yo nan fen yon etalaj. Nan ka ki pi bon, pwogram ou an ta ka jis aksidan. Fòt segmentation, kalite nan anbarasan. Pa gwo, men li la pa nesesèman yon bagay lajman move. Men, si pwogram ou an se aktyèlman sou reyèl òdinatè itilizatè yo ', si li ap kouri sou yon sit wèb ki aktyèl moun o aza sou entènèt la ap frape, kite moun pwovoke move bagay sou Kòd ou a jeneralman yo pa yon bon bagay paske sa vle di yon opòtinite yo pran kontwòl òdinatè a. Ak sa a se pral gade yon ti kras skre. Men, mwen te panse mwen ta pè ou ak egzanp sa a sot pase isit la. Isit la nan yon egzanp kòd. Men, gen yon Wikipedia bon atik ki mache nan sa a nan plis detay. Mwen gen prensipal la sou rele anba a foo, pase nan argv nan 1. Epi sa a, jis pou ke ou ka kouri pwogram nan epi yo pase yon D 'abitrè. Lè sa a, foo se te deklare moute tèt kòm aksepte yon fisèl, oswa plis jisteman, yon * Char. Li Lè sa a, mwen menm yon etalaj de charaktèr. Rele li yon tanpon, plis jeneralman, nan gwosè 12. Se konsa, 12 charaktèr ka anfòm anndan sa a etalaj yo rele c. Lè sa a, li itilize fonksyon sa a nouvo, ki se nouvo, men se pa difisil yo konprann, kopi memwa. Li kopi memwa a soti nan ba, sa ki te n an ki sot pase a varyab, kèlkeswa sa itilizatè tape nan argv 1 nan c. Konbyen bytes? Fisèl Longè a nan ba. Se konsa, nan lòt mo, si itilizatè a kalite nan H-e-L-l-o antre, longè fil nan alo se senk. Se konsa, senk nan sa yo bytes ki pral jwenn kopye nan etalaj la yo rele c, ki se nan gwosè 12. Men, sa ki itilizatè a kalite nan yon pi lontan ankò mo sa a, se 13 karaktè oswa 14 karaktè oswa 100 karaktè oswa plis? Ki kote yo pral yo ale? Oke, ki ankadreman, ki plato nan chemine nan manje-sal, yo ap ale nan ale la. Epi li jis pral kòmanse ranplasan lòt bagay ki nan deja sou sa chemine, debòde chemine a, se konsa pale. Se konsa, pictorially, panse a li nan fason sa. Sa a se jis yon vèsyon kolore nan foto a nou ve yo te fè desen. Nan pati anba a, se pou yo di, se prensipal la. Men, sou tèt, ki sa ou ap wè kounye a se ankadreman, koulè a ​​kode, koulye a, pou yon fonksyon rele foo. Men, sa ki nan enteresan isit la sou foo se ke isit la se ankadreman li yo. Se konsa, li la trase jis tankou mwen te fè men nan limyè ble. Epi, koulye a sa a se kote c bracket 0 ale. Lè sa a se kote c bracket 11 ki pral fini. Nan lòt mo, li k ap pase nan dwe reprezante kòm yon kare. Men, si ou jis kenbe plopping bytes desann - oswa charaktèr - yo ap ale nan fen moute nan kote 0 tout wout la moute a 11 paske li 0 Catalogue. Men, kote se pèsonaj la 13th ale nan fini? Kote nan 14yèm a? Kote nan pèsonaj la 50th ale nan fini? Li nan ale nan kenbe desann. Paske menm si nou te trase a foto ak chemine a ap grandi, nan adrès, li vire soti, ale nan adrès piti, ti endikasyon, nan adrès gwo. Se konsa, li jis kenbe moute ak yo. Se konsa, si itilizatè a kalite nan hello, sa a, se gwo. Pa gen ensèk, pa gen okenn pwoblèm, san danje tout moun. Men, si itilizatè a kalite nan sa nou pral rele konfwontasyon kòd, reprezante generic kòm yon atak,, atak, atak, atak, sa ki ka rive? Bon, si tout nan opinyon an ki itilizatè a tape nan se pa sèlman kèk zanmitay oswa ofansif fisèl nan karaktè. Li nan aktyèlman yon sekans nan karaktè ke si ou konpile li, li aktyèlman se kòd. Petèt li nan kòd ki supresyon tout la dosye sou kondwi difisil ou oswa voye Spam oswa yon bagay tankou sa. Remake sa ki nan kle isit la se ke si nèg la move te resevwa chans ase recouvrir moso wouj la nan memwa - ki mwen pa t 'desine sou foto mwen men sa a Wikipedia foto isit la gen - sa yo rele adrès retou li yo. Lè manje retounen, lè retounen swap, ki jan òdinatè a konnen yo ale nan moute isit la yo desann isit la? Oswa yo nan segman sou teknoloji moute pi wo a, ki jan li konnen yo ale nan swap a Kòd - 0 a ak nan 1 ki konpoze swap - tounen nan prensipal yo? Genyen yon adrès retou sa yo rele ki estoke nan ki ankadreman chemine menm, sou plato a kafeterya menm. Se konsa, si nèg la move se entelijan ase yo mete kòd atak, kòd atak, atak Kòd, epi pou yo jwenn chans ase - souvan nan esè ak erè - a recouvrir ke adrès retou wouj, ak adrès la ak avi trè tèt la. Avi 0835C080. Li nan ekri nan Liv la bak moute tèt pou rezon ki fè nou pral petèt revize. Sa a se ladan nimewo. Se konsa, si nèg la move vin chans ase oswa se entelijan ase yo recouvrir wouj la dezabiye nan memwa ak adrès la nan kòd ki li gen yon jan kanmenm sou fòm piki nan òdinatè w lan, devine ki gen Kòd yo pral tounen tounen yo le pli vit ke foo se fè egzekite? Kòd nèg la move an. Se konsa, sa a Kòd atak, AAA, ankò, ka voye Spam, ta ka efase tout dosye yo sou difisil kondwi ou. Men, se sa ki vrèman yon debòde chemine se, oswa yon depase tanpon, oswa yon tanpon atak debòde. Lè li nan ekstrèmman, ekstrèmman komen nan jou sa a ak pwogram ki ekri nan C, C + +, e menm kèk lòt lang yo. Sou ki nòt pè, nou pral fini ak yon blag. [Ri] Al gade nan ou nan Mèkredi. Nan CS50 kap vini an - Se konsa, mwen se tout soti nan lanp ki gen kapasite jodi a men rete tann, san grès lèt, mwatye telefòn nan liv, ji a zoranj ke mwen bwè jodi a. USB kab, yon kle. [Jwe mizik]