[MIZIK jwe] Doug Lloyd: endikasyon, isit la nou yo. Sa a se pwobableman ale nan gen sijè sa a pi difisil ke nou pale sou nan CS50. Men, si ou te li anyen sou endikasyon anvan ou ta kapab yon ti jan entimidasyon pral antre nan videyo sa a. Se vre pwent yo pèmèt ou kapasite nan ki petèt vis moute bèl seryezman lè w ap travay ak varyab, ak done, ak sa ki lakòz pwogram ou aksidan. Men, yo ap aktyèlman reyèlman itil epi yo pèmèt nou yon vrèman bon fason yo pase done retounen lakay yo epi lide ant fonksyon, ke nou ap otreman kapab fè. Se konsa, sa nou vrèman vle fè isit la se tren ou gen bon disiplin konsèy, se konsa ke ou ka itilize endikasyon efektivman fè pwogram ou ki pi bon. Kòm mwen te di endikasyon ban nou yon diferan fason yo pase done ant fonksyon. Koulye a, si ou sonje soti nan yon videyo pi bonè, lè nou te ap pale de sijè ki abòde varyab ★ mwen mansyone ki tout done a ke nou pase ant fonksyon nan C se te pase pa valè. Apre sa, mwen pa gen dwa te itilize ki tèm, ki sa mwen vle di gen te ke nou ap pase kopi done. Lè nou pase yon varyab nan yon fonksyon, nou ap pa aktyèlman pase varyab la nan fonksyon an, dwa? Nou ap pase yon kopi ki done nan fonksyon an. Fonksyon an fè sa li pral epi li kalkile kèk valè, e petèt nou itilize ke valè lè li bay l 'tounen. Te gen yon sèl eksepsyon nan règleman sa-a nan pase pa valè, epi n ap tounen vin jwenn sa ki se yon ti kras pita sou nan videyo sa a. Si nou itilize endikasyon olye pou pou yo sèvi ak varyab, oswa olye pou yo lè l sèvi avèk varyab yo tèt yo oswa kopi nan varyab yo, nou kapab kounye a pase varyab yo alantou ant fonksyon nan yon fason diferan. Sa vle di ke si nou fè yon chanjman nan yon sèl fonksyon, ke chanjman pral aktyèlman pran efè nan yon fonksyon diferan. Yon fwa ankò, sa a se yon bagay ki nou pa t 'kapab fè deja, epi si ou te janm te eseye swap a valè de de varyab nan yon fonksyon, ou te remake pwoblèm sa a sòt de trennen sou vant moute, dwa? Si nou vle swap X ak Y, epi nou pase yo nan yon fonksyon rele swap, andedan nan fonksyon an swap a varyab fè valè echanj. Youn vin de, de vin yon sèl, men nou pa fè sa aktyèlman chanje anyen nan orijinal la fonksyon, nan moun kap rele a. Paske nou pa kapab, nou ap sèlman travay ak kopi nan yo. Avèk pwent menm si, nou kapab aktyèlman pase X ak Y nan yon fonksyon. Sa kapab fè fonksyon yon bagay avèk yo. Ak moun ki varyab valè ka aktyèlman chanje. Se konsa, sa a, se byen yon chanjman nan kapasite nou yo travay avèk done. Anvan nou plonje nan endikasyon, mwen panse ke li la vo pran yon kèk minit yo tounen nan Basics isit la. Epi yo gen yon gade nan ki jan travay òdinatè memwa paske de matyè sa yo yo ale ki aktyèlman dwe trè relye. Kòm pwobableman ou konnen, sou sistèm òdinatè w lan ou gen yon kondwi difisil oswa petèt yon kondwi eta solid, kèk sòt de kote depo dosye-a. Li nan anjeneral yon kote nan la katye nan 250 jigokte petèt yon koup la teraokte kounye a. Lè li nan kote tout nan ou dosye finalman ap viv la, menm lè se fèmen òdinatè w lan koupe, ou ka vire l 'tounen sou epi ou ap jwenn dosye ou ki genyen ankò lè ou rdemare sistèm ou an. Men, kondui ki gen kapasite, tankou yon kondwi ki gen kapasite difisil, yon HDD, oswa yon kondwi eta solid, yon SSD, yo se jis espas depo. Nou pa ka aktyèlman fè anyen ak done ki nan ki gen kapasite difisil, oswa nan yon kondwi eta solid. Yo nan lòd yo aktyèlman chanje done oswa avanse pou li alantou li, nou gen pou avanse pou pi li nan RAM, o aza aksè memwa. Koulye a, RAM, ou gen yon anpil mwens nan nan òdinatè w lan. Ou ka gen yon kote nan la katye nan 512 megabit si ou gen yon òdinatè ki pi gran, petèt de, kat, uit, 16, pètèt menm yon ti kras plis, jigokte nan RAM. Se konsa, sa a, se pi piti anpil, men sa a kote tout nan done yo temèt egziste. Sa a kote nou kapab chanje bagay sa yo. Men, lè nou vire konpitè nou an koupe, tout done yo nan RAM la ap fini. Se konsa, Se poutèt sa nou bezwen gen ki gen kapasite difisil ki kote nan plis pèmanan nan li, konsa ke li exists- li ta dwe reyèlman move si chak fwa nou vire konpitè nou an koupe, chak dosye ki nan sistèm nou an te efase. Se konsa, nou travay andedan nan RAM. Apre sa, chak fwa n ap pale memwa, bèl anpil, nan CS50, nou ap pale de RAM, pa ki gen kapasite difisil. Se konsa, lè nou deplase bagay sa yo nan memwa, li pran moute yon sèten kantite espas. Tout moun nan kalite mouvman yo done ki nou ve yo te ap travay ak Leve kanpe, pran diferan kantite espas nan RAM. Se konsa, chak fwa ou kreye yon nonb antye relatif varyab, kat bytes nan memwa yo mete sou kote nan RAM pou ou ka travay avèk ki nonb antye ki pè. Ou ka deklare nonb antye relatif la, chanje li, bay li nan yon valè 10 enkremante pa youn, sou sa ak sou sa. Tout sa ki bezwen yo rive nan RAM, epi ou jwenn kat bytes yo travay avèk pou chak nonb antye relatif ke ou kreye. Chak karaktè ou kreye vin youn multiple. Se jis konbyen lajan espas se bezwen nan magazen yon karaktè. Chak flote, yon reyèl nimewo, vin kat bytes sof si li nan yon doub presizyon k ap flote pwen nimewo, ki pèmèt ou gen plis egzak oswa plis chif apre pwen an desimal san yo pa pèdi presizyon, ki Leve kanpe, pran uit bytes nan memwa. LONGS Long, nonm antye relatif reyèlman gwo, tou pran moute uit bytes nan memwa. Konbyen bytes nan memwa strings Leve kanpe, pran? Oke kite a mete yon peny nan kesyon sa a pou kounye a, men nou pwal tounen vin jwenn li. Se konsa, tounen nan ide sa a nan memwa kòm yon gwo etalaj de selil multiple ki menm gwosè ak. Sa ki nan vrèman tout li se, li la jis yon gwo etalaj de selil, jis tankou nenpòt ki lòt etalaj ki w ap abitye ak ak wè, eksepte chak eleman se youn multiple lajè. Apre sa, jis tankou yon etalaj, chak eleman gen yon adrès. Chak eleman nan yon etalaj gen yon endèks, epi nou ka sèvi ak sa endèks yo fè sa yo rele aksè o aza sou etalaj la. Nou pa gen kòmanse nan nan konmansman an nan etalaj la, repekte nan chak sèl eleman ladan l ', jwenn sa nou ap chèche pou. Nou ka jis di, mwen vle pou li ale nan nan 15 eleman oswa eleman nan 100th. Epi ou ka jis pase nan nimewo sa epi pou yo jwenn valè nan w ap chèche pou. Menm jan an tou chak kote nan memwa gen yon adrès. Se konsa, ta ka memwa ou gade yon bagay tankou sa a. Isit la nan yon piti anpil ti moso nan memwa, sa a se 20 bytes nan memwa. Premye 20 bytes yo paske mwen adrese gen nan pati anba a se 0, 1, 2, 3, e konsa sou tout wout la jiska 19. Lè m 'deklare varyab ak lè m 'kòmanse travay avèk yo, sistèm nan ki pral mete sou kote kèk espas pou m ' nan sa a memwa nan travay ak varyab m 'yo. Se konsa, mwen ta ka di, Char c egal kapital H. Ak sa ki k ap pase yo rive? Oke sistèm lan ki pral mete sou kote pou m 'yon sèl multiple. Nan ka sa a li te chwazi nimewo multiple kat, multiple nan nan adrès kat, epi li k ap pase nan magazen an lèt kapital H nan la pou mwen. Si m 'Lè sa a, di vitès int limit egal 65, li nan ale nan mete sou kote kat bytes nan memwa pou mwen. Epi, se k ap pase nan trete moun kat bytes kòm yon inite sèl paske sa nou ap travay ak se yon nonb antye relatif isit la. Epi, se k ap pase nan magazen 65 an la. Koulye a, deja mwen se kalite di ou yon ti jan nan yon manti, dwa, paske nou konnen ke òdinatè travay nan binè. Yo pa konprann nesesèman sa yon H kapital la se oswa ki sa yon 65 se yo, yo sèlman konprann binè, zewo ak inite. Se konsa, aktyèlman sa nou ap estoke nan la se pa lèt H la ak nimewo a 65, men pito reprezantasyon yo binè ladan l ', ki gade yon ti kras yon bagay tankou sa a. Ak nan patikilye nan la kontèks nan varyab la nonb antye relatif, li nan pa ale nan jis krache l 'nan, li nan pa ale nan trete li kòm youn kat multiple moso nesesèman, li nan aktyèlman pral a trete li kòm kat yon sèl fragman multiple, ki ta sanble yon bagay tankou sa a. E menm sa a se pa totalman vre swa, paske yo te yon bagay rele yon endianness, nou ap pa pral jwenn nan kounye a, men si w ap kirye de, ou ka li moute sou ti kras ak gwo endianness. Men, pou dedomajman pou la nan agiman sa a, pou dedomajman pou la videyo sa a, kite yo jis asime ke se, nan reyalite, ki jan nimewo 65 la ta dwe reprezante nan memwa sou chak sistèm, byenke li a pa totalman vre. Men, kite a aktyèlman jis jwenn m de tout binè antyèman, ak jis panse osijè de kòm H ak 65, li nan yon anpil pi fasil yo reflechi sou li tankou ke kòm yon moun. Tout dwa, se konsa li tou sanble petèt yon ti kras o aza ki I've- sistèm m ' pa t 'ban m' bytes 5, 6, 7, ak 8 nan magazen nonb antye relatif la. Genyen yon rezon pou sa, tou, ki nou pa pral jwenn nan kounye a, men sifi li vle di nan ki sa òdinatè ap fè isit la se pwobableman yon mouvman bon sou pati li yo. Pou yo pa ban m 'memwa sa a, se nesesèman do nan do. Malgre ke li k ap pase yo fè li kounye a si mwen vle jwenn yon lòt fisèl, rele ti non, e mwen vle yo mete Lloyd nan la. Mwen pral bezwen nan anfòm yon sèl karaktè, chak lèt ​​nan sa a, se ale nan mande pou yon sèl karaktè, yon sèl multiple nan memwa. Se konsa, si mwen te kapab mete Lloyd nan etalaj mwen tankou sa a mwen se trè bon yo ale, dwa? Ki sa ki nan manke? Sonje ke chak fisèl nou travay ak nan C fini ak antislach zewo, epi nou pa kapab retire okenn pati ke isit la, swa. Nou bezwen mete sou kote yon sèl multiple nan memwa yo kenbe ki pou nou konnen lè gen fisèl nou an te fini. Se konsa, ankò sa a aranjman nan wout bagay sa yo parèt nan fòs memwa gen yon ti kras o aza, men li aktyèlman se ki jan pi sistèm yo fèt. Nan liy yo moute sou miltip nan kat, pou rezon ankò ke nou pa bezwen jwenn nan kounye a. Men, sa a, se konsa sufi li vle di ke apre twa liy sa yo nan kòd, sa a se sa memwa ta ka sanble. Si mwen bezwen kote memwa 4, 8, ak 12 yo kenbe done m 'yo, sa a se sa m 'ta ka gade memwa tankou. Epi jis dwe patikilyèman pedant isit la, lè nou ap pale de memwa adrès anjeneral nou se konsa lè l sèvi avèk notasyon fè ekzadesimal. Se konsa, poukisa pa nou konvèti tout moun sa yo soti nan desimal notasyon ekzadesimal jis paske sa a, se jeneralman ki jan nou al gade nan memwa. Se konsa, olye pou yo te 0 a 19, sa nou genyen se zewo x zewo a zewo x1 twa. Moun sa yo se 20 bytes yo nan memwa ke nou te oswa nou ap chèche a nan imaj sa a dwa isit la. Se konsa, nan tout sa yo te di, se pou yo etap lwen memwa pou yon dezyèm ak tounen yo nan endikasyon. Isit la se pi enpòtan an bagay yo sonje kòm nou kòmanse travay avèk endikasyon. Yon konsèy se pa gen anyen plis pase yon adrès. Mwen pral di l 'ankò paske li nan ki enpòtan, yon konsèy se pa gen anyen plis pase yon adrès. Endikasyon yo nan kote adrès nan memwa kote varyab ap viv la. Lè konnen ke li vin èspere ke yon ti jan ti kras pi fasil yo travay avèk yo. Yon lòt bagay mwen renmen fè se gen sòt a dyagram vizyèlman reprezante sa ki nan ap pase ak divès kalite liy nan kòd. Epitou, n ap fè sa yon koup de fwa nan endikasyon, ak lè nou pale sou dinamik alokasyon memwa kòm byen. Paske mwen panse ke sa yo dyagram kapab patikilyèman itil. Se konsa, si mwen di pou egzanp, int k nan kòd m 'yo, sa k ap pase? Oke sa k ap pase se fondamantalman Mwen ap resevwa memwa mete sou kote pou m ', men mwen pa menm renmen panse sou li tankou sa, mwen renmen yo reflechi sou li tankou yon bwat. Mwen gen yon ti bwat ak li a sifas ki gen koulè vèt paske mwen ka mete nonm antye relatif nan bwat vèt. Si li te yon karaktè mwen ta ka gen yon ti bwat ble. Men, mwen toujou di, si mwen kreye yon bwat ki kapab kenbe nonm antye relatif se ke ti bwat ki gen koulè pal vèt. Apre sa, mwen pran yon makè pèmanan ak mwen ekri k sou bò a nan li. Se konsa, mwen gen yon bwat rele k, nan ki mwen ka mete nonm antye relatif. Se konsa, lè m 'di Int k, sa a, se sa k ap pase nan tèt mwen. Si mwen di k egal senk, ki sa mwen ap fè? Oke, mwen mete senk nan ti bwat la, dwa. Sa a se trè dwat, si M 'ap di Int k, kreye yon bwat rele k. Si mwen di k egal 5, mete senk nan bwat la. Nou swete ke sa a pa twòp nan yon bon. Isit la nan kote bagay sa yo ale yon ti kras enteresan menm si. Si mwen di Int * pk, byen menm si mwen pa fè sa konnen ki sa sa a nesesèman vle di, li nan byen klè gen yon bagay fè ak yon nonb antye relatif. Se konsa, mwen pral koulè sa a ti bwat vèt-ich, Mwen konnen li nan te resevwa yon bagay fè ak yon nonb antye relatif, men li la pa yon nonb antye relatif tèt li, paske li nan yon etwal Int. Genyen yon bagay yon ti kras diferan sou li. Se konsa, yon nonb antye relatif patisipe nan, men otreman li nan pa twò diferan de sa nou te pale de. Li se yon bwat, li te resevwa yon mete etikèt sou, li nan mete yon pk mete etikèt sou, ak li a ki kapab kenbe zetwal int, kèlkeswa sa sa yo se. Yo gen yon bagay fè ak nonm antye relatif, byen klè. Isit la nan liy ki sot pase menm si. Si mwen di pk = & k, ola, sa jis rive, dwa? Se konsa, nimewo o aza sa a, w pèdi o aza nimewo, vin jete nan ti bwat la a. Tout sa ki, se pk vin adrès ki nan k. Se konsa, mwen rete soude kote k ap viv nan memwa, adrès li yo, adrès ki nan bytes li yo. Tout sa mwen ap fè se m ap di ke valè a se sa mwen pral yo mete andedan nan bwat mwen an rele pk. Epi paske bagay sa yo se endikasyon, ak paske kap Yon fisèl tankou zewo x uit zewo c sèt kat uit de zewo se pwobableman pa trè siyifikatif. Lè nou jeneralman visualized endikasyon, nou aktyèlman fè se konsa yo endikasyon. Pk ba nou enfòmasyon ki nou bezwen jwenn k nan memwa. Se konsa, fondamantalman pk gen yon flèch nan li. Men, si nou mache longè a nan ki flèch, imajine li nan yon bagay ou ka mache sou li a, si nou mache sou longè a nan flèch la, nan pwent la anpil nan ke flèch, nou pral jwenn kote a nan memwa kote k ap viv. Epi sa a, vrèman enpòtan paske yon fwa nou konnen ki kote k ap viv, nou kapab kòmanse yo travay avèk done yo andedan nan ki kote memwa. Menm si nou ap vin yon minuskul mòde devan yo nan tèt nou pou kounye a. Se konsa, ki sa ki yon konsèy? Yon konsèy se yon atik ki gen done valè yon adrès memwa. Sa te ke zewo x uit zewo bagay ale sou, sa ki te yon adrès memwa. Sa ki te yon kote nan memwa. Apre sa, ki kalite yon konsèy dekri kalite a nan done w ap jwenn nan ki adrès memwa. Se konsa, gen nan dwat a pati zetwal int. Si m 'swiv ki flèch, li nan ale nan mennen m 'nan yon kote. Epi sa kote, ki sa mwen ap jwenn gen nan egzanp mwen, se yon bwat vèt koulè. Li nan yon nonb antye relatif, se sa ki mwen ap jwenn lè m 'ale nan adrès sa. Kalite a done nan yon konsèy dekri sa ou pral jwenn nan ki adrès memwa. Se konsa, isit la nan bagay la vrèman fre menm si. Endikasyon pèmèt nou yo pase varyab ant fonksyon. Ak aktyèlman pase varyab epi yo pa pase kopi nan yo. Paske si nou konnen egzakteman ki kote nan memwa yo jwenn yon varyab, nou pa bezwen fè yon kopi li, nou ka jis ale ak sa yo ki kote ak travay ak sa varyab. Se konsa, nan sans endikasyon sòt a fè yon anviwònman òdinatè yon anpil plis tankou mond reyèl la, dwat. Se konsa, isit la nan yon analoji. Se pou nou di ke mwen gen yon kaye, dwa, ak li nan plen nan nòt. Apre sa, mwen ta renmen ou mete ajou li. Ou se yon fonksyon ki dènye nòt, dwat. Nan fason an nou te k ap travay byen lwen tèlman, ki sa k ap pase se ou pral pran kaye mwen, ou pral ale nan magazen an kopi, ou pral fè yon kopi Fotokopye a chak paj nan kaye nòt la. Ou ap kite Pavilion m 'lan sou biwo mwen lè w ap fè, ou pral ale ak travèse soti bagay sa yo nan m ' Pavilion ki soti nan dat oswa yon move, ak Lè sa a ou pral pase tounen nan m 'chemine a nan Fotokopye paj ki se yon kopi nan kaye mwen ak chanjman sa yo ki ou te fè nan li. Ak nan pwen sa a, li a jiska m 'menm jan fonksyon an rele, kòm moun kap rele a, deside pran nòt ou ak entegre yo tounen nan kaye mwen. Se konsa, gen nan yon anpil nan etap patisipe isit la, dwat. Fè tankou pa t 'vle li ka pi bon si mwen jis di, hey, ou kapab aktyalizasyon Pavilion mwen an pou m ', men ou Pavilion mwen, epi ou pran bagay sa yo ak literalman travèse yo soti epi mete ajou nòt m 'ki nan kaye mwen. Lè sa a, ban m 'kaye m' lan. Sa a kalite ki sa endikasyon pèmèt nou fè, yo fè anviwonman sa a yon anpil plis tankou ki jan nou opere nan reyalite. Tout dwa konsa se sa ki se yon konsèy, se pou yo pale sou ki jan endikasyon travay nan C, ak ki jan nou ka kòmanse travay avèk yo. Se konsa, gen nan yon konsèy trè senp nan C rele konsèy la nil. Pwen yo konsèy nil pa gen anyen. Sa a pwobableman sanble tankou li a aktyèlman pa yon bagay trè itil, men kòm nou pral wè yon ti kras pita sou li a, lefèt ki konsèy sa a nil egziste aktyèlman reyèlman ka vin an sou la men. Chak fwa ou kreye yon konsèy, ak ou pa mete immediately- valè li yo yon egzanp nan mete valè li yo imedyatman pral gen yon glisad koup tounen kote mwen te di pk egal & k, pk vin adrès k a, jan nou pral wè ki sa sa vle di, nou pral wè ki jan nan kòd ki shortly- si nou pa mete valè li yo nan yon bagay sans imedyatman, ou ta dwe toujou mete konsèy ou a lonje dwèt sou nil. Ou ta dwe mete l 'nan pwen nan pa gen anyen. Sa a trè diferan pase jis kite valè a jan li se ak Lè sa a deklare yon konsèy ak jis asepte li nan nil paske se sa raman vre. Se konsa, ou ta dwe toujou mete valè a nan yon konsèy a nil si ou pa mete valè li yo nan yon bagay ki gen sans imedyatman. Ou ka tcheke si valè yon konsèy nan se nil lè l sèvi avèk operatè a egalite (==), Jis tankou ou konpare nonb antye relatif nenpòt valè oswa karaktè valè lè l sèvi avèk (==) kòm byen. Li se yon sòt espesyal nan konstan valè ke ou ka itilize li teste. Se konsa, sa ki te yon trè senp konsèy, konsèy la nil. Yon lòt fason yo kreye yon konsèy se yo ekstrè adrès ki nan yon varyab ou te deja kreye, epi ou fè sa lè l sèvi avèk la & adrès operatè ekstraksyon. Ki nou te deja wè deja nan premye egzanp lan dyagram mwen te montre. Se konsa, si x se yon varyab ke nou te deja kreye nan kalite nonb antye relatif, Lè sa a, & x se yon konsèy nan yon nonb antye relatif. & x se- sonje, & ki pral ekstrè adrès ki nan bagay la sou bò dwat la. E depi yon konsèy se jis yon adrès, pase & x se yon konsèy nan yon nonb antye relatif valè ki gen se kote nan memwa x lavi moun. Li nan adrès x an. Se konsa, & x se adrès ki nan x. Se pou nou pran etap sa a yon sèl plis epi konekte nan yon bagay Mwen mansyone yo bay nan yon videyo anvan an. Si ArR se yon etalaj de double, lè sa a & ArR bracket kare m se yon konsèy nan yon doub. OK. vizitè ki s bracket kare m, si ArR se yon etalaj de double, Lè sa a, vizitè ki s bracket kare mwen se eleman nan m-th nan ki etalaj, ak vizitè ki s & bracket kare m se kote an memwa eleman nan m-th nan ArR egziste. Se konsa, sa ki nan enplikasyon la isit la? Yon Non ranje, enplikasyon a nan sa a tout bagay, se ke non yon etalaj la se aktyèlman tèt li yon konsèy. Ou te ap travay ak endikasyon tout ansanm chak fwa ke ou te itilize yon etalaj. Sonje soti nan egzanp lan sou sijè ki abòde varyab ★ tou pre fen a nan videyo a mwen prezante yon egzanp kote nou gen yon fonksyon rele seri int ak yon fonksyon rele seri etalaj. Ak defi ou a detèmine si wi ou non, oswa sa ki nan valè ke nou enprime soti nan fen fonksyon an, nan fen an nan pwogram nan prensipal la. Si ou sonje soti nan ki egzanp oswa si ou te ap gade videyo a, ou konnen ke lè nou- apèl la seri int efektivman fè pa gen anyen. Men, apèl la yo mete etalaj fè. Apre sa, mwen sòt de glossed sou poukisa ki te ka a nan moman an. Mwen jis di, byen li nan yon etalaj, li nan espesyal, ou konnen, gen nan yon rezon. Rezon ki fè la se ke yon etalaj la non se vrèman jis yon konsèy, ak gen nan sa a espesyal kare sentaks bracket ki fè bagay sa yo yon anpil joli yo travay avèk. Apre sa, yo fè lide a nan yon konsèy yon anpil mwens entimidasyon, ak Se poutèt sa yo ap sòt a prezante nan fason sa a. Men, reyèlman ranje yo se jis pwent. Epi sa a, poukisa lè nou te fè yon chanjman nan etalaj la, lè nou te pase yon etalaj kòm yon paramèt nan yon fonksyon oswa kòm yon agiman nan yon fonksyon, sa ki nan etalaj la aktyèlman chanje nan tou de aple a ak nan moun kap rele a. Ki pou tout kalite lòt kote nan varyab nou te wè pa t 'ka a. Se konsa, sa se sèlman yon bagay yo kenbe nan lide lè w ap travay ak endikasyon, se ke non an nan yon etalaj aktyèlman yon konsèy nan eleman nan premye nan ki etalaj. OK konsa koulye a nou gen tout bagay sa yo reyalite, se pou yo kenbe prale, dwa. Poukisa nou pran swen sou kote yon bagay ap viv. Oke tankou mwen te di, li a trè itil nan konnen ki kote yon bagay ap viv konsa ou ka ale la epi chanje li. Travay ansanm ak li ak aktyèlman gen bagay la ke ou vle fè ak sa yo ki efè pran varyab ★ epi yo pa pran efè sou kèk kopi li. Se sa yo rele dereferencing. Nou ale nan referans a ak nou chanje valè nan a. Se konsa, si nou gen yon konsèy ak sa yo rele PC, epi li lonje dwèt nan yon karaktè, Lè sa a, nou ka di * PC ak * PC se nan non sa nou ap jwenn si nou ale nan adrès PC a. Ki sa nou ap jwenn gen yon karaktè ak * PC se ki jan nou al gade nan done yo lè sa kote. Se konsa, nou te kapab di yon bagay tankou * PC = D oswa yon bagay tankou sa yo, ak sa vle di ke tou sa te nan adrès memwa PC, tou sa karaktè te deja la, se kounye a D, si nou di * PC = D. Se konsa, isit la nou ale ankò ak kèk C bagay etranj, dwa. Se konsa, nou te wè * deja tankou se te yon jan kanmenm yon pati nan kalite la done, e kounye a, li nan te itilize nan yon kontèks yon ti kras diferan jwenn aksè nan done yo nan yon kote. Mwen konnen li nan yon ti kras konfizyon ak sa a, se aktyèlman yon pati nan sa a tout antye tankou, poukisa endikasyon gen mitoloji sa a bò kote yo kòm yo te tèlman konplèks, se kalite yon pwoblèm sentaks, onètman. Men, * ki itilize nan tou de kontèks, tou de kòm yon pati nan non an kalite, epi nou pral wè yon ti kras pita yon lòt bagay, tou. E yo gen dwa kounye a se nan dèreferans operatè. Se konsa, li ale nan referans a, li jwenn aksè done yo nan kote a nan konsèy la, ak pèmèt ou manipile li nan volonte. Koulye a, sa a se trè menm jan ak vizite frè parèy ou, dwa. Si ou konnen ki sa ou frè parèy ap viv, w ap pa pandye soti ak frè parèy nou. Ou konnen ou rive konnen ki kote y ap viv, men sa pa vle di ke pa vèti nan gen konesans sa w ap kominike avèk yo. Si ou vle kominike avèk yo, ou gen yo ale nan kay yo, ou gen pou yo ale nan kote yo ap viv la. Ak yon lòt fwa ou fè sa, lè sa a ou ka kominike ak yo jis tankou ou ta vle. Apre sa, Menm jan an tou ak varyab, ou bezwen pou yo ale nan adrès yo si ou vle kominike yo, ou pa kapab jis konnen adrès la. Ak wout la ou ale nan adrès la se yo sèvi ak *, operatè a dèreferans. Ki sa ou panse k ap pase si nou eseye ak dèreferans yon konsèy ki gen valè null? Sonje byen, nan nil konsèy lonje dwèt nan pa gen anyen. Se konsa, si ou eseye epi dèreferans pa gen anyen oswa ale nan adrès yon pa gen anyen, ki sa ou panse k ap pase? Oke si ou dvine segmentation fòt, ou ta dwe gen dwa. Si ou eseye ak dèreferans yon konsèy nil, w soufri yon segmentation fòt. Men, tann, pa t ', m'ap di nou, ki si ou pa ap ale yo mete valè ou a ou konsèy nan yon bagay ki gen sans, ou ta dwe mete nan nil? M 'te fè ak aktyèlman segmentation nan fòt se kalite yon bon konpòtman. Èske w te janm deklare yon varyab ak pa asiyen valè li yo imedyatman? Se konsa, ou jis di Int x; ou pa fè sa aktyèlman bay li nan anyen ak Lè sa a pita sou nan kòd ou a, ou enprime soti valè a nan x, gen toujou pa asiyen li nan anyen. Souvan ou pral jwenn zewo, men pafwa ou ta ka jwenn kèk nimewo o aza, ak ou pa gen okenn lide kote li te soti nan. Menm jan an tou kapab bagay rive ak endikasyon. Lè ou deklare yon konsèy int * pk pou egzanp, epi ou pa bay li nan yon valè, ou jwenn kat bytes pou memwa. Kèlkeswa kat bytes nan memwa sistèm lan kapab jwenn ke gen kèk valè ki gen sans. Apre sa, ta ka yo te yon bagay deja la ki se pa nesesè ankò pa yon lòt fonksyon, kidonk, ou jis gen tou sa done t 'la. E si ou te eseye fè dèreferans kèk adrès ke ou te gen don't- deja bytes ak enfòmasyon an la, sa a, se kounye a nan konsèy ou yo. Si ou eseye ak dèreferans ki konsèy, ou ka pitye ak kèk memwa ke ou pa t 'gen entansyon dezòd ak li tout. Lè an reyalite ou ta ka fè yon bagay ki reyèlman devastatè, tankou kraze yon lòt pwogram, oswa kraze yon lòt fonksyon, oswa fè yon bagay move ki ou pa t 'gen entansyon fè nan tout. Se konsa, Se poutèt sa li a aktyèlman yon bon lide yo mete pwent ou a nil si ou pa mete yo nan yon bagay ki gen sans. Li pwobableman pi bon nan la fen nan jounen an pou pwogram ou an aksidan lè sa a pou li fè yon bagay ki vis moute yon lòt pwogram oswa yon lòt fonksyon. Konpòtman ki se pwobableman menm mwens ideyal pase jis vin tonbe anpàn. Se konsa, Se poutèt sa li a aktyèlman yon abitid bon jwenn nan yo mete pwent ou a nil si ou pa mete yo nan yon valè siyifikatif imedyatman, se yon valè ke ou konnen e ke ou kapab san danje dèreferans a. Se konsa nou tounen vin kounye a epi pran yon gade a sentaks la an jeneral nan sitiyasyon an. Si mwen di Int * p ;, kisa m 'jis fè konsa? Ki sa mwen te fè se sa a. Mwen konnen valè a nan p se yon adrès paske tout endikasyon yo se jis adrès. Mwen kapab dèreferans p lè l sèvi avèk operatè a *. Nan kontèks sa a isit la, nan anpil nan tèt sonje * a se yon pati nan kalite la. Int * se tip ki done. Men, mwen kapab dèreferans p lè l sèvi avèk operatè a *, ak si mwen fè sa, lè m 'ale nan adrès sa, ki sa ki pral mwen jwenn nan adrès sa? Mwen pral jwenn yon nonb antye relatif. Se konsa, int * p se fondamantalman li di yo: p se yon adrès. Mwen kapab dèreferans p epi si M 'fè, mwen pral jwenn yon nonb antye relatif nan ki kote memwa. OK Se konsa, mwen te di te gen yon lòt anmèdan bagay ak zetwal ak isit la a kote ki anmèdan bagay ak zetwal se. Èske w te janm te eseye deklare miltip varyab nan kalite la menm sou liy lan menm nan Kòd? Se konsa, pou yon dezyèm fwa, pretann ke liy lan, kòd a mwen aktyèlman gen gen la nan vèt se pa la epi li jis di int x, y, z ;. Ki sa ki ta fè se aktyèlman kreye twa varyab nonb antye relatif pou ou, yon sèl rele x, yon sèl rele y, ak youn rele z. Li se yon fason yo fè li san yo pa gen fann sou twa liy yo. Isit la nan kote zetwal jwenn anmèdan ankò menm si, paske * a se aktyèlman yon pati nan tou de non an kalite ak pati nan non an varyab. Se konsa, si mwen di Int * PX, d, PZ, ki sa mwen aktyèlman jwenn se yon konsèy nan yon nonb antye relatif rele PX ak de nonm antye relatif, d ak PZ. Epi sa a, pwobableman pa sa nou vle, sa a, se pa bon. Se konsa, si mwen vle kreye miltip endikasyon sou liy lan menm, nan kalite la menm, ak zetwal, ki sa mwen aktyèlman bezwen fè se di Int * PA, * pb, * PC. Koulye a, li te gen jis te di ke e kounye a, di ou sa a, pwobableman ou pa janm ap fè sa. Apre sa, li la pwobableman yon bon bagay onètman, paske ou ta ka inadvèrtans retire okenn pati yon etwal, yon bagay tankou sa. Li pwobableman pi bon yo petèt deklare endikasyon sou liy endividyèl, men li la jis yon lòt youn nan tout sa yo anmèdan sentaks bagay sa yo ak zetwal ki fè endikasyon konsa pou sa difisil yo travay avèk. Paske li nan jis Massachusetts Institute of Technology sa a dezòd ou gen nan travay nan. Avèk pratik li fè sa reyèlman vin dezyèm nati. Mwen toujou fè erè ak li toujou apre pwogram pou 10 zan, Se konsa, pa bezwen pran lapenn yon bagay k ap pase si nou la a, li a trè komen onètman. Li nan reyèlman kalite yon defo nan sentaks la. OK Se konsa, mwen kalite te pwomèt ke nou ta revize konsèp nan ki jan gwo se yon fisèl. Oke si mwen te di nou ke yon fisèl, nou te reyèlman kalite te kouche ba ou tan nan tout antye. Gen nan pa gen kalite done yo rele fisèl, ak nan reyalite mwen mansyone sa a nan youn nan nou an pi bonè videyo sou kalite done, ki fisèl se te yon kalite done ki te kreye pou ou nan cs50.h. Ou gen # enkli Cs50.h yo nan lòd yo sèvi ak li. Oke fisèl se reyèlman jis yon alyas pou yon bagay rele Char * a, yon konsèy nan yon karaktè. Oke endikasyon, sonje, yo se jis adrese. Se konsa, sa se gwosè a nan bytes nan yon fisèl? Oke li nan kat oswa uit. Ak rezon an mwen di kat oswa uit se paske li aktyèlman depann sou sistèm nan, Si w ap lè l sèvi avèk CS50 IDE, Char * se gwosè a nan yon Char * Se uit, li nan yon sistèm 64-ti jan. Chak adrès nan memwa se 64 Bits lontan. Si w ap lè l sèvi avèk aparèy CS50 oswa lè l sèvi avèk nenpòt machin 32-ti jan, epi ou te konn tande ke tèm 32-ti jan machin, ki sa ki yon machin 32-ti jan? Oke li jis vle di ke chak adrès nan memwa se 32 Bits lontan. Se konsa, 32 Bits se kat bytes. Se konsa, yon Char * se kat oswa uit bytes depann sou sistèm ou an. Ak tout bon nenpòt kalite done, ak yon konsèy nan nenpòt done tape, depi tout endikasyon yo se jis adrès, yo se kat oswa uit bytes. Se konsa an n revize sa a dyagram e kite yo konkli videyo sa a ak yon ti kras fè egzèsis isit la. Se konsa, isit la nan dyagram nan nou te kite koupe ak nan kòmansman la anpil nan videyo a. Se konsa, sa k ap pase kounye a si mwen di * pk = 35? Se konsa, sa sa vle di lè m 'di, * pk = 35? Pran yon dezyèm fwa. * pk. Nan kontèks isit la, * se dèreferans operatè. Se konsa, lè a dèreferans se operatè itilize, nou ale nan adrès la pwente nan pa pk, epi nou chanje sa nou jwenn. Se konsa, * pk = 35 efektivman fè bagay sa a nan foto a. Se konsa, li fondamantalman syntactically ki idantik ak yo ki te di k = 35. Youn nan pi plis. Si mwen di Int m, mwen kreye yon varyab rele m nouvo. Yon nouvo bwat, li nan yon ti bwat vèt paske li k ap pase yo kenbe yon nonb antye relatif, ak li a ki make m. Si mwen di m = 4, mwen mete yon nonb antye relatif nan ki bwat. Si di pk = & m, ki jan fè sa a chanjman dyagram? Pk = & m, fè ou sonje ki sa a & Operatè fè oswa yo rele? Sonje ke & kèk Non varyab se adrès ki nan yon non varyab. Se konsa, sa nou ap di la a se pk vin adrès la nan m. Se konsa, sa k ap pase nan efektivman dyagram se ke pk pa pwen k, men pwen nan m. Yon fwa ankò endikasyon yo trè difisil yo travay avèk epi yo pran yon anpil nan pratik, men paske a kapasite yo nan pèmèt ou yo pase ant fonksyon done ak aktyèlman gen sa yo chanjman pran efè, ap resevwa tèt ou otou se reyèlman enpòtan. Li pwobableman se pi konplike nan sijè nou diskite nan CS50, men valè a ke ou soti nan lè l sèvi avèk endikasyon jwenn byen lwen depas konplikasyon ki ki soti nan aprann yo. Se konsa, mwen swete w pi bon an nan chans aprann sou endikasyon. Mwen se Doug Lloyd, sa a se CS50.