1 00:00:00,000 --> 00:00:02,520 [Powered by Google Translate] [Seksyon 4 - plis konfòtab] 2 00:00:02,520 --> 00:00:04,850 [Rob Bowden - Inivèsite Harvard] 3 00:00:04,850 --> 00:00:07,370 [Sa a se CS50. - CS50.TV] 4 00:00:08,920 --> 00:00:13,350 Nou gen yon demen egzamen, nan ka ou nèg pa t 'konnen. 5 00:00:14,810 --> 00:00:20,970 Li nan fondamantalman sou tout bagay ou ta ka gen pou wè nan klas, oswa yo dwe gen pou wè nan klas la. 6 00:00:20,970 --> 00:00:26,360 Ki gen ladan endikasyon, menm si yo se yon sijè trè ki resan. 7 00:00:26,360 --> 00:00:29,860 Ou ta dwe omwen konprann nivo segondè yo nan yo. 8 00:00:29,860 --> 00:00:34,760 Nenpòt bagay ki te fin janbe nan klas ou ta dwe konprann pou egzamen an. 9 00:00:34,760 --> 00:00:37,320 Se konsa, si w gen kesyon sou yo, ou kapab mande yo koulye a. 10 00:00:37,320 --> 00:00:43,280 Men, sa a se pral gen yon sesyon trè elèv yo dirije kote ou nèg poze kesyon, 11 00:00:43,280 --> 00:00:45,060 Se konsa èspere ke gen moun ki gen kesyon. 12 00:00:45,060 --> 00:00:48,020 nenpòt moun ki gen kesyon? 13 00:00:49,770 --> 00:00:52,090 Wi. >> [Elèv] Èske ou ka ale sou pwent ankò? 14 00:00:52,090 --> 00:00:54,350 Mwen pral ale sou pwent. 15 00:00:54,350 --> 00:00:59,180 Tout nan varyab ou nesesèman ap viv nan memwa, 16 00:00:59,180 --> 00:01:04,450 men anjeneral ou pa enkyete sou sa ki epi ou jis di x + 2 ak y + 3 17 00:01:04,450 --> 00:01:07,080 ak du a pral konnen ki kote bagay sa yo ap viv pou ou. 18 00:01:07,080 --> 00:01:12,990 Yon fwa w ap fè fas ak endikasyon, kounye a ou ap klèman lè l sèvi avèk sa yo adrès memwa. 19 00:01:12,990 --> 00:01:19,800 Se konsa, yon varyab sèl pral sèlman tout tan ap viv nan yon adrès sèl nan nenpòt ki lè pou yo bay. 20 00:01:19,800 --> 00:01:24,040 Si nou vle deklare yon konsèy, ki sa ki kalite nan ale nan sanble? 21 00:01:24,040 --> 00:01:26,210 >> Mwen vle deklare yon p konsèy. Ki kalite a sanble? 22 00:01:26,210 --> 00:01:33,530 [Elèv] int * p. >> Yeah. Se konsa, int * p. 23 00:01:33,530 --> 00:01:38,030 Ak ki jan mwen fè l 'lonje dwèt sou x? >> [Elèv] comercial. 24 00:01:40,540 --> 00:01:45,300 [Bowden] Se konsa, comercial se literalman rele adrès la nan operatè. 25 00:01:45,300 --> 00:01:50,460 Se konsa, lè m 'di & x li a ap resevwa adrès la memwa nan x la varyab. 26 00:01:50,460 --> 00:01:56,790 Se konsa, koulye a, mwen gen p la konsèy, ak nenpòt kote nan kòd m 'mwen ka itilize * p 27 00:01:56,790 --> 00:02:02,960 oswa mwen te kapab sèvi ak x ak li pral dwe egzak menm bagay la. 28 00:02:02,960 --> 00:02:09,520 (* P). Ki sa ki sa a ap fè? Ki sa sa etwal vle di? 29 00:02:09,520 --> 00:02:13,120 [Elèv] Sa vle di yon valè nan pwen sa a. >> Yeah. 30 00:02:13,120 --> 00:02:17,590 Se konsa, si nou gade nan li, li ka trè itil yo desine soti dyagram ki 31 00:02:17,590 --> 00:02:22,230 kote sa a se yon ti bwat ti kras nan memwa pou x, ki k ap pase nan gen menm valè a 4, 32 00:02:22,230 --> 00:02:25,980 Lè sa a, nou gen yon bwat ti kras nan memwa pou p, 33 00:02:25,980 --> 00:02:31,590 e konsa pwen p x, pou nou desine yon flèch nan p x. 34 00:02:31,590 --> 00:02:40,270 Se konsa, lè nou di * p nou ap di ale nan ti bwat la ki se p. 35 00:02:40,270 --> 00:02:46,480 Star se swiv flèch la, li Lè sa a, tou sa ou vle ak ki bwat ki la a. 36 00:02:46,480 --> 00:03:01,090 Se konsa, mwen ka di * p = 7, epi ki pral ale nan ti bwat la ki se x ak chanjman ki a 7. 37 00:03:01,090 --> 00:03:13,540 Oswa mwen te kapab di Int z = * p * 2; Sa se twoublan paske zetwal li a, zetwal. 38 00:03:13,540 --> 00:03:19,230 Zetwal nan yon sèl ki dereferencing p, zetwal nan lòt la miltipliye pa 2. 39 00:03:19,230 --> 00:03:26,780 Avi mwen te kapab gen jis kòm byen ranplase p la * ak x. 40 00:03:26,780 --> 00:03:29,430 Ou ka itilize yo nan menm fason an. 41 00:03:29,430 --> 00:03:38,000 Lè sa a, pita sou mwen ka gen p pwen nan yon konplètman bagay nouvo. 42 00:03:38,000 --> 00:03:42,190 Mwen ka jis di p = &z; 43 00:03:42,190 --> 00:03:44,940 Se konsa, kounye a pa gen okenn pwen P ankò x; li pwen z. 44 00:03:44,940 --> 00:03:50,510 Ak nenpòt ki lè m 'fè * p li a menm bagay la tou kòm fè z. 45 00:03:50,510 --> 00:03:56,170 Se konsa, bagay la itil sou sa a se yon fwa nou kòmanse resevwa nan fonksyon. 46 00:03:56,170 --> 00:03:59,790 >> Li nan kalite initil deklare yon konsèy ki pwen a yon bagay 47 00:03:59,790 --> 00:04:03,140 ak Lè sa a, w ap sèlman dereferencing li 48 00:04:03,140 --> 00:04:06,060 lè ou ta ka te itilize varyab orijinal la yo kòmanse avèk yo. 49 00:04:06,060 --> 00:04:18,190 Men, lè ou jwenn yo nan fonksyon - kidonk kite pou nou di nou gen kèk fonksyon, int foo, 50 00:04:18,190 --> 00:04:32,810 ki pran yon konsèy ak jis fè sa ki * p = 6; 51 00:04:32,810 --> 00:04:39,990 Tankou nou te wè anvan ak swap, ou pa ka fè yon swap efikas ak yon fonksyon apa 52 00:04:39,990 --> 00:04:45,180 pa jis pase nonm antye relatif paske tout bagay nan C se toujou pase nan valè. 53 00:04:45,180 --> 00:04:48,360 Menm lè w ap pase endikasyon w ap pase nan valè. 54 00:04:48,360 --> 00:04:51,940 Li jis konsa k ap pase ki valè sa yo yo se adrès memwa. 55 00:04:51,940 --> 00:05:00,770 Se konsa, lè m 'di foo (p); mwen pase konsèy la nan fonksyon foo la 56 00:05:00,770 --> 00:05:03,910 ak Lè sa a, foo ap fè * p = 6; 57 00:05:03,910 --> 00:05:08,600 Se konsa, andedan nan ki fonksyon, * p se toujou ekivalan a x, 58 00:05:08,600 --> 00:05:12,720 Men, m 'pa ka sèvi ak x andedan nan ki fonksyon paske li pa scoped nan ki fonksyon. 59 00:05:12,720 --> 00:05:19,510 Se konsa, * p = 6 se yon fason a sèlman mwen kapab jwenn aksè nan yon varyab lokal soti nan yon lòt fonksyon. 60 00:05:19,510 --> 00:05:23,600 Oswa, byen, endikasyon yo se wout la sèlman mwen ka gen aksè a yon varyab lokal soti nan yon lòt fonksyon. 61 00:05:23,600 --> 00:05:31,600 [Elèv] a Se pou nou di ou te vle retounen yon konsèy. Ki jan egzakteman ou fè sa? 62 00:05:31,600 --> 00:05:44,270 [Bowden] Retounen yon konsèy tankou nan yon bagay tankou int y 3 =; retounen & y? >> [Elèv] Yeah. 63 00:05:44,270 --> 00:05:48,480 [Bowden] Okay. Ou pa ta dwe janm fè sa. Sa a se move. 64 00:05:48,480 --> 00:05:59,480 Mwen panse ke mwen te wè nan sa yo glisad konferans ou te kòmanse wè dyagram sa a tout antye nan memwa 65 00:05:59,480 --> 00:06:02,880 kote moute isit la ou te gen adrès memwa 0 66 00:06:02,880 --> 00:06:09,550 , li desann isit la ou gen memwa adrès 4 jig oswa 2 a 32 an. 67 00:06:09,550 --> 00:06:15,120 Se konsa, Lè sa a, ou te gen kèk bagay ak lòt bagay kèk ak Lè sa a, ou gen chemine ou 68 00:06:15,120 --> 00:06:21,780 ak ou te gen pil ou a, ki ou jis te kòmanse aprann sou, ap grandi. 69 00:06:21,780 --> 00:06:24,390 [Elèv] Eske se pa pil wòch la pi wo a chemine a? 70 00:06:24,390 --> 00:06:27,760 >> Yeah. Pil wòch la se sou tèt, se pa li? >> [Elèv] Oke, li mete 0 sou tèt. 71 00:06:27,760 --> 00:06:30,320 [Elèv] Oh, li mete 0 sou tèt. >> [Elèv] Oh, oke. 72 00:06:30,320 --> 00:06:36,060 Limit responsabilite nou: Nenpòt kote ki gen CS50 w ap ale nan wè li nan fason sa. >> [Elèv] Okay. 73 00:06:36,060 --> 00:06:40,290 Se jis ke lè w ap premye wè pil, 74 00:06:40,290 --> 00:06:45,000 renmen lè ou panse de yon pil ou panse a anpilabl bagay sa yo sou tèt youn ak lòt. 75 00:06:45,000 --> 00:06:50,810 Se konsa, nou gen tandans yo baskile sa a alantou pou chemine a ap grandi, tankou yon pil nòmalman ta 76 00:06:50,810 --> 00:06:55,940 olye pou yo chemine an pandye desann. >> [Elèv] pa pil teknikman grandi twò, menm si? 77 00:06:55,940 --> 00:07:01,100 Sa depann de ki sa ou vle di pa grandi. 78 00:07:01,100 --> 00:07:04,010 Chemine a ak pil toujou grandi nan direksyon opoze. 79 00:07:04,010 --> 00:07:09,420 Yon pil se toujou ap grandi nan sans ke li an ap grandi 80 00:07:09,420 --> 00:07:12,940 rive sou pi wo adrès memwa, ak pil wòch la ap grandi desann 81 00:07:12,940 --> 00:07:17,260 nan ke li nan ap grandi nan direksyon pou pi ba adrès memwa. 82 00:07:17,260 --> 00:07:20,250 Se konsa, tèt la se 0 ak anba a se adrès memwa segondè. 83 00:07:20,250 --> 00:07:26,390 Yo ap tou de ap grandi, jis nan opoze direksyon. 84 00:07:26,390 --> 00:07:29,230 [Elèv] Mwen te jis vle di ke paske ou te di ou mete pil sou anba a 85 00:07:29,230 --> 00:07:33,640 paske li sanble pi plis entwisyon paske pou chemine a kòmanse nan tèt la nan yon pil, 86 00:07:33,640 --> 00:07:37,520 pil wòch la sou tèt tèt li tou, pou that's - Yeah >>. 87 00:07:37,520 --> 00:07:44,960 Ou menm tou panse a pil wòch la kòm ap grandi ak pi gwo, men pil an plis sa. 88 00:07:44,960 --> 00:07:50,280 Se konsa, chemine a se youn la ke nou kalite vle montre ap grandi. 89 00:07:50,280 --> 00:07:55,390 Men, tout kote ou gade otreman ki pral montre adrès 0 nan tèt la 90 00:07:55,390 --> 00:07:59,590 ak adrès la memwa pi wo nan pati anba a, se konsa sa a se opinyon abityèl ou nan memwa. 91 00:07:59,590 --> 00:08:02,100 >> ou gen yon kesyon? 92 00:08:02,100 --> 00:08:04,270 [Elèv] Èske ou ka di nou plis sou pil wòch la? 93 00:08:04,270 --> 00:08:06,180 Yeah. Mwen pral genyen ak sa yo ki nan yon dezyèm fwa. 94 00:08:06,180 --> 00:08:12,220 Premyèman, pral tounen nan poukisa retounen & y se yon bagay mal, 95 00:08:12,220 --> 00:08:18,470 sou chemine a ou gen yon pakèt moun sou ankadreman chemine ki reprezante tout nan fonksyon yo 96 00:08:18,470 --> 00:08:20,460 ki te rele. 97 00:08:20,460 --> 00:08:27,990 Se konsa, inyore bagay sa yo anvan, tèt la nan chemine ou a ap toujou pral fè fonksyon prensipal 98 00:08:27,990 --> 00:08:33,090 depi lè sa a fonksyon nan premye ki nan yo te rele. 99 00:08:33,090 --> 00:08:37,130 Lè sa a, lè w rele yon lòt fonksyon, chemine a pral grandi desann. 100 00:08:37,130 --> 00:08:41,640 Se konsa, si mwen rele kèk fonksyon, foo, ak li vin ankadreman chemine pwòp li yo, 101 00:08:41,640 --> 00:08:47,280 li ka rele kèk fonksyon, ba; li vin ankadreman chemine pwòp li yo. 102 00:08:47,280 --> 00:08:49,840 Ak bar ta ka repetitif ak li te kapab rele tèt li, 103 00:08:49,840 --> 00:08:54,150 Pou fè sa ki dezyèm rele bar la pral jwenn ankadreman pwòp chemine li yo. 104 00:08:54,150 --> 00:08:58,880 Se konsa, sa ki ale nan sa yo ankadreman chemine yo tout nan varyab lokal yo 105 00:08:58,880 --> 00:09:03,450 ak tout agiman yo fonksyon ki - 106 00:09:03,450 --> 00:09:08,730 Nenpòt bagay ki lokalman scoped sa a fonksyon ale nan sa yo ankadreman chemine. 107 00:09:08,730 --> 00:09:21,520 Se konsa, sa vle di lè m 'te di yon bagay tankou bar se yon fonksyon, 108 00:09:21,520 --> 00:09:29,270 Mwen jis ale nan deklare yon nonb antye relatif ak Lè sa a, retounen yon konsèy ak sa yo ki antye ki pè. 109 00:09:29,270 --> 00:09:33,790 Se konsa, kote y ap viv? 110 00:09:33,790 --> 00:09:36,900 [Elèv] y ap viv nan ba. >> [Bowden] Yeah. 111 00:09:36,900 --> 00:09:45,010 Yon kote nan sa a kare ti kras nan memwa se yon kare littler ki gen y nan li. 112 00:09:45,010 --> 00:09:53,370 Lè m 'tounen & y, mwen retounen yon konsèy sa a blòk ti kras nan memwa. 113 00:09:53,370 --> 00:09:58,400 Men, Lè sa a, lè yon retounen fonksyon, vin ankadreman chemine li yo déja nan chemine a. 114 00:10:01,050 --> 00:10:03,530 Epi sa a, poukisa sa yo rele pil. 115 00:10:03,530 --> 00:10:06,570 Se tankou estrikti nan done chemine, si ou konnen ki sa ki sa se. 116 00:10:06,570 --> 00:10:11,580 Oswa menm tankou yon pil nan plato se toujou egzanp lan, 117 00:10:11,580 --> 00:10:16,060 prensipal ki pral ale nan anba a, Lè sa a, fonksyon an premye ou rele ki pral ale sou tèt de sa, 118 00:10:16,060 --> 00:10:20,400 epi ou pa kapab jwenn tounen nan prensipal jouk lè wa tounen soti nan tout fonksyon ki te rele 119 00:10:20,400 --> 00:10:22,340 ke yo te mete sou tèt li. 120 00:10:22,340 --> 00:10:28,650 >> [Elèv] Se konsa, si ou te fè fè retounen y la &, ki valè se sijè a chanje san avètisman. 121 00:10:28,650 --> 00:10:31,290 Wi, it's - >> [elèv] Li ta ka efase. >> Yeah. 122 00:10:31,290 --> 00:10:34,660 Li nan konplètman - Si ou eseye ak - 123 00:10:34,660 --> 00:10:38,040 Sa a ta kapab tou yon ba * int paske li nan retounen yon konsèy, 124 00:10:38,040 --> 00:10:41,310 konsa kalite retounen li yo se * int. 125 00:10:41,310 --> 00:10:46,500 Si ou eseye itilize valè a retounen nan fonksyon sa a, li nan konpòtman endefini 126 00:10:46,500 --> 00:10:51,770 paske sa konsèy pwen memwa move. >> [Elèv] Okay. 127 00:10:51,770 --> 00:11:01,250 Se konsa, sa si, pou egzanp, ou te di Int * y = malok (sizof (Int))? 128 00:11:01,250 --> 00:11:03,740 Sa a pi byen. Wi. 129 00:11:03,740 --> 00:11:07,730 [Elèv] Nou te pale sou ki jan lè nou trennen bagay sa yo nan bin resiklaj nou an 130 00:11:07,730 --> 00:11:11,750 yo pa aktyèlman efase; nou jis pèdi pwent yo. 131 00:11:11,750 --> 00:11:15,550 Se konsa, nan ka sa a nou aktyèlman efase valè a oswa se li toujou la nan memwa? 132 00:11:15,550 --> 00:11:19,130 Pou pati ki pi, li te ale nan toujou la. 133 00:11:19,130 --> 00:11:24,220 Men, kite a di nou rive rele kèk fonksyon lòt, Baz. 134 00:11:24,220 --> 00:11:28,990 Baz la pwal jwenn ankadreman pwòp chemine li a sou isit la. 135 00:11:28,990 --> 00:11:31,470 Li nan pwal yo dwe ranplasan tout bagay sa a, 136 00:11:31,470 --> 00:11:34,180 ak Lè sa a, si ou pita eseye epi sèvi ak konsèy a ke ou te jwenn anvan, 137 00:11:34,180 --> 00:11:35,570 li pa pral fè menm valè a. 138 00:11:35,570 --> 00:11:38,150 Li nan ale nan te chanje jis paske w rele Baz la fonksyon. 139 00:11:38,150 --> 00:11:43,080 [Elèv] Men, nou pa t ', nou ta toujou ap resevwa 3? 140 00:11:43,080 --> 00:11:44,990 [Bowden] Nan tout chans, ou ta. 141 00:11:44,990 --> 00:11:49,670 Men, nou pa ka konte sou sa. C jis di konpòtman endefini. 142 00:11:49,670 --> 00:11:51,920 >> [Elèv] Oh, li fè sa. Oke. 143 00:11:51,920 --> 00:11:58,190 Se konsa, lè ou vle retounen yon konsèy, sa a se kote malok vini nan sèvi ak yo. 144 00:12:00,930 --> 00:12:15,960 M ap ekri aktyèlman jis retounen malok (3 * sizof (Int)). 145 00:12:17,360 --> 00:12:24,050 Nou pral ale sou malok plis nan yon dezyèm, men lide a nan malok se tout nan varyab lokal ou a 146 00:12:24,050 --> 00:12:26,760 toujou ale sou pil la. 147 00:12:26,760 --> 00:12:31,570 Nenpòt bagay ki nan malloced ale sou pil wòch la, epi li pral pou tout tan ak toujou sou pil wòch la 148 00:12:31,570 --> 00:12:34,490 jiskaske ou klèman libere li. 149 00:12:34,490 --> 00:12:42,130 Se konsa, sa vle di ke lè ou malok yon bagay, li pral siviv apre retounen yo fonksyon. 150 00:12:42,130 --> 00:12:46,800 [Elèv] Eske li siviv apre pwogram lan sispann kouri? >> No 151 00:12:46,800 --> 00:12:53,180 Oke, kidonk li a pwal gen jiskaske pwogram nan se tout wout la fè kouri. >> Wi. 152 00:12:53,180 --> 00:12:57,510 Nou ka ale sou detay sou sa ki pase lè pwogram lan sispann kouri. 153 00:12:57,510 --> 00:13:02,150 Ou ta ka bezwen raple m ', men sa se yon bagay apa nèt. 154 00:13:02,150 --> 00:13:04,190 [Elèv] Se konsa, malok kreye yon konsèy? >> Yeah. 155 00:13:04,190 --> 00:13:13,030 Malok - >> [elèv] Mwen panse ke malok delege yon blòk nan memwa ke yon konsèy kapab itilize. 156 00:13:15,400 --> 00:13:19,610 [Bowden] Mwen vle ke dyagram ankò. >> [Elèv] Se konsa, sa a fonksyon travay, menm si? 157 00:13:19,610 --> 00:13:26,430 [Elèv] Yeah, malok delege yon blòk nan memwa ke ou ka itilize, 158 00:13:26,430 --> 00:13:30,470 ak Lè sa a, li retounen adrès ki nan blòk an premye nan ki memwa. 159 00:13:30,470 --> 00:13:36,750 >> [Bowden] Yeah. Se konsa, lè ou malok, w ap arachman kèk blòk de memwa 160 00:13:36,750 --> 00:13:38,260 sa a, se kounye a nan pil wòch la. 161 00:13:38,260 --> 00:13:43,040 Si pil wòch la se twò piti, Lè sa a, pil wòch la se jis ale nan grandi, ak li ap grandi nan direksyon sa a. 162 00:13:43,040 --> 00:13:44,650 Se konsa, kite a di pil wòch la se twò piti. 163 00:13:44,650 --> 00:13:49,960 Lè sa a, li a sou yo grandi yon ti jan a epi retounen yon konsèy sa a blòk ki jis grandi. 164 00:13:49,960 --> 00:13:55,130 Lè ou gratis bagay, w ap fè plis chanm nan pil wòch la, 165 00:13:55,130 --> 00:14:00,030 se konsa Lè sa a, yon pita rele malok ka jam itilize ke memwa ke ou te deja te libere. 166 00:14:00,030 --> 00:14:09,950 Bagay la enpòtan sou malok ak gratis se ke li ba ou kontwòl konplè 167 00:14:09,950 --> 00:14:12,700 pandan tout lavi a nan sa yo blòk memwa. 168 00:14:12,700 --> 00:14:15,420 Varyab Global yo toujou vivan. 169 00:14:15,420 --> 00:14:18,500 Varyab lokal yo tou vivan nan dimansyon yo. 170 00:14:18,500 --> 00:14:22,140 Osito ke ou ale sot pase yon atèl Curly, varyab lokal yo yo mouri. 171 00:14:22,140 --> 00:14:28,890 Memwa Malloced an vi lè ou vle li nan dwe vivan 172 00:14:28,890 --> 00:14:33,480 ak Lè sa a, ki lage lè ou di l 'bay ka libere. 173 00:14:33,480 --> 00:14:38,420 Moun sa yo se aktyèlman sèlman 3 ki kalite memwa, vrèman. 174 00:14:38,420 --> 00:14:41,840 Genyen nan jesyon otomatik memwa, ki se chemine a. 175 00:14:41,840 --> 00:14:43,840 Bagay sa yo rive pou ou otomatikman. 176 00:14:43,840 --> 00:14:46,910 Lè ou di x Int, memwa se afekte pou x int. 177 00:14:46,910 --> 00:14:51,630 Lè x ale soti nan dimansyon, memwa se resikle pou x. 178 00:14:51,630 --> 00:14:54,790 Lè sa a, gen nan jesyon dinamik memwa, ki se ki sa malok se, 179 00:14:54,790 --> 00:14:56,740 ki se lè ou gen kontwòl. 180 00:14:56,740 --> 00:15:01,290 Ou dynamique deside ki lè memwa ta dwe ak pa ta dwe afekte. 181 00:15:01,290 --> 00:15:05,050 Lè sa a, gen nan estatik, ki jis vle di ke li ap viv pou tout tan, 182 00:15:05,050 --> 00:15:06,610 ki se ki sa varyab mondyal yo ye. 183 00:15:06,610 --> 00:15:10,240 Yo ap jis toujou nan memwa. 184 00:15:10,960 --> 00:15:12,760 >> Kesyon? 185 00:15:14,490 --> 00:15:17,230 [Elèv] Èske ou ka defini yon blòk jis lè l sèvi avèk aparèy òtopedik Curly 186 00:15:17,230 --> 00:15:21,220 men pa gen gen yon? si deklarasyon oubyen yon deklarasyon pandan y ap oswa yon bagay tankou sa 187 00:15:21,220 --> 00:15:29,130 Ou ka defini yon blòk kòm nan yon fonksyon, men ki gen aparèy òtopedik Curly tou. 188 00:15:29,130 --> 00:15:32,100 [Elèv] Se konsa, ou pa ka jis gen tankou yon pè o aza nan aparèy òtopedik Curly nan kòd ou a 189 00:15:32,100 --> 00:15:35,680 ki gen varyab lokal yo? >> Wi, ou kapab. 190 00:15:35,680 --> 00:15:45,900 Anndan nan int bar nou te ka gen {int y = 3;}. 191 00:15:45,900 --> 00:15:48,440 Ki nan sipoze yo dwe gen dwa isit la. 192 00:15:48,440 --> 00:15:52,450 Men, sa nèt, defini sijè ki abòde lan int y. 193 00:15:52,450 --> 00:15:57,320 Apre sa atèl dezyèm Curly, y pa kapab itilize ankò. 194 00:15:57,910 --> 00:16:00,630 Ou prèske pa janm fè sa, menm si. 195 00:16:02,940 --> 00:16:07,370 Retounen nan sa ki pase lè yon pwogram fini, 196 00:16:07,370 --> 00:16:18,760 gen nan kalite yon manti miskonsepsyon / mwatye ke nou bay yo nan lòd yo jis fè bagay sa yo pi fasil. 197 00:16:18,760 --> 00:16:24,410 Nou di w ke lè ou asiyen memwa 198 00:16:24,410 --> 00:16:29,860 w ap allocation kèk ti moso nan RAM pou varyab sa a. 199 00:16:29,860 --> 00:16:34,190 Men, ou pa ap reyèlman dirèkteman manyen RAM janm nan pwogram ou an. 200 00:16:34,190 --> 00:16:37,490 Si ou panse a li, ki jan mwen te trase - 201 00:16:37,490 --> 00:16:44,330 Ak aktyèlman, si ou ale nan nan gdb ou pral wè menm bagay la. 202 00:16:51,120 --> 00:16:57,590 Kèlkeswa konbyen fwa ou kouri pwogram ou an oswa sa ki pwogram w ap kouri, 203 00:16:57,590 --> 00:16:59,950 chemine a ap toujou pral kòmanse - 204 00:16:59,950 --> 00:17:06,510 w ap toujou ale nan wè varyab alantou yon bagay oxbffff adrès. 205 00:17:06,510 --> 00:17:09,470 Li nan anjeneral yon kote nan rejyon sa. 206 00:17:09,470 --> 00:17:18,760 Men, ki jan ka 2 pwogram pètèt gen endikasyon memwa nan menm? 207 00:17:20,640 --> 00:17:27,650 [Elèv] Genyen kèk deziyasyon abitrè nan kote oxbfff ta sipoze ap sou belye mouton an 208 00:17:27,650 --> 00:17:31,320 ki ka aktyèlman ap nan diferan kote depann sou lè yo te fonksyon an rele. 209 00:17:31,320 --> 00:17:35,920 Yeah. Tèm nan se memwa vityèl. 210 00:17:35,920 --> 00:17:42,250 Lide a se ke chak pwosesis sèl, chak sèl pwogram ki kouri sou òdinatè w lan 211 00:17:42,250 --> 00:17:49,450 gen pwòp li yo - kite a sipoze 32 Bits - konplètman endepandan espas adrès. 212 00:17:49,450 --> 00:17:51,590 Sa a se espas ki la adrès. 213 00:17:51,590 --> 00:17:56,220 Li te gen pwòp li yo konplètman endepandan 4 jigokte yo itilize. 214 00:17:56,220 --> 00:18:02,220 >> Se konsa, si w kouri 2 pwogram an menm tan, pwogram sa a wè 4 jigokte tèt li, 215 00:18:02,220 --> 00:18:04,870 pwogram sa a wè 4 jigokte tèt li, 216 00:18:04,870 --> 00:18:07,720 epi li enposib pou pwogram sa a nan dèreferans yon konsèy 217 00:18:07,720 --> 00:18:10,920 ak fini ak memwa soti nan pwogram sa a. 218 00:18:10,920 --> 00:18:18,200 Ak sa ki memwa vityèl se se yon kat ki soti nan yon espas adrès pwosesis 219 00:18:18,200 --> 00:18:20,470 yo ak bagay reyèl sou RAM. 220 00:18:20,470 --> 00:18:22,940 Se konsa, li a jiska sistèm opere ou nan konnen ke, 221 00:18:22,940 --> 00:18:28,080 hey, lè sa a Guy dereferences oxbfff konsèy, ki vrèman vle di 222 00:18:28,080 --> 00:18:31,040 ke li te vle RAM multiple 1000, 223 00:18:31,040 --> 00:18:38,150 Lè nou konsidere ke si pwogram sa a dereferences oxbfff, li ta vrèman renmen RAM multiple 10000. 224 00:18:38,150 --> 00:18:41,590 Yo ka abitrèman lwen apa. 225 00:18:41,590 --> 00:18:48,730 Sa a se menm vre de bagay sa yo nan yon espas sèl pwosesis adrès. 226 00:18:48,730 --> 00:18:54,770 Se konsa, tankou li wè tout jigokte 4 a tèt li, men kite a di - 227 00:18:54,770 --> 00:18:57,290 [Elèv] Èske chak pwosesis sèl - 228 00:18:57,290 --> 00:19:01,350 Se pou nou di ou gen yon òdinatè ki gen sèlman 4 jigokte nan RAM. 229 00:19:01,350 --> 00:19:06,430 chak pwosesis sèl wè tout 4 jigokte yo? >> Wi. 230 00:19:06,430 --> 00:19:13,060 Men, jigokte yo 4 li wè se yon manti. 231 00:19:13,060 --> 00:19:20,460 Li nan jis li panse li gen tout bagay sa a memwa paske li pa konnen nenpòt lòt pwosesis lòt egziste. 232 00:19:20,460 --> 00:19:28,140 Li pral sèlman itilize memwa toutotan ke li aktyèlman bezwen. 233 00:19:28,140 --> 00:19:32,340 Sistèm nan fonksyone se pa sa pral bay RAM pwosesis sa a 234 00:19:32,340 --> 00:19:35,750 si li pa la lè l sèvi avèk nenpòt ki memwa nan rejyon sa a tout antye. 235 00:19:35,750 --> 00:19:39,300 Li pa nan pral bay li memwa pou sa rejyon an. 236 00:19:39,300 --> 00:19:54,780 Men, lide a se ke - mwen ap eseye panse a - Mwen pa ka panse a yon analoji. 237 00:19:54,780 --> 00:19:56,780 Analoji yo difisil. 238 00:19:57,740 --> 00:20:02,700 Youn nan pwoblèm yo ki nan memwa vityèl oswa yon sèl nan bagay sa yo li a pou rezoud 239 00:20:02,700 --> 00:20:06,810 se ke pwosesis yo ta dwe konplètman okouran de youn ak lòt. 240 00:20:06,810 --> 00:20:12,140 Se konsa, ou ka ekri nenpòt ki pwogram ki jis dereferences nenpòt konsèy, 241 00:20:12,140 --> 00:20:19,340 renmen jis ekri yon pwogram ki di * (ox1234), 242 00:20:19,340 --> 00:20:22,890 dereferencing adrès memwa ak ki nan 1234. 243 00:20:22,890 --> 00:20:28,870 >> Men, li la jiska sistèm nan fonksyone Lè sa a, tradui sa ki 1234 vle di. 244 00:20:28,870 --> 00:20:33,960 Se konsa, si 1234 k ap pase nan gen yon adrès memwa valab pou pwosesis sa a, 245 00:20:33,960 --> 00:20:38,800 tankou li sou pil la oswa yon bagay, Lè sa a, sa a pral retounen valè sa a nan adrès memwa 246 00:20:38,800 --> 00:20:41,960 osi lwen ke pwosesis la konnen. 247 00:20:41,960 --> 00:20:47,520 Men, si 1234 se pa yon adrès ki valab, tankou bagay sa yo rive nan peyi 248 00:20:47,520 --> 00:20:52,910 nan kèk moso ti kras nan memwa isit la ki ale pi lwen pil la ak pi lwen pase pil wòch la 249 00:20:52,910 --> 00:20:57,200 epi ou pa te reyèlman te itilize sa, Lè sa a, sa a, se lè ou jwenn bagay sa yo tankou segfaults 250 00:20:57,200 --> 00:21:00,260 paske w ap manyen memwa ke ou pa ta dwe manyen. 251 00:21:07,180 --> 00:21:09,340 Sa a se verite tou - 252 00:21:09,340 --> 00:21:15,440 Yon sistèm 32-bit, 32 Bits vle di ou gen 32 Bits defini yon adrès memwa. 253 00:21:15,440 --> 00:21:22,970 Li nan poukisa endikasyon yo se 8 paske bytes 32 Bits yo se 8 bytes - oubyen 4 bytes. 254 00:21:22,970 --> 00:21:25,250 Endikasyon yo se 4 bytes. 255 00:21:25,250 --> 00:21:33,680 Se konsa, lè ou wè yon konsèy tankou oxbfffff, se sa ki - 256 00:21:33,680 --> 00:21:40,080 Nan nenpòt ki pwogram bay ou ka jis konstwi nenpòt konsèy abitrè, 257 00:21:40,080 --> 00:21:46,330 soti nan nenpòt kote ox0 bèf f's 8 - ffffffff. 258 00:21:46,330 --> 00:21:49,180 [Elèv] Eske se pa ou di yo ap 4 bytes? >> Yeah. 259 00:21:49,180 --> 00:21:52,730 [Elèv] Lè sa a, chak multiple ap gen - >> [Bowden] ekzadesimal. 260 00:21:52,730 --> 00:21:59,360 Ekzadesimal - 5, 6, 7, 8. Se konsa, endikasyon w ap ale nan toujou wè nan ekzadesimal. 261 00:21:59,360 --> 00:22:01,710 Se jis ki jan nou klasifye endikasyon. 262 00:22:01,710 --> 00:22:05,240 Chak chif 2 nan ekzadesimal se 1 multiple. 263 00:22:05,240 --> 00:22:09,600 Se konsa, gen k ap pase yo dwe 8 ​​chif ekzadesimal pou 4 bytes. 264 00:22:09,600 --> 00:22:14,190 Se konsa, chak konsèy sèl sou yon sistèm 32-bit a pwal 4 bytes, 265 00:22:14,190 --> 00:22:18,550 ki vle di ke nan pwosesis ou, ou ka konstwi nenpòt abitrè 4 bytes 266 00:22:18,550 --> 00:22:20,550 epi fè yon konsèy soti nan li, 267 00:22:20,550 --> 00:22:32,730 ki vle di ke osi lwen ke li nan konnen, li kapab adrese yon 2 tout bytes yo 32 nan memwa. 268 00:22:32,730 --> 00:22:34,760 Menm si li pa reyèlman gen aksè a sa, 269 00:22:34,760 --> 00:22:40,190 menm si òdinatè w lan sèlman gen 512 megabit, li panse li gen ki memwa anpil. 270 00:22:40,190 --> 00:22:44,930 Ak sistèm nan fonksyone se entelijan ase ke li pral sèlman asiyen ki sa ou aktyèlman bezwen. 271 00:22:44,930 --> 00:22:49,630 Li pa jis ale, o, yon pwosesis nouvo: 4 jig. 272 00:22:49,630 --> 00:22:51,930 >> Yeah. >> [Elèv] Ki sa ki towo a vle di? Poukisa ou ekri li? 273 00:22:51,930 --> 00:22:54,980 Se jis nan senbòl pou ekzadesimal. 274 00:22:54,980 --> 00:22:59,590 Lè nou wè yon kòmansman ki gen chif avèk bèf, bagay sa yo siksesif yo se ekzadesimal. 275 00:23:01,930 --> 00:23:05,760 [Elèv] Ou te eksplike sou sa ki pase lè yon pwogram fini. >> Wi. 276 00:23:05,760 --> 00:23:09,480 Kisa k ap pase lè yon pwogram fini se sistèm nan fonksyone 277 00:23:09,480 --> 00:23:13,600 jis efase mapin yo ke li genyen pou sa yo adrès, ak sa a, se li. 278 00:23:13,600 --> 00:23:17,770 Sistèm nan fonksyone kapab kounye a jis bay ki memwa nan yon lòt pwogram yo itilize. 279 00:23:17,770 --> 00:23:19,490 [Elèv] Okay. 280 00:23:19,490 --> 00:23:24,800 Se konsa, lè ou asiyen yon bagay sou pil wòch la oswa varyab yo chemine oswa mondyal oswa yon lòt bagay, 281 00:23:24,800 --> 00:23:27,010 yo tout jis disparèt le pli vit ke pwogram nan fini 282 00:23:27,010 --> 00:23:32,120 paske sistèm nan fonksyone se kounye a gratis bay ki memwa nan nenpòt pwosesis lòt. 283 00:23:32,120 --> 00:23:35,150 [Elèv] Menm si gen yo se pwobableman toujou valè ekri nan? >> Yeah. 284 00:23:35,150 --> 00:23:37,740 Valè yo ki gen chans toujou la. 285 00:23:37,740 --> 00:23:41,570 Li nan jis li a pwal difisil jwenn nan yo. 286 00:23:41,570 --> 00:23:45,230 Li nan pi difisil yo ka resevwa nan yo pase sa li se yo ka resevwa nan yon dosye efase 287 00:23:45,230 --> 00:23:51,450 paske kalite a dosye efase nan chita gen pou yon tan long ak kondwi a difisil a se yon lot pi gwo. 288 00:23:51,450 --> 00:23:54,120 Se konsa, li pral recouvrir diferan pati nan memwa 289 00:23:54,120 --> 00:23:58,640 anvan li k ap pase nan recouvrir moso nan memwa ki ki dosye itilize yo dwe nan. 290 00:23:58,640 --> 00:24:04,520 Men, prensipal memwa, RAM, ou sik nan yon anpil pi vit, 291 00:24:04,520 --> 00:24:08,040 Se konsa, li ale nan trè vit dwe efase. 292 00:24:10,300 --> 00:24:13,340 Kesyon sa a sou oswa tout lòt bagay? 293 00:24:13,340 --> 00:24:16,130 [Elèv] mwen gen kesyon sou yon sijè diferan. >> Okay. 294 00:24:16,130 --> 00:24:19,060 nenpòt moun ki gen kesyon sou sa a? 295 00:24:20,170 --> 00:24:23,120 >> Oke. Diferan sijè. >> [Elèv] Okay. 296 00:24:23,120 --> 00:24:26,550 Mwen te ale nan kèk nan tès yo pratike, 297 00:24:26,550 --> 00:24:30,480 ak nan youn nan yo li te pale sou sizof la 298 00:24:30,480 --> 00:24:35,630 ak valè a ki li retounen oswa diferan kalite varyab. >> Wi. 299 00:24:35,630 --> 00:24:45,060 Epi li te di ke tou de int ak long tou de retou 4, se konsa yo ap tou de bytes 4 long. 300 00:24:45,060 --> 00:24:48,070 Èske gen nenpòt diferans ki genyen ant yon int ak yon long, oswa se li menm bagay la? 301 00:24:48,070 --> 00:24:50,380 Wi, gen se yon diferans. 302 00:24:50,380 --> 00:24:52,960 C estanda a - 303 00:24:52,960 --> 00:24:54,950 Mwen pwobableman ale nan dezòd leve. 304 00:24:54,950 --> 00:24:58,800 Estanda nan C se jis tankou sa ki C se, dokiman an ofisyèl nan C. 305 00:24:58,800 --> 00:25:00,340 Sa a se sa li di. 306 00:25:00,340 --> 00:25:08,650 Se konsa, estanda nan C jis di ke yon Char pral pou tout tan ak toujou 1 multiple. 307 00:25:10,470 --> 00:25:19,040 Tout apre sa - yon kout se toujou jis defini kòm yo te pi gran pase oswa egal a yon Char. 308 00:25:19,040 --> 00:25:23,010 Sa a ta kapab estrikteman pi gran pase, men se pa pozitif. 309 00:25:23,010 --> 00:25:31,940 Yon int jis defini kòm yo te pi gran pase oswa egal a yon ti tan. 310 00:25:31,940 --> 00:25:36,210 Ak yon long se jis ke yo te defini kòm pi gran pase oswa egal a yon int. 311 00:25:36,210 --> 00:25:41,600 Ak yon long long se pi gran pase oswa egal a yon long. 312 00:25:41,600 --> 00:25:46,610 Se konsa, bagay la sèlman estanda nan C defini se ordonne relatif la nan tout bagay. 313 00:25:46,610 --> 00:25:54,880 Kantite lajan aktyèl la nan memwa ke bagay Leve kanpe, pran se jeneralman jiska aplikasyon, 314 00:25:54,880 --> 00:25:57,640 Men, li la trè byen defini nan pwen sa. >> [Elèv] Okay. 315 00:25:57,640 --> 00:26:02,490 Se konsa, bout pantalon yo prèske toujou pral fè 2 bytes. 316 00:26:04,920 --> 00:26:09,950 Antye yo prèske toujou ale nan gen 4 bytes. 317 00:26:12,070 --> 00:26:15,340 Voudre Long yo prèske toujou pral fè 8 bytes. 318 00:26:17,990 --> 00:26:23,160 Ak fin fou, li depann de si wi ou non w ap itilize yon 32-bit oswa yon sistèm 64-ti jan. 319 00:26:23,160 --> 00:26:27,450 Se konsa, yon long ki pral koresponn ak ki kalite sistèm. 320 00:26:27,450 --> 00:26:31,920 Si w ap itilize yon sistèm 32-ti jan tankou Aparèy la, li pral gen 4 bytes. 321 00:26:34,530 --> 00:26:42,570 Si w ap sèvi ak yon 64-ti jan tankou yon anpil nan òdinatè resan yo, li pral yo dwe 8 ​​bytes. 322 00:26:42,570 --> 00:26:45,230 >> Antye yo se prèske toujou 4 bytes nan pwen sa. 323 00:26:45,230 --> 00:26:47,140 Voudre Long yo se prèske toujou 8 bytes. 324 00:26:47,140 --> 00:26:50,300 Nan tan lontan, antye itilize sèlman ki gen 2 bytes. 325 00:26:50,300 --> 00:26:56,840 Men, remake ke sa a konplètman satisfè tout moun sa yo relasyon nan pi gran pase ak egal a. 326 00:26:56,840 --> 00:27:01,280 Se konsa, depi lontan se parfe dwa fè gwosè a menm jan ak yon nonb antye relatif, 327 00:27:01,280 --> 00:27:04,030 epi li la tou dwa fè gwosè a menm jan ak yon long lontan. 328 00:27:04,030 --> 00:27:11,070 Epi li jis pou k ap pase yo ke nan 99,999% nan sistèm, li a pwal egal a 329 00:27:11,070 --> 00:27:15,800 swa yon int oswa yon long lontan. Li jis depann sou 32 ti jan-oswa ti jan 64-. >> [Elèv] Okay. 330 00:27:15,800 --> 00:27:24,600 Nan flote, ki jan pou pwen an desimal deziyen an tèm de Bits? 331 00:27:24,600 --> 00:27:27,160 Renmen kòm binè? >> Yeah. 332 00:27:27,160 --> 00:27:30,570 Ou pa bezwen konnen pou CS50. 333 00:27:30,570 --> 00:27:32,960 Ou pa menm aprann ke nan 61. 334 00:27:32,960 --> 00:27:37,350 Ou pa aprann ki vrèman nan nenpòt kou. 335 00:27:37,350 --> 00:27:42,740 Se jis yon reprezantasyon. 336 00:27:42,740 --> 00:27:45,440 M bliye Alokasyon pou Kou pou yo ti jan egzak. 337 00:27:45,440 --> 00:27:53,380 Lide a nan pwen k ap flote se ke ou asiyen yon kantite espesifik Bits ki reprezante - 338 00:27:53,380 --> 00:27:56,550 Fondamantalman, tout bagay se nan notasyon syantifik. 339 00:27:56,550 --> 00:28:05,600 Se konsa, ou asiyen yon kantite espesifik Bits reprezante ki kantite tèt li, tankou 1,2345. 340 00:28:05,600 --> 00:28:10,200 Mwen pa janm ka reprezante yon nimewo ki gen plis pase 5 chif. 341 00:28:12,200 --> 00:28:26,300 Lè sa a, nou menm tou nou asiyen yon kantite espesifik Bits konsa ke li gen tandans ka tankou 342 00:28:26,300 --> 00:28:32,810 ou ka sèlman ale jiska yon sèten nonb, tankou sa a, se ekspozan an pi gwo ou ka gen, 343 00:28:32,810 --> 00:28:36,190 epi ou ka sèlman desann nan yon ekspozan sèten, 344 00:28:36,190 --> 00:28:38,770 renmen sa a, se ekspozan ki pi piti a ou ka gen. 345 00:28:38,770 --> 00:28:44,410 >> Mwen pa sonje Bits yo fason egzak yo deziyen yo tout moun sa yo valè, 346 00:28:44,410 --> 00:28:47,940 , men yo yon sèten kantite Bits dedye a 1,2345, 347 00:28:47,940 --> 00:28:50,930 yo se yon lòt sèten kantite Bits dedye a ekspozan an, 348 00:28:50,930 --> 00:28:55,670 ak li a sèlman posib yo reprezante yon ekspozan ki gen yon gwosè a sèten. 349 00:28:55,670 --> 00:29:01,100 [Elèv] Men, yon doub? Se ke tankou yon flote siplemantè lontan? >> Yeah. 350 00:29:01,100 --> 00:29:07,940 Li nan menm bagay la kòm yon flote eksepte kounye a w ap itilize 8 bytes olye pou yo 4 bytes. 351 00:29:07,940 --> 00:29:11,960 Koulye a, ou pral kapab sèvi ak 9 chif oswa 10 chif, 352 00:29:11,960 --> 00:29:16,630 ak sa a yo pral kapab ale jiska 300 olye pou yo 100. >> [Elèv] Okay. 353 00:29:16,630 --> 00:29:21,550 Ak cha yo tou 4 bytes. >> Wi. 354 00:29:21,550 --> 00:29:27,520 Oke, ankò, li pwobableman depann jeneral sou aplikasyon jeneral, 355 00:29:27,520 --> 00:29:30,610 men cha yo se 4 bytes, double yo se 8. 356 00:29:30,610 --> 00:29:33,440 Double yo rele doub yo paske yo te doub gwosè a ki te gen cha. 357 00:29:33,440 --> 00:29:38,380 [Elèv] Okay. Epi yo gen doub double? >> Gen pa. 358 00:29:38,380 --> 00:29:43,660 Mwen panse ke - >> [elèv] Tankou voudre lontan? >> Yeah. Mwen pa panse sa. Wi. 359 00:29:43,660 --> 00:29:45,950 [Elèv] Sou tès ane pase a te gen yon kesyon sou fonksyon prensipal 360 00:29:45,950 --> 00:29:49,490 yo te oblije ap yon pati nan pwogram ou an. 361 00:29:49,490 --> 00:29:52,310 Repons la te ke li pa gen yo dwe yon pati nan pwogram ou an. 362 00:29:52,310 --> 00:29:55,100 Nan ki sitiyasyon? Sa a ki sa mwen te wè. 363 00:29:55,100 --> 00:29:59,090 [Bowden] Li sanble - >> [elèv] Ki sa ki sitiyasyon? 364 00:29:59,090 --> 00:30:02,880 ou gen pwoblèm nan? >> [Elèv] Yeah, mwen kapab definitivman rale li leve. 365 00:30:02,880 --> 00:30:07,910 Li pa dwe fè, teknikman, men fondamantalman li pral yo dwe. 366 00:30:07,910 --> 00:30:10,030 [Elèv], mwen wè yon sèl sou yon nan diferan ane. 367 00:30:10,030 --> 00:30:16,220 Li te tankou vre oubyen fo: Yon ki valab - >> O, yon c dosye-a.? 368 00:30:16,220 --> 00:30:18,790 . [Elèv] Nenpòt c dosye yo dwe gen - [tou de pale nan yon fwa - enkonpreansibl] 369 00:30:18,790 --> 00:30:21,120 Oke. Se konsa, sa a, se separe. 370 00:30:21,120 --> 00:30:26,800 >> Yon. C dosye jis bezwen gen fonksyon. 371 00:30:26,800 --> 00:30:32,400 Ou ka konpile yon dosye nan kòd machin, binè, kèlkeswa sa, 372 00:30:32,400 --> 00:30:36,620 san li ke yo te ègzèkutabl ankò. 373 00:30:36,620 --> 00:30:39,420 Yon ègzèkutabl valab dwe gen yon fonksyon prensipal. 374 00:30:39,420 --> 00:30:45,460 Ou kapab ekri 100 fonksyon nan 1 dosye men pesonn pa t prensipal 375 00:30:45,460 --> 00:30:48,800 epi konpile ki desann nan binè, 376 00:30:48,800 --> 00:30:54,460 Lè sa a, ou ekri yon lòt dosye ke se sèlman gen prensipal men li rele yon pakèt moun sou sa yo fonksyon 377 00:30:54,460 --> 00:30:56,720 nan sa a ranpli binè sou isit la. 378 00:30:56,720 --> 00:31:01,240 Se konsa, lè w ap fè ègzèkutabl a, se sa ki Linkshere a fè 379 00:31:01,240 --> 00:31:05,960 se li konbine fichye sa yo binè 2 nan yon ègzèkutabl. 380 00:31:05,960 --> 00:31:11,400 Se konsa, yon. C dosye pa bezwen gen yon fonksyon prensipal nan tout. 381 00:31:11,400 --> 00:31:19,220 Yo, epi sou baz kòd gwo ou pral wè dè milye de. Dosye c ak 1 dosye prensipal la. 382 00:31:23,960 --> 00:31:26,110 Plis kesyon? 383 00:31:29,310 --> 00:31:31,940 [Elèv] te gen yon lòt kesyon. 384 00:31:31,940 --> 00:31:36,710 Li te di ke fè a se yon du. Vre oubyen fo? 385 00:31:36,710 --> 00:31:42,030 Ak repons lan se te fo, e mwen konprann poukisa li pa tankou sonnen. 386 00:31:42,030 --> 00:31:44,770 Men, sa nou rele fè si li pa? 387 00:31:44,770 --> 00:31:49,990 Fè se fondamantalman jis - Mwen ka wè egzakteman ki sa li rele l '. 388 00:31:49,990 --> 00:31:52,410 Men, li jis kouri kòmandman. 389 00:31:53,650 --> 00:31:55,650 Fè. 390 00:31:58,240 --> 00:32:00,870 Mwen ka rale sa a la. Yeah. 391 00:32:10,110 --> 00:32:13,180 Oh, yeah. Fè tou fè sa. 392 00:32:13,180 --> 00:32:17,170 Sa a di bi pou yo sèvis piblik la fè se detèmine otomatikman 393 00:32:17,170 --> 00:32:19,610 ki moso nan yon pwogram gwo bezwen yo rkonpile 394 00:32:19,610 --> 00:32:22,350 ak bay kòmandman yo compile yo. 395 00:32:22,350 --> 00:32:27,690 Ou kapab fè fè dosye ki yo se absoliman gwo. 396 00:32:27,690 --> 00:32:33,210 Fè parèt nan koupon pou yo tan nan dosye, epi, tankou nou te di anvan, 397 00:32:33,210 --> 00:32:36,930 ou ka konpile dosye endividyèl desann, epi li pa jiskaske ou jwenn yo Linkshere la 398 00:32:36,930 --> 00:32:39,270 yo ke yo ap mete tèt yo ansanm nan yon ègzèkutabl. 399 00:32:39,270 --> 00:32:43,810 Se konsa, si ou gen 10 dosye ki diferan ak ou fè yon chanjman nan 1 nan yo, 400 00:32:43,810 --> 00:32:47,870 Lè sa a, sa ki fè se pral fè se jis compile ki 1 dosye 401 00:32:47,870 --> 00:32:50,640 ak Lè sa a, relink tout bagay ansanm. 402 00:32:50,640 --> 00:32:53,020 Men, li la anpil dumber pase sa. 403 00:32:53,020 --> 00:32:55,690 Li nan jiska ou konplètman defini ki sa a, se sa li ta dwe dwe ap fè. 404 00:32:55,690 --> 00:32:59,560 Li pa default gen kapasite nan rekonèt bagay sa a koupon pou tan, 405 00:32:59,560 --> 00:33:03,220 men ou ka ekri yon dosye mak fè anyen. 406 00:33:03,220 --> 00:33:09,150 Ou ka ekri yon fè dosye konsa, lè ou tape fè li jis nan cd a yon lòt anyè. 407 00:33:09,150 --> 00:33:15,560 Mwen te gen fristrasyon paske mwen tout bagay fofile andedan Aparèy mwen 408 00:33:15,560 --> 00:33:21,740 ak Lè sa a, mwen wè PDF an nan Mac a. 409 00:33:21,740 --> 00:33:30,720 >> Se konsa, mwen ale nan Chèche e mwen ka Ale non, Konekte sou Server, 410 00:33:30,720 --> 00:33:36,950 ak sèvè a mwen konekte nan se Aparèy mwen an, epi Lè sa a, mwen louvri moute PDF la 411 00:33:36,950 --> 00:33:40,190 ki vin konpile pa an latèks. 412 00:33:40,190 --> 00:33:49,320 Men, mwen te resevwa fwistre paske chak fwa yon sèl mwen te bezwen rafrechi PDF la, 413 00:33:49,320 --> 00:33:53,900 Mwen te gen kopi li nan yon anyè espesifik sa li te kapab gen aksè 414 00:33:53,900 --> 00:33:57,710 e li te jwenn anmèdan. 415 00:33:57,710 --> 00:34:02,650 Se konsa, olye mwen te ekri yon dosye mak, kote ou gen defini ki jan li fè bagay sa yo. 416 00:34:02,650 --> 00:34:06,130 Ki jan pou nou nan sa a se PDF an latèks. 417 00:34:06,130 --> 00:34:10,090 Jis tankou nenpòt ki dosye fè lòt - oswa mwen devine nou pa te wè dosye yo mak, 418 00:34:10,090 --> 00:34:13,510 men nou gen nan aparèy la yon dosye mak mondyal ki jis di, 419 00:34:13,510 --> 00:34:16,679 si w ap konpile yon dosye C, sèvi ak rezone. 420 00:34:16,679 --> 00:34:20,960 Se konsa, isit la nan dosye mak mwen ke mwen fè m 'di nou, 421 00:34:20,960 --> 00:34:25,020 sa a ranpli w ap ale nan vle konpile ak PDF an latèks. 422 00:34:25,020 --> 00:34:27,889 Se konsa, li la an latèks PDF ki nan fè élaboration la. 423 00:34:27,889 --> 00:34:31,880 Fè pa konpile. Li nan jis kouri sa yo kòmandman nan sekans a mwen espesifye. 424 00:34:31,880 --> 00:34:36,110 Se konsa, li kouri PDF an latèks, li kopi li nan anyè a mwen vle li nan dwe kopye a, 425 00:34:36,110 --> 00:34:38,270 li nan cd nan anyè a ak fè sa ki lòt bagay, 426 00:34:38,270 --> 00:34:42,380 men tout sa li fè a rekonèt lè yon chanjman ranpli, 427 00:34:42,380 --> 00:34:45,489 epi si li chanje, Lè sa a, li pral kouri kòmandman yo ke li nan sipoze kouri 428 00:34:45,489 --> 00:34:48,760 lè chanjman yo dosye. >> [Elèv] Okay. 429 00:34:50,510 --> 00:34:54,420 Mwen pa konnen kote dosye yo fè mondyal yo se pou m 'nan tcheke li. 430 00:34:57,210 --> 00:35:04,290 Lòt kesyon yo? Anyen nan men sot pase ti tès? Nenpòt bagay sa yo konsèy? 431 00:35:06,200 --> 00:35:08,730 Gen anpil bagay sibtil ak endikasyon tankou - 432 00:35:08,730 --> 00:35:10,220 Mwen pa pwal pou kapab jwenn yon kesyon egzamen sou li - 433 00:35:10,220 --> 00:35:16,250 men jis tankou sa a sòt de bagay sa. 434 00:35:19,680 --> 00:35:24,060 Asire w ke w konprann ke lè m 'di Int * x * y - 435 00:35:24,890 --> 00:35:28,130 Sa a se pa egzakteman anyen isit la, mwen devine. 436 00:35:28,130 --> 00:35:32,140 Men, tankou * x * y, sa yo se 2 varyab yo ki nan chemine a. 437 00:35:32,140 --> 00:35:37,220 Lè m 'di x = malok (sizof (Int)), x se toujou yon varyab sou chemine a, 438 00:35:37,220 --> 00:35:41,180 malok se kèk blòk sou nan pil wòch la, epi nou ap fè x pwen nan pil wòch la. 439 00:35:41,180 --> 00:35:43,900 >> Se konsa, yon bagay ki sou pwen yo chemine pil wòch la. 440 00:35:43,900 --> 00:35:48,100 Chak fwa ou malok anyen, w ap inevitableman estoke li andedan yon konsèy. 441 00:35:48,100 --> 00:35:55,940 Se konsa, ke konsèy se sou chemine a, blòk la malloced se sou pil la. 442 00:35:55,940 --> 00:36:01,240 Yon anpil moun ki jwenn konfonn epi di Int * x = malok; x se sou pil la. 443 00:36:01,240 --> 00:36:04,100 No Ki sa ki x pwen se sou pil la. 444 00:36:04,100 --> 00:36:08,540 x tèt li se sou chemine a, sof si pou kèlkeswa rezon ou te x gen yon varyab mondyal, 445 00:36:08,540 --> 00:36:11,960 nan ka sa a li k ap pase yo nan yon lòt rejyon nan memwa. 446 00:36:13,450 --> 00:36:20,820 Se konsa, kenbe tras, dyagram sa yo bwat ak flèch yo trè komen pou egzamen an. 447 00:36:20,820 --> 00:36:25,740 Oswa si li pa sou egzamen 0, li pral sou egzamen 1. 448 00:36:27,570 --> 00:36:31,940 Ou ta dwe konnen tout sa yo, etap sa yo nan konpile 449 00:36:31,940 --> 00:36:35,740 depi ou te gen reponn kesyon sou sa yo. Wi. 450 00:36:35,740 --> 00:36:38,940 [Elèv] nou ta ka ale sou moun ki etap - >> Sure. 451 00:36:48,340 --> 00:36:58,640 Anvan etap ak konpile nou gen pretretman, 452 00:36:58,640 --> 00:37:16,750 konpile, asanble, ak ki lye ak. 453 00:37:16,750 --> 00:37:21,480 Pretretman. Ki sa sa fè? 454 00:37:29,720 --> 00:37:32,290 Li se etap ki pi fasil nan - byen, pa tankou - 455 00:37:32,290 --> 00:37:35,770 sa pa vle di li ta dwe evidan, men li la etap la pi fasil. 456 00:37:35,770 --> 00:37:38,410 Ou nèg te kapab aplike li nou. Yeah. 457 00:37:38,410 --> 00:37:43,410 [Elèv] Pran sa ou genyen nan ou gen ladan sa a tankou ak li kopi ak Lè sa a, tou defini. 458 00:37:43,410 --> 00:37:49,250 Li sanble pou bagay sa yo tankou # enkli ak # defini, 459 00:37:49,250 --> 00:37:53,800 ak li jis kopi ak kole ki sa sa yo aktyèlman vle di. 460 00:37:53,800 --> 00:37:59,240 Se konsa, lè ou di # enkli cs50.h, preproseseur a ap kopye ak kole cs50.h 461 00:37:59,240 --> 00:38:01,030 nan ki liy. 462 00:38:01,030 --> 00:38:06,640 Lè ou di # defini x yo dwe 4, preproseseur an ale nan pwogram nan tout 463 00:38:06,640 --> 00:38:10,400 epi li ranplase tout tan nan x ak 4. 464 00:38:10,400 --> 00:38:17,530 Se konsa, preproseseur a pran yon dosye C ki valab ak sorti yon valid C dosye 465 00:38:17,530 --> 00:38:20,300 kote bagay yo te kopye ak kole. 466 00:38:20,300 --> 00:38:24,230 Se konsa, kounye a konpile. Ki sa sa fè? 467 00:38:25,940 --> 00:38:28,210 [Elèv] Li ale soti nan C rive nan binè. 468 00:38:28,210 --> 00:38:30,970 >> [Bowden] Li pa ale tout wout la binè. 469 00:38:30,970 --> 00:38:34,220 [Elèv] Pou kòd machin Lè sa a,? >> Li pa kòd machin. 470 00:38:34,220 --> 00:38:35,700 [Elèv] Asanble? >> Asanble. 471 00:38:35,700 --> 00:38:38,890 Li ale nan Asanble anvan li ale tout wout la kòd C, 472 00:38:38,890 --> 00:38:45,010 ak pi lang fè yon bagay tankou sa a. 473 00:38:47,740 --> 00:38:50,590 Chwazi nenpòt lang wo nivo, epi si w ap ale nan konpile li, 474 00:38:50,590 --> 00:38:52,390 li an chans yo konpile nan etap. 475 00:38:52,390 --> 00:38:58,140 Premye li a pral konpile Piton C, Lè sa a, li pral konpile C rive nan Asanble, 476 00:38:58,140 --> 00:39:01,600 ak Lè sa a, Asanble ki pral jwenn tradui binè. 477 00:39:01,600 --> 00:39:07,800 Se konsa, konpile ki pral pote l 'soti nan C rive nan Asanble. 478 00:39:07,800 --> 00:39:12,130 Pawòl Bondye a konpile anjeneral vle di pote li nan men yon pi wo nivo 479 00:39:12,130 --> 00:39:14,340 nan yon lang programmation pi ba nivo. 480 00:39:14,340 --> 00:39:19,190 Se konsa, sa a se etap la sèlman nan konpilasyon ki kote ou kòmanse avèk yon lang wo nivo 481 00:39:19,190 --> 00:39:23,270 ak fini nan yon lang ki ba-nivo, ak Se poutèt sa etap la rele konpile. 482 00:39:25,280 --> 00:39:33,370 [Elèv] Pandan konpile, kite la di ke ou te fè # enkli cs50.h. 483 00:39:33,370 --> 00:39:42,190 Will du compile cs50.h la a, tankou fonksyon yo ki nan la, 484 00:39:42,190 --> 00:39:45,280 ak tradui ki nan kòd Asanble kòm byen, 485 00:39:45,280 --> 00:39:50,830 oswa ou pral li yon kopi ak keratin yon bagay ki te gen pre-Asanble? 486 00:39:50,830 --> 00:39:56,910 cs50.h pral bèl anpil pa janm fini nan Asanble. 487 00:39:59,740 --> 00:40:03,680 Stuff tankou prototip fonksyon ak bagay sa yo yo se jis pou ou pou w dwe fè atansyon. 488 00:40:03,680 --> 00:40:09,270 Li garanti ke du a ka tcheke bagay sa yo tankou w ap rele fonksyon 489 00:40:09,270 --> 00:40:12,910 ak ki kalite retounen dwa ak agiman yo dwa ak lòt bagay. 490 00:40:12,910 --> 00:40:18,350 >> Se konsa, cs50.h yo pral preprocessed nan dosye a, ak Lè sa a, lè li la konpile 491 00:40:18,350 --> 00:40:22,310 li nan fondamantalman jete apre li fè asire w ke tout bagay se ke yo te rele kòrèkteman. 492 00:40:22,310 --> 00:40:29,410 Men, fonksyon yo defini nan bibliyotèk la CS50 yo, ki se separe de cs50.h, 493 00:40:29,410 --> 00:40:33,610 sa yo pa pral separeman konpile. 494 00:40:33,610 --> 00:40:37,270 Ki aktyèlman ap desann nan etap la ki lye ak, se konsa nou pral jwenn yo ke nan yon dezyèm fwa. 495 00:40:37,270 --> 00:40:40,100 Men, an premye, ki sa ki rasanble? 496 00:40:41,850 --> 00:40:44,500 [Elèv] Asanble binè? >> Yeah. 497 00:40:46,300 --> 00:40:48,190 Rasanble. 498 00:40:48,190 --> 00:40:54,710 Nou pa rele li konpile paske Asanble se bèl anpil yon tradiksyon pi bon kalite nan binè. 499 00:40:54,710 --> 00:41:00,230 Gen anpil ti lojik an pral soti nan Asanble binè. 500 00:41:00,230 --> 00:41:03,180 Li nan jis tankou leve je l 'nan yon tablo, o, nou gen sa a enstriksyon; 501 00:41:03,180 --> 00:41:06,290 ki koresponn ak binè 01110. 502 00:41:10,200 --> 00:41:15,230 Se konsa, dosye yo ki rasanble jeneralman rezilta yo. O dosye. 503 00:41:15,230 --> 00:41:19,020 Ak. Dosye o yo se sa ki nou te di anvan, 504 00:41:19,020 --> 00:41:21,570 ki jan yon dosye pa bezwen gen yon fonksyon prensipal. 505 00:41:21,570 --> 00:41:27,640 Nenpòt ki dosye yo konpile desann nan yon. Dosye o osi lontan ke li nan yon valid C dosye-a. 506 00:41:27,640 --> 00:41:30,300 Li kapab konpile desann nan. O. 507 00:41:30,300 --> 00:41:43,030 Koulye a, ki lye ak se sa ki aktyèlman pote yon pakèt moun sou. Dosye o ak pote yo nan yon ègzèkutabl. 508 00:41:43,030 --> 00:41:51,110 Se konsa, sa ki fè, se Anchènman ou ka panse a bibliyotèk la CS50 kòm yon. Dosye o. 509 00:41:51,110 --> 00:41:56,980 Li se yon dosye binè deja konpile. 510 00:41:56,980 --> 00:42:03,530 Se konsa, lè ou konpile dosye ou a, hello.c ou, ki fè apèl GetString, 511 00:42:03,530 --> 00:42:06,360 hello.c vin konpile desann nan hello.o, 512 00:42:06,360 --> 00:42:08,910 hello.o se kounye a nan binè. 513 00:42:08,910 --> 00:42:12,830 Li itilize GetString, se konsa li bezwen yo janbe lòt bò nan cs50.o, 514 00:42:12,830 --> 00:42:16,390 ak Linkshere a smooshes yo ansanm ak kopi GetString nan sa a ranpli 515 00:42:16,390 --> 00:42:20,640 epi li vini soti ak yon ègzèkutabl ki gen tout fonksyon li bezwen. 516 00:42:20,640 --> 00:42:32,620 Se konsa, cs50.o se pa aktyèlman yon dosye O, men li la ase pre ke pa gen okenn diferans fondamantal. 517 00:42:32,620 --> 00:42:36,880 Se konsa, ki lye ak jis pote yon pakèt moun sou dosye ansanm 518 00:42:36,880 --> 00:42:41,390 ki separeman gen ladan tout nan fonksyon yo, mwen bezwen sèvi ak 519 00:42:41,390 --> 00:42:46,120 epi kreye ègzèkutabl la ki pral aktyèlman kouri. 520 00:42:48,420 --> 00:42:50,780 >> Se konsa, ki la tou sa nou te di anvan 521 00:42:50,780 --> 00:42:55,970 kote ou ka gen 1000. c dosye, ou konpile yo tout moun. dosye o, 522 00:42:55,970 --> 00:43:00,040 ki pral pwobableman pran yon ti tan, Lè sa a, ou chanje 1. c dosye-a. 523 00:43:00,040 --> 00:43:05,480 Ou sèlman bezwen compile ki 1. C dosye ak Lè sa a, relink tout lòt bagay, 524 00:43:05,480 --> 00:43:07,690 konekte tout bagay tounen ansanm. 525 00:43:09,580 --> 00:43:11,430 [Elèv] Lè nou ap ekri ki lye ak nou lcs50? 526 00:43:11,430 --> 00:43:20,510 Yeah, se konsa-lcs50. Sa drapo siyal nan Linkshere la ke ou ta dwe konekte nan ki nan bibliyotèk. 527 00:43:26,680 --> 00:43:28,910 Kesyon? 528 00:43:41,310 --> 00:43:46,860 Èske nou fin janbe binè lòt pase 5 ki segonn nan konferans lan an premye? 529 00:43:50,130 --> 00:43:53,010 Mwen pa panse sa. 530 00:43:55,530 --> 00:43:58,820 Ou ta dwe konnen tout gwo eksplwatasyon an ke nou te ale sou, 531 00:43:58,820 --> 00:44:02,670 epi ou ta dwe kapab, si nou te ba ou yon fonksyon, 532 00:44:02,670 --> 00:44:09,410 ou ta dwe kapab di li nan gwo O, apeprè. Oswa byen, gwo O se ki graj. 533 00:44:09,410 --> 00:44:15,300 Se konsa, si ou wè pare solèy pou pasan loupin sou menm kantite bagay sa yo, 534 00:44:15,300 --> 00:44:22,260 tankou int mwen, mwen > [elèv] n okib. >> Li gen tandans ka n okib. 535 00:44:22,260 --> 00:44:25,280 Si ou te trip pare solèy, li gen tandans ka n Gleason. 536 00:44:25,280 --> 00:44:29,330 Se konsa, ki sòt de bagay sa ou ta dwe kapab nan pwen soti imedyatman. 537 00:44:29,330 --> 00:44:33,890 Ou bezwen konnen sòt ensèsyon ak sòt bil ak rantre sòt ansanm ak tout moun sa yo. 538 00:44:33,890 --> 00:44:41,420 Li pi fasil yo konprann poukisa yo moun sa yo ki n okib ak n boutèy demi lit n ak nan tout sa 539 00:44:41,420 --> 00:44:47,810 paske mwen panse ke te gen sou yon egzamen yon ane kote nou fondamantalman te ban nou 540 00:44:47,810 --> 00:44:55,050 yon aplikasyon de sòt jarèt, li di: "Ki sa se tan an kouri nan sa a fonksyon?" 541 00:44:55,050 --> 00:45:01,020 Se konsa, si ou rekonèt li kòm sòt bil, Lè sa a, ou ka imedyatman di n okib. 542 00:45:01,020 --> 00:45:05,470 Men, si ou jis gade nan li, ou pa menm bezwen reyalize sòt jarèt li a; 543 00:45:05,470 --> 00:45:08,990 ou ka jis di sa a ap fè sa a ak sa a. Sa a se n okib. 544 00:45:12,350 --> 00:45:14,710 [Elèv] Èske gen nenpòt egzanp difisil ou ka vini ak, 545 00:45:14,710 --> 00:45:20,370 tankou yon lide ki sanble n ap kalkile konnen? 546 00:45:20,370 --> 00:45:24,450 >> Mwen pa panse nou ta ba ou nenpòt ki egzanp difisil. 547 00:45:24,450 --> 00:45:30,180 Bagay la sòt jarèt se sou kòm difisil jan nou ta ale, 548 00:45:30,180 --> 00:45:36,280 e menm sa, osi lontan ke ou konprann ke w ap iteration sou etalaj la 549 00:45:36,280 --> 00:45:41,670 pou chak eleman nan etalaj la, ki a pwal yon bagay ki nan n okib. 550 00:45:45,370 --> 00:45:49,940 Gen kesyon jeneral, tankou dwa isit la nou genyen - Oh. 551 00:45:55,290 --> 00:45:58,530 Jis lòt jou a, Doug reklame, "mwen te envante yon algorithm ki ka sòt yon etalaj 552 00:45:58,530 --> 00:46:01,780 "Nan nimewo n nan O (boutèy demi lit n) tan!" 553 00:46:01,780 --> 00:46:04,900 Se konsa, kouman nou konnen sa a, se enposib? 554 00:46:04,900 --> 00:46:08,850 [Fèbl repons elèv] >> Yeah. 555 00:46:08,850 --> 00:46:13,710 Omwen a anpil, ou gen lè ou manyen chak eleman nan etalaj la, 556 00:46:13,710 --> 00:46:16,210 Se konsa li enposib sòt yon etalaj la - 557 00:46:16,210 --> 00:46:20,850 Si tout bagay ki nan lòd klase, lè sa a ou ap pral manyen tout bagay nan etalaj la, 558 00:46:20,850 --> 00:46:25,320 Se konsa li enposib fè l 'nan mwens pase O n. 559 00:46:27,430 --> 00:46:30,340 [Elèv] Ou montre nou ke egzanp pou moun ki ke yo te kapab fè l 'nan O nan n 560 00:46:30,340 --> 00:46:33,920 si ou itilize yon anpil nan memwa. >> Yeah. 561 00:46:33,920 --> 00:46:37,970 Ak that's - Mwen bliye sa ki that's - Èske li konte sòt? 562 00:46:47,360 --> 00:46:51,330 O o. Ki se yon algorithm klasman antye ki pè. 563 00:46:59,850 --> 00:47:05,100 Mwen te kap chèche non an espesyal pou sa a ke mwen pa t 'kapab sonje semèn pase a. 564 00:47:05,100 --> 00:47:13,000 Yeah. Sa yo se ki kalite kalite ki ka akonpli bagay sa yo nan gwo O n. 565 00:47:13,000 --> 00:47:18,430 Men, gen limit, tankou ou ka sèlman itilize nonb antye relatif jiska yon nimewo a sèten. 566 00:47:20,870 --> 00:47:24,560 Plus, si w ap eseye sòt that's yon bagay - 567 00:47:24,560 --> 00:47:30,750 Si etalaj ou a se 012, -12, 151, 4 milyon dola, 568 00:47:30,750 --> 00:47:35,120 Lè sa a, ki eleman sèl ki pral konplètman ruin klasman a tout antye. 569 00:47:42,060 --> 00:47:44,030 >> Kesyon? 570 00:47:49,480 --> 00:47:58,870 [Elèv] Si ou gen yon fonksyon repetitif ak li jis fè apèl yo repetitif 571 00:47:58,870 --> 00:48:02,230 nan yon deklarasyon retou, sa a, se ke repetitif, 572 00:48:02,230 --> 00:48:07,360 ak pou sa ki te pa itilize plis memwa pandan ègzekutabl 573 00:48:07,360 --> 00:48:12,550 oswa li ta omwen itilize konparab memwa kòm yon repete solisyon? 574 00:48:12,550 --> 00:48:14,530 [Bowden] Wi. 575 00:48:14,530 --> 00:48:19,840 Li ta gen anpil chans pou yon ti jan pi dousman, men se pa vrèman. 576 00:48:19,840 --> 00:48:23,290 Ke repetitif se trè bon. 577 00:48:23,290 --> 00:48:32,640 Looking ankò nan ankadreman chemine, se pou yo di nou gen prensipal 578 00:48:32,640 --> 00:48:42,920 e nou gen int bar (Int x) oswa yon bagay. 579 00:48:42,920 --> 00:48:52,310 Sa a se pa yon fonksyon pafè repetitif, men ba retounen (x - 1). 580 00:48:52,310 --> 00:48:57,620 Se konsa, evidamman, sa a se defekte. Ou bezwen ka baz ak lòt bagay. 581 00:48:57,620 --> 00:49:00,360 Men, lide a isit la se ke sa a se ke repetitif, 582 00:49:00,360 --> 00:49:06,020 ki vle di lè prensipal apèl ba li a pral jwenn ankadreman chemine li yo. 583 00:49:09,550 --> 00:49:12,440 Nan sa a ankadreman chemine gen nan ale nan yon blòk ti kras nan memwa 584 00:49:12,440 --> 00:49:17,490 ki koresponn ak x agiman li yo. 585 00:49:17,490 --> 00:49:25,840 Se konsa, kite a di prensipal k ap pase nan rele bar (100); 586 00:49:25,840 --> 00:49:30,050 Se konsa, x ki pral kòmanse soti kòm 100. 587 00:49:30,050 --> 00:49:35,660 Si du an rekonèt ke sa a se yon fonksyon ke repetitif, 588 00:49:35,660 --> 00:49:38,540 Lè sa a, lè bar fè rele repetitif li nan ba, 589 00:49:38,540 --> 00:49:45,490 olye pou yo fè yon ankadreman chemine nouvo, ki se kote chemine a kòmanse ap grandi lajman, 590 00:49:45,490 --> 00:49:48,220 evantyèlman li pral kouri antre nan pil wòch la ak Lè sa a, ou jwenn segfaults 591 00:49:48,220 --> 00:49:51,590 paske memwa kòmanse fè kolizyon. 592 00:49:51,590 --> 00:49:54,830 >> Se konsa, olye pou yo fè ankadreman pwòp chemine li yo, li ka reyalize, 593 00:49:54,830 --> 00:49:59,080 hey, mwen pa janm vrèman bezwen tounen vin jwenn sa a ankadreman chemine, 594 00:49:59,080 --> 00:50:08,040 Se konsa, olye mwen pral jis ranplase sa a agiman ak 99 ak Lè sa a, kòmanse ba tout lòt peyi sou. 595 00:50:08,040 --> 00:50:11,810 Lè sa a, li pral fè l 'ankò epi li pral rive nan bar retou (x - 1), 596 00:50:11,810 --> 00:50:17,320 ak olye pou yo fè yon ankadreman chemine nouvo, li pral jis ranplase agiman li ye kounye a ak 98 597 00:50:17,320 --> 00:50:20,740 ak Lè sa a, so tounen nan kòmansman la anpil nan ba. 598 00:50:23,860 --> 00:50:30,430 Moun sa yo ki operasyon, ranplase ki valè 1 nan chemine a ak sote tounen nan kòmansman an, 599 00:50:30,430 --> 00:50:32,430 yo trè efikas. 600 00:50:32,430 --> 00:50:41,500 Se konsa, pa sèlman sa a l 'a memwa menm jan yon fonksyon apa ki se repete 601 00:50:41,500 --> 00:50:45,390 paske w ap sèlman lè l sèvi avèk 1 ankadreman chemine, men ou pa ap soufwi enkonvenyans yo 602 00:50:45,390 --> 00:50:47,240 ki gen yo rele fonksyon. 603 00:50:47,240 --> 00:50:50,240 Rele fonksyon ka yon ti jan chè paske li te fè tout bagay sa a konfigirasyon 604 00:50:50,240 --> 00:50:52,470 ak demontaj ak tout bagay sa a. 605 00:50:52,470 --> 00:50:58,160 Se konsa, sa a rkursyon ke se yon bon bagay. 606 00:50:58,160 --> 00:51:01,170 [Elèv] Poukisa pou l 'pa kreye etap nouvo? 607 00:51:01,170 --> 00:51:02,980 Paske li reyalize li pa bezwen. 608 00:51:02,980 --> 00:51:07,800 Rele nan bar se jis retounen apèl la repetitif. 609 00:51:07,800 --> 00:51:12,220 Se konsa, li pa bezwen fè anyen ak valè lè li retounen. 610 00:51:12,220 --> 00:51:15,120 Li nan jis pral imedyatman retounen li. 611 00:51:15,120 --> 00:51:20,530 Se konsa, li jis ale nan ranplase agiman pwòp li yo ak kòmanse sou. 612 00:51:20,530 --> 00:51:25,780 Epi tou, si ou pa gen ke vèsyon an repetitif, 613 00:51:25,780 --> 00:51:31,460 Lè sa a, ou jwenn tout sa yo ba kote lè sa a ba retounen 614 00:51:31,460 --> 00:51:36,010 li gen retounen valè li nan yon sèl sa a, lè sa a ki ba imedyatman retounen 615 00:51:36,010 --> 00:51:39,620 ak li retounen valè li nan yon sèl sa a, lè sa a li nan jis pral imedyatman retounen 616 00:51:39,620 --> 00:51:41,350 epi retounen valè li nan yon sèl sa a. 617 00:51:41,350 --> 00:51:45,350 Se konsa, w ap ekonomize sa a eklate tout bagay sa yo koupe nan chemine a 618 00:51:45,350 --> 00:51:48,730 depi valè a retounen se jis yo pral pase tout wout la tounen moute de tout fason. 619 00:51:48,730 --> 00:51:55,400 Se konsa, poukisa pa jis ranplase agiman nou an ak agiman sa mete ajou epi yo kòmanse plis pase? 620 00:51:57,460 --> 00:52:01,150 Si fonksyon an se pa ke repetitif, si ou fè yon bagay tankou - 621 00:52:01,150 --> 00:52:07,530 [Elèv] si bar (x + 1). >> Yeah. 622 00:52:07,530 --> 00:52:11,770 >> Se konsa, si ou mete l 'nan kondisyon, lè sa a ou ap fè yon bagay ki gen valè lè li retounen. 623 00:52:11,770 --> 00:52:16,260 Oswa menm si ou jis fè retou 2 * bar (x - 1). 624 00:52:16,260 --> 00:52:23,560 Se konsa, kounye a bar (x - 1) bezwen retounen nan lòd pou l 'bay kalkile 2 fwa ke valè, 625 00:52:23,560 --> 00:52:26,140 Se konsa kounye a li bezwen pwòp li yo apa ankadreman chemine, 626 00:52:26,140 --> 00:52:31,180 e kounye a,, pa gen pwoblèm kòman li di pou ou eseye, w ap ale nan bezwen - 627 00:52:31,180 --> 00:52:34,410 Sa a se pa ke repetitif. 628 00:52:34,410 --> 00:52:37,590 [Elèv] ta mwen eseye pote yon rkursyon vize pou yon rkursyon ke - 629 00:52:37,590 --> 00:52:41,450 [Bowden] Nan yon mond ideyal, men nan CS50 ou pa bezwen. 630 00:52:43,780 --> 00:52:49,280 Yo nan lòd jwenn rkursyon ke, anjeneral, ou mete kanpe yon agiman adisyonèl 631 00:52:49,280 --> 00:52:53,550 kote bar pral pran x int nan y 632 00:52:53,550 --> 00:52:56,990 ak y koresponn ak bagay nan ultim ou vle retounen. 633 00:52:56,990 --> 00:53:03,650 Se konsa, Lè sa a, sa a ou ap pral retounen ba (x - 1), 2 * y. 634 00:53:03,650 --> 00:53:09,810 Se konsa, sa se sèlman yon wo nivo ki jan ou transfòme bagay sa yo nan pral dèyè repetitif. 635 00:53:09,810 --> 00:53:13,790 Men, agiman siplemantè a - 636 00:53:13,790 --> 00:53:17,410 Lè sa a, nan fen a lè ou rive nan ka baz ou a, ou jis retounen y 637 00:53:17,410 --> 00:53:22,740 paske ou ve yo te akimile tan nan tout valè a retounen ke ou vle. 638 00:53:22,740 --> 00:53:27,280 Ou kalite te fè li iterativman men lè l sèvi avèk apèl repetitif. 639 00:53:32,510 --> 00:53:34,900 Kesyon? 640 00:53:34,900 --> 00:53:39,890 [Elèv] Petèt sou aritmetik konsèy, tankou lè w ap itilize strings. >> Sure. 641 00:53:39,890 --> 00:53:43,610 Aritmetik pwente. 642 00:53:43,610 --> 00:53:48,440 Lè lè l sèvi avèk strings li fasil paske strings yo se zetwal Char, 643 00:53:48,440 --> 00:53:51,860 charaktèr yo pou tout tan ak toujou yon multiple sèl, 644 00:53:51,860 --> 00:53:57,540 ak sa aritmetik konsèy ki ekivalan a aritmetik regilye lè ou ap fè fas ak strings. 645 00:53:57,540 --> 00:54:08,790 Kite yo jis di Char * s = "alo". 646 00:54:08,790 --> 00:54:11,430 Se konsa, nou gen yon blòk nan memwa. 647 00:54:19,490 --> 00:54:22,380 Li bezwen 6 bytes paske ou toujou bezwen Terminator a nil. 648 00:54:22,380 --> 00:54:28,620 Ak Char * s ki pral nan pwen nan konmansman an nan sa a etalaj. 649 00:54:28,620 --> 00:54:32,830 Se konsa, nan pwen la. 650 00:54:32,830 --> 00:54:36,710 Koulye a, sa a se fondamantalman ki jan nenpòt etalaj travay, 651 00:54:36,710 --> 00:54:40,780 kèlkeswa si li te yon retou nan malok oswa si li nan sou pil la. 652 00:54:40,780 --> 00:54:47,110 Nenpòt etalaj se fondamantalman yon konsèy nan kòmansman etalaj la, 653 00:54:47,110 --> 00:54:53,640 ak Lè sa a, nenpòt operasyon etalaj, nenpòt Indexing, se jis ale nan ki etalaj yon sèten konpanse. 654 00:54:53,640 --> 00:55:05,360 >> Se konsa, lè m 'di yon bagay tankou s [3]; sa a ki pral nan yo epi konte 3 charaktèr pous 655 00:55:05,360 --> 00:55:12,490 Se konsa, nan [3], nou gen 0, 1, 2, 3, se konsa yo [3] ki pral gade nan sa a l. 656 00:55:12,490 --> 00:55:20,460 [Elèv] Lè nou te ka rive nan menm valè a nan fè s + 3 ak Lè sa a, zetwal parantèz? 657 00:55:20,460 --> 00:55:22,570 Wi. 658 00:55:22,570 --> 00:55:26,010 Sa a se ekivalan a * (yo 3 +); 659 00:55:26,010 --> 00:55:31,240 e ke se pou tout tan ak toujou ekivalan pa gen pwoblèm sa ou fè. 660 00:55:31,240 --> 00:55:34,070 Ou pa janm bezwen sèvi ak sentaks la bracket. 661 00:55:34,070 --> 00:55:37,770 Ou ka toujou sèvi ak * an (yo + 3) sentaks. 662 00:55:37,770 --> 00:55:40,180 Moun yo gen tandans renmen sentaks la bracket, menm si. 663 00:55:40,180 --> 00:55:43,860 [Elèv] Se konsa, tout ranje yo se aktyèlman jis pwent. 664 00:55:43,860 --> 00:55:53,630 Gen yon diferans ti tay lè m 'di Int x [4]; >> [elèv] ki kreye memwa a? 665 00:55:53,630 --> 00:56:03,320 [Bowden] Sa ki pral kreye 4 antye sou chemine a, se konsa 16 bytes an jeneral. 666 00:56:03,320 --> 00:56:05,700 Li nan pral kreye 16 bytes sou pil la. 667 00:56:05,700 --> 00:56:09,190 x se pa sa ki estoke nenpòt kote. 668 00:56:09,190 --> 00:56:13,420 Li se jis yon senbòl refere li a nan kòmansman an de bagay sa a. 669 00:56:13,420 --> 00:56:17,680 Paske ou te deklare etalaj la andedan sa a fonksyon, 670 00:56:17,680 --> 00:56:22,340 sa ki du a pral fè se jis ranplase tout tan pou x nan varyab 671 00:56:22,340 --> 00:56:26,400 ak kote li te rive chwazi pou mete sa yo bytes 16. 672 00:56:26,400 --> 00:56:30,040 Li pa ka fè sa ak Char nan * paske yo se yon konsèy vrè. 673 00:56:30,040 --> 00:56:32,380 Li se gratis Lè sa a, lonje dwèt sou lòt bagay. 674 00:56:32,380 --> 00:56:36,140 x ki se yon konstan. Ou pa ka genyen li pwen nan yon etalaj diferan. >> [Elèv] Okay. 675 00:56:36,140 --> 00:56:43,420 Men, ide sa a, sa a Indexing, se menm bagay la kèlkeswa si li nan yon etalaj tradisyonèl 676 00:56:43,420 --> 00:56:48,230 oswa si li nan yon konsèy ak yon bagay oswa si li nan yon konsèy nan yon etalaj malloced. 677 00:56:48,230 --> 00:56:59,770 Ak nan reyalite, li se konsa ekivalan ki ki se tou menm bagay la. 678 00:56:59,770 --> 00:57:05,440 Li aktyèlman jis tradui Ki sa ki andedan nan parantèz yo, epi sa ki rete a nan parantèz yo, 679 00:57:05,440 --> 00:57:07,970 ajoute yo ansanm, epi dereferences. 680 00:57:07,970 --> 00:57:14,710 Se konsa, sa a se jis kòm valab menm jan * (yo + 3) oswa s [3]. 681 00:57:16,210 --> 00:57:22,090 [Elèv] Èske ou ka gen endikasyon pwente nan 2 dimansyon ranje? 682 00:57:22,090 --> 00:57:27,380 >> Li nan pi rèd. Tradisyonèlman, pa gen okenn. 683 00:57:27,380 --> 00:57:34,720 Yon etalaj 2 dimansyon se jis yon etalaj 1-dimansyon ak kèk sentaks pratik 684 00:57:34,720 --> 00:57:54,110 paske lè m 'di Int x [3] [3], sa a se vrèman jis 1 etalaj ak 9 valè. 685 00:57:55,500 --> 00:58:03,000 Se konsa, lè m 'endèks, du a konnen sa m' vle di. 686 00:58:03,000 --> 00:58:13,090 Si mwen di x [1] [2], li konnen mwen vle pou yo ale nan dezyèm ranje a, se konsa li pral sote 3 a an premye, 687 00:58:13,090 --> 00:58:17,460 ak Lè sa a, li vle bagay la dezyèm nan ki, se konsa li pral jwenn sa a youn. 688 00:58:17,460 --> 00:58:20,480 Men, li se toujou jis yon etalaj yon sèl dimansyon. 689 00:58:20,480 --> 00:58:23,660 Se konsa, si mwen te vle bay yon konsèy ak sa yo ki etalaj, 690 00:58:23,660 --> 00:58:29,770 Mwen ta ka di Int * p = x; 691 00:58:29,770 --> 00:58:33,220 Ki kalite x se jis - 692 00:58:33,220 --> 00:58:38,280 Li nan kalite ki graj li di nan x depi li se jis yon senbòl ak li a pa yon varyab reyèl, 693 00:58:38,280 --> 00:58:40,140 men li se jis yon * int. 694 00:58:40,140 --> 00:58:44,840 x se jis yon konsèy nan kòmansman sa a. >> [Elèv] Okay. 695 00:58:44,840 --> 00:58:52,560 Se poutèt sa mwen pa yo pral kapab jwenn aksè nan [1] [2]. 696 00:58:52,560 --> 00:58:58,370 Mwen panse ke gen sentaks espesyal pou deklare yon konsèy, 697 00:58:58,370 --> 00:59:12,480 yon bagay ridikil tankou int (* p [-. yon bagay absoliman ridikil m pa menm konnen. 698 00:59:12,480 --> 00:59:17,090 Men, gen yon sentaks pou deklare endikasyon tankou ak parantèz ak bagay sa yo. 699 00:59:17,090 --> 00:59:22,960 Li pa ka menm kite ou fè sa. 700 00:59:22,960 --> 00:59:26,640 Mwen te kapab tounen gade dèyè nan yon bagay ki ta fè m 'konnen verite a. 701 00:59:26,640 --> 00:59:34,160 Mwen pral gade pou li pita, si gen yon sentaks pou pwen. Men, ou pa janm ap wè li. 702 00:59:34,160 --> 00:59:39,670 E menm sentaks la se konsa reyaksyonè ke si ou sèvi ak li, moun ap dekonsèrte. 703 00:59:39,670 --> 00:59:43,540 Ranje pluridimansyonèl yo trè ra kòm li se. 704 00:59:43,540 --> 00:59:44,630 Ou bèl anpil - 705 00:59:44,630 --> 00:59:48,490 Byen, si w ap fè bagay sa yo matris li pa pral fè ki ra, 706 00:59:48,490 --> 00:59:56,730 men nan C w ap raman yo pral lè l sèvi avèk ranje pluridimansyonèl. 707 00:59:57,630 --> 01:00:00,470 Yeah. >> [Elèv] Se pou nou di ou gen yon etalaj vrèman long. 708 01:00:00,470 --> 01:00:03,900 >> Se konsa, nan memwa vityèl li ta parèt yo dwe tout youn apre lòt, 709 01:00:03,900 --> 01:00:05,640 tankou eleman yo dwa pwochen nan chak lòt, 710 01:00:05,640 --> 01:00:08,770 men nan memwa a fizik, li ta dwe posib pou ki yo dwe fann moute? >> Wi. 711 01:00:08,770 --> 01:00:16,860 Ki jan vityèl travay memwa se li jis separe - 712 01:00:19,220 --> 01:00:24,860 Inite a nan alokasyon se yon paj, ki gen tandans fè gen 4 kilookte, 713 01:00:24,860 --> 01:00:29,680 ak Se konsa, lè yon pwosesis di, hey, mwen ta vle itilize sa memwa, 714 01:00:29,680 --> 01:00:35,970 sistèm nan fonksyone ki pral asiyen li 4 kilookte pou sa blòk ti kras nan memwa. 715 01:00:35,970 --> 01:00:39,100 Menm si ou sèlman itilize yon sèl multiple ti kras nan blòk la tout antye de memwa, 716 01:00:39,100 --> 01:00:42,850 sistèm nan fonksyone ki pral ba ou li plen 4 kilookte yo. 717 01:00:42,850 --> 01:00:49,410 Se konsa, sa sa vle di se mwen te kapab genyen - Se pou nou di sa a se pil m 'yo. 718 01:00:49,410 --> 01:00:53,180 Te kapab sa a chemine dwe separe. Chemine mwen ta ka megabit ak megabit. 719 01:00:53,180 --> 01:00:55,020 Chemine mwen ta ka gwo. 720 01:00:55,020 --> 01:01:00,220 Men, chemine a li menm te dwe divize an paj endividyèl, 721 01:01:00,220 --> 01:01:09,010 ki si nou gade sou isit la kite a di sa a se RAM nou an, 722 01:01:09,010 --> 01:01:16,600 si mwen gen 2 jigokte nan RAM, sa a se 0 aktyèl adrès tankou multiple nan zeroth nan RAM m 'yo, 723 01:01:16,600 --> 01:01:22,210 ak sa a se 2 jigokte tout wout la desann isit la. 724 01:01:22,210 --> 01:01:27,230 Se konsa, paj sa a ta ka koresponn ak sa a blòk sou isit la. 725 01:01:27,230 --> 01:01:29,400 Paj sa a ta ka koresponn ak sa a blòk sou isit la. 726 01:01:29,400 --> 01:01:31,560 Sa a ki ta ka yon koresponn ak yon sèl sa a sou isit la. 727 01:01:31,560 --> 01:01:35,540 Se konsa, sistèm nan fonksyone se gratis yo asiyen fizik memwa 728 01:01:35,540 --> 01:01:39,320 nan nenpòt ki paj endividyèl abitrèman. 729 01:01:39,320 --> 01:01:46,180 Ak sa vle di ke si sa a fwontyè k ap pase nan ankadre yon etalaj, 730 01:01:46,180 --> 01:01:50,070 yon etalaj k ap pase yo dwe kite nan sa a ak dwa nan lòd sa a nan yon paj, 731 01:01:50,070 --> 01:01:54,460 Lè sa a, ki etalaj yo pral fann nan memwa fizik. 732 01:01:54,460 --> 01:01:59,280 Lè sa a, lè ou kite pwogram nan, lè pwosesis la fini, 733 01:01:59,280 --> 01:02:05,690 sa yo mapin jwenn efase ak Lè sa a, li nan lib yo itilize sa yo blòk ti kras pou lòt bagay. 734 01:02:14,730 --> 01:02:17,410 Plis kesyon? 735 01:02:17,410 --> 01:02:19,960 [Elèv] konsèy aritmetik a. >> Oh yeah. 736 01:02:19,960 --> 01:02:28,410 Kòd te vin pi fasil, men gade nan yon bagay tankou antye, 737 01:02:28,410 --> 01:02:35,000 Se konsa tounen nan int x [4]; 738 01:02:35,000 --> 01:02:41,810 Kit sa a se yon etalaj oswa si li nan yon konsèy nan yon etalaj malloced nan 4 nonm antye yo, 739 01:02:41,810 --> 01:02:47,060 li a pral pou yo trete menm jan an. 740 01:02:50,590 --> 01:02:53,340 [Elèv] Se konsa, ranje yo sou pil wòch la? 741 01:03:01,400 --> 01:03:05,270 [Bowden] matris yo pa sou pil la. >> [Elèv] Oh. 742 01:03:05,270 --> 01:03:08,320 >> [Bowden] Sa a ki kalite etalaj gen tandans yo dwe sou chemine a 743 01:03:08,320 --> 01:03:12,220 sof si ou te deklare li nan - inyore varyab mondyal. Pa sèvi ak varyab mondyal. 744 01:03:12,220 --> 01:03:16,280 Anndan yon fonksyon m 'di Int x [4]; 745 01:03:16,280 --> 01:03:22,520 Li nan pral kreye yon blòk 4-nonb antye relatif sou pil la pou sa a etalaj. 746 01:03:22,520 --> 01:03:26,960 Men, sa a malok (4 * sizof (Int)); ki pral ale nan pil wòch la. 747 01:03:26,960 --> 01:03:31,870 Men, apre sa pwen sa a mwen ka itilize x ak p nan bèl anpil fason yo menm, 748 01:03:31,870 --> 01:03:36,140 lòt pase eksepsyon yo, mwen te di anvan sou ou kapab mute p. 749 01:03:36,140 --> 01:03:40,960 Teknikman, gwosè yo se moun ki yon ti jan diferan, men sa a konplètman petinan. 750 01:03:40,960 --> 01:03:43,310 Ou pa janm sèvi ak aktyèlman gwosè yo. 751 01:03:48,020 --> 01:03:56,810 P la mwen te kapab di p [3] = 2; oswa x [3] = 2; 752 01:03:56,810 --> 01:03:59,680 Ou ka itilize yo nan egzakteman fason yo menm. 753 01:03:59,680 --> 01:04:01,570 Se konsa, konsèy aritmetik kounye a - Wi. 754 01:04:01,570 --> 01:04:07,390 [Elèv] ou pa bezwen fè p * si ou gen parantèz yo? 755 01:04:07,390 --> 01:04:11,720 Parantèz yo se yon dèreferans enplisit. >> Okay. 756 01:04:11,720 --> 01:04:20,200 Aktyèlman, tou sa w di a ak nan ou ka jwenn ranje pluridimansyonèl 757 01:04:20,200 --> 01:05:02,650 ak endikasyon, ki sa ou ka fè se yon bagay tankou, kite la di, int ** Pp = malok (sizof (Int *) * 5); 758 01:05:02,650 --> 01:05:06,900 Mwen pral jis ekri li tout soti an premye. 759 01:05:37,880 --> 01:05:41,020 Mwen pa t 'vle wè yon sèl. 760 01:05:41,020 --> 01:05:42,550 Oke. 761 01:05:42,550 --> 01:05:48,910 Ki sa mwen te fè isit la se - Ki ta dwe Pp [mwen]. 762 01:05:48,910 --> 01:05:53,680 Se konsa, Pp se yon konsèy nan yon konsèy. 763 01:05:53,680 --> 01:06:02,420 W ap mallocing Pp nan pwen nan yon etalaj de 5 zetwal int. 764 01:06:02,420 --> 01:06:10,950 Se konsa, nan memwa ou genyen nan pp la chemine 765 01:06:10,950 --> 01:06:20,150 Li k ap pase nan pwen nan yon etalaj de 5 blòk ki tout tèt yo endikasyon. 766 01:06:20,150 --> 01:06:28,210 Lè sa a, lè m 'desann isit la malok, mwen malok ke chak nan sa yo endikasyon endividyèl 767 01:06:28,210 --> 01:06:32,080 yo ta dwe lonje dwèt sou yon blòk separe nan 4 bytes sou pil la. 768 01:06:32,080 --> 01:06:35,870 Se konsa, sa a pwen nan 4 bytes. 769 01:06:37,940 --> 01:06:40,660 Lè sa a pwen youn nan yon bytes diferan 4. 770 01:06:40,660 --> 01:06:43,200 >> Ak tout nan yo lonje dwèt sou bytes pwòp yo 4. 771 01:06:43,200 --> 01:06:49,080 Sa a ba m 'yon fason pou fè bagay sa yo pluridimansyonèl. 772 01:06:49,080 --> 01:06:58,030 Mwen te kapab di Pp [3] [4], men kounye a sa a se pa menm bagay la kòm ranje pluridimansyonèl 773 01:06:58,030 --> 01:07:05,390 paske ranje pluridimansyonèl yo tradui li pou [3] [4] nan yon sèl konpanse nan etalaj la x. 774 01:07:05,390 --> 01:07:14,790 Sa a p dereferences, jwenn aksè endèks la twazyèm, Lè sa a, dereferences ki 775 01:07:14,790 --> 01:07:20,790 ak aksèd - 4 ta dwe valab - endèks la dezyèm fwa. 776 01:07:24,770 --> 01:07:31,430 Lè nou konsidere ke lè nou te gen int x [3] [4] anvan an kòm yon etalaj pluridimansyonèl 777 01:07:31,430 --> 01:07:35,740 ak ki lè ou double bracket li vrèman se sèlman yon dèreferans sèl, 778 01:07:35,740 --> 01:07:40,490 w ap swiv yon konsèy sèl ak Lè sa a, yon konpanse, 779 01:07:40,490 --> 01:07:42,850 sa a se reyèlman referans 2D. 780 01:07:42,850 --> 01:07:45,840 Ou menm, swiv 2 endikasyon ki apa a. 781 01:07:45,840 --> 01:07:50,420 Se konsa, sa a tou teknikman pèmèt ou gen ranje pluridimansyonèl 782 01:07:50,420 --> 01:07:53,550 kote chak etalaj endividyèl se gwosè diferan. 783 01:07:53,550 --> 01:07:58,000 Se konsa, mwen panse ak dan ranje pluridimansyonèl se sa ki sa yo rele 784 01:07:58,000 --> 01:08:01,870 depi reyèlman premye bagay la te ka lonje dwèt sou yon bagay ki gen 10 eleman, 785 01:08:01,870 --> 01:08:05,540 bagay la dezyèm ta ka lonje dwèt sou yon bagay ki gen 100 eleman. 786 01:08:05,540 --> 01:08:10,790 [Elèv] Èske gen okenn limit nan kantite endikasyon ou ka gen 787 01:08:10,790 --> 01:08:14,290 lonje dwèt pwent lòt? >> No 788 01:08:14,290 --> 01:08:17,010 Ou ka gen int ***** p. 789 01:08:18,050 --> 01:08:23,760 Retounen nan aritmetik konsèy - >> [elèv] Oh. >> Yeah. 790 01:08:23,760 --> 01:08:35,649 [Elèv] Si mwen gen int *** p ak Lè sa a, mwen fè yon dereferencing epi mwen di p * ki egal a sa a valè, 791 01:08:35,649 --> 01:08:39,560 se li sèlman pral fè 1 nivo nan dereferencing? >> Wi. 792 01:08:39,560 --> 01:08:43,340 Se konsa, si mwen vle gen aksè a bagay la ki konsèy an dènye a lonje dwèt nan - 793 01:08:43,340 --> 01:08:46,210 Lè sa a, ou fè p ***. >> Okay. 794 01:08:46,210 --> 01:08:54,080 Se konsa, sa a se pwen p nan 1 blòk, pwen a yon lòt blòk, pwen a yon lòt blòk. 795 01:08:54,080 --> 01:09:02,010 Lè sa a, si ou fè * p = yon lòt bagay, Lè sa a, ou yo ap chanje sa a 796 01:09:02,010 --> 01:09:13,640 kounye a lonje dwèt sou yon blòk diferan. >> Okay. 797 01:09:13,640 --> 01:09:17,649 >> [Bowden] Men, si sa yo yo te malloced, lè sa a ou te kounye a fwit memwa 798 01:09:17,649 --> 01:09:20,430 sof si ou rive gen referans diferan nan sa yo 799 01:09:20,430 --> 01:09:25,270 depi ou pa kapab jwenn tounen nan sa yo moun ke ou jis jete lwen. 800 01:09:25,270 --> 01:09:29,550 Aritmetik pwente. 801 01:09:29,550 --> 01:09:36,310 int x [4]; ki pral asiyen yon etalaj de 4 nonm antye relatif 802 01:09:36,310 --> 01:09:40,670 kote x ki pral nan pwen nan konmansman an nan etalaj la. 803 01:09:40,670 --> 01:09:50,420 Se konsa, lè m 'di yon bagay tankou x [1], mwen vle li nan vle di ale nan nonb antye relatif an dezyèm nan etalaj la, 804 01:09:50,420 --> 01:09:53,319 ki ta dwe yon sèl sa a. 805 01:09:53,319 --> 01:10:04,190 Men, reyèlman, ki nan 4 bytes nan etalaj la depi sa a nonm antye pran moute 4 bytes. 806 01:10:04,190 --> 01:10:08,470 Se konsa, yon konpanse nan 1 vrèman vle di yon konpanse nan 1 807 01:10:08,470 --> 01:10:12,030 fwa gwosè a nan tou sa ki kalite etalaj la se. 808 01:10:12,030 --> 01:10:17,170 Sa a se yon etalaj de nonm antye relatif, se konsa li konnen fè 1 fwa gwosè nan int lè li vle konpanse. 809 01:10:17,170 --> 01:10:25,260 Sentaks la ak lòt. Sonje ke sa a se ekivalan a * (x 1 +); 810 01:10:25,260 --> 01:10:35,250 Lè m 'di nou konsèy + 1, ki sa sa retounen se adrès la ki konsèy la ap estoke 811 01:10:35,250 --> 01:10:40,360 plis 1 fwa gwosè a nan ki kalite konsèy la. 812 01:10:40,360 --> 01:10:59,510 Se konsa, si x = ox100, lè sa a x + 1 = ox104. 813 01:10:59,510 --> 01:11:19,750 Epi ou ka abize sa a ak di yon bagay tankou Char * c = (Char *) x; 814 01:11:19,750 --> 01:11:23,050 e kounye a, c a pwal menm adrès ak x. 815 01:11:23,050 --> 01:11:26,040 c a pwal egal a ox100, 816 01:11:26,040 --> 01:11:31,490 men c + 1 a pwal egal a ox101 817 01:11:31,490 --> 01:11:38,030 depi aritmetik konsèy depann sou ki kalite konsèy la ke ou ap ajoute sou. 818 01:11:38,030 --> 01:11:45,390 Se konsa, c + 1, li sanble nan c, li nan yon konsèy Char, se konsa li pral ajoute 1 fwa gwosè nan Char, 819 01:11:45,390 --> 01:11:48,110 ki se toujou pral fè 1, konsa ou jwenn 101, 820 01:11:48,110 --> 01:11:54,890 Lè nou konsidere ke, si mwen fè x, ki se tou toujou 100, x + 1 a pwal 104. 821 01:11:56,660 --> 01:12:06,340 [Elèv] Èske ou ka sèvi ak c + + yo nan lòd yo avanse konsèy ou pa 1 an? 822 01:12:06,340 --> 01:12:09,810 Wi, ou kapab. 823 01:12:09,810 --> 01:12:16,180 Ou pa ka fè sa ak x paske x se jis yon senbòl, li se yon konstan; ou pa kapab chanje x. 824 01:12:16,180 --> 01:12:22,610 >> Men, c k ap pase nan jis pou yon konsèy, se konsa c + + se yon bagay ki valab epi li pral kantite a 1. 825 01:12:22,610 --> 01:12:32,440 Si c yo te jis yon * Int, lè sa a c + + ta dwe 104. 826 01:12:32,440 --> 01:12:41,250 + + Fè sa ki aritmetik konsèy menm jan c + 1 ta gen fè aritmetik konsèy. 827 01:12:43,000 --> 01:12:48,870 Sa a se aktyèlman ki jan yon anpil nan bagay sa yo tankou sòt unifye - 828 01:12:49,670 --> 01:12:55,710 Olye pou yo kreye kopi de bagay sa yo, ou ka olye pase - 829 01:12:55,710 --> 01:13:02,400 Renmen si mwen te vle pase sa a mwatye nan etalaj la - kite a efase kèk nan sa a. 830 01:13:04,770 --> 01:13:10,520 Se pou nou di mwen te vle pase bò sa a nan etalaj la nan yon fonksyon. 831 01:13:10,520 --> 01:13:12,700 Ki sa ki ta mwen pase ak sa yo ki fonksyon? 832 01:13:12,700 --> 01:13:17,050 Si m 'pase x, mwen pase nan adrès sa a. 833 01:13:17,050 --> 01:13:23,780 Men, mwen vle yo pase adrès sa a an patikilye. Se konsa, sa mwen ta dwe pase? 834 01:13:23,780 --> 01:13:26,590 [Elèv] pwente + 2? 835 01:13:26,590 --> 01:13:29,350 [Bowden] Se konsa, x + 2. Wi. 836 01:13:29,350 --> 01:13:31,620 Sa k ap pase yo dwe adrès sa a. 837 01:13:31,620 --> 01:13:42,810 Ou ap tou trè souvan wè li kòm x [2] ak Lè sa a, adrès la nan sa. 838 01:13:42,810 --> 01:13:47,850 Se konsa, ou bezwen pran adrès la nan li paske bracket la se yon dèreferans enplisit. 839 01:13:47,850 --> 01:13:53,250 x [2] refere a valè a se sa ki nan bwat sa a, ak Lè sa a, ou vle adrès sa a nan bwat postal, 840 01:13:53,250 --> 01:13:56,850 Se ou ki di & x [2]. 841 01:13:56,850 --> 01:14:02,880 Se konsa, lè sa a jan yon bagay an sòt unifye kote ou vle pase mwatye lis la a yon bagay 842 01:14:02,880 --> 01:14:08,790 ou reyèlman jis pase & x [2], epi kounye a osi lwen ke se apèl la repetitif konsène, 843 01:14:08,790 --> 01:14:12,510 etalaj nouvo mwen an kòmanse a. 844 01:14:12,510 --> 01:14:15,130 Kesyon minit dènye. 845 01:14:15,130 --> 01:14:20,050 [Elèv] Si nou pa mete yon comercial oswa yon - sa ki nan ke yo rele? >> Star? 846 01:14:20,050 --> 01:14:23,200 [Elèv] Star. >> Teknikman, operatè dèreferans, men - >> [elèv] dèreferans. 847 01:14:23,200 --> 01:14:29,310 >> Si nou pa mete yon etwal oswa comercial yon, kisa k ap rive si mwen jis di y = x ak x ki se yon konsèy? 848 01:14:29,310 --> 01:14:34,620 Ki sa ki se ki kalite y? >> [Elèv] mwen pral jis di konsèy li a 2. 849 01:14:34,620 --> 01:14:38,270 Se konsa, si ou jis di y = x, kounye a x ak pwen y menm bagay la. >> [Elèv] Montre menm bagay la. 850 01:14:38,270 --> 01:14:45,180 Men, si x se yon konsèy int? >> Li ta plenyen paske ou pa ka bay endikasyon. 851 01:14:45,180 --> 01:14:46,540 [Elèv] Okay. 852 01:14:46,540 --> 01:14:51,860 Sonje ke endikasyon, menm si nou trase yo kòm flèch, 853 01:14:51,860 --> 01:15:02,010 vrèman tout magazen yo - int * x - reyèlman tout x se estoke se yon bagay tankou ox100, 854 01:15:02,010 --> 01:15:06,490 ki nou rive reprezante kòm lonje dwèt blòk la ki estoke nan 100. 855 01:15:06,490 --> 01:15:19,660 Se konsa, lè m 'di Int * y = x; mwen jis kopye ox100 nan y, 856 01:15:19,660 --> 01:15:24,630 ki n ap jis pral reprezante kòm y, tou lonje dwèt ox100. 857 01:15:24,630 --> 01:15:39,810 Men, si m 'di Int mwen = (Int) x; Lè sa a, mwen ki pral nan magazen tou sa valè a ox100 se 858 01:15:39,810 --> 01:15:45,100 andedan nan li, men kounye a li a pral kapab entèprete kòm yon nonb antye relatif olye de yon konsèy. 859 01:15:45,100 --> 01:15:49,310 Men, ou bezwen jete nan oswa lòt moun li pral pote plent. 860 01:15:49,310 --> 01:15:53,300 [Elèv] Se konsa, ou vle di jete - 861 01:15:53,300 --> 01:16:00,290 Èske li yo pral depoze int nan int x oswa Distribisyon nan y? 862 01:16:00,290 --> 01:16:03,700 [Bowden] Ki sa? 863 01:16:03,700 --> 01:16:07,690 [Elèv] Okay. Apre sa parantèz Èske gen pwal yon x oswa ay la? 864 01:16:07,690 --> 01:16:11,500 >> [Bowden] Swa. x ak y yo se ekivalan. >> [Elèv] Okay. 865 01:16:11,500 --> 01:16:14,390 Paske yo ap tou de pwent. >> Yeah. 866 01:16:14,390 --> 01:16:21,050 [Elèv] Se konsa, li ta store 100 an ekzadesimal nan fòm nonb antye relatif? >> [Bowden] Yeah. 867 01:16:21,050 --> 01:16:23,620 Men, pa valè a nan tou sa li lonje dwèt yo. 868 01:16:23,620 --> 01:16:29,940 [Bowden] Yeah. >> [Elèv] Se konsa, jis adrès la nan fòm antye ki pè. Oke. 869 01:16:29,940 --> 01:16:34,720 [Bowden] Si ou te vle pou kèk rezon ki ra, 870 01:16:34,720 --> 01:16:38,900 ou ta ka sèlman fè fas ak endikasyon epi pa janm fè fas ak nonm antye relatif 871 01:16:38,900 --> 01:16:49,240 ak jis ap tankou int * x 0 =. 872 01:16:49,240 --> 01:16:53,000 Lè sa a, w ap ale nan jwenn vrèman konfonn yon fwa aritmetik konsèy kòmanse pase. 873 01:16:53,000 --> 01:16:56,570 Se konsa, nimewo yo ke yo store yo se san sans. 874 01:16:56,570 --> 01:16:58,940 Li nan jis ki jan ou fini interpreting yo. 875 01:16:58,940 --> 01:17:02,920 Se konsa, mwen gratis a kapab bay kopi ox100 soti nan yon * int nan yon int, 876 01:17:02,920 --> 01:17:07,790 epi mwen gratis bay elèv yo - you're pwobableman pwal jwenn rele nan pou pa Distribisyon - 877 01:17:07,790 --> 01:17:18,160 Mwen gratis bay elèv yo yon bagay tankou (Int *) ox1234 nan sa a * int abitrè. 878 01:17:18,160 --> 01:17:25,480 Se konsa, ox123 se jis kòm valid yon memwa adrès kòm se & y. 879 01:17:25,480 --> 01:17:32,060 & Y k ap pase nan retounen yon bagay ki se bèl anpil ox123. 880 01:17:32,060 --> 01:17:35,430 [Elèv] ta dwe yon fason ki vrèman fre yo ale soti nan ekzadesimal fòm desimal, 881 01:17:35,430 --> 01:17:39,230 renmen si w gen yon konsèy, epi ou voye l 'jete kòm yon int? 882 01:17:39,230 --> 01:17:44,860 [Bowden] Ou ka vrèman jis enprime lè l sèvi avèk tankou printf. 883 01:17:44,860 --> 01:17:50,300 Se pou nou di mwen gen int y = 100. 884 01:17:50,300 --> 01:18:02,700 Se konsa, printf (% d \ n - kòm ou ta dwe deja konnen - enprime ke kòm yon nonb antye relatif, x%. 885 01:18:02,700 --> 01:18:05,190 Nou pral jis enprime li kòm ekzadesimal. 886 01:18:05,190 --> 01:18:10,760 Se konsa, yon konsèy se pa sa ki estoke kòm ekzadesimal, 887 01:18:10,760 --> 01:18:12,960 ak yon nonb antye relatif se pa sa ki estoke kòm desimal. 888 01:18:12,960 --> 01:18:14,700 Tout bagay se ki estoke kòm binè. 889 01:18:14,700 --> 01:18:17,950 Se jis ke nou yo gen tandans montre endikasyon kòm ekzadesimal 890 01:18:17,950 --> 01:18:23,260 paske nou panse de bagay sa yo nan sa yo blòk 4-multiple, 891 01:18:23,260 --> 01:18:25,390 ak adrès memwa gen tandans yo dwe familye ak yo. 892 01:18:25,390 --> 01:18:28,890 Nou se tankou, si li kòmanse ak bf, lè sa a bagay sa yo rive yo dwe sou pil la. 893 01:18:28,890 --> 01:18:35,560 Se konsa, li jis entèpretasyon nou an endikasyon kòm ekzadesimal. 894 01:18:35,560 --> 01:18:39,200 Oke. Nenpòt kesyon sot pase a? 895 01:18:39,200 --> 01:18:41,700 >> Mwen ap isit la pou yon ti jan apre si ou gen nenpòt lòt bagay. 896 01:18:41,700 --> 01:18:46,070 Epi sa a, nan fen sa. 897 01:18:46,070 --> 01:18:48,360 >> [Elèv] ye! [Aplodisman] 898 01:18:51,440 --> 01:18:53,000 >> [CS50.TV]