DAVID Malan: Hello, ak Byenveni nan CS50. Se konsa, sa a se nan fen semèn kat. Jis yon anons premye. Se konsa, sa yo rele senkyèm Lendi a se vini sa a Lendi kap vini yo. Sa a se opòtinite a chanje soti nan SAT / UNSAT nan yon nòt an lèt, oswa nan nòt an lèt SAT / UNSAT. Annoyingly, pwosesis sa a fè mande pou yon siyati, paske, ou oblije ranpli soti youn nan moun ki fòm woz ajoute / gout. Paske teknikman, SAT a / UNSAT vèsyon ak vèsyon an nòt an lèt gen nimewo katalòg diferan. Men, pa gen kontra gwo. Jis vini m 'oswa volè oswa nan Lauren nan nenpòt ki pwen. Oswa voye yon imèl nou si ou pa genyen kalite a nan dokiman ou bezwen jodi a, e nou yo pral asire w ke ou ede w pran swen ke anvan Lendi. Tout dwa, se konsa jodi a - aktyèlman, gen nan yon ti jan nan yon eko. Nou ka ton m 'desann yon ti jan? OK. Se konsa, jodi a, nou prezante yon sijè li te ye kòm endikasyon. Apre sa, mwen pral admèt ke sa a se youn nan la pi konplèks sijè ke nou yo gen tandans kouvri nan klas sa a, oswa reyèlman nenpòt ki Entwodiksyon kou ki sèvi ak C. Men, pran pawòl mwen pou li, patikilyèman si tèt ou santi l Bent yon ti jan pi plis jodi a ak nan semèn k'ap vini yo. Li pa reprezantan ou ap resevwa nenpòt ki vin pi mal nan sa a li jis vle di ke li nan yon sijè patikilyèman sofistike ke mwen te pwomèt, yon kèk semèn kon sa, pral sanble tout twò fason frapan dwat nan retrospective. Mwen toujou sonje nan jou sa a. Mwen te chita nan Elliott Gastronomie Hall, chita bò kote Mehta TF Nishat m 'yo, ki moun ki te yon rezidan nan Elliott kay la. Men, pou kèk rezon, sa a sijè jis klik. Ki se di ke mwen twò plede ak li pou kèk kantite tan, men mwen pral fè pi byen mwen an ede evite nenpòt sa yo lit ak yon sijè ki finalman se byen gen anpil pouvwa. An reyalite, youn nan sijè yo nou pral diskite sou nan semèn ki vini se ke sekirite, ak fason ou kapab aktyèlman esplwate machin nan fason ki pa te gen entansyon. Ak moun ki èksplwatasyon yo, se tipikman rezilta a nan pinèz erè, ke nou moun ki fè pa pa konprann kèk nan aplikasyon an kache detay atravè ki pwogram yo fè fè yo. Koulye a, fè sa-a sanble tout itilizatè a plis zanmitay, mwen te panse mwen ta jwe yon 10 dezyèm aperçu nan yon claymation ti kras figi yo te rele Binky ki moun ki te mennen l 'bay lavi pa yon zanmi nou nan Stanford, pwofesè Nick Parlante. Se konsa, pèmèt mwen ba ou sa a kol nan Binky isit la. [Lèktur videyo] -Hey, Binky. Reveye. Li lè pou plezi konsèy. -Ki sa ki nan sa? Aprann sou endikasyon? Oh, goodie. [Lèktur videyo END] DAVID Malan: Sa se Stanford syans òdinatè. Se konsa, plis sou ki ap vini yo. [Aplodisman] DAVID Malan: Padon, Nick. Se konsa, sonje ki dènye fwa nou te fini sou sa a cliffhanger reyèlman enteresan kijan fonksyon sa a jis pa t 'travay. Omwen entwitif, li te santi tankou li ta dwe travay. Senpleman échanjé valè yo de nonm antye. Men, sonje ke lè nou enprime a soti valè orijinal nan yon sèl prensipal yo, ak de, yo te toujou yon sèl ak de epi yo pa de ak yon sèl. Se konsa, kite m 'aktyèlman chanje sou nan aparèy la. Apre sa, mwen te ekri moute yon ti jan nan Kòd zo nan avanse isit la, kote mwen reklamasyon ke x yo pral 1, y ap 2. Mwen Lè sa a, ekri ak lèt ​​detache tou de soti yo valè ak f ekri an lèt detache. Mwen Lè sa a, reklamasyon desann isit la ke nou pral swap yo. Mwen te kite yon plas vid isit la pou nou ranpli nan jodi a nan jis moman sa a. Lè sa a, mwen pral reklamasyon ke nan de varyab yo te échanges. Lè sa a, mwen pral ekri ak lèt ​​detache yo soti ankò. Se konsa, èspere ke, mwen ta dwe wè 1, 2. 2, 1. Sa a senp nan super objektif kounye a. Se konsa, ki jan nou ale sou échanjé de varyab? Oke si mwen pwopoze isit la ke sa yo tas ta ka reprezante memwa nan yon òdinatè. Sa a se yon mòde kèk, sa a se yon lòt mòde kèk. Te kapab nou te yon volontè vini sou leve, li melanje nou kèk bwason, si yo konnen yo? Vini non sou yo. Ki sa ki nan non ou? Jess: Jess. DAVID Malan: Jess? Vini non sou leve, Jess. Si ou pa lespri nou, nou gen yo mete nan Google Glass sou ou pou nou kapab imortalize sa a. OK, vè. Ekri yon videyo. Men, OK, nou se bon ale ak Jess isit la. Tout dwa. Nice al kontre ou. Se konsa, sa mwen ta renmen ou fè isit la - si ou te kapab, byen byen vit - jis vide nou mwatye yon vè zoranj ji ak mwatye nan yon vè lèt, ki reprezante efektivman nimewo 1 nan yon tas ak 2 yo nan gode a ak lòt. Sa a se pral yo dwe bon pye. Jess: M regrèt. DAVID Malan: Non, pa gen okenn. Li nan OK. Nice. Tout dwa, se konsa nou gen kat bytes yon valè de ji zoranj. Nou pral rele l 'valè a 1. Koulye a, yon lòt bytes kat vo lèt. Èske rele l 'apresye 2. Se konsa, x ak y, respektivman. Tout dwa, se konsa kounye a si travay la nan men - pou ou, Jess, la devan tout nan kondisip ou - se swap valè yo nan x ak y sa yo ke nou vle ji an zoranj nan la lòt tas ak lèt ​​la nan gode soufrans sa a, ki jan ka ou - anvan ou aktyèlman fè li - ale sou fè sa? OK, ki gen bon konprann desizyon. Se konsa, ou bezwen yon ti jan pi plis memwa. Se konsa, kite a asiyen yon ti tan tas, si ou ap. Epi, koulye a kontinye nan swap x ak y. Ekselan. Se konsa, trè byen fè. Mèsi anpil, Jess. Isit la ou ye. Yon souvni ti kras. OK, se konsa evidamman, super lide ki senp. Konplètman entwisyon ke nou bezwen yon ti jan plis depo espas - nan fòm sa a, yon tas - si nou aktyèlman vle swap sa yo varyab de. Se konsa, kite a fè egzakteman sa. Moute isit la nan ant kote mwen reklamasyon mwen se yo pral fè kèk échanjé, mwen pral ale pi devan epi deklare temp. Apre sa, mwen pral mete l 'egal a, di, x. Lè sa a, mwen pral chanje valè la nan x jis tankou Jess te fè isit la ak nan lèt ak ji zoranj yo dwe egal a y. Ak mwen se pral chanje y yo dwe egal pa x, paske kounye a nou ta dwe kole nan yon sèk, men pito temp. Ki kote pou mwen pou yon ti tan - oswa kote Jess pou yon ti tan mete ji a zoranj anvan clobbering ki tas ak lèt ​​la. Se konsa, kite m 'ale pi devan koulye a ak fè sa-a. Li rele noswap.c. Epi, koulye a kite m 'kouri pa gen okenn swap. Ak tout bon mwen wè, si mwen elaji la fenèt yon ti jan, ki x se 1, y se 2. Lè sa a, x se 2, y se 1. Men, sonje ke nan Lendi nou te fè bagay sa yo yon ti jan diferan kijan mwen olye pou aplike yon fonksyon k'ap vin ede, si ou vle, sa ki te aktyèlman anile. Mwen rele l 'swap. Mwen te bay li de paramèt, ak mwen te rele yo yon ak mwen rele yo b. Franchman, mwen te kapab rele yo x ak y. Pa gen anyen kanpe m 'depi nan fè sa. Men, mwen ta diskite li a Lè sa a, yon Limit ti kras. Paske sonje pou Lendi a ke nou te deklare ke sa yo paramèt yo te kopi valè yo te pase pous Se konsa, li jis dega ak ou tèt ou, mwen panse, si ou itilize egzakteman varyab yo menm. Se konsa, mwen pral olye rele yo yon ak b, jis pou klè. Men, nou te ka rele yo pi anyen nou vle. Men, mwen pral fè kopi epi kole efektivman sa a Kòd ki soti nan 'kanpe desann nan isit la. Paske mwen jis te wè ke li travay. Se konsa, sa a, se nan fòm trè bon. Apre sa, mwen pral chanje x mwen nan yon x, mwen nan yon, y mwen an b ak y mwen an b. Se konsa, nan lòt mo, egzak lojik menm. Egzak menm bagay la ki Jess te fè sa. Lè sa a, bagay la yon sèl mwen te fè moute isit la, nan kou, se kounye a envoke sa a fonksyon, oswa rele fonksyon sa a. Se konsa, mwen pral rele fonksyon sa a ak de entrain, x ak y, ak frape sove. Tout dwa, se konsa fondamantalman menm bagay la. An reyalite, mwen te pwobableman te fè pwogram nan san nesesite konplèks pa ekri yon fonksyon ki jis pran kèk liy sis nan kòd Lè nou konsidere ke mwen deja te aplike sa a nan jis twa. Se konsa, kite m 'ale pi devan koulye a ak renouvèlman sa a, fè pa gen okenn swap. Tout dwa, mwen vise moute isit la. Sa a ta dwe yon erè ke ou ta ka wè de pli zan pli souvan kòm ou pwogram jwenn plis konplèks. Men, gen nan yon ranje fasil. Kite m 'woulo liv tounen moute isit la. Ak sa ki nan erè a premye fwa mwen ap wè? Enplisit deklarasyon an. Ki sa ki ki tipikman montre? Oh, mwen bliye pwototip la. Mwen bliye yo anseye du a ki swap ki pral egziste menm si li pa egziste nan konmansman an anpil nan pwogram nan. Se konsa, mwen jis pral di san valè, swap, Int, yon b Int, virgules. Se konsa, mwen pa ale nan reimplement li. Men koulye a, li koresponn sa ki nan desann isit la. Men, avi, absans la nan yon virgules isit la, ki se pa nesesè lè mete ann aplikasyon. Se konsa, kite m 'renouvèlman sa a, fè pa gen okenn swap. Anpil pi bon fòm. Kouri pa gen okenn swap. Men, modi li. Koulye a, nou ap tounen kote nou te nan Lendi, kote bagay la pa t 'swap. Ak sa ki nan eksplikasyon an entwisyon pou poukisa sa a se ka a? Yeah? ELÈV: [fèbl]. DAVID Malan: Egzakteman. Se konsa, a ak b se kopi x ak y. Men, an reyalite, nenpòt ki lè w te yon rele yon fonksyon konsa byen lwen ki pase varyab tankou antye - menm jan swap ap tann isit la - ou nèg yo te pase nan kopi. Koulye a, sa vle di li pran yon ti jan yo nan tan, yon dezinyon dezyèm lan, pou la òdinatè a kapab bay kopi Bits yo soti nan yon varyab nan Bits yo nan yon lòt. Men, sa a pa tankou yon kontra gwo. Men, yo ap Alòske yon kopi. Se konsa, koulye a, nan yon kontèks swap, Se mwen menm ki nan reyalite avèk siksè chanje yon b ak. An reyalite, se pou yo fè yon rapid saniti chèk la. F Enprime yon, se pousantaj% mwen, liy nouvo. Ak ploge kite a nan yon. Koulye a, kite a fè menm bagay la ak b. Li kite yo fè menm bagay la isit la. Epi, koulye a, kite m 'kopi liy sa yo menm ankò nan fon an nan fonksyon an apre twa liy mwen an enteresan te kapab egzekite, ak enprime yon b ak ankò. Se konsa, kounye a kite a fè sa-a, fè pa gen okenn swap. Kite m 'fè fenèt la tèminal yon ti jan pi wo, se konsa ke nou ka wè plis nan li nan yon fwa. Epi kouri pa gen okenn swap. x se 1, y se 2. yon se 1, b se 2. Lè sa a, yon se 2, b se 1. Se konsa, li ap travay, jis tankou Jess te fè isit la andedan nan swap. Men, nan kou, li la ki pa gen efè sou varyab yo nan prensipal la. Se konsa, nou te wè yon Trick fè pou nou te kapab ranje sa a, dwa? Lè w ap fè fas ak sa a délimitation pwoblèm, ou ta ka jis bote epi fè x ak y ki kalite varyab olye? Ou te kapab fè yo mondyal la. Mete yo nan tèt la anpil nan dosye a jan nou te fè, menm nan jwèt la nan 15. Nou itilize yon varyab mondyal la. Men, nan yon kontèks la nan jwèt la yon 15, li nan rezonab gen yon mondyal varyab ki reprezante tablo a, paske antye a nan 15.c se tout sou mete ann aplikasyon ki jwèt. Sa a ki sa dosye a egziste fè. Men, nan ka sa a isit la, mwen se rele yon swap fonksyon. Mwen vle swap de varyab. Men, li ta dwe kòmanse santi jis peu si solisyon an nan tout nou yo pwoblèm lè nou kouri antre nan sijè ki abòde pwoblèm se fè li mondyal la. Paske trè byen vit pwogram nou an, se ale nan vin byen yon dezòd. Epi nou te fè sa trè ti kras kòm yon konsekans nan 15.c. Men, li vire soti gen yon pi bon fason tout ansanm. Kite m 'aktyèlman tounen ladan l epi efase nan ekri ak lèt ​​detache nan f, jis senplifye sa a kòd. Men, kite m 'pwopoze ki sa a, tout bon, se move. Men, si mwen olye pou ajoute nan kèk Stars ak zetwal yo, mwen ka olye vire sa a fonksyon nan yon sèl sa a, se aktyèlman a fonksyone. Se konsa, kite m 'ale tounen isit la ak admèt li di Stars se toujou difisil, Se konsa, mwen pral di zetwal yo. Mwen pral jis fess jiska ke yon moun. Tout dwa. Epi, koulye a, ki sa mwen pral fè olye? Se konsa, premye nan tout, mwen pral presize ke olye pou yo pase yon Int an fonksyon an swap, mwen se olye nan pral di Int zetwal. Koulye a, sa ki etwal la montre? Sa a se ki nosyon nan yon konsèy ki Binky, pèsonaj la claymation, se te refere li a yon ti moman de sa. Se konsa, si nou di Int etwal, siyifikasyon an nan sa a kounye a se ke yon pa pral yo dwe te pase nan pa valè li yo. Li pa nan ale nan dwe kopye pous Olye de sa, adrès la nan yon se yo pral pase pous Se konsa, sonje ki andedan nan òdinatè w lan se yon pakèt tout nan memwa, otreman li te ye kòm RAM. Epi ki RAM se jis yon tout pakèt moun sou bytes. Se konsa, si Mac ou a oswa PC ou gen de jigokte, ou gen 2 milya dola bytes nan memwa. Koulye a, kite yo jis sipoze ke jis kenbe bagay sa yo bèl ak lòd yo, nou bay yon adrès - yon nimewo - bay chak multiple nan RAM nan òdinatè ou. Multiple nan trè premye nan tout sa yo 2 milya dola a se pa zewo nimewo. Yon sèl nan pwochen se nimewo multiple yon sèl, nimewo de yo, tout chemen an, sou leve, dot dot dot, nan apeprè 2 milya dola. Se konsa, ou kapab kantite bytes yo nan memwa nan òdinatè ou. Se konsa, kite a sipoze ke se sa ki nou vle di pa yon lari yo. Se konsa, lè mwen wè Int zetwal yon, sa k ap pase dwe pase nan swap kounye a se nan adrès nan yon. Pa valè li yo, men tou sa Sèvis Lapòs li yo adrès se, se konsa pale - kote li yo nan RAM. Lè Menm jan an tou pou b, mwen pral yo di menm bagay la. Int, zetwal, b. Kòm yon sou kote, teknikman zetwal la kapab ale nan lòt kote. Men, nou pral estandadize sou zetwal la te dwa akote di ki kalite done yo. Se konsa, swap siyati kounye a vle di, ban m ' adrès la nan yon Int, ak rele ki adrès yon. Men, ban m 'yon lòt adrès nan yon Int epi rele ki b adrès. Men koulye a, kòd m 'isit la gen chanje. Paske si Mwen deklare Int temp - ki se toujou nan Int di ki kalite - men mwen sere nan li yon, ki kalite valè? Pou yo kapab klè, mwen mete yon yon ak kòd la jan yo te ekri kounye a? Mwen mete kote a nan yon. Men, mwen pa pran swen sou la kote kounye a, dwa? Temp egziste jis tas twazyèm Jess ' te egziste, pou sa ki objektif? Nan magazen yon valè. Lèt oswa ji zoranj. Pa aktyèlman magazen adrès la nan swa nan bagay sa yo, ki santi l yon ti kras absurde nan sa a reyèl kontèks mond de tout fason. Se konsa, reyèlman, sa m 'vle yo mete nan temp se pa adrès la la nan yon, men Sa ki nan yon. Se konsa, si yon se yon nimewo tankou 123, sa a se multiple nan 123RD nan memwa ke yon jis k ap pase yo okipe, ke valè a nan yon k ap pase yo okipe. Si m 'vle pou yo ale nan ki adrès, Mwen bezwen di yon etwal. Menm jan tou, si m 'te chanje sa ki nan nan adrès ki yon, mwen chanje sa a kòmanse yon. Si m 'vle nan magazen nan sa ki nan nan nan kote yon ak sa ki nan nan kote a nan b, zetwal b zetwal. Se konsa, nan kout, menm si sa a se pa byen l ap desann nan ankò - e mwen pa ta atann ke li ta tèlman vit - reyalize ke tout m ap fè se prefiks sa yo zetwal yo varyab m 'yo, pawòl pa gen tan pwan vèti yo. pa chanje valè yo. Men, olye, ale nan sa yo adrès epi pou yo jwenn valè la. Ale nan ki adrès ak chanjman valè a la. Se konsa, kounye a kite m 'woulo liv tounen moute sou tèt la, jis ranje liy sa a isit la, nan chanje pwototip la matche ak. Men, mwen koulye a bezwen fè yon lòt bagay. Entwitif, si mwen te chanje kalite nan agiman ki swap ap tann, ki lòt bagay mwen bezwen chanje nan Kòd mwen an? Lè m 'rele swap. Paske kounye a, sa ki am Mwen pase swap toujou? Valè x la ak valè y, oswa lèt la ak ji an zoranj. Men, mwen pa vle fè sa. Mwen olye vle pase nan ki sa? Kote a nan x ak ki kote y. Ki sa ki adrès lapòs yo, se konsa yo pale. Se konsa, fè sa, gen nan yon comercial. Kalite comercial nan son tankou adrès. se konsa n, Comercial, adrès la nan x, ak adrès la nan y. Se konsa, li ekspre ke nou itilize ampersands lè w rele nan fonksyon an, ak zetwal yo lè deklare ak lè mete ann aplikasyon fonksyon an. Epi jis panse a comercial kòm la adrès operatè, ak zetwal kòm la ale la operatè - oswa, plis kòrèkteman, a operatè dèreferans. Se konsa, sa a, se yon anpil tout mo jis di ke kounye a, èspere ke, swap ki pral yo dwe kòrèk. Kite m 'ale pi devan epi fè - kite a aktyèlman chanje non dosye a, pou pwogram sa a dwe toujou rele pa gen okenn swap. Mwen reklamasyon ke nou pral rele li swap.c kounye a. Se konsa, fè, swap. Dot, koupe, swap. Epi, koulye a tout bon, x se 1, y se 2. Lè sa a,, x se 2, y se youn. Oke kite a wè si nou pa ka fè sa yon ti kras ti jan diferan tankou sa ki nan ale sou isit la. Premyèman, kite m 'rale nan sou nou desen ekran isit la. Men, kite m 'pwopoze pou yon moman - ak lè mwen trase isit la yo pral reflete 'kanpe kounye a - kite m' pwopoze ki isit la nan yon pakèt tout nan memwa, oswa RAM, andedan nan òdinatè mwen an. Lè sa a yo pral nimewo mòde, kite a di, 1. Sa a pral bytes nimewo 2. Apre sa, mwen pral fè yon pakèt tout pi plis, epi Lè sa a, yon pakèt moun sou dot pwen dot yo endike ke gen nan 2 milya dola nan bagay sa yo. 4, 5, ak pou fè. Se konsa, gen senk premye bytes yo nan memwa òdinatè mwen an. Tout dwa? Trè kèk soti nan 2 milya dola. Men koulye a, mwen pral pwopoze sa ki annapre yo. Mwen pral pwopoze ke x se ale nan magazen nimewo a 1, ak y ki pral nan magazen nimewo 2 a. Men, kite m 'ale pi devan kounye a epi yo reprezante valè sa yo jan sa a. Se pou yo fè sa jan sa a. Ban m 'jis yon sèl dezyèm fwa. Yon dezyèm fwa. OK. Mwen vle fè sa-a ti kras yon - kite a fè sa ankò. Sinon mwen pral ak lè l sèvi avèk la nimewo menm, san, plizyè fwa. Se konsa, jis pou nou gen nimewo diferan pale sou, se pou yo rele sa multiple nimewo 123, 124, 125, 126, ak dot dot dot. Men, kite m 'fè reklamasyon kounye a ke mwen pral mete valè a 1 isit la, ak valè nan 2 isit la, otreman li te ye kòm x ak y. Se konsa, li jis pou rive ke sa a se x, sa a se y. Epi jis pa kèk chans o aza, nan òdinatè, sistèm nan fonksyone, rive mete x nan kote nimewo 123. Ak y te fini nan kote 124 - modi li. Mwen ta dwe gen fiks sa a. Oh nonm, mwen reyèlman vle fè sa? Wi, mwen vle ranje sa a ak b apwopriye sou sa a jodi a. Padon, nouvo nan sa a. 127, 131, ak mwen pa t 'vle yo dwe sa a konplèks, men poukisa mwen chanje a nimewo a? Paske mwen vle antye yo aktyèlman ap kat bytes. Se konsa, kite a gen super twou dèyè sou sa. Se konsa, ke si 1 k ap pase yo dwe adrese 123, 2 an a pwal nan adrès 127 paske li nan jis 4 byes ale. Sa a tout. Epitou, n ap bliye sou tout la lòt adrès ki nan mond lan. Se konsa, x se nan kote 123, y se nan kote 127. Epi, koulye a, ki sa ki fè mwen aktyèlman vle fè? Lè m 'rele swap kounye a, sa ki nan aktyèlman ale sou? Oke, lè m'ap rele swap, mwen pase nan adrès ki nan x ak adrès la nan y. Se konsa, pou egzanp, si pyès sa yo de papye kounye a reprezante de la agiman a ak b swap, ki sa mwen ale nan ekri sou premye a nan bagay sa yo, ki mwen pral rele, al gade nan kòm yon? Egzakteman, 123. Se konsa, sa a mwen reklame se yon. Sa a se paramèt nan yon. Mwen mete adrès la x nan la. Ki sa ki nan sa? Ki sa ki nan sa? Non, pa gen. Sa a OK. Toujou bon, toujou bon. Se konsa, sa a se yon. Epi, koulye a sou pyès an dezyèm nan papye, sa a se pral yo dwe b, e ki sa mwen yo pral ekri sou sa a moso papye? 127. Se konsa, bagay la sèlman ki la chanje depi narasyon anvan yo nou an istwa sa a se, olye ke literalman 1 ak 2, mwen se ale nan pase nan 123 ak 127. Ak mwen se kounye a ale nan mete sa yo andedan nan bwat sa a, tout dwa? Se konsa, ki bwat nwa kounye a reprezante swap fonksyon an. Pandan se tan, kite a kounye a gen yon moun aplike fonksyon an swap. Yon moun ta moute isit la renmen sèvi kòm volontè? Vini non sou yo. Ki sa ki nan non ou? Charlie. Tout dwa, Charlie. Vini non sou yo. Se konsa, Charlie se ale nan jwe wòl nan bwat nwa nou yo. Men, Charlie, ki sa mwen ta renmen ou fè koulye a, se aplike swap nan yon fason ki, yo bay moun adrès de, ou te aktyèlman pral chanje valè yo. Apre sa, mwen pral chichote nan zòrèy ou ki jan yo kouri televizyon an isit la. Se konsa, ale pi devan, epi w ap bwat la nwa. Rive nan an la. Ki sa ki valè ou wè pou yon, ak sa ki valè ou wè pou b? CHARLIE: yon se 123 ak b se 127. DAVID Malan: OK, egzakteman. Koulye a, pran yon poz gen sèlman pou moman yon. Premye bagay ou ap ale nan fè kounye a, dapre Kòd la - ki Mwen pral kounye a rale moute sou ekran an - a pwal asiyen yon ti kras ti jan nan memwa rele temp. Se konsa, mwen pral ale pi devan epi ba ou ke memwa. Se konsa, sa a se pral gen yon varyab twazyèm ki di ou gen aksè a yo ou rele temp. Ak sa ki ou menm ki pral ekri sou pyès la temp papye? CHARLIE: Pointers, dwa? DAVID Malan: OK, byen pa nesesèman endikasyon. Se konsa, liy la nan kòd ki mwen te make sou bò nan men dwat, kite la kòmanse a. Li di etwal yon. Se konsa, yon se kounye a estoke nimewo a 123. Epi jis entwitif, ki sa ki t 'zetwal 123 vle di? Men, espesyalman, si yon se 123, zetwal yon vle di ki sa? Valè a nan yon. Oswa pi plis dekontrakte, ale la. Se konsa, kite m 'pwopoze sa, kenbe yon an nan men ou, ale pi devan epi trete ki tankou si li nan yon kat jeyografik. Ak mache tèt ou sou nan an nan òdinatè memwa, epi jwenn nou sa ki nan kote 123. Egzakteman. Se konsa, nou wè nan kote 123 se sa ki, evidamman? OK, Se konsa, sa valè kounye a se ou ale nan mete nan temp? Egzakteman. Se konsa, ale pi devan epi fè sa. Men, ekri nimewo nan 1 sou pyès la nan papye ki nan kounye a ki gen tit temp. Epi, koulye a pwochen etap la ki w ap ale nan aplike a pwal sa. Oke, sou bò nan men dwat nan la liy kap vini yo nan kòd se etwal b. b, nan Natirèlman, magazen yon adrès. Ki adrese 127. Star b vle di ki sa, dekontrakte pale? Ale nan ki kote. Se konsa, ale pi devan epi jwenn nou sa ki nan nan kote 127. OK. Natirèlman, nan kote 127, se toujou valè a 2. Se konsa, sa ou menm ki pral kounye a magazen nan tou sa a nan kote a nan yon? Se konsa, zetwal yon mwayen ale nan kote a yon. Ki sa ki se ki kote yon? Egzakteman. Se konsa, koulye a, si ou vle chanje sa ki nan lè sa kote - Mwen pral ale pi devan epi kouri gonm la yo se isit la. Epi, koulye a mete l 'tounen sou bwòs la. Ki nonb ki ou menm ki pral ekri nan ki bwat vid kounye a? Egzakteman. Se konsa, liy sa a nan kòd, yo dwe klè - se pou m 'pran yon poz Ki sa ki nan Charlie fè ak pwen soti isit la, sa l ap jis fè se ekri nan ki bwat nan kote 123 valè a ki te deja nan b. Se konsa, nou te kounye a aplike tout bon liy sa a dezyèm nan kòd. Koulye a, malerezman, gen nan toujou yon sèl liy ki rete. Koulye a, sa ki nan temp, literalman? Li nan evidamman nimewo nan yon sèl. Sa a pa yon adrès. Se jis nan yon nonb, sòt de yon varyab ki soti nan yon semèn. Epi, koulye a lè ou di zetwal b, sa vle di ale nan b la adrès, ki se nan kou isit la. Se konsa, yon fwa ou jwenn gen - Mwen pral ale pi devan epi efase sa ki nan aktyèlman gen - ak ki sa yo ou pral ekri kounye a nan 127 kote? CHARLIE: tanperatur, ki se youn. DAVID Malan: tanperatur, ki se youn. Ak sa ki k ap pase nan temp nan fen a? Oke, nou pa vrèman konnen. Nou pa reyèlman sousye. Nenpòt ki lè nou te aplike yon fonksyon konsa byen lwen, nenpòt varyab lokal ou gen yo tout bon lokal yo. Apre sa, yo jis disparèt. Yo ap resikle pa opere nan sistèm evantyèlman. Se konsa, lefèt ke temp toujou gen nan valè 1 se sòt de fondamantalman entérésan yo ban nou. Tout dwa, se konsa yon wonn nan aplodisman Si nou te ka pou Charlie. Trè byen fè. Tout dwa, Se konsa, sa plis fè sa vle di nou ka fè? Se konsa, li sanble ke nou te te di yon kèk manti blan pou kèk tan. Vreman vre, li sanble ke yon fisèl, tout tan sa a, se pa reyèlman yon sekans nan karaktè se pou chak. Li kalite se ke entwitif. Men, teknikman pale, fisèl la se yon done ki kalite ke nou te deklare andedan nan bibliyotèk la CS50 senplifye mond lan pou premye semèn yo kèk nan klas la. Ki sa ki yon fisèl vrèman se se adrès la nan yon karaktè yon kote nan RAM. Yon fil se reyèlman yon nimewo, tankou 123 oswa 127, ki k ap pase nan delimiter kote yon fisèl la ap kòmanse nan memwa òdinatè ou a. Men, li pa reprezante nan fisèl, se pou chak, tèt li. Men, nou ka wè sa a jan sa a. Kite m 'ale pi devan epi louvri moute kèk Kòd sa a, se nan mitan sous egzanp Kòd jodi a la. Men, mwen pral ale pi devan epi louvri leve, kite a di, konpare-0.c. Sa a se yon pwogram buggy ki pral yo dwe aplike jan sa a. Premye. Mwen pral di yon bagay. Lè sa a, mwen pral ale pi devan epi jwenn yon fisèl soti nan itilizatè a nan ki liy kap vini an. Lè sa a, mwen pral di l 'ankò. Lè sa a, mwen pral jwenn yon lòt fisèl soti nan itilizatè a. Ak Avi, mwen ki montre youn nan la strings nan yon varyab rele yo, ak yon lòt nan sa yo strings nan yon varyab ki rele t. Epi, koulye a mwen pral reklame, trè rezonab, ke si yo egal egal t, strings yo yo se menm bagay la. Ou tape menm bagay la. Lòt Bagay, strings yo pa menm bagay la. Apre yo tout, si nou opinyon de antye, de charaktèr, de flote, de double, nenpòt nan done ki kalite nou te pale osijè de konsa byen lwen yo konpare yo - sonje nou te fè anpil klè yon ti tan de sa ke ou pa fè sa, paske yon siy sèl egal a se nan kou plasman operatè a. Se konsa, ki ta ka yon ensèk. Nou itilize egal siy egal, ki tout bon konpare bagay sa yo pou egalite vre. Men, mwen fè reklamasyon sa a se buggy. Si m 'ale pi devan epi fè konpare zewo, ak Lè sa a dot koupe konpare zewo. Apre sa, mwen tape nan, se pou yo di, hello. Lè sa a, kite a di alo ankò. Literalman menm bagay la, òdinatè a reklamasyon mwen tape bagay diferan. Koulye a, petèt mwen jis mistyped yon bagay. Mwen pral tape non mwen tan sa a. Mwen vle di, hello. Hello. Li nan diferan chak fwa sèl. Oke, poukisa se sa? Ki sa ki nan reyèlman ale sou anba kapo a? Oke, sa ki reyèlman ale sou anba kapo a se fisèl la Lè sa a, M 'tape nan tan sa a premye pou egzanp se pawòl Bondye a hello, nan kou. Men, si nou reprezante sa a anba kapo a, sonje ke yon fisèl se nan yon etalaj. Men, nou te di kòm anpil nan tan lontan an. Se konsa, si mwen trase ke etalaj tankou sa a, mwen se ale nan reprezante yon bagay byen menm jan ak sa nou te fè yon ti moman de sa. Apre sa, la aktyèlman yon bagay espesyal isit la, tou. Ki sa ki t 'nou detèmine yo te nan nan fen chak fisèl? Yeah, sa a zewo antislach, ki se jis fason an nan ki reprezante, literalman, 00000000. Uit 0 Bits nan yon ranje. Mwen pa konnen, franchman, sa ki nan apre sa a. Se jis yon pakèt RAM plis andedan nan òdinatè mwen an. Men, sa a se yon etalaj. Nou te pale de ranje anvan. Epi nou tipikman pale sou ranje tankou se te kote zewo, Lè sa a, yon sèl, Lè sa a, de. Men, sa se sèlman pou konvenyans. Epi sa a, antyèman manm fanmi. Lè w ap aktyèlman ap resevwa memwa soti nan òdinatè a, li la nan kou nenpòt 2 milya dola kèk bytes enpè, ki kapab. Se konsa, reyèlman anba kapo a, tout tan sa a, repons lan se wi. Sa a ta ka trè byen se zewo bracket. Men, si ou fouye menm pi fon anba kapo a, sa ki nan vrèman adrese nimewo 123. Sa a se adrès 124. Sa a se adrès 125. Apre sa, mwen pa t 'vis moute nan tan sa a. Sa yo se kounye a yon sèl bytes apa pou ki rezon? Kòman gwo se yon Char? Yon Char se jis yon multiple. Yon Int anjeneral se kat bytes. Se konsa, Se poutèt sa mwen te fè li 123, 127, 131 ak pou fè. Koulye a, mwen kapab kenbe matematik la ki pi senp ak jis fè plis 1. Lè sa a se kounye a sa ki reyèlman ale sou anba kapo a. Se konsa, lè ou deklare yon bagay tankou sa a, fisèl la, sa a se aktyèlman - li vire soti - Char zetwal. Star, nan kou, vle di adrès, aka konsèy. Se konsa, li adrès la nan yon bagay. Ki sa li adrès la nan? Oke - Mwen se youn nan sèlman ki kapab wè trè a enpòtan pwen mwen fè, oswa panse Mwen pral fè. Se konsa, fil - bagay la tris se mwen gen yon pou kontwole dwa gen kote mwen te kapab gen pou wè sa. Tout dwa, se konsa fisèl la se sa ki Mwen te deklare deja. Men, li vire soti, gras a yon ti kras majik nan bibliyotèk la CS50 yo, tout sa a fisèl tan gen literalman te Char zetwal. Etwal la ankò vle di konsèy oswa adrès. Lefèt ke li nan lateral la mo Char vle di li nan la adrès nan yon karaktè. Se konsa, si jwenn fisèl yo rele, epi mwen tape nan H-E-L-L O-, pwopoze kounye a sa ki te jwenn fisèl literalman te retounen tout tan sa a, menm si nou te pito twò senplifye mond lan? Ki sa ki jwenn fisèl aktyèlman retounen kòm valè retounen li yo? 123 nan ka sa a, pou egzanp. Nou te deja di ke jwenn fisèl tou senpleman retounen yon kòd, yon sekans karaktè. Men, sa a yon ti jan nan yon manti blan. Fason a jwenn fisèl vrèman ap travay anba kapo a se li vin yon fisèl soti nan itilizatè a. Li Plops karaktè yo ki li oswa li te kalite nan memwa. Li mete yon zewo antislach nan fen nan tout sa yo sekans nan karaktè. Men, Lè sa a, ki sa yo jwenn fisèl literalman retounen? Li literalman retounen adrès la nan la trè premye bytes nan RAM a ki li itilize pou ke fòs. Men, li vire soti ki jis pa retounen yon adrès sèl nan la N. premye nan fisèl la, se sa ki ase pou jwenn antye a nan fisèl la. Nan lòt mo, jwenn fisèl pa gen retounen 123 ak 124 ak 125. Li pa oblije bay m 'yon tan lis tout nan bytes yo ki fisèl mwen an se lè l sèvi avèk. Paske yon sèl, yo ap tout tounen nan do. Ak de, ki baze sou adrès la premye, mwen kapab konnen ki kote fisèl la fini. Ki jan? Pèsonaj la nan nil espesyal, antislach zewo nan fen an. Se konsa, nan lòt mo, si ou pase alantou - andedan nan varyab - adrès ki nan yon Char, epi ou sipoze ke nan fen a nan nenpòt ki fil, nenpòt sekans nan karaktè jan nou moun panse a strings, si ou asime ke nan fen a nan nenpòt ki fil sa yo gen nan yon zewo antislach, w ap an lò. Paske ou ka toujou jwenn nan fen yon kòd. Koulye a, sa ki vrèman Lè sa a, pral sou nan pwogram sa a? Poukisa se pwogram sa a, konpare-0.c, buggy? Ki sa ki aktyèlman ke yo te konpare? Yeah? ELÈV: [fèbl]. DAVID Malan: Egzakteman. Li nan konpare kote yo nan strings yo. Se konsa, si te itilizatè a tape nan alo yon fwa, jan mwen te fè, memwa ta ka fini kap tankou sa a. Si itilizatè a Lè sa a, kalite nan alo ankò, men lè w rele jwenn fisèl ankò, c se patikilyèman pa entelijan sof si w ap anseye yo li nan dwe entelijan pa ekri kòd. C - ak òdinatè plis jeneralman - Si ou tape nan mo alo ankò, ou konnen ki sa w ap ale nan jwenn. Ou jis ap pral jwenn yon etalaj dezyèm nan memwa sa, wi, k ap pase gen estoke H-E-L-L-O ak pou fè. Li nan pral gade menm bagay la tou nou moun, men adrès sa a pa ka 123. Li ta ka jis pou rive ke la sistèm opere gen kèk ki disponib espas pou egzanp nan kote - kite a di yon bagay abitrè, tankou sa a se kote 200. Lè sa a se kote 201. Lè sa a se kote 202. Nou pa gen okenn lide kote sa a, se yo pral nan memwa. Men, sa ki sa sa vle di se ke sa ki yo pral estoke finalman nan s? Nimewo a 123. Ki sa ki nan ale nan dwe estoke nan t, nan egzanp sa a abitrè? Nimewo a 200. Tout moun ki vle di Lè sa a, se evidamman, 123 pa fè egal 200. Se konsa, sa a si kondisyon pa janm evalye vre. Paske preparer fisèl la lè l sèvi avèk diferan fragman nan memwa chak fwa. Koulye a, nou ka wè sa a ankò nan yon lòt egzanp. Kite m 'ale pi devan epi louvri moute kopi-0.c. Mwen reklamasyon ke egzanp sa a ki pral eseye - men fail - a kapab bay kopi de strings jan sa a. Mwen pral di yon bagay itilizatè a. Mwen Lè sa a, pral jwenn yon fisèl ak rele li s. Koulye a, m ap fè chèk sa-a isit la. Nou mansyone sa a tounen pandan yon. Men, lè ka jwenn nil retounen fisèl, yon lòt karaktè espesyal, oswa espesyal senbòl la kite di. Si li la soti nan memwa. Pou egzanp, si itilizatè a se reyèlman yo te difisil ak kalite yon atròs nimewo nan karaktè nan la klavye ak frape antre. Si ladan nimewo nan karaktè jis pa kapab anfòm nan RAM pou kèlkeswa fou rezon ki fè, byen jwenn fisèl ka trè byen retounen nil. Oswa si pwogram ou an tèt li ap fè yon anpil nan lòt bagay, epi gen nan jis pa ase memwa pou fisèl preparer yo reyisi, Li ta ka fini moute retounen nil. Men, kite a gen plis egzak tankou sa ki sa a se. Ki sa ki se done ki kalite s a vrèman? Char zetwal. Se konsa, li vire soti kounye a nou kapab kale tounen kouch matyè a nil. Vire soti, nil se - repons lan se wi, evidamman yon senbòl espesyal. Men, sa ki se li reyèlman? Vrèman, nil se jis yon senbòl ke nou moun sèvi ak yo reprezante zewo kòm byen. Se konsa, otè yo nan C, ak òdinatè plis jeneralman, te deside ane de sa sa, ou konnen ki sa. Poukisa nou pa nou garanti ke pa gen okenn itilizatè done a se tout tan, tout tan, tout tan tout tan ki estoke nan zewo babay? An reyalite, menm nan abitrè egzanp mwen anvan, mwen pa t 'kòmanse nimero a bytes nan zewo. Mwen te kòmanse nan yon sèl. Paske mwen te konnen ke gen moun ki nan mond lan te deside rezève zewo a multiple nan RAM nenpòt moun ki an kòm yon bagay espesyal. Rezon ki fè la ke yo te, nenpòt lè ou vle siyal ke yon bagay te ale mal ak konsiderasyon adrès, ou tounen tounen nil - otreman li te ye kòm zewo - epi paske ou konnen ke gen nan pa gen legi done nan adrès zewo, byen klè sa vle di yon erè. Epi sa a, pou rezon sa a, pa konvansyon, tcheke pou nil epi retounen yon bagay tankou yonn nan ka sa yo. Se konsa, si nou desann, koulye a, sa a se jis Lè sa a, kèk erè kont kouran, jis nan ka yon bagay ale mal ak [? kosyon?] tout ansanm ak kite pwogram nan pa retounen bonè. Liy sa a kounye a ta ka Ale nan atelye tankou sa a, ki vle di ki sa? Sou bò men gòch, ban m 'yon lòt konsèy nan yon karaktè, ak rele li t. Kisa mwen estoke andedan t, ki baze sou liy sa a youn nan Kòd? Mwen estoke yon kote. Espesyalman ki kote ki te nan s. Se konsa, si te itilizatè a tape nan hello, ak ki premye alo k ap pase nan fini isit la, Lè sa a, 123 nan nimewo a se ale nan vin tounen soti nan jwenn fisèl yo epi yo dwe estoke - kòm nou te di anvan - nan s. Lè m 'koulye a deklare yon lòt konsèy yon t Char ak rele li, ki sa ki nonb ki se literalman ale nan fini nan t dapre istwa a? Se konsa, 123. Se konsa, teknikman kounye a tou de yo ak t ap montre egzak la fragman menm nan memwa. Se konsa, remake sa m ap pral fè kounye a pwouve ke pwogram sa a se buggy. Premye mwen pral reklame, ak yon f ekri an lèt detache, valorizasyon kopi a nan fisèl la. Lè sa a, mwen pral fè yon ti kras erè kont kouran. Mwen pral asire w ke. Se pou yo asire w ke t la fisèl se nan pi piti pi gran pase zewo nan longè, Se konsa, gen nan kèk karaktè gen ki aktyèlman tirer. Lè sa a, ou ta ka sonje sa a soti nan egzanp anvan yo. 2 anwo - ki se nan dosye a ctype.h. T bracket zewo ki ban m 'zewo a karaktè nan t la fisèl. Ak 2 anwo nan ke valè menm, nan Natirèlman, konvèti li nan majuskul. Se konsa, entwitif, sa a make liy nan kòd la valorizasyon premye a lèt nan t. Men, li pa nan valorizasyon, entwitif, premye lèt nan s. Men, si ou ap panse devan yo, ki sa mwen sou yo wè lè m 'kouri pwogram sa a epi enprime soti tou de orijinal la, s, ak kopi nan sa yo rele, t? Yo ap aktyèlman pral fè menm bagay la. Epi poukisa yo yo pral fè menm bagay la tou? Yo ap tou de montre egzakteman menm bagay la. Se konsa, kite a fè sa. Fè zewo kopi. Li compiles OK. Kite m 'kouri zewo kopi. Kite m 'tape yon bagay tankou alo nan tout lèt miniskil Lè sa a, frape antre. Epi li reklamasyon ke tou de nan orijinal la ak kopi nan yo tout bon ki idantik. Se konsa, sa ki vrèman rive isit la? Kite m 'rdesine foto sa a jis rakonte istwa a nan yon yon ti kras diferan fason. Ki sa ki nan reyèlman ale sou anba a kapo lè mwen deklare yon bagay tankou Char kòmanse a, oswa fisèl la, Mwen ap resevwa yon konsèy - ki k ap pase yo kat bytes nan aparèy la CS50 ak nan yon anpil nan òdinatè. Men, mwen pral rele sa a. Lè sa a kounye a gen kèk valè sèks. Lè ou deklare yon varyab, sof si ou tèt ou mete yon valè gen, ki moun ki konnen sa ki nan la. Li ta ka gen kèk sekans o aza nan Bits soti nan ekzekisyon an anvan yo. Se konsa, lè mwen menm, nan liy mwen nan kòd fè jwenn fisèl, ak Lè sa a, magazen retounen nan valè nan yo jwenn fisèl yon jan kanmenm - Epitou n ap pètèt kale tounen jan yo jwenn travay fisèl, yon jan kanmenm repati yon etalaj ke pwobableman sanble yon ti jan tankou sa a. H-E-L-L-O, antislach zewo. Ann sipoze ke sa a se adrès 123 jis premye konsistans. Se konsa, jwenn retounen fisèl, nan la make liy la, li retounen nan nimewo nou te di, 123. Se konsa, sa ki vrèman ale andedan nan yo isit la? Oke, sa ki vrèman ale andedan nan yo se 123. Men, franchman, m ap resevwa yon ti kras mele nan tout sa yo adrès, tout nimewo sa yo abitrè. 123, 124, 127. Se konsa, kite a aktyèlman senplifye mond lan yon ti kras. Lè nou pale sou endikasyon, franchman, nou moun, ki moun ki èk la traka kote bagay sa yo yo nan memwa? Sa a konplètman abitrè. Li nan ale nan depann sou ki jan anpil belye mouton itilizatè a te genyen an. Li nan ale nan depann sou lè nan jounen an ou kouri pwogram nan, petèt, ak sa ki opinyon itilizatè a ban nou an. Nou ensiste sou detay enpòtan. Se konsa, abstrè kite a lwen ak di sa, lè ou kouri yon liy nan Kòd tankou sa a, Char zetwal yo vin retounen nan valè de fil jwenn. Poukisa nou pa nou olye jis trase ki sa nou kenbe w rele yon konsèy tankou si li nan montre nan yon bagay? Se konsa, mwen fè reklamasyon kounye a ke yo moute gen yon konsèy - anba kapo a li nan yon lari yo. Men, li jis montre multiple an premye nan nan fisèl sa a te retounen. Si m 'koulye a retounen nan kòd la isit la, sa k ap pase sou nan liy sa a? Oke, nan liy sa a make kounye a, Mwen deklare aparamman yon lòt varyab yo rele t. Men, li la tou yon konsèy, se konsa mwen pral trase li kòm, nan teyori, egzak la menm bwat gwosè. Men, mwen pral rele li t. Epi, koulye a, si nou tounen nan kòd la ankò, lè m 'sere yo andedan nan t, sa mwen teknikman mete andedan nan t? Oke teknikman, sa a te 123 nan nimewo. Se konsa, reyèlman mwen ta dwe ekri nimewo 123 la a. Men, kite a pran l 'pi wo nivo. t, si li se jis yon konsèy, entwitif, se jis sa. Sa a tout sa ki nan ke yo te ki estoke nan la. Se konsa, kounye a nan liy ki sot pase yo ki enteresan nan kòd, lè mwen aktyèlman ale sou valorizasyon pèsonaj la zewo nan t, ki sa ki pwal sou? Oke, t bracket zewo se kounye a montre nan sa karaktè, prezimableman? Li nan montre h. Paske t bracket zewo - sonje, sa a se sentaks fin vye granmoun. t bracket zewo jis vle di si t a se yon fisèl, t bracket zewo vle di ap resevwa zewo a karaktè nan ki fòs. Se konsa, sa ki vrèman vle di se ale nan sa a etalaj - ak repons lan se wi, sa a ta kapab 123, sa a ta kapab 124. Men, li la tout fanmi, sonje. Chak fwa pale de yon etalaj, nou gen avantaj nan pale sou endis manm fanmi. Se konsa, kounye a nou ka jis asime ki t bracket zewo se h. Se konsa, si mwen rele 2 anwo sou li, ki sa ki nan vrèman fè se valorizasyon h an miniskil majuskul H. Men, nan kou, ki sa ki s? Li nan montre fisèl la menm reprize. Se konsa, sa a se tout sa ki ki te pase nan sa a Kòd twò lwen. Se konsa, sa ki nan Lè sa a, enplikasyon a? Ki jan nou fè ranje pwoblèm sa yo de? Ki jan nou fè konpare ak strings aktyèl? Oke entwitif, ki jan ta ou ale sou konpare de strings pou egalite vre? Kisa sa vle di si de strings yo egal? Klèman pa sa ki adrès yo se egal a nan memwa, paske sa a, se yon ba nivo aplikasyon detay. Tout karaktè yo yo se menm bagay la. Se konsa, kite m 'pwopoze, ak kite m' prezante nan vèsyon youn nan compare.c isit la, se konsa konpare-1.c. Kite m 'pwopoze ke nou toujou jwenn yon konsèy rele yo, ak magazen nan nan li retounen valè de fil jwenn. Se pou yo fè menm bagay la ak t. Se konsa pesonn nan kòd la se diferan. Mwen pral ajoute yon ti kras plis erè tcheke kounye a. Se konsa, kounye a ke nou ap sòt de penti kap dekale tounen sa a kouch nan CS50 nan sa ki yon kòd aktyèlman se, nou bezwen gen plis twou dèyè sou fè asire w ke nou pa abize valè valab tankou nil. Se konsa, mwen jis ale nan chèk la. Si yo fè sa ki pa nil egal epi t fè sa ki pa nil egal, sa vle di nou ap OK. Jwenn fisèl pa t 'vis moute nan ap resevwa swa nan tout sa yo strings. Epi ou ka petèt devine kounye a, sa ki Str CMP prezimableman fè? Fisèl konpare. Se konsa, si ou te pwogram nan Java anvan, sa a se tankou metòd la egal nan la klas fisèl. Men, pou moun nan nou ki pa gen pwograme anvan, sa a se jis yon fonksyon c. Li k ap pase nan vini nan yon dosye yo rele string.h. Sa a kote li a deklare. Men, fisèl konpare - Mwen aktyèlman bliye l 'li yo, men pa janm tèt ou ke. Sonje byen, nou ka fè moun, brase konpare. Lè sa a ki pral pote a moute Linux pwogramasyon manyèl. Epi li, franchman, yon ti kras skre. Men, mwen ka wè isit la ke, wi. Mwen gen genyen ladan yo string.h. Epi li di a isit la anba deskripsyon, " fonksyon compare fisèl konpare strings yo de S1 ak S2. "Epi S1 ak S2 yo aparamman de la agiman pase pous Mwen pa reyèlman sonje sa CONST se, men kounye a remake - epi ou ka gen pou wè sa a deja lè ou te sèvi ak paj sa a si ou genyen li tout - ki zetwal Char se jis synonym ak fisèl. Se konsa, li konpare de strings, S1 yo ak S2, epi li retounen yon nonb antye relatif mwens pase oswa egal a oswa pi gran pase zewo si S1 jwenn, respektivman, yo dwe mwens pase, oswa matche ak, oswa pral pi grannèg pase S2. Se jis yon fason trè konplèks nan di ki fisèl konpare retounen zewo si de strings yo entwitif ki idantik, pèsonaj pou N. pou karaktè. Li retounen yon nimewo negatif si s, lòd avèk lèt ​​alfabè, se ta sipoze yo vin kanpe devan t. Oswa retounen yon chif pozitif si s se ta sipoze vini apre t lòd avèk lèt ​​alfabè. Se konsa, avèk fonksyon sa a ki senp, te kapab ou, pou egzanp, sòt yon tout pakèt moun sou pawòl sa yo? Se konsa, nan vèsyon sa-a nouvo, mwen pral ale pi devan epi fè compare1. Dot koupe konpare yon sèl. Mwen pral tape nan alo nan tout ka pi ba yo. Mwen pral tape nan alo nan tout miniskil ankò. Men, Erezman kounye a li reyalize Mwen tape menm bagay la. Pandan se tan, si mwen tape nan alo nan pi ba ka ak HELLO nan ka anwo ak konpare yo, mwen tape bagay diferan. Paske pa sèlman yo se adrès yo diferan, men nou ap konpare pèsonaj diferan ankò e ankò. Oke kite yo ale ak ranje yon sèl lòt pwoblèm kounye a. Kite m 'louvri moute vèsyon youn nan kopi, ki kounye a adrese pwoblèm sa a jan sa a. Lè sa a yon sèl k ap pase yo gade yon ti kras plis konplèks. Men, si ou panse osijè de ki pwoblèm nou bezwen rezoud, èspere ke sa a pral klè nan jis moman sa yon kounye a. Se konsa, liy sa a an premye, Char kòmanse t, nan tèm pwofàn a te kapab yon moun pwopoze sa ki liy sa a isit la vle di? Char zetwal t an, sa sa ap fè? Bon. Kreye yon konsèy kèk plas nan memwa. Men, kite m 'rafine li yon ti kras. Esplike yon varyab ki pral magazen an adrès nan kèk Char nan memwa, jis yo dwe yon ti kras pi plis apwopriye. OK, se konsa kounye a sou bò nan men dwat, mwen te pa janm wè youn nan sa yo fonksyon anvan, malok. Men, sa ki ta ka sa vle di? Alokasyon nan memwa. Memwa alokasyon. Se konsa, li vire soti, moute jouk koulye a, nou pa gen reyèlman te gen yon fason pwisan nan mande sistèm nan fonksyone, ban m 'kèk memwa. Olye de sa, nou genyen kounye a yon fonksyon rele malok ki fè egzakteman sa. Menm si sa a se yon ti jan nan yon distraksyon kounye a, remake ke nan ant de parantèz yo se jis ale nan gen yon kantite. Ki kote mwen te tape nan kesyon mak se ka yon nimewo. Lè ladan nimewo vle di, ban m '10 bytes. Ban m '20 bytes. Ban m '100 bytes. Men, malok pral fè pi byen li yo nan mande sistèm nan fonksyone - Linux, nan ka sa a - hey, se bytes 100 yo nan RAM disponib? Si se konsa, retounen sa yo bytes fè m 'pa retounen adrès la nan ki nan sa yo bytes, petèt? Trè premye nan yon sèl. Se konsa, isit la tou - e sa se dominant nan C, nenpòt ki lè w ap fè fas ak adrès? Ou ap prèske toujou fè fas ak nan premye adrès sa yo, pa gen pwoblèm ki jan gwo yon moso nan memwa w ap yo te remèt tounen, se konsa pale. Se konsa, nan kite plonje nan isit la. Mwen ap eseye asiyen ki jan bytes anpil moun, egzakteman? Oke. Longè chèn nan s - nan kite fè yon egzanp konkrè. Si yo se hello, H-E-L-L-O, sa ki nan la longè fil nan s, evidamman? Se konsa, li senk. Men, m ap fè yon 1 plis sou sa, poukisa? Poukisa mwen vle sis bytes olye pou yo senk? N. a nil. Mwen pa vle kite koupe sa a espesyal karaktè nil. Paske si mwen fè yon kopi Hello ak jis fè H-E-L-L-O, men mwen pa mete ki karaktè espesyal, òdinatè a pa ta ka genyen, pa chans, yon antislach zewo la pou mwen. Se konsa, si mwen ap eseye figi a soti longè kopi a, mwen ta ka panse ke li nan 20 karaktè long, oswa yon milyon dola karaktè long si mwen jis pa janm rive frape yon zewo antislach. Se konsa, nou bezwen sis bytes nan magazen H-E-L-L-O, antislach zewo. Lè sa a, sa a se jis yo dwe super twou dèyè. Sipoze ke mwen bliye sa gwosè a nan yon Char se. Nou kenbe Yonn t'ap di multiple li a. Epi li Jeneralman sa yo se. Nan teyori, li ta ka yon bagay diferan, sou yon Mac diferan oswa yon diferan PC. Se konsa, li vire soti gen nan sa a operatè rele sizof ke si ou pase l nan Non nan yon kalite done - tankou Char, oswa Int, oswa flote - li pral di nou la a, dynamique, konbyen bytes yon Char pran moute sou sa a patikilye òdinatè. Se konsa, sa a se efektivman jis tankou li di fwa 1 oswa fwa pa gen anyen nan tout. Men, m ap fè li jis yo dwe super nan dèyè, ki jis nan ka yon Char diferan sou òdinatè ou kont m 'yo, fason sa a matematik la ap toujou ale nan tcheke deyò. Anfen, desann isit la mwen tcheke pou nil, ki se toujou bon pratik - ankò, nenpòt ki lè nou ap fè fas ak endikasyon. Si malok pa t 'kapab bay m 'sis byes - ki se fasil, men jis nan ka - retounen yon sèl imedyatman. Koulye a, ale pi devan ak fè kopi fisèl la jan sa a. Lè sa a se sentaks yo konnen yo, kwake nan yon wòl diferan. Mwen pral ale pi devan epi pou yo jwenn fisèl la longè yo ak magazen li nan n. Mwen Lè sa a, ale nan répétèr soti nan mwen egal zewo jiska epi ki gen ladan n, pi gran pase oswa egal a. Se konsa, ki sou chak iteration, mwen mete nan on karaktè nan s nan on la karaktè nan t. Se konsa, sa ki reyèlman ale sou anba kapo a isit la? Oke si sa a, pou egzanp, se s - epi mwen te tape nan pawòl Bondye a H-E-L-L-O ak gen yon zewo antislach. Li di ankò, sa a se s montre isit la. Ak isit la kounye a se t. Ak sa a se montre kounye a yon kopi nan memwa, dwa? Malok te ban m 'yon antye ti moso nan memwa. Mwen pa konnen okòmansman sa ki nan nan nenpòt nan anplasman sa yo. Se konsa, mwen pral panse a sa yo kòm yon pakèt antye nan mak kesyon. Men, le pli vit ke mwen kòmanse loupin soti nan zewo sou moute nan longè a nan s, t bracket zewo ak t bracket 1 - epi mwen pral mete sa a kounye a sou tèt la - t bracket zewo ak s bracket zewo vle di ke mwen pral yo dwe kopye iterativman h nan isit la, E-L-L-O. Plus, paske m 'te fè plis la 1, antislach zewo. Se konsa, kounye a nan ka a nan konpare 1.c-, nan fen a, si mwen ekri ak lèt ​​detache a soti lèt majiskil nan t, nou ta dwe wè ke yo se chanje. Kite m 'ale devan kounye a epi yo fè sa. Se konsa, fè copy1. Dot koupe copy1. Mwen pral tape nan alo Antre,. Epi, koulye a remake, se sèlman kopi a ki te pwofite kapitalize. Paske mwen se vre wi: gen de fragman nan memwa. Malerezman, ou ka fè kèk bèl move ak bèl danjere bagay sa yo isit la. Kite m 'rale moute yon egzanp isit la kounye a, ki ba nou yon egzanp yon kèk liy diferan. Se konsa, jis entwitif isit la, liy lan premye nan kòd, Int zetwal x, se deklare yon varyab rele x. Ak sa ki nan kalite la done varyab sa a? Ki sa ki nan kalite la done varyab sa a? Sa pa t 'cliffhanger la. Kalite nan done se etwal Int. Se konsa, sa sa vle di? x ap magazen adrès la nan yon Int. Senp tankou sa. Y se ale nan magazen an adrès nan yon Int. Ki sa ki se liy lan twazyèm nan kòd fè a? Li nan allocation konbyen bytes, gen plis chans? Kat. Paske nan gwosè a nan yon Int se jeneralman kat, malok nan kat bay m 'tounen adrès la nan yon ti moso nan memwa, premye a nan bytes ki gen se estoke kounye a nan x. Koulye a, nou ap deplase yon ti kras byen vit. Star x vle di ki sa? Sa vle di ale nan ki adrès epi li mete ki nimewo a? Mete nimewo a 42 la. Star y vle di ale nan sa ki nan nan y , li mete nimewo a 13 la. Men, tann yon minit. Ki sa ki nan y nan moman sa a? Ki sa ki adrès se y estoke? Nou pa konnen, dwa? Nou pa janm gen yon lòt fwa sèvi ak plasman an operatè ki enplike y. Se konsa, y kòm te deklare sou liy nan dezyèm nan Kòd se jis kèk fatra valè, yon gwo make kesyon se konsa yo pale. Li ta ka montre owaza anyen nan memwa, ki se jeneralman move. Se konsa, le pli vit ke nou frape ke liy la, zetwal y egal 13, yon move bagay, yon bagay trè move se sou pou rive Binky. Se konsa, kite a wè sa k ap pase nan fen moute pase nan Binky isit la nan sa a minit oswa se konsa gade. [Lèktur videyo] -Hey, Binky. Reveye. Li lè pou plezi konsèy. -Ki sa ki nan sa? Aprann sou endikasyon? Oh, goodie. -Bon, jwenn te kòmanse, mwen devine nou ap pral bezwen yon endikasyon koup. -OK. Kòd sa a repati de pwent sa ki ka lonje dwèt sou nonm antye. -OK, byen, mwen wè pwent yo de. Men, yo pa sanble yo gen montre anyen. -Sa a dwat. Okòmansman, endikasyon pa fè sa pwen nan anyen. Bagay yo te lonje dwèt sou yo rele yo pointees, ak anviwònman yo moute a se yon apa etap. -Tanpri, dwa, dwa. Mwen te konnen ke. Pointees yo se apa a. Se konsa, kouman ou asiyen yon pointee? -OK. Bon, sa a Kòd repati yon nonm antye nouvo pointee, ak pati sa a kouche x nan pwen li. -Hey, ki sanble pi bon. Se konsa, fè li fè yon bagay. -OK. Mwen pral dèreferans x la konsèy nan magazen nimewo a 42 nan pointee li yo. Pou sa Trick a, mwen pral bezwen majik mwen ralonj nan dereferencing. -Ou ralonj majik nan dereferencing? Uh, ki nan gwo. -Sa a se sa kòd la sanble. Mwen pral jis mete kanpe nimewo a, ak - -Hey, gade. Gen li ale. Se konsa, fè yon dèreferans sou x sa a flèch la jwenn aksè nan pointee li yo. Nan ka sa a, nan magazen 42 an la. Hey, eseye lè l sèvi avèk li nan magazen nimewo a 13 a konsèy nan lòt, y. -OK. Mwen pral jis ale sou isit la yo y ak jwenn nimewo a 13 fè fè a. Lè sa a, pran ralonj la nan dereferencing ak jis - ola! -Tanpri, hey. Sa pa t 'travay. Di, Binky, mwen pa kwè nan dereferencing y se yon bon lide, paske mete kanpe pointee la se yon etap ki apa a. Apre sa, mwen pa panse ke nou tout tan tout tan te fè li. -O o. Bon pwen. -Yeah, nou resevwa lajan y la konsèy. Men, nou pa janm mete l 'nan pwen nan yon pointee. -O o. Trè vijilan. -Hey, w ap chèche bon la, Binky. Èske ou ka fikse li pou ke pwen y pointee a menm jan ak x? -Asire w. Mwen pral sèvi ak ralonj majik mwen an konsèy plasman. -Eske se sa ke pral gen yon pwoblèm tankou ye anvan an? -Non. Sa a pa manyen pointees yo. Li jis chanje yon sèl konsèy nan pwen menm bagay la kòm yon lòt. -Tanpri, mwen wè. Koulye a, y pwen nan plas la menm jan ak x. Se konsa, rete tann. Koulye a, y ap fiks yo. Li te gen yon pointee. Se konsa, ou ka eseye ralonj la nan dereferencing ankò voye 13 a sou. -OK. Isit la ale. -Hey, gade nan sa. Koulye a, dereferencing travay sou y. Epi paske endikasyon yo ap pataje ki pointee yon sèl yo, yo tou de wè 13 la. -Yeah. Pataje. Kèlkeswa sa. Se konsa, nou pral kote switch kounye a? -O, gade. Nou soti nan tan. -Men, - -Senpleman sonje twa a konsèy règleman yo. Nimewo yon sèl, estrikti nan de baz yo se ke ou gen yon konsèy. Men, li lonje dwèt sou nan yon pointee. Men, konsèy la ak pointee yo apa a. Ak erè an komen se mete kanpe yon konsèy, men yo bliye bay yon pointee. Nimewo de, konsèy dereferencing kòmanse nan konsèy la epi swiv li yo flèch sou jwenn aksè nan pointee li yo. Kòm nou tout konnen, sa a sèlman travay si gen se yon pointee, ki vin tounen nan kòmande sou nimewo yon sèl. Nimewo twa, plasman konsèy pran yon sèl konsèy ak chanjman li nan pwen nan pointee a menm jan ak yon lòt konsèy. Se konsa, apre plasman an, endikasyon yo de pral pwen nan pointee a menm. Pafwa ki rele pataje. Epi sa a, tout gen nan li, vrèman. Bye bye kounye a. [Lèktur videyo END] DAVID Malan: Se konsa, plis sou pwent, plis sou semèn Binky kap vini an. Nou pwal wè ou nan Lendi.