1 00:00:00,000 --> 00:00:10,970 >> [Daqq tal-mużika] 2 00:00:10,970 --> 00:00:12,536 >> DAVID J. Malan: Kull dritt. 3 00:00:12,536 --> 00:00:13,392 >> [Daħk] 4 00:00:13,392 --> 00:00:14,240 >> Merħba lura. 5 00:00:14,240 --> 00:00:14,990 Dan huwa CS50. 6 00:00:14,990 --> 00:00:16,890 U dan l-aħħar ta 'ħames ġimgħa. 7 00:00:16,890 --> 00:00:20,020 U sa issa, aħna ħadthom pretty ħafna ilhom jieħdu għal mogħtija li hemm 8 00:00:20,020 --> 00:00:23,480 teżisti din kompilatur, clang, li inti ħadthom ġew invokazzjoni permezz ta 'dan 9 00:00:23,480 --> 00:00:27,100 għodda oħra msejħa Agħmel li b'xi mod magically tikkonverti source code tiegħek 10 00:00:27,100 --> 00:00:31,350 fis kodiċi oġġett, l-żerijiet u dawk li l-kompjuters CPU tiegħek, ċentrali 11 00:00:31,350 --> 00:00:33,410 unit ta 'proċessar, fil-fatt jifhem. 12 00:00:33,410 --> 00:00:36,770 Iżda jirriżulta hemm numru li l- għaddejjin taħt il-barnuża fl 13 00:00:36,770 --> 00:00:38,690 bejn input u output. 14 00:00:38,690 --> 00:00:41,800 >> U nixtieq li tipproponi li aħna laħam li fid ftit aktar dettall fis 15 00:00:41,800 --> 00:00:45,130 dawn l-erba passi, ikollhom xi ħaġa imsejħa qabel l-ipproċessar, xi ħaġa 16 00:00:45,130 --> 00:00:48,300 imsejħa kompilazzjoni, li rajna, xi ħaġa imsejħa assemblaġġ, u 17 00:00:48,300 --> 00:00:49,420 xi ħaġa imsejħa jgħaqqdu. 18 00:00:49,420 --> 00:00:53,270 Allura sa issa, f'xi tagħna programmi, aħna kellna sharp jinkludi. 19 00:00:53,270 --> 00:00:56,650 Aktar reċentement aħna kellna xi sharp tiddefinixxi għall kostanti. 20 00:00:56,650 --> 00:01:00,660 Għalhekk jirriżulta li dawk l-affarijiet li huma prefissi bil-simbolu hash jew 21 00:01:00,660 --> 00:01:04,150 is-simbolu lira huma pre-proċessur direttivi. 22 00:01:04,150 --> 00:01:07,960 Li jinsab biss mod fancy ta 'tgħid huwa linja ta 'kodiċi li attwalment 23 00:01:07,960 --> 00:01:12,280 maqluba xi ħaġa oħra quddiem il- kompjuter saħansitra jippruvaw li jikkonvertu tiegħek 24 00:01:12,280 --> 00:01:13,800 Programm tiġi żero u dawk. 25 00:01:13,800 --> 00:01:19,000 >> Per eżempju, qawwi tinkludi l-istandard I / O. H, pretty ħafna biss ifisser jmorru 26 00:01:19,000 --> 00:01:24,010 quddiem, grab-kontenut tal-fajls stdio.h u paste minnhom hemm dritt. 27 00:01:24,010 --> 00:01:25,880 Sabiex l-ebda żero u dawk f'dak il-punt għadu. 28 00:01:25,880 --> 00:01:27,470 Huwa verament ftit sostituzzjoni. 29 00:01:27,470 --> 00:01:30,790 U li sar matul l-hekk imsejħa istadju ta 'qabel l-ipproċessar, meta inti 30 00:01:30,790 --> 00:01:34,230 tmexxi effettivament clang jew speċifikament Jagħmlu f'ħafna każijiet. 31 00:01:34,230 --> 00:01:36,950 Allura dan kollu kien jiġri ewwel awtomatikament s'issa. 32 00:01:36,950 --> 00:01:38,800 >> Imbagħad jiġi l-pass kumpilazzjoni. 33 00:01:38,800 --> 00:01:40,920 Iżda aħna kont qed eżaġerat kumpilazzjoni. 34 00:01:40,920 --> 00:01:45,060 Kumpilazzjoni programm verament ifisser li teħodha minn xi ħaġa bħal C, il- 35 00:01:45,060 --> 00:01:48,430 kodiċi tas-sors konna ġie miktub, down għal xi ħaġa imsejħa assemblaġġ. 36 00:01:48,430 --> 00:01:52,900 Lingwa assemblaġġ huwa livell aktar baxx lingwa li, Thankfully, aħna mhux se 37 00:01:52,900 --> 00:01:55,480 għandhom ħafna okkażjoni biex tikteb dan is-semestru. 38 00:01:55,480 --> 00:01:59,100 Iżda huwa fil-livell l-aktar baxx fil- sens li inti litteralment tibda bil-miktub 39 00:01:59,100 --> 00:02:04,270 żid u naqqas u jimmultiplikaw u t-tagħbija mill-memorja u jiffrankaw l-memorja, il- 40 00:02:04,270 --> 00:02:08,259 istruzzjonijiet bażika ħafna li l-kompjuter, taħt il-barnuża, 41 00:02:08,259 --> 00:02:09,639 jifhem effettivament. 42 00:02:09,639 --> 00:02:14,930 >> Fl-aħħar nett, assemblaġġ jieħu dik il-lingwa għall-żero u dawk li aħna kont qed 43 00:02:14,930 --> 00:02:16,190 jiddeskrivi s'issa. 44 00:02:16,190 --> 00:02:19,270 U verament fl-aħħarnett, hemm l-hekk imsejħa jgħaqqdu fażi, li aħna ser 45 00:02:19,270 --> 00:02:22,360 tara fi ftit mument, li jgħaqqad żerijiet tiegħek u dawk biż-żeri u 46 00:02:22,360 --> 00:02:24,870 dawk nies oħra qabel għandek maħluqa. 47 00:02:24,870 --> 00:02:26,660 >> Għalhekk tikkunsidra dan il-programm sempliċi super. 48 00:02:26,660 --> 00:02:27,560 Kien minn Ġimgħa 1. 49 00:02:27,560 --> 00:02:29,610 Huwa biss qal, Hello World, fuq l-iskrin. 50 00:02:29,610 --> 00:02:30,920 Aħna dam dan permezz clang. 51 00:02:30,920 --> 00:02:33,200 Jew aħna dam permezz Agħmel li dam clang. 52 00:02:33,200 --> 00:02:36,170 U outputted fil-ħin fejn xi żero u dawk. 53 00:02:36,170 --> 00:02:38,100 Iżda jirriżulta hemm pass intermedju. 54 00:02:38,100 --> 00:02:40,460 Jekk immur hawn fuq - oops, ma trid tara lilu s'issa. 55 00:02:40,460 --> 00:02:44,800 Jekk I jmorru fuq hawn biex appliance tiegħi u I jiftħu hello.c, hawnhekk 56 00:02:44,800 --> 00:02:46,160 huwa l-istess programm. 57 00:02:46,160 --> 00:02:48,600 U dak li jien ser tagħmel terminal tiegħi tieqa hawnhekk huwa jien ser 58 00:02:48,600 --> 00:02:51,430 run clang pjuttost milli Kun, li automates l-erba ' 59 00:02:51,430 --> 00:02:52,870 dawk il-passi għalina. 60 00:02:52,870 --> 00:02:58,620 U jien ser tagħmel clang-S u imbagħad hello.c u mbagħad tidħol. 61 00:02:58,620 --> 00:03:00,590 >> U niġi pront Teptip għal darb'oħra, li hija tajba. 62 00:03:00,590 --> 00:03:05,280 U issa fil-tieqa kemmxejn akbar, Jien ser jiftħu gedit fil hawn. 63 00:03:05,280 --> 00:03:09,610 U jien ser tiftaħ fajl li, jirriżulta, huwa hello.s sejjaħ din 64 00:03:09,610 --> 00:03:11,870 jkollu dak lingwa assemblaġġ I imsemmi qabel. 65 00:03:11,870 --> 00:03:15,060 U dan huwa dak li sejjaħ assemblaġġ lingwa, livell pjuttost baxx 66 00:03:15,060 --> 00:03:18,470 istruzzjonijiet li CPU Intel tiegħek jew kwalunkwe huwa li l-ġewwa 67 00:03:18,470 --> 00:03:19,350 jifhem. 68 00:03:19,350 --> 00:03:24,480 U mov huwa għall-pass. sejħa hija għal ssejjaħ, funzjoni livell baxx ħafna. 69 00:03:24,480 --> 00:03:26,380 sub huwa għall naqqas. 70 00:03:26,380 --> 00:03:30,370 >> Allura meta jkollok CPU partikolari ġewwa tal-kompjuter tiegħek, dak li jagħmilha 71 00:03:30,370 --> 00:03:34,300 CPUs distinti, kontra ieħor fuq il- suq, tkun li l-istruzzjonijiet li 72 00:03:34,300 --> 00:03:39,460 jifhem u spiss kif effiċjenti huwa huwa, kif fast huwa fil eżekuzzjoni f'xi 73 00:03:39,460 --> 00:03:40,380 ta 'dawk l-istruzzjonijiet. 74 00:03:40,380 --> 00:03:45,150 Issa għal aktar fuq dan, inti tista 'tieħu CS61 Fall jmiss fil-kulleġġ. 75 00:03:45,150 --> 00:03:48,170 Iżda hawnhekk għandna, per eżempju, ftit identifikaturi li tista 'tidher familjari. 76 00:03:48,170 --> 00:03:50,150 hello.c huwa l-isem tal-programm. 77 00:03:50,150 --> 00:03:51,070 >> . Test - 78 00:03:51,070 --> 00:03:54,190 hemm Ma tantx ta 'interess hemm biss issa, ifakkar li t-test 79 00:03:54,190 --> 00:03:59,190 segment, bħala tat-Tnejn, huwa fejn fl memorja program tiegħek fil-fatt jispiċċa. 80 00:03:59,190 --> 00:04:01,330 Allura dak inqas vagament familjari hemmhekk. 81 00:04:01,330 --> 00:04:03,730 Hawnhekk, naturalment, huwa referenza tal-funzjoni prinċipali tagħna. 82 00:04:03,730 --> 00:04:07,220 Scrolling, dawn jirreferu għall-affarijiet imsejħa reġistri, biċċiet żgħar ħafna tal- 83 00:04:07,220 --> 00:04:09,190 ġewwa memorja ta 'CPU tiegħek attwali. 84 00:04:09,190 --> 00:04:12,930 U jekk I iscroll anke ulterjuri, nara xi tip 85 00:04:12,930 --> 00:04:14,240 aċċenn indirett ta 'ASCII. 86 00:04:14,240 --> 00:04:17,120 U hemm, tabilħaqq, hija li string, hello, comma, dinja. 87 00:04:17,120 --> 00:04:20,079 >> Allura storja twila fil-qosor, dan kien jiġri għalik, awtomatikament, 88 00:04:20,079 --> 00:04:22,140 taħt il-barnuża kollha ta 'dan iż-żmien. 89 00:04:22,140 --> 00:04:26,450 U dak li kien jiġri huwa verament darba inti stajt run clang, jew permezz ta ' 90 00:04:26,450 --> 00:04:29,150 Tagħmel, int jkollna l-ewwel, mill-kodiċi sors, il- 91 00:04:29,150 --> 00:04:30,700 hekk imsejħa lingwa assemblaġġ. 92 00:04:30,700 --> 00:04:35,210 Imbagħad clang qiegħda taqleb din l-assemblea lingwa isfel sa żero u dawk. 93 00:04:35,210 --> 00:04:38,340 U dan huwa l-slide li bdejna diskussjoni tagħna fil-Ġimgħa 0 fuq - 94 00:04:38,340 --> 00:04:39,840 u mbagħad Ġimgħa 1 fuq. 95 00:04:39,840 --> 00:04:44,030 U mbagħad finalment, dawk żero u dawk huma kkombinati ma 'l-żero u dawk 96 00:04:44,030 --> 00:04:47,190 minn dawk libreriji aħna kont qed tieħu għall mogħtija bħal Standard I / O jew il- 97 00:04:47,190 --> 00:04:50,010 Librerija String jew saħansitra il-librerija CS50. 98 00:04:50,010 --> 00:04:54,200 >> Allura biex żebgħa din l-istampa aktar viżwalment, għandna hello.c. 99 00:04:54,200 --> 00:04:57,220 U, naturalment, tuża l-printf jiffunzjonaw jiġifieri, bonjour dinja. 100 00:04:57,220 --> 00:05:01,810 Il-pass kumpilazzjoni tieħu l-isfel għal dan il-fajl aħna biss raw hello.s, anke 101 00:05:01,810 --> 00:05:04,290 għalkemm thats tipikament mħassra awtomatikament għalik. 102 00:05:04,290 --> 00:05:06,050 Iżda li l-kodiċi assemblaġġ fil-pass tan-nofs. 103 00:05:06,050 --> 00:05:09,750 U allura meta aħna jiġbor l-assemblaġġ lingwa, biex ngħidu hekk, li meta inti 104 00:05:09,750 --> 00:05:10,830 tikseb dawk żero u dawk. 105 00:05:10,830 --> 00:05:13,920 Allura aħna ħadthom żżomjati effettiv llum fuq dak li aħna kont qed tieħu għall mogħtija, 106 00:05:13,920 --> 00:05:16,430 ifisser li jmorru kodiċi tas-sors li toġġezzjona kodiċi. 107 00:05:16,430 --> 00:05:18,850 >> Iżda fl-aħħar, issa dak l-istess stampa - ejja shove dan matul 108 00:05:18,850 --> 00:05:20,020 naħa tax-xellug. 109 00:05:20,020 --> 00:05:22,880 U jinnota li fil-quċċata hemm Semmejt stdio.h. 110 00:05:22,880 --> 00:05:25,030 Li l-fajl li konna inklużi fi kważi kollha tal- 111 00:05:25,030 --> 00:05:26,250 programmi konna bil-miktub. 112 00:05:26,250 --> 00:05:28,830 U li l-fajl li l-kontenut nikseb kopja pasted, 113 00:05:28,830 --> 00:05:30,350 effettivament atop kodiċi tiegħek. 114 00:05:30,350 --> 00:05:34,170 Iżda jirriżulta li, fuq il-kompjuter sistema x'imkien, hemm preżumibbilment 115 00:05:34,170 --> 00:05:39,150 fajl stdio.c li xi ħadd kiteb snin ilu li timplimenta kollha ta 'l- 116 00:05:39,150 --> 00:05:41,870 funzjonijiet li kienu ddikjarati fl stdio.h. 117 00:05:41,870 --> 00:05:45,465 >> Issa fir-realtà huwa probabbilment mhux fuq Mac tiegħek jew PC tiegħek jew anke fil- 118 00:05:45,465 --> 00:05:47,660 CS50 appliance huwa kodiċi C prima. 119 00:05:47,660 --> 00:05:52,710 Xi ħadd diġà miġbura dan u inkluda . Fajl għall-kodiċi oġġett jew o. A 120 00:05:52,710 --> 00:05:56,020 fajl, li tirreferi għal librerija maqsuma li kien installat minn qabel u 121 00:05:56,020 --> 00:05:57,240 pre-ikkumpilata għalik. 122 00:05:57,240 --> 00:06:01,950 Iżda jissoponi li hemm tabilħaqq jeżisti fuq stdio.c kompjuter tagħna b'mod parallel 123 00:06:01,950 --> 00:06:02,650 ma clang. 124 00:06:02,650 --> 00:06:04,960 Kodiċi tiegħek l-jiġu kkompilati u mmuntati. 125 00:06:04,960 --> 00:06:09,200 kodiċi tal stdio.c qed tkun miġbura u immuntati, b'tali mod li dan l-aħħar ħafna 126 00:06:09,200 --> 00:06:13,730 pass, stabbiliti hawn, irridu b'xi mod link, biex ngħidu hekk, żerijiet tiegħek u dawk 127 00:06:13,730 --> 00:06:18,430 b'żero tiegħu jew tagħha u dawk f'waħda programm sempliċi li, finalment, huwa 128 00:06:18,430 --> 00:06:20,540 imsejħa biss Hello. 129 00:06:20,540 --> 00:06:23,340 >> Allura li kollox tal-magic li l- kien jiġri s'issa. 130 00:06:23,340 --> 00:06:26,430 U se tkompli tieħu dawn proċessi għall mogħtija, imma tirrealizza 131 00:06:26,430 --> 00:06:28,750 hemm ħafna ta 'dettalji mmerraq għaddejjin taħt hemmhekk. 132 00:06:28,750 --> 00:06:31,920 U dan huwa dak li jagħmel tiegħek kompjuter ma 'Intel ġewwa 133 00:06:31,920 --> 00:06:33,940 partikolarment distinti. 134 00:06:33,940 --> 00:06:37,020 >> Allura fuq din in-nota, jekk inti tixtieq li jingħaqdu magħna għall-ikel nhar il-Ġimgħa, do go 135 00:06:37,020 --> 00:06:41,570 għall-cs50.net/rsvp post tas-soltu, 13:15 nhar il-Ġimgħa. 136 00:06:41,570 --> 00:06:43,400 U issa ftit avviżi ftit. 137 00:06:43,400 --> 00:06:44,670 Allura aħna għandna xi aħbar tajba. 138 00:06:44,670 --> 00:06:45,970 U aħna għandna xi aħbar ħażina. 139 00:06:45,970 --> 00:06:47,260 Tibda bl xi aħbar tajba hawn. 140 00:06:47,260 --> 00:06:52,038 141 00:06:52,038 --> 00:06:54,510 >> [Miżgħuda] 142 00:06:54,510 --> 00:06:54,710 >> Kull dritt. 143 00:06:54,710 --> 00:06:56,670 Ukoll, huwa teknikament festa, hekk mhuwiex tant rigal minna. 144 00:06:56,670 --> 00:06:58,030 Imma mbagħad l-aħbar ħażina tal-kors. 145 00:06:58,030 --> 00:07:00,550 146 00:07:00,550 --> 00:07:01,880 >> [Miżgħuda] 147 00:07:01,880 --> 00:07:03,530 >> I qattgħu ħafna ħin fuq dawn animazzjonijiet. 148 00:07:03,530 --> 00:07:04,690 >> [Daħk] 149 00:07:04,690 --> 00:07:07,000 >> Se jkun hemm sessjoni ta 'reviżjoni din ġejjin Tnejn. 150 00:07:07,000 --> 00:07:08,340 Huwa ser tkun fil PM 05:30. 151 00:07:08,340 --> 00:07:11,210 Aħna se infakkarkom ta 'dawn id-dettalji kollha permezz ta 'email fuq li l-kors 152 00:07:11,210 --> 00:07:13,470 website biss fi ftit ta 'żmien jiem. 153 00:07:13,470 --> 00:07:16,610 Din se tkun iffilmjati u magħmula disponibbli ftit wara. 154 00:07:16,610 --> 00:07:19,200 Hekk jekk inti ma tistax tagħmel dan it-tnejn slot lejl, tinkwetax. 155 00:07:19,200 --> 00:07:22,270 Taqsimiet din il-ġimgħa li ġejjin se wkoll tiffoka fuq ir-reviżjoni għall-kwizz. 156 00:07:22,270 --> 00:07:25,670 Jekk taqsima tiegħek huwa nhar it-Tnejn, li huwa tabilħaqq vaganzi università, aħna se 157 00:07:25,670 --> 00:07:26,920 jibqa 'jissodisfa fit-taqsima. 158 00:07:26,920 --> 00:07:28,890 Jekk inti sempliċiment ma tistax tagħmel dan taqsima għaliex inti qed tmur 159 00:07:28,890 --> 00:07:29,860 bogħod, li l-multa. 160 00:07:29,860 --> 00:07:33,710 Jattendu Ħadd jew is-sezzjoni it-Tlieta jew tixgħel-in għat-taqsima Jason, li huwa 161 00:07:33,710 --> 00:07:35,110 disponibbli online. 162 00:07:35,110 --> 00:07:37,490 >> Allura, aktar aħbarijiet ħżiena. 163 00:07:37,490 --> 00:07:41,960 Allura skond il-sillabu, għandna lecture tnejn li jmiss. 164 00:07:41,960 --> 00:07:43,690 Iżda l-aħbar tajba - 165 00:07:43,690 --> 00:07:44,860 b'mod ċar, I jintefqu wisq ħin fuq dan. 166 00:07:44,860 --> 00:07:45,280 >> [Daħk] 167 00:07:45,280 --> 00:07:47,140 >> Aħna ser tikkanċella jmiss nhar il-Ġimgħa lectures. 168 00:07:47,140 --> 00:07:50,590 Allura li se jkun rigal għalina, sabiex inti tista 'verament ikollhom respite sabiħa 169 00:07:50,590 --> 00:07:52,990 bejn din il-ġimgħa u ġimgħatejn għalhekk. 170 00:07:52,990 --> 00:07:57,460 Allura l-ebda lectures ġimgħa d-dieħla, biss ċkejkna ftit kwizz, li għalihom inti għandek tkun 171 00:07:57,460 --> 00:07:59,030 jkollna dejjem aktar eċċitati. 172 00:07:59,030 --> 00:08:03,870 >> Mela ejja issa tagħti attenzjoni tagħna biex xi ħaġa li huwa tabilħaqq aktar viżwali 173 00:08:03,870 --> 00:08:06,990 u aktar eċċitanti u li tiffissa l-istadju għal dak li għaddej biex tkun fuq l-orizzont 174 00:08:06,990 --> 00:08:08,420 biss fi ftit ġimgħat ħin. 175 00:08:08,420 --> 00:08:12,160 Wara l-ewwel kwizz, aħna ser inbiddlu l- tiffoka ta 'settijiet problema tagħna għall-ieħor 176 00:08:12,160 --> 00:08:16,710 problema speċifika dominju, dak ta ' forensiċi jew sigurtà b'mod aktar ġenerali. 177 00:08:16,710 --> 00:08:19,550 >> Fil-fatt, it-tradizzjoni ma 'din il-problema sett huwa għalija waħda mill- 178 00:08:19,550 --> 00:08:24,850 tagħlim sħabi jew CAs li jimxu madwar kampus tieħu xi ritratti ta ' 179 00:08:24,850 --> 00:08:29,450 nies ovvji identifikabbli iżda mhux, postijiet, jew affarijiet, allura kull sena I 180 00:08:29,450 --> 00:08:34,520 b'xi jirnexxilhom aċċidentalment iħassru jew korrotti-karta tal-midja diġitali 181 00:08:34,520 --> 00:08:35,720 li l-ġewwa tal-kamera tagħna. 182 00:08:35,720 --> 00:08:36,860 Imma l-ebda big deal. 183 00:08:36,860 --> 00:08:39,200 I tista 'tmur quddiem u plagg li fis-kompjuter tiegħi. 184 00:08:39,200 --> 00:08:43,010 I tista 'tagħmel immaġini forensika ta' dan, sabiex biex jitkellmu, billi jikkopja l-żerijiet u 185 00:08:43,010 --> 00:08:46,830 dawk off ta 'dik il-karta tal-memorja, kemm jekk karta SD tagħha jew flash card kompatti jew 186 00:08:46,830 --> 00:08:48,100 tkun xi tkun int familjari magħhom. 187 00:08:48,100 --> 00:08:49,300 U allura nistgħu idejn li out. 188 00:08:49,300 --> 00:08:53,190 >> U għalhekk l-isfida li għandna quddiemna, fost oħrajn affarijiet għalik, se jkun li tikteb 189 00:08:53,190 --> 00:08:58,630 Kodiċi C li jirkupra mazz sħiħ ta ' JPEGs għalija u żvela se jkun 190 00:08:58,630 --> 00:09:00,190 dawk in-nies, postijiet, jew affarijiet. 191 00:09:00,190 --> 00:09:03,340 U aħna ser nitkellmu wkoll, din il-problema iffissati u fil-jiem li ġejjin, dwar 192 00:09:03,340 --> 00:09:04,440 grafika aktar ġenerali. 193 00:09:04,440 --> 00:09:06,140 Imxejna użati minnhom, kors, għal break out. 194 00:09:06,140 --> 00:09:09,080 Imma inti ħadthom tip ta 'tittieħed bħala fatta teżisti dawn il-kunċetti ta 'livell għoli 195 00:09:09,080 --> 00:09:10,680 ta rettangoli u ovali. 196 00:09:10,680 --> 00:09:12,450 Iżda taħt il-barnuża hemm pixels. 197 00:09:12,450 --> 00:09:14,370 U inti kellhom jibdew jaħsbu dwar dawk. 198 00:09:14,370 --> 00:09:18,800 Jew inti se għal p-set 4 taħseb dwar id-differenza bejn briks tiegħek, kif 199 00:09:18,800 --> 00:09:21,990 malajr int ballun miexja madwar l-iskrin għal break out. 200 00:09:21,990 --> 00:09:24,830 Għalhekk hemm dan il-kunċett tal- tikek fuq l-iskrin tiegħek li l- 201 00:09:24,830 --> 00:09:26,290 jidħlu fis-seħħ diġà. 202 00:09:26,290 --> 00:09:29,430 >> Issa dak li tara, għalkemm, huwa dak ikollok fuq skrin tal-kompjuter. 203 00:09:29,430 --> 00:09:33,680 Jekk inti stajt qatt jarah xi tajba jew TV ħażin, odds huma dawn pretty ħafna 204 00:09:33,680 --> 00:09:36,280 jikkura l-udjenza simili technophobes li ma verament 205 00:09:36,280 --> 00:09:37,630 jafu ħafna dwar kompjuters. 206 00:09:37,630 --> 00:09:40,840 U għalhekk huwa faċli ħafna għall-pulizija ditektif jiġifieri, tista 'inti 207 00:09:40,840 --> 00:09:41,710 tindif li sa għalija? 208 00:09:41,710 --> 00:09:42,710 Jew itejbu, id-dritt? 209 00:09:42,710 --> 00:09:45,550 Tittejjeb huwa bħall-kelma buzz fl aktar kwalunkwe juru relatata magħha. 210 00:09:45,550 --> 00:09:49,240 U r-realtà hija jekk inti tieħu ħafna stampa blurry ta 'suspett li jagħmlu 211 00:09:49,240 --> 00:09:51,620 xi ħaġa ħażina, inti ma tistax biss ittejjeb dan. 212 00:09:51,620 --> 00:09:53,080 Inti ma tistax zoom infinitament. 213 00:09:53,080 --> 00:09:56,350 Inti ma tistax tara fl-glint ta 'xi ħadd għajn li jkun ikkommetta dan 214 00:09:56,350 --> 00:09:59,860 kriminalità partikolarment, minkejja l- prevalenza ta 'dan fuq it-TV. 215 00:09:59,860 --> 00:10:04,110 >> U hekk ma 'dak ejja jimmotivaw li problema li jmiss stabbiliti ma idea fil 216 00:10:04,110 --> 00:10:05,765 xi turi li magħhom inti jista 'jkun familjari. 217 00:10:05,765 --> 00:10:06,500 >> [Daqq video] 218 00:10:06,500 --> 00:10:07,835 >> -OK. 219 00:10:07,835 --> 00:10:09,956 Issa, ejja tikseb ħarsa tajba lejn inti. 220 00:10:09,956 --> 00:10:17,060 221 00:10:17,060 --> 00:10:17,766 >> -Żomm dan. 222 00:10:17,766 --> 00:10:18,658 Mexxi l lura. 223 00:10:18,658 --> 00:10:19,550 >> -Stenna minuta. 224 00:10:19,550 --> 00:10:21,580 Mur dritt. 225 00:10:21,580 --> 00:10:21,800 >> -Hemm. 226 00:10:21,800 --> 00:10:22,690 Jiffriżaw dik. 227 00:10:22,690 --> 00:10:23,692 >> Iskrin Full. 228 00:10:23,692 --> 00:10:23,846 >> -OK. 229 00:10:23,846 --> 00:10:24,154 Jiffriżaw dik. 230 00:10:24,154 --> 00:10:25,140 >> Jagħmel iktar iebsa fuq dik, se ya? 231 00:10:25,140 --> 00:10:27,090 >> -Vector fil dwar li Guy mir-rota lura. 232 00:10:27,090 --> 00:10:29,730 >> Zoom fl-dritt hawn fuq dan il-post. 233 00:10:29,730 --> 00:10:33,700 >> -Bil-apparat dritt, il-imaged jistgħu jiġu mkabbra u inċiżiv. 234 00:10:33,700 --> 00:10:34,490 >> -X'hemm li? 235 00:10:34,490 --> 00:10:35,870 >> -Huwa ta 'titjib programm. 236 00:10:35,870 --> 00:10:36,793 >> Tista 'ċara li kwalunkwe up? 237 00:10:36,793 --> 00:10:38,560 >> -I do not know. 238 00:10:38,560 --> 00:10:39,090 Ejja ittejjeb dan. 239 00:10:39,090 --> 00:10:41,690 >> Tittejjeb-taqsima A-6. 240 00:10:41,690 --> 00:10:43,510 >> -I msaħħa l-dettall u - 241 00:10:43,510 --> 00:10:44,456 >> -I think hemm biżżejjed biex itejbu. 242 00:10:44,456 --> 00:10:45,402 Jgħadduha lill-iskrin tiegħi. 243 00:10:45,402 --> 00:10:47,300 >> Tittejjeb il-riflessjoni fl-għajnejn tagħha. 244 00:10:47,300 --> 00:10:49,330 >> -Ejja run dan permezz titjib video. 245 00:10:49,330 --> 00:10:50,340 >> -Edgar, inti tista ttejjeb dan? 246 00:10:50,340 --> 00:10:52,320 >> -Tistrieħ fuq. 247 00:10:52,320 --> 00:10:54,290 >> -I've ilhom jaħdmu fuq din ir-riflessjoni. 248 00:10:54,290 --> 00:10:55,560 >> Xi ħadd-riflessjoni tal. 249 00:10:55,560 --> 00:10:56,440 >> -Riflessjoni. 250 00:10:56,440 --> 00:10:57,940 >> -Hemm riflessjoni ta 'wiċċ tar-raġel. 251 00:10:57,940 --> 00:10:58,860 >> -Il-riflessjoni. 252 00:10:58,860 --> 00:10:59,710 >> -Hemm riflessjoni. 253 00:10:59,710 --> 00:11:00,900 >> -Zoom fl fuq il-mera. 254 00:11:00,900 --> 00:11:03,500 >> Tista 'tara riflessjoni. 255 00:11:03,500 --> 00:11:04,700 >> Tista 'jsaħħu d-dehra minn hawn? 256 00:11:04,700 --> 00:11:05,700 >> Tista 'ttejjeb lilu dritt hawn? 257 00:11:05,700 --> 00:11:06,500 >> Tista 'ittejjeb dan? 258 00:11:06,500 --> 00:11:07,380 >> Tista 'ittejjeb dan? 259 00:11:07,380 --> 00:11:08,190 >> -Nistgħu itejbu dan? 260 00:11:08,190 --> 00:11:08,940 >> Tista 'ittejjeb dan? 261 00:11:08,940 --> 00:11:10,280 >> Żomm 'fuq it-tieni, jien ser itejbu. 262 00:11:10,280 --> 00:11:11,570 >> -Zoom fl fuq il-bieb. 263 00:11:11,570 --> 00:11:12,180 >> -X10. 264 00:11:12,180 --> 00:11:13,052 >> -Zoom. 265 00:11:13,052 --> 00:11:13,197 >> [Daħk] 266 00:11:13,197 --> 00:11:14,360 >> Nimxu-pulzieri 267 00:11:14,360 --> 00:11:15,100 >> -Stenna, stop. 268 00:11:15,100 --> 00:11:15,740 >> -Stop. 269 00:11:15,740 --> 00:11:16,290 >> -Nieqaf. 270 00:11:16,290 --> 00:11:19,390 >> -Jduru madwar 75 gradi il vertikali jekk jogħġbok. 271 00:11:19,390 --> 00:11:19,886 >> [Daħk] 272 00:11:19,886 --> 00:11:24,350 >> -Stop, u lura lill-parti dwar il-bieb għal darb'oħra. 273 00:11:24,350 --> 00:11:26,330 >> Ghandek-enhancer immaġni li jistgħu Bitmap? 274 00:11:26,330 --> 00:11:28,990 >> Forsi-nistgħu nużaw il-Sen Pradeep metodu biex tara fil-twieqi. 275 00:11:28,990 --> 00:11:30,680 >> -Dan is-software huwa state of the art. 276 00:11:30,680 --> 00:11:31,676 >> -Il-valur ikona huwa off. 277 00:11:31,676 --> 00:11:34,166 >> -Bil-kombinazzjoni ta 'algoritmi. 278 00:11:34,166 --> 00:11:38,399 >> -Hu meħuda algoritmi illuminazzjoni li il-livell li jmiss u I jistgħu jużawhom biex 279 00:11:38,399 --> 00:11:38,648 jsaħħu din ritratt. 280 00:11:38,648 --> 00:11:42,050 >> -Lock fuq u tkabbar l-assi z. 281 00:11:42,050 --> 00:11:42,760 >> Tittejjeb-. 282 00:11:42,760 --> 00:11:43,060 >> Tittejjeb-. 283 00:11:43,060 --> 00:11:43,760 >> Tittejjeb-. 284 00:11:43,760 --> 00:11:45,010 >> -Jiffriżaw u jtejbu. 285 00:11:45,010 --> 00:11:47,470 286 00:11:47,470 --> 00:11:47,910 >> [Daqq video END] 287 00:11:47,910 --> 00:11:51,470 >> DAVID J. Malan: So Set Problem 5 huwa dak li jinsab quddiem hemmhekk. 288 00:11:51,470 --> 00:11:55,260 Allura aħna ser dalwaqt nikseb għarfien aħjar ta 'meta u għaliex inti tista' 289 00:11:55,260 --> 00:11:57,300 u tagħna ma jistgħu jtejbu il-mod. 290 00:11:57,300 --> 00:12:00,090 Iżda l-ewwel, ejja terġa 'lura l-attenzjoni tagħna xi wħud mill-blokki tal-bini Aħna ser 291 00:12:00,090 --> 00:12:02,250 jeħtieġu li jkunu kapaċi li tgħid li l-istorja. 292 00:12:02,250 --> 00:12:05,580 >> Allura ifakkar li fassalna din l-istampa fuq It-tnejn u xi ftit aħħar ġimgħa. 293 00:12:05,580 --> 00:12:09,970 U dan jiddeskrivi l-format ta 'affarijiet fil-memorja tal-kompjuter tiegħek meta 294 00:12:09,970 --> 00:12:11,000 taħdem xi program. 295 00:12:11,000 --> 00:12:14,310 Il-segment teknoloġija top up, recall, jirreferi għall-żerijiet attwali u dawk 296 00:12:14,310 --> 00:12:16,000 li jikkomponu programm tiegħek. 297 00:12:16,000 --> 00:12:19,340 Hemm, taħt dak, xi initialized jew data uninitialized, li tipikament 298 00:12:19,340 --> 00:12:22,910 jirreferi għal affarijiet simili kostanti jew kordi jew varjabbli globali li jkollhom 299 00:12:22,910 --> 00:12:24,200 ġew iddikjarati bil-quddiem. 300 00:12:24,200 --> 00:12:26,500 Hemm il-borġ, imma aħna ser jaslu lura għal dak fil-bit. 301 00:12:26,500 --> 00:12:27,410 >> U allura hemm il-munzell. 302 00:12:27,410 --> 00:12:30,660 Ħafna bħal munzell ta 'dixxijiet fil- kafetterija, dan huwa fejn memorja gets 303 00:12:30,660 --> 00:12:33,610 ub'saffi u ub'saffi kull meta inti tagħmel dak fi programm? 304 00:12:33,610 --> 00:12:36,380 305 00:12:36,380 --> 00:12:37,730 X'inhu l-użu munzell għall? 306 00:12:37,730 --> 00:12:39,320 >> Yeah? 307 00:12:39,320 --> 00:12:40,000 >> Sejħa tal-funzjoni. 308 00:12:40,000 --> 00:12:42,890 Kwalunkwe ħin li inti sejħa funzjoni, huwa mogħtija lill sliver ta 'memorja għall tagħha 309 00:12:42,890 --> 00:12:45,020 varjazzjonijiet lokali jew parametri tagħha. 310 00:12:45,020 --> 00:12:48,810 U pictorially, naraw li ma 'kull funzjoni suċċessivi imsejħa, meta A 311 00:12:48,810 --> 00:12:52,520 sejħiet B C sejħiet sejħiet D, huma nikseb ub'saffi fuq il-munzell. 312 00:12:52,520 --> 00:12:55,630 U fi ħdan kull wieħed minn dawk flieli ta ' memorja huwa essenzjalment ambitu uniku 313 00:12:55,630 --> 00:12:58,590 għal dik il-funzjoni, li, naturalment, huwa problematiku jekk inti tixtieq li idejn 314 00:12:58,590 --> 00:13:01,850 minn funzjoni għall-oħra Biċċa ta 'data li inti tixtieq li 315 00:13:01,850 --> 00:13:03,500 li jindiblu jew bidla. 316 00:13:03,500 --> 00:13:08,060 >> Allura dak li kien soluzzjoni tagħna biex jippermetti Funzjoni rappreżentat minn munzell wieħed 317 00:13:08,060 --> 00:13:11,390 jinkwadra li jibdlu l-memorja ġewwa ta 'ieħor frame munzell? 318 00:13:11,390 --> 00:13:14,590 Kif tagħmel dawn iż-żewġ jitkellmu ma 'xulxin? 319 00:13:14,590 --> 00:13:18,510 Hekk billi terġa 'pointers jew indirizzi, li, għal darb'oħra, biss jiddeskrivu fejn fil 320 00:13:18,510 --> 00:13:22,280 memorja, permezz ta 'proċedura speċifika numru gidma, il-partikolari 321 00:13:22,280 --> 00:13:23,830 valur jista 'jinstab. 322 00:13:23,830 --> 00:13:26,860 Allura recall aħħar darba wisq komplejna l-istorja u kkunsidrat 323 00:13:26,860 --> 00:13:28,280 pjuttost program Buggy. 324 00:13:28,280 --> 00:13:32,900 U dan il-programm huwa Buggy għal ftit raġunijiet, iżda l-aktar waħda tħassib huwa 325 00:13:32,900 --> 00:13:34,620 minħabba li ma jiċċekkjaw liema? 326 00:13:34,620 --> 00:13:39,111 327 00:13:39,111 --> 00:13:40,450 >> Yeah, jonqos biex jiċċekkja l-input. 328 00:13:40,450 --> 00:13:41,870 Jiddispjacini? 329 00:13:41,870 --> 00:13:43,880 >> Jekk huwa aktar minn 12-il karattru. 330 00:13:43,880 --> 00:13:47,260 Allura ħafna smartly, meta jċemplu memcopy, li, kif tissuġġerixxi l-isem, biss 331 00:13:47,260 --> 00:13:50,630 kopji memorja mit-tieni argument tagħha fis ewwel argument tagħha. 332 00:13:50,630 --> 00:13:54,730 It-tielet argument, ħafna smartly, huwa kkontrollati sabiex jiġi żgurat li inti ma 333 00:13:54,730 --> 00:13:59,400 aktar minn kopja, f'dan il-każ, it-tul ta 'bar, numru ta' karattri, 334 00:13:59,400 --> 00:14:03,810 fil-destinazzjoni, li hija din array C. Iżda l-problema hija li dak 335 00:14:03,810 --> 00:14:07,230 jekk C innifsu mhuwiex kbir biżżejjed biex jimmaniġġaw dan? 336 00:14:07,230 --> 00:14:09,900 Int ser kopja l-għadd ta ' bytes li inti stajt ġew mogħtija. 337 00:14:09,900 --> 00:14:13,040 Imma dak li inti fil-fatt ikollhom aktar bytes milli għandek spazju għall? 338 00:14:13,040 --> 00:14:16,770 >> Ukoll, dan il-programm ħafna foolishly biss addoċċ tipproċedi biex jieħdu kwalunkwe huwa 339 00:14:16,770 --> 00:14:20,650 partikolari, bonjour backslash 0 huwa kbir jekk string huwa qasir 340 00:14:20,650 --> 00:14:22,040 biżżejjed, bħal ħames Chars. 341 00:14:22,040 --> 00:14:26,470 Imma jekk huwa attwalment 12-il karattru jew 1,200 karattri, rajna aħħar darba 342 00:14:26,470 --> 00:14:29,380 li int biss ser kompletament jissostitwixxu memorja li 343 00:14:29,380 --> 00:14:30,470 ma jappartjenix lilek. 344 00:14:30,470 --> 00:14:34,390 U l-agħar każ, jekk inti jissostitwixxu dik porzjon aħmar hemmhekk li aħna imsejjaħ il- 345 00:14:34,390 --> 00:14:35,380 ritorn indirizz - 346 00:14:35,380 --> 00:14:38,370 dan huwa biss fejn il-kompjuter awtomatikament, għalik, wara l- 347 00:14:38,370 --> 00:14:43,130 xeni, tucks bogħod valur 32-bit li ifakkar li dak indirizz suppost 348 00:14:43,130 --> 00:14:47,080 ritorn meta foo, din il-funzjoni l-oħra, isir esekuzzjoni. 349 00:14:47,080 --> 00:14:49,320 Huwa Frak ħobż ta 'tipi li dan jirritorna. 350 00:14:49,320 --> 00:14:52,490 Jekk inti jissostitwixxu li, potenzjalment, jekk int l-Guy ħażina, jista tista 351 00:14:52,490 --> 00:14:54,750 potenzjalment tieħu f'idejha kompjuter ta 'xi ħadd. 352 00:14:54,750 --> 00:14:58,020 U inti ser aktar żgur tiġrifa huwa f'ħafna każijiet. 353 00:14:58,020 --> 00:15:01,690 >> Issa din il-problema ġiet aggravata biss kif bdejna nitkellmu memorja 354 00:15:01,690 --> 00:15:03,010 ġestjoni aktar ġenerali. 355 00:15:03,010 --> 00:15:07,150 U malloc, għall-allokazzjoni tal-memorja, huwa funzjoni li nistgħu nużaw biex jallokaw 356 00:15:07,150 --> 00:15:11,260 memorja meta ma nafux bil-quddiem li nistgħu bżonn xi. 357 00:15:11,260 --> 00:15:13,960 Għalhekk, per eżempju, jekk immur lura l-appliance hawn. 358 00:15:13,960 --> 00:15:21,010 U I jiftħu mill-aħħar hello2.c żmien, ifakkar dan il-programm hawn, li ħares 359 00:15:21,010 --> 00:15:23,500 ftit xi ħaġa bħal din, biss tliet linji - 360 00:15:23,500 --> 00:15:27,940 jiddikjara ismek, allura isem string, fuq ix-xellug ugwali getstring. 361 00:15:27,940 --> 00:15:29,690 U allura aħna ipprintjaha, isem l-utent. 362 00:15:29,690 --> 00:15:31,170 >> Allura dan kien programm sempliċi super. 363 00:15:31,170 --> 00:15:34,870 Biex ikunu ċari, let me imorru quddiem u jagħmlu bonjour-2. 364 00:15:34,870 --> 00:15:36,680 Jien ser tagħmel dot mmejla bonjour-2. 365 00:15:36,680 --> 00:15:37,750 Iddikjara l-isem tiegħek - 366 00:15:37,750 --> 00:15:38,140 David. 367 00:15:38,140 --> 00:15:38,840 Ikteb. 368 00:15:38,840 --> 00:15:39,540 Hello David. 369 00:15:39,540 --> 00:15:41,060 Jidher li jaħdem OK. 370 00:15:41,060 --> 00:15:43,140 Imma x'inhu verament għaddej taħt barnuża hawn? 371 00:15:43,140 --> 00:15:44,670 Ewwel ejja qaxxar wħud mis-saffi. 372 00:15:44,670 --> 00:15:48,380 String huwa biss sinonimu konna realizzati għal liema? 373 00:15:48,380 --> 00:15:49,110 Star Char. 374 00:15:49,110 --> 00:15:52,740 Mela ejja jagħmilha ftit aktar arcane iżda aktar teknikament korrett li din 375 00:15:52,740 --> 00:15:55,570 hija stilla char, li jfisser li isem, iva, hija varjabbli. 376 00:15:55,570 --> 00:15:59,920 Imma dak ħwienet isem huwa l-indirizz ta ' a char, li jħoss ftit stramba 377 00:15:59,920 --> 00:16:01,050 għaliex jien jkollna lura string. 378 00:16:01,050 --> 00:16:03,580 Jien jkollna lura multipli Chars mhux char. 379 00:16:03,580 --> 00:16:07,400 >> Iżda naturalment, għandek bżonn biss l-ewwel indirizz char biex tiftakar fejn l- 380 00:16:07,400 --> 00:16:08,870 sekwenza sħiħa hija għaliex għaliex? 381 00:16:08,870 --> 00:16:12,700 Kif inti figura fejn l-aħħar ta ' l-sekwenza huwa li jkunu jafu l-bidu? 382 00:16:12,700 --> 00:16:13,630 Il żero backslash. 383 00:16:13,630 --> 00:16:17,260 Allura ma dawk iż-żewġ ħjiel inti figura qabel il-bidu u t-tmiem ta ' 384 00:16:17,260 --> 00:16:20,280 kwalunkwe string huma, sakemm dawn qed iffurmat tajjeb ma 'dik null 385 00:16:20,280 --> 00:16:22,110 terminatur, li backslash żero. 386 00:16:22,110 --> 00:16:24,520 >> Iżda dan qed titlob getstring. 387 00:16:24,520 --> 00:16:28,020 U jirriżulta li getstring dan il-ħin kien tip ta ' 388 00:16:28,020 --> 00:16:28,820 qerq għalina. 389 00:16:28,820 --> 00:16:32,460 Huwa qed tagħmel dan ix-xogħol, biex tkun ċert, jkollna string mill-utent. 390 00:16:32,460 --> 00:16:34,580 Iżda fejn jgħid li memorja kienu ġejjin minn? 391 00:16:34,580 --> 00:16:38,440 Jekk immorru lura għall-istampa hawn u japplikaw id-definizzjoni minn ftit 392 00:16:38,440 --> 00:16:42,610 mument ilu, li l-munzell huwa fejn memorja tmur meta l-funzjonijiet huma msejħa, 393 00:16:42,610 --> 00:16:45,370 billi li l-loġika, meta inti sejħa getstring, u mbagħad I tip 394 00:16:45,370 --> 00:16:50,900 D-A-V-I-D Ikteb, meta hija D-A-V-I-D backslash żero maħżuna, ibbażati fuq il- 395 00:16:50,900 --> 00:16:53,480 istorja konna qalulna s'issa? 396 00:16:53,480 --> 00:16:55,190 >> Jidher li jkun il-munzell, id-dritt? 397 00:16:55,190 --> 00:16:58,120 Meta inti sejħa tikseb string ikollok ftit porzjon tal-memorja fuq il-munzell. 398 00:16:58,120 --> 00:17:01,630 Għalhekk stands għal raġuni li D-A-V-I-D backslash żero hija maħżuna 399 00:17:01,630 --> 00:17:02,770 hemm fil-ċmieni. 400 00:17:02,770 --> 00:17:07,680 Imma stenna minuta, getstring prospetti li string, biex ngħidu hekk, li jfisser 401 00:17:07,680 --> 00:17:11,700 huwa trej mill-kafetterija tittieħed off-munzell. 402 00:17:11,700 --> 00:17:14,560 U aħna qal aħħar darba li malli prospetti funzjoni, u inti tieħu li 403 00:17:14,560 --> 00:17:20,109 trej, biex ngħidu hekk, off-munzell, liema inti tista 'tassumi dwar il-fdalijiet ta' 404 00:17:20,109 --> 00:17:21,819 li l-memorja? 405 00:17:21,819 --> 00:17:25,160 I sort tal redrew minnhom bħala trade marks in kwistjoni għaliex effettivament issir 406 00:17:25,160 --> 00:17:26,250 Valuri mhux magħruf. 407 00:17:26,250 --> 00:17:29,500 Huma jistgħu jerġgħu jintużaw meta xi funzjoni li jmiss huwa msejjaħ. 408 00:17:29,500 --> 00:17:31,870 >> Fi kliem ieħor, jekk aħna jiġri li tkun ħażna - 409 00:17:31,870 --> 00:17:34,350 I ser tfassal stampa ta 'malajr hawn tal-munzell. 410 00:17:34,350 --> 00:17:38,690 Jekk aħna jiġri li tinġibed l-qiegħ ta 'segment memorja tiegħi, u aħna ser ngħidu 411 00:17:38,690 --> 00:17:42,230 li dan huwa l-post tal-memorja okkupati minn prinċipali u forsi arg c u 412 00:17:42,230 --> 00:17:46,790 arg vs u kull ħaġa oħra fil-programm, meta getstring tissejjaħ, 413 00:17:46,790 --> 00:17:51,120 preżumibbilment getstring gets blokki ta 'memorja hawn. 414 00:17:51,120 --> 00:17:53,940 U mbagħad D-A-V-I-D b'xi jispiċċa fil din il-funzjoni. 415 00:17:53,940 --> 00:17:55,320 U jien ser oversimplify. 416 00:17:55,320 --> 00:18:00,050 Imma ejja nassumu li tagħha D-A-V-I-D backslash żero. 417 00:18:00,050 --> 00:18:03,500 Allura dan ħafna bytes huma użati fil- l-qafas għall-getstring. 418 00:18:03,500 --> 00:18:08,270 >> Iżda hekk kif prospetti getstring, aħna qal aħħar darba li dan il-memorja fuq 419 00:18:08,270 --> 00:18:11,340 hawn kollha isir - Woops! - 420 00:18:11,340 --> 00:18:14,270 kollha isir mħassra b'mod effettiv. 421 00:18:14,270 --> 00:18:17,220 U aħna tista 'taħseb dan issa bħala kwistjoni marks minħabba li jaf 422 00:18:17,220 --> 00:18:18,720 x'inhu għaddej li ssir ta 'dak memorja. 423 00:18:18,720 --> 00:18:22,130 Tabilħaqq, I ħafna drabi jsejħu funzjonijiet għajr getstring. 424 00:18:22,130 --> 00:18:24,750 U malli I call xi oħra funzjoni minn getstring, forsi mhux 425 00:18:24,750 --> 00:18:28,860 dan il-programm partikolari aħna biss ħares lejn iżda xi oħrajn, żgur xi oħra 426 00:18:28,860 --> 00:18:34,180 funzjoni tista 'tispiċċa li tingħata dan il-post li jmiss fil-ċmieni. 427 00:18:34,180 --> 00:18:39,410 >> Allura ma jistax ikun li l-ħwienet getstring D-A-V-I-D fuq il-munzell minħabba I kieku 428 00:18:39,410 --> 00:18:41,040 immedjatament jitilfu l-aċċess għaliha. 429 00:18:41,040 --> 00:18:43,720 Imma nafu li getstring biss prospetti liema? 430 00:18:43,720 --> 00:18:47,220 Mhuwiex jirritornaw lejn me sitt karattri. 431 00:18:47,220 --> 00:18:51,090 X'inhu verament jirritorna ma aħna nikkonkludu aħħar darba? 432 00:18:51,090 --> 00:18:52,480 L-indirizz ta 'l-ewwel. 433 00:18:52,480 --> 00:18:56,650 Allura b'xi, meta inti imsejħa getstring, huwa allokazzjoni ta 'blokki ta' memorja għall- 434 00:18:56,650 --> 00:18:59,620 l-sekwenza li t-tip u l-utenti indirizz allura jirritornaw minnu. 435 00:18:59,620 --> 00:19:02,930 U jirriżulta li meta inti tixtieq li jiffunzjonaw talloka memorja f'dan 436 00:19:02,930 --> 00:19:08,390 mod u r-ritorn lill-persuna li tissejjaħ dik il-funzjoni, l-indirizz ta ' 437 00:19:08,390 --> 00:19:11,870 li blokki ta 'memorja, inti assolutament ma tista 'tqiegħed fil-ċmieni fil- 438 00:19:11,870 --> 00:19:14,750 qiegħ, għaliex funzjonalment huwa biss ser jsirux tiegħek ħafna 439 00:19:14,750 --> 00:19:17,800 malajr, sabiex inti tista 'probabbilment raden fejn aħna qed probabbilment se toss 440 00:19:17,800 --> 00:19:20,130 minflok, il-borġ hekk imsejħa. 441 00:19:20,130 --> 00:19:25,290 >> Allura bejn il-qiegħ ta 'l-memorja tiegħek tqassim u l-quċċata ta 'l-memorja tiegħek 442 00:19:25,290 --> 00:19:26,820 tqassim huma mazz sħiħ ta 'segmenti. 443 00:19:26,820 --> 00:19:29,270 Wieħed huwa l-munzell, u d-dritt hawn fuq huwa l-borġ. 444 00:19:29,270 --> 00:19:33,680 U borġ huwa biss blokki differenti ta ' memorja li mhuwiex użat għall-funzjonijiet 445 00:19:33,680 --> 00:19:34,770 meta jkunu qed jissejjaħ. 446 00:19:34,770 --> 00:19:38,100 Huwa użat għall-memorja fit-tul, meta inti tixtieq funzjoni waħda li grab xi 447 00:19:38,100 --> 00:19:42,700 memorja u tkun tista 'tistrieħ fuq dan mingħajr ma jitilfu l-kontroll fuqha. 448 00:19:42,700 --> 00:19:45,550 >> Issa inti tista 'forsi immedjatament tara li dan mhux 449 00:19:45,550 --> 00:19:48,060 neċessarjament disinn perfetta. 450 00:19:48,060 --> 00:19:51,350 Kif program tiegħek memorja allokat fuq l-munzell, jew kif inti sejħa aktar u 451 00:19:51,350 --> 00:19:55,540 funzjonijiet aktar, jew kif inti jallokaw memorja fuq il-borġ ma malloc off bħala 452 00:19:55,540 --> 00:20:00,690 getstring qed tagħmel, dak li b'mod ċar jidher li jkun problema inevitabbli? 453 00:20:00,690 --> 00:20:00,860 >> Dritt. 454 00:20:00,860 --> 00:20:03,150 Bħall-fatt li dawn vleġeġ huma tipponta lejn xulxin 455 00:20:03,150 --> 00:20:04,380 ma bode ukoll. 456 00:20:04,380 --> 00:20:08,630 U fil-fatt, nistgħu malajr ħafna crash programm fi kwalunkwe numru ta 'modi. 457 00:20:08,630 --> 00:20:12,050 Fil-fatt, I think we jista 'jkollhom għamlu dan aċċidentalment darba. 458 00:20:12,050 --> 00:20:14,020 Jew jekk le, ejja tagħmel dan deliberatament issa. 459 00:20:14,020 --> 00:20:21,330 Let me imorru quddiem u jiktbu super malajr programm imsejjaħ dontdothis.c. 460 00:20:21,330 --> 00:20:26,730 U issa I ser imorru fil hawn u do sharp jinkludu stdio.h. 461 00:20:26,730 --> 00:20:32,620 Ejja tiddikjara funzjoni foo jieħu ebda argumenti, li hija 462 00:20:32,620 --> 00:20:34,040 denotat kif ukoll mill nulli. 463 00:20:34,040 --> 00:20:37,830 >> U l-unika ħaġa foo se tagħmel huwa sejħa foo, li probabbilment mhuwiex il- 464 00:20:37,830 --> 00:20:39,100 idea smartest, iżda dan ikun hekk. 465 00:20:39,100 --> 00:20:40,490 Ent null prinċipali. 466 00:20:40,490 --> 00:20:45,270 Issa l-unika ħaġa prinċipali huwa għaddej tagħmel huwa sejħa foo ukoll. 467 00:20:45,270 --> 00:20:51,050 U biss għall kicks, jien se jmorru quddiem hawn u jgħidu printf "Hello minn 468 00:20:51,050 --> 00:20:52,340 foo. " 469 00:20:52,340 --> 00:20:52,890 >> OK. 470 00:20:52,890 --> 00:21:00,160 Mela jekk jien ma tagħmel xi żbalji, Kun dontdothis dot mmejla. 471 00:21:00,160 --> 00:21:01,960 U ejja tagħmel dan fil-tieqa akbar - 472 00:21:01,960 --> 00:21:03,210 dot mmejla, dontdothis. 473 00:21:03,210 --> 00:21:07,590 474 00:21:07,590 --> 00:21:08,840 Come fuq. 475 00:21:08,840 --> 00:21:10,940 476 00:21:10,940 --> 00:21:11,890 Uh oh. 477 00:21:11,890 --> 00:21:13,100 Apparentement, inti tista 'tagħmel dan. 478 00:21:13,100 --> 00:21:15,190 Kkritikat dan. 479 00:21:15,190 --> 00:21:16,190 OK. 480 00:21:16,190 --> 00:21:16,580 Stenna. 481 00:21:16,580 --> 00:21:17,370 Stand mill. 482 00:21:17,370 --> 00:21:18,270 Did we - 483 00:21:18,270 --> 00:21:20,110 Aħna ma tuża bl Kun. 484 00:21:20,110 --> 00:21:22,050 >> [Sighs] 485 00:21:22,050 --> 00:21:25,110 >> Naf imma I think we biss li imħassar. 486 00:21:25,110 --> 00:21:28,410 Uh, yeah. 487 00:21:28,410 --> 00:21:30,660 Kkritikat dan. 488 00:21:30,660 --> 00:21:32,640 Issolvi din Rob. 489 00:21:32,640 --> 00:21:34,678 What? 490 00:21:34,678 --> 00:21:35,928 Huwa sempliċi ħafna. 491 00:21:35,928 --> 00:21:43,820 492 00:21:43,820 --> 00:21:47,360 Yeah, aħna mdawrin ottimizzazzjoni off. 493 00:21:47,360 --> 00:21:48,970 OK, stand bye. 494 00:21:48,970 --> 00:21:49,950 Issa inħoss aħjar. 495 00:21:49,950 --> 00:21:51,390 OK. 496 00:21:51,390 --> 00:21:51,780 Kull dritt. 497 00:21:51,780 --> 00:21:53,430 >> Mela ejja recompile dan - 498 00:21:53,430 --> 00:21:55,880 Tagħmel inti dontdothis. 499 00:21:55,880 --> 00:22:00,090 Inti jista 'jkollok li tibdel isem dan dothis.c fi ftit mument. 500 00:22:00,090 --> 00:22:00,710 Hemm immorru. 501 00:22:00,710 --> 00:22:01,240 Grazzi. 502 00:22:01,240 --> 00:22:02,050 OK. 503 00:22:02,050 --> 00:22:05,480 Allura l-fatt li I kien istampar xi ħaġa kienet attwalment biss 504 00:22:05,480 --> 00:22:08,150 jonqos il-proċess li permezz tiegħu aħna kien laħaq dak il-punt. 505 00:22:08,150 --> 00:22:08,510 OK. 506 00:22:08,510 --> 00:22:08,870 Phew! 507 00:22:08,870 --> 00:22:11,180 >> Allura dak li huwa attwalment jiġri? 508 00:22:11,180 --> 00:22:14,440 Ir-raġuni hemm, biss bħala twarrib, huwa tagħmel xejn f'termini ta 'input u 509 00:22:14,440 --> 00:22:17,270 output għandu tendenza li jkun aktar bil-mod għaliex inti għandek tikteb karattri għall- 510 00:22:17,270 --> 00:22:18,600 screen, Kien li tiskrollja. 511 00:22:18,600 --> 00:22:21,720 Allura storja twila fil-qosor, kellhom I attwalment ġara hekk paċenzja, rridu naraw 512 00:22:21,720 --> 00:22:23,260 raw dan ir-riżultat finali wkoll. 513 00:22:23,260 --> 00:22:26,220 Issa li sibt ride ta 'l-istampar-ups, naraw dan id-dritt bogħod. 514 00:22:26,220 --> 00:22:28,410 Allura għaliex qed jiġri dan. 515 00:22:28,410 --> 00:22:31,300 Ukoll, l-ispjegazzjoni sempliċi, naturalment, hija li foo probabbilment m'għandux 516 00:22:31,300 --> 00:22:32,500 jiġu ssejjaħ lilha nnifisha. 517 00:22:32,500 --> 00:22:34,470 >> Issa f'termini ġenerali, dan huwa recursion. 518 00:22:34,470 --> 00:22:36,970 U ħsibna ftit ġimgħat ilu jirrikorri hija tajba. 519 00:22:36,970 --> 00:22:40,330 Recursion huwa b'dan il-mod maġika ta ' tesprimi lilek innifsek super konċiż. 520 00:22:40,330 --> 00:22:41,400 U hija biss xogħlijiet. 521 00:22:41,400 --> 00:22:45,060 Iżda hemm fattur ewlieni ta 'kollha ta' l-programmi rikursivi konna tkellem 522 00:22:45,060 --> 00:22:48,260 dwar u ħares lejn s'issa, li kienet li kellhom dak? 523 00:22:48,260 --> 00:22:52,610 A każ ta 'bażi, li kien xi hard coded każ li qal f'xi sitwazzjonijiet 524 00:22:52,610 --> 00:22:56,210 ma sejħa foo, li huwa b'mod ċar mhuwiex il-każ hawnhekk. 525 00:22:56,210 --> 00:22:58,920 >> Allura dak li hu verament jiġri f'termini ta 'din l-istampa? 526 00:22:58,920 --> 00:23:01,790 Ukoll, meta prinċipali jitlob foo, huwa jieħu biċċa ta 'memorja. 527 00:23:01,790 --> 00:23:04,150 Meta foo foo jitlob, jiġrilha porzjon ta 'memorja. 528 00:23:04,150 --> 00:23:06,430 Meta foo foo jitlob, jiġrilha porzjon. 529 00:23:06,430 --> 00:23:07,080 Jiġrilha porzjon. 530 00:23:07,080 --> 00:23:08,120 Jiġrilha porzjon. 531 00:23:08,120 --> 00:23:09,460 Minħabba foo hija qatt lura. 532 00:23:09,460 --> 00:23:12,160 Aħna qatt tħassir wieħed minn dawk frames mill-munzell. 533 00:23:12,160 --> 00:23:15,930 Allura aħna qed blowing permezz tal-borġ, mhux nsemmux li jaf x'iktar, u 534 00:23:15,930 --> 00:23:19,600 aħna qed taqbeż il limiti ta 'tagħna hekk imsejħa segment ta 'memorja. 535 00:23:19,600 --> 00:23:21,790 ERROR jmorru segmentazzjoni falza. 536 00:23:21,790 --> 00:23:24,110 >> Sabiex is-soluzzjoni hemm b'mod ċar ma tagħmel dan. 537 00:23:24,110 --> 00:23:28,830 Iżda l-implikazzjoni akbar huwa li, iva, hemm assolutament xi limitu, 538 00:23:28,830 --> 00:23:32,470 anki jekk mhuwiex definit sew, kif bosta funzjonijiet tista 'ċċempel fil- 539 00:23:32,470 --> 00:23:34,970 programm, kif ħafna drabi funzjoni tista 'sejħa nnifisha. 540 00:23:34,970 --> 00:23:38,430 Allura anke jekk aħna ma jippridkaw recursion kif dan il-ħaġa potenzjalment maġika a 541 00:23:38,430 --> 00:23:41,870 Koppja ta 'ġimgħat ilu għall-sigma funzjoni, u meta aħna tikseb l-informazzjoni 542 00:23:41,870 --> 00:23:45,270 istrutturi u CS50, tkun taf tara oħra applikazzjonijiet għal dan, mhuwiex 543 00:23:45,270 --> 00:23:46,500 neċessarjament l-aħjar ħaġa. 544 00:23:46,500 --> 00:23:50,070 Għaliex jekk funzjoni jitlob huwa stess, jitlob huwa stess, anki jekk ikun hemm bażi 545 00:23:50,070 --> 00:23:54,860 każ, jekk inti ma hit li każ bażi għal 1,000 sejħiet jew 10,000 sejħiet, billi 546 00:23:54,860 --> 00:23:58,800 ħin li inti jista 'jkollok jispiċċaw tal-kamra fuq l-hekk imsejħa munzell tiegħek u hit 547 00:23:58,800 --> 00:24:00,400 xi partijiet oħra ta 'memorja. 548 00:24:00,400 --> 00:24:03,950 Allura wisq huwa disinn trade-off bejn eleganti u bejn 549 00:24:03,950 --> 00:24:06,920 robustezza ta partikulari tiegħek implimentazzjoni. 550 00:24:06,920 --> 00:24:10,780 >> Allura hemm tnaqqis ieħor jew gotcha ieħor għal dak li aħna ħadthom 551 00:24:10,780 --> 00:24:11,720 qed tagħmel s'issa. 552 00:24:11,720 --> 00:24:12,980 Meta I imsejħa getstring - 553 00:24:12,980 --> 00:24:15,120 let me jmorru lura fis bonjour-2. 554 00:24:15,120 --> 00:24:18,170 Avviż li jien ssejjaħ getstring, li huwa jirritorna l-indirizz. 555 00:24:18,170 --> 00:24:20,730 U aħna jsostnu li llum indirizz hija mill-borġ. 556 00:24:20,730 --> 00:24:24,480 U issa I am istampar l- string f'dak l-indirizz. 557 00:24:24,480 --> 00:24:27,000 Imma aħna qatt ma stajt imsejjaħ il- oppost ta 'getstring. 558 00:24:27,000 --> 00:24:30,850 Imxejna qatt kellu CALLL funzjoni simili ungetstring, fejn inti idejn lura 559 00:24:30,850 --> 00:24:31,610 li l-memorja. 560 00:24:31,610 --> 00:24:33,250 Iżda franchement aħna probabbilment kellu jkun. 561 00:24:33,250 --> 00:24:37,390 Għaliex jekk inżommu titlob lill-kompjuter għall-memorja, permezz ta 'xi ħadd bħal 562 00:24:37,390 --> 00:24:40,830 getstring iżda qatt ma jagħtu lura, żgur li wisq huwa marbut li jwassal għal 563 00:24:40,830 --> 00:24:42,970 problemi li biha aħna jispiċċaw ta 'memorja. 564 00:24:42,970 --> 00:24:46,140 >> U fil-fatt, nistgħu nħarsu għal dawn problemi bl-għodda l-ġdida li l-użu 565 00:24:46,140 --> 00:24:47,640 huwa cryptic ftit għat-tip. 566 00:24:47,640 --> 00:24:50,960 Iżda let me imorru quddiem u tixrid it up fuq l-iskrin fi ftit mument. 567 00:24:50,960 --> 00:24:56,940 Jien ser jimxi 'l quddiem u run Valgrind ma parametru li l-ewwel kmand 568 00:24:56,940 --> 00:25:00,260 argument linja huwa l-isem ta 'dak il-programm bonjour-2. 569 00:25:00,260 --> 00:25:02,650 U sfortunatament huwa output huwa atrociously 570 00:25:02,650 --> 00:25:04,290 kumplessi għall-ebda raġuni tajba. 571 00:25:04,290 --> 00:25:06,280 Allura naraw dak kollu li mess. 572 00:25:06,280 --> 00:25:07,530 David huwa jiddikjara l-isem tiegħi. 573 00:25:07,530 --> 00:25:09,760 Allura dak il-programm attwalment taħdem. 574 00:25:09,760 --> 00:25:11,180 U issa irridu jiksbu dan ir-riżultat. 575 00:25:11,180 --> 00:25:13,400 >> Allura Valgrind huwa simili fl-ispirtu li GDB. 576 00:25:13,400 --> 00:25:14,950 Mhuwiex debugger per se. 577 00:25:14,950 --> 00:25:16,270 Imma hija kontrollur memorja. 578 00:25:16,270 --> 00:25:20,140 Huwa programm li se jimxu tiegħek programm u jgħidlek jekk inti tlabt a 579 00:25:20,140 --> 00:25:23,860 kompjuter għall-memorja u qatt mogħtija li lura, u b'hekk li jfisser li inti għandek 580 00:25:23,860 --> 00:25:24,570 nixxija memorja. 581 00:25:24,570 --> 00:25:26,240 U tnixxijiet memorja tendenza li tkun ħażina. 582 00:25:26,240 --> 00:25:29,120 U inti huwa l-utenti ta 'kompjuters għandhom probabbilment jinħass dan, jekk għandek 583 00:25:29,120 --> 00:25:30,300 Mac jew PC. 584 00:25:30,300 --> 00:25:33,730 Qatt użati kompjuter tiegħek għall- filwaqt u mhux fasslu f'diversi 585 00:25:33,730 --> 00:25:36,820 jum, jew inti ħadthom biss ltqajna lott ta ' programmi li jibda, u l-ħaġa kkritikat 586 00:25:36,820 --> 00:25:42,360 inaqqas biex jieqaf tħin, jew għall-inqas huwa super annoying għall-użu, minħabba 587 00:25:42,360 --> 00:25:44,350 kollox biss ltqajna super bil-mod. 588 00:25:44,350 --> 00:25:46,260 >> Issa li jista 'jkun kull numru ta' raġunijiet. 589 00:25:46,260 --> 00:25:49,600 Dan jista 'jkun loop infinita, bug kodiċi ta 'xi ħadd, jew, aktar sempliċi, 590 00:25:49,600 --> 00:25:53,250 jista 'jfisser li inti qed tuża aktar memorja, jew jippruvaw, minn tiegħek 591 00:25:53,250 --> 00:25:54,920 kompjuter attwalment għandha. 592 00:25:54,920 --> 00:25:57,770 U forsi hemm bug f'xi programm li jżommu tistaqsi għall-memorja. 593 00:25:57,770 --> 00:26:02,480 Browsers għas-snin kienu notorji għal dan, titlob għall-memorja aktar u aktar 594 00:26:02,480 --> 00:26:03,870 iżda qatt għoti lura. 595 00:26:03,870 --> 00:26:07,220 Żgur, jekk inti biss għandek finite ammont tal-memorja, inti ma tistax titlob 596 00:26:07,220 --> 00:26:09,990 infinitament ħafna drabi għall- xi wħud li l-memorja. 597 00:26:09,990 --> 00:26:13,070 >> U għalhekk dak li tara hawn, anke jekk darb'oħra output Valgrind huwa 598 00:26:13,070 --> 00:26:17,490 kumplikat bla bżonn li t'għajn lejn ewwel, dan huwa l-parti interessanti. 599 00:26:17,490 --> 00:26:18,890 Borġ - 600 00:26:18,890 --> 00:26:20,060 fl-użu fil-ħruġ. 601 00:26:20,060 --> 00:26:22,810 Allura hawnhekk kemm memorja kienet fl-użu fil-borġ fil- 602 00:26:22,810 --> 00:26:24,300 ħin tal-programm tiegħi ħareġ - 603 00:26:24,300 --> 00:26:27,280 apparentement sitt bytes fir blokka waħda. 604 00:26:27,280 --> 00:26:28,710 Hekk jien ser mewġa idejn tiegħi lejn dak blokk huwa. 605 00:26:28,710 --> 00:26:31,270 Jaħsbu li huwa biss blokki, aktar kelma teknika għall blokki. 606 00:26:31,270 --> 00:26:33,140 Iżda sitt bytes - 607 00:26:33,140 --> 00:26:36,870 liema huma l-sitt bytes li kienu għadhom fl-użu? 608 00:26:36,870 --> 00:26:37,390 >> Eżattament. 609 00:26:37,390 --> 00:26:41,520 D-A-V-I-D backslash żero, ħamsa ittra isem flimkien mal-terminatur null. 610 00:26:41,520 --> 00:26:46,350 Allura dan il-programm Valgrind ndunat li jien talab għal sitt bytes, apparentement, billi 611 00:26:46,350 --> 00:26:48,950 mod ta getstring, iżda qatt ma tawhom lura. 612 00:26:48,950 --> 00:26:52,030 U fil-fatt, dan jista 'ma jkunx hekk ovvja jekk programm tiegħi ma 'tliet 613 00:26:52,030 --> 00:26:53,590 linji, iżda huwa 300 linji. 614 00:26:53,590 --> 00:26:56,920 Allura nistgħu ngħidu jagħtu kmand ieħor argument linja li Valgrind li 615 00:26:56,920 --> 00:26:58,290 jagħmilha aktar verbose. 616 00:26:58,290 --> 00:26:59,760 Huwa ftit annoying li wieħed jiftakru. 617 00:26:59,760 --> 00:27:01,580 Imma jekk I do - 618 00:27:01,580 --> 00:27:01,930 ejja ara. 619 00:27:01,930 --> 00:27:03,540 Nixxija - 620 00:27:03,540 --> 00:27:05,030 Ma kien nixxija - 621 00:27:05,030 --> 00:27:07,580 anke I ma tiftakarx dak li huwa off-idejn. 622 00:27:07,580 --> 00:27:08,550 >> - Leakage-verifika ugwali sħiħa. 623 00:27:08,550 --> 00:27:10,180 Yep, nirringrazzjak. 624 00:27:10,180 --> 00:27:12,520 - Leakage-verifika ugwali sħiħa. 625 00:27:12,520 --> 00:27:13,800 Ikteb. 626 00:27:13,800 --> 00:27:14,940 Istess programm qed taħdem. 627 00:27:14,940 --> 00:27:16,180 Tip David darb'oħra. 628 00:27:16,180 --> 00:27:17,660 Issa nara ftit aktar dettall. 629 00:27:17,660 --> 00:27:20,890 Iżda taħt is-sommarju borġ, li hija identika għal erba - ah, 630 00:27:20,890 --> 00:27:22,120 dan huwa tip ta 'sbieħ. 631 00:27:22,120 --> 00:27:25,460 Issa Valgrind huwa attwalment tfittex ftit diffiċli fil-kodiċi tiegħi. 632 00:27:25,460 --> 00:27:29,580 U huwa qal li, apparentement, malloc fil-linja - 633 00:27:29,580 --> 00:27:30,580 aħna zoom out. 634 00:27:30,580 --> 00:27:31,980 Fil line - 635 00:27:31,980 --> 00:27:32,930 ma naraw liema linja huwa. 636 00:27:32,930 --> 00:27:35,110 Iżda malloc hija l-ewwel ħati. 637 00:27:35,110 --> 00:27:38,630 Hemm blog malloc. 638 00:27:38,630 --> 00:27:39,810 >> Kull dritt? 639 00:27:39,810 --> 00:27:40,450 OK, l-ebda. 640 00:27:40,450 --> 00:27:40,940 Dritt? 641 00:27:40,940 --> 00:27:42,520 I imsejħa getstring. 642 00:27:42,520 --> 00:27:44,460 getstring apparentement jitlob malloc. 643 00:27:44,460 --> 00:27:47,800 Allura dak linja tal-kodiċi hija apparentement tort talli 644 00:27:47,800 --> 00:27:49,050 allokat dan il-memorja? 645 00:27:49,050 --> 00:27:51,560 646 00:27:51,560 --> 00:27:55,540 Ejja nassumu li kull min kiteb malloc kien madwar twil biżżejjed li huwa 647 00:27:55,540 --> 00:27:56,390 mhux tort tagħhom. 648 00:27:56,390 --> 00:27:57,520 Allura huwa probabbilment minjiera. 649 00:27:57,520 --> 00:28:02,000 getstring fil cs50.c - b'tali mod li l- fajl x'imkien fuq il-kompjuter - 650 00:28:02,000 --> 00:28:05,210 fil-linja 286 jidher li jkun il-ħati. 651 00:28:05,210 --> 00:28:08,140 Issa ejja nassumu li cs50 kien madwar għal ammont deċenti ta 'żmien, sabiex 652 00:28:08,140 --> 00:28:09,720 aħna wisq huma infallibbli. 653 00:28:09,720 --> 00:28:14,080 U dan huwa probabbilment mhux getstring li l-bug tinsab, iżda pjuttost fil- 654 00:28:14,080 --> 00:28:17,810 linja bonjour-2.c 18. 655 00:28:17,810 --> 00:28:20,670 >> Mela ejja tagħti ħarsa lejn dak li linja 18 kien. 656 00:28:20,670 --> 00:28:21,130 Oh. 657 00:28:21,130 --> 00:28:27,130 B'xi din il-linja mhux neċessarjament buggy, per se, iżda huwa r-raġuni 658 00:28:27,130 --> 00:28:28,630 wara li l-memorja tnixxija. 659 00:28:28,630 --> 00:28:32,140 Allura super sempliċi, dak li kieku intuwittivament jkun is-soluzzjoni hawn? 660 00:28:32,140 --> 00:28:34,710 Jekk aħna qed tistaqsi għall-memorja, qatt ma kienu tagħtiha lura, u li jidher li jkun 661 00:28:34,710 --> 00:28:37,940 problema għaliex matul iż-żmien tal-kompjuter tiegħi tista jispiċċaw ta 'memorja, jista bil-mod 662 00:28:37,940 --> 00:28:42,110 isfel, affarijiet ħżiena jista 'jiġri, ukoll, x'hemm-soluzzjoni intuwittivi sempliċi? 663 00:28:42,110 --> 00:28:43,140 Just tagħtiha lura. 664 00:28:43,140 --> 00:28:44,770 >> Kif inti tillibera li l-memorja? 665 00:28:44,770 --> 00:28:49,970 Ukoll, Thankfully huwa pjuttost sempliċi li biss jgħidu isem ħielsa. 666 00:28:49,970 --> 00:28:51,260 U aħna stajt qatt sar qabel dan. 667 00:28:51,260 --> 00:28:55,890 Iżda int tista 'essenzjalment taħseb ħielsa kif l-oppost ta malloc. 668 00:28:55,890 --> 00:28:58,030 ħieles huwa l-oppost ta ' allokazzjoni memorja. 669 00:28:58,030 --> 00:28:59,540 Allura issa let me recompile dan. 670 00:28:59,540 --> 00:29:02,050 Kun bonjour-2. 671 00:29:02,050 --> 00:29:04,620 Let me run mill-ġdid. bonjour-2 David. 672 00:29:04,620 --> 00:29:07,290 Għalhekk jidher li jaħdem fil- bl-istess mod. 673 00:29:07,290 --> 00:29:11,180 Imma jekk immur lura għall Valgrind u jerġa 'jsir l-istess kmand ġodda tiegħi 674 00:29:11,180 --> 00:29:14,720 miġbura programm, ittajpjar fl-isem tiegħi bħal qabel - 675 00:29:14,720 --> 00:29:15,370 sbieħ. 676 00:29:15,370 --> 00:29:16,760 Sommarju borġ - 677 00:29:16,760 --> 00:29:17,740 fl-użu fil-ħruġ - 678 00:29:17,740 --> 00:29:19,370 żero bytes fi blokki żero. 679 00:29:19,370 --> 00:29:21,840 U dan huwa super sbieħ, kollha blokki borġ kienu meħlusa. 680 00:29:21,840 --> 00:29:23,480 Ebda tnixxijiet huma possibbli. 681 00:29:23,480 --> 00:29:27,200 >> Allura ġejjin up, mhux ma Problem Set 4, iżda ma Problema Set 5, l-forensika 682 00:29:27,200 --> 00:29:30,740 u 'l quddiem, dan ukoll se ssir miżura tal-korrettezza tal tiegħek 683 00:29:30,740 --> 00:29:33,630 programm, jekk jew le inti għandek jew ma jkollhomx tnixxijiet memorja. 684 00:29:33,630 --> 00:29:36,900 Iżda Thankfully, mhux biss tista 'raġuni permezz tagħhom intuwittivament, li 685 00:29:36,900 --> 00:29:40,430 hija, forsi, faċli għall-programmi żgħar iżda diffiċli għal programmi akbar, 686 00:29:40,430 --> 00:29:43,860 Valgrind, għal dawk il-programmi akbar, jistgħu jgħinuk tidentifika 687 00:29:43,860 --> 00:29:45,360 il-problema partikolari. 688 00:29:45,360 --> 00:29:47,500 >> Iżda hemm problema waħda oħra li jistgħu jinqalgħu. 689 00:29:47,500 --> 00:29:51,245 Let me tiftaħ dan il-fajl hawn, li hija, għal darb'oħra, eżempju kemmxejn sempliċi. 690 00:29:51,245 --> 00:29:53,760 Imma ejja tiffoka fuq dak dan il-programm ma. 691 00:29:53,760 --> 00:29:55,190 Din tissejjaħ memory.c. 692 00:29:55,190 --> 00:29:58,380 Aħna ser post dan illum aktar tard fil- zip ta 'source code tal-lum. 693 00:29:58,380 --> 00:30:01,610 U tinnota li għandi funzjoni msejħa f li jieħu l-ebda argumenti u 694 00:30:01,610 --> 00:30:02,800 prospetti xejn. 695 00:30:02,800 --> 00:30:07,240 F'konformità 20, jien apparentement tiddikjara pointer għal int u ssejjaħ dan x. 696 00:30:07,240 --> 00:30:09,570 Jien tassenja huwa r-ritorn valur tal malloc. 697 00:30:09,570 --> 00:30:14,590 U biss li tkun ċara, kemm bytes am I probabbilment jkollna lura minn malloc 698 00:30:14,590 --> 00:30:17,080 f'din is-sitwazzjoni? 699 00:30:17,080 --> 00:30:18,040 >> Probabbilment 40. 700 00:30:18,040 --> 00:30:18,840 Fejn tista 'tikseb dan minn? 701 00:30:18,840 --> 00:30:22,410 Ukoll, jekk inti recall li int spiss 4 bytes, għall-inqas huwa fl- 702 00:30:22,410 --> 00:30:25,110 appliance, 10 darbiet 4 hija ovvjament 40. 703 00:30:25,110 --> 00:30:28,920 Allura malloc huwa jirritorna l-indirizz ta ' blokki ta 'memorja u l-ħażna li 704 00:30:28,920 --> 00:30:30,800 jindirizzaw finalment x. 705 00:30:30,800 --> 00:30:32,570 Allura biex tkun ċara, liema allura qed jiġri? 706 00:30:32,570 --> 00:30:34,990 Well, let me jaqilbu lura li stampa tagħna hawn. 707 00:30:34,990 --> 00:30:38,150 Let me mhux biss jiġbed l-qiegħ tal tiegħi memorja tal-kompjuter, let me imorru quddiem u 708 00:30:38,150 --> 00:30:42,990 jiġbed l-rettangolu kollu li jirrappreżenta kollha RAM tiegħi. 709 00:30:42,990 --> 00:30:44,790 >> Aħna ser ngħidu li l-munzell huwa fuq il-qiegħ. 710 00:30:44,790 --> 00:30:47,010 U hemm segment test id-dejta uninitialized. 711 00:30:47,010 --> 00:30:49,880 Imma jien biss se astratt dawk affarijiet oħra bogħod bħala dot, dot dot. 712 00:30:49,880 --> 00:30:53,470 Jien biss ser jirreferi għal dan bħala l-borġ fil-quċċata. 713 00:30:53,470 --> 00:30:57,070 U mbagħad fil-qiegħ ta 'din l-istampa, biex jirrappreżentaw prinċipali, jien ser 714 00:30:57,070 --> 00:30:59,880 biex tagħtiha memorja flieli fuq il-munzell. 715 00:30:59,880 --> 00:31:03,150 Għal f, jien ser tagħtiha porzjon tal-memorja fuq il-munzell. 716 00:31:03,150 --> 00:31:05,140 Issa, I ltqajna biex tikkonsulta tiegħi kodiċi tas-sors mill-ġdid. 717 00:31:05,140 --> 00:31:07,170 X'inhuma l-varjazzjonijiet lokali għall ewlieni? 718 00:31:07,170 --> 00:31:10,710 Apparentement xejn, sabiex dak il-porzjon huwa effettivament vojta jew lanqas bħala kbar 719 00:31:10,710 --> 00:31:11,600 kif stajt irtirat hu. 720 00:31:11,600 --> 00:31:15,730 Iżda fil-f, I jkollhom varjabbli lokali, li tissejjaħ x. 721 00:31:15,730 --> 00:31:20,410 Hekk jien ser jimxi 'l quddiem u jagħti f blokki ta 'memorja, ssejjaħ dan x. 722 00:31:20,410 --> 00:31:24,680 >> U issa malloc 10 darbiet 4, Allura malloc 40, fejn jgħid li 723 00:31:24,680 --> 00:31:25,430 memorja ġejjin minn? 724 00:31:25,430 --> 00:31:27,530 Imxejna ma tfasslux stampa bħal dan qabel. 725 00:31:27,530 --> 00:31:31,140 Imma ejja nassumu li huwa effettiv ġejjin minn hawn, hekk wieħed, 726 00:31:31,140 --> 00:31:33,170 tnejn, tlieta, erba ', ħames. 727 00:31:33,170 --> 00:31:34,680 U issa I bżonn 40 ta 'dawn. 728 00:31:34,680 --> 00:31:37,540 So I ser biss tagħmel dot, dot, dot li tissuġġerixxi li hemm saħansitra aktar memorja 729 00:31:37,540 --> 00:31:39,350 ġejjin lura mill-borġ. 730 00:31:39,350 --> 00:31:40,710 Issa x'inhu l-indirizz? 731 00:31:40,710 --> 00:31:42,620 Ejja jagħżlu arbitrarja tagħna tindirizza kif dejjem - 732 00:31:42,620 --> 00:31:46,310 Ox123, anki jekk huwa probabbilment se li hija xi ħaġa kompletament differenti. 733 00:31:46,310 --> 00:31:50,420 Dik hija l-indirizz tal-ewwel byte fl memorja li jien tistaqsi malloc għall. 734 00:31:50,420 --> 00:31:53,630 >> Għalhekk fil-qosor, linja darba 20 tesegwixxi, dak li hu litteralment 735 00:31:53,630 --> 00:31:57,170 maħżuna ġewwa ta 'x hawn? 736 00:31:57,170 --> 00:31:58,730 Ox123. 737 00:31:58,730 --> 00:32:00,370 Ox123. 738 00:32:00,370 --> 00:32:01,550 U l-OX huwa uninteresting. 739 00:32:01,550 --> 00:32:03,200 Dan ifisser biss Heres numru hexadeċimali. 740 00:32:03,200 --> 00:32:06,490 Imma x'hemm importanti hu li dak li stajt maħżen fl x, li huwa varjabbli lokali. 741 00:32:06,490 --> 00:32:10,260 Iżda tip tad-data tiegħu, għal darb'oħra, huwa indirizz ta 'int. 742 00:32:10,260 --> 00:32:12,710 Well, jien ser taħżen Ox123. 743 00:32:12,710 --> 00:32:16,610 Iżda għal darb'oħra, jekk dan huwa ftit wisq komplikati żżejjed, jekk I iscroll 744 00:32:16,610 --> 00:32:21,490 lura, nistgħu astratt dan bogħod pjuttost raġonevolment u biss jgħidu li x hija 745 00:32:21,490 --> 00:32:23,910 pointer għal dak blokki ta 'memorja. 746 00:32:23,910 --> 00:32:24,070 >> OK. 747 00:32:24,070 --> 00:32:26,230 Issa l-kwistjoni fil-idejn huwa dan li ġej - 748 00:32:26,230 --> 00:32:29,910 linja 21, jirriżulta, huwa Buggy. 749 00:32:29,910 --> 00:32:31,160 Għaliex? 750 00:32:31,160 --> 00:32:34,890 751 00:32:34,890 --> 00:32:36,930 >> Jiddispjacini? 752 00:32:36,930 --> 00:32:38,640 Huwa ma jkollu - 753 00:32:38,640 --> 00:32:40,390 jgħidu li darba aktar. 754 00:32:40,390 --> 00:32:41,240 Ukoll, ma ħielsa. 755 00:32:41,240 --> 00:32:42,350 Allura dak tat-tieni imma. 756 00:32:42,350 --> 00:32:45,000 Allura hemm waħda oħra biss, speċifikament fil-linja 21. 757 00:32:45,000 --> 00:32:49,480 758 00:32:49,480 --> 00:32:50,040 >> Eżattament. 759 00:32:50,040 --> 00:32:54,980 Din il-linja sempliċi ta 'kodiċi hija biss overflow buffer, overrun buffer. 760 00:32:54,980 --> 00:32:57,050 A buffer ifisser biss blokki ta 'memorja. 761 00:32:57,050 --> 00:33:01,520 Imma dak blokki ta 'memorja huwa ta' daqs 10, 10 interi, li jfisser li jekk irridu 762 00:33:01,520 --> 00:33:05,350 indiċi ġewwa fiha billi tuża z-zokkor sintattika ta 'notazzjoni array, il-kwadru 763 00:33:05,350 --> 00:33:09,220 parentesi, ikollok aċċess għall- x bracket 0 x 1 x bracket, 764 00:33:09,220 --> 00:33:10,390 bracket dot, dot, dot. 765 00:33:10,390 --> 00:33:13,270 x bracket 9 hija l-akbar wieħed. 766 00:33:13,270 --> 00:33:17,680 Mela jekk nagħmel x bracket 10, fejn Jien attwalment għaddejjin fil-memorja? 767 00:33:17,680 --> 00:33:19,120 >> Ukoll, jekk ikolli 10 int - 768 00:33:19,120 --> 00:33:21,070 ejja fil-fatt jiġbed kollha minn dawn hawn. 769 00:33:21,070 --> 00:33:22,700 Allura li kienet l-ewwel ħamsa. 770 00:33:22,700 --> 00:33:24,660 Hawn il-ħames ints oħra. 771 00:33:24,660 --> 00:33:29,580 Allura x bracket 0 huwa hawnhekk. x bracket 1 huwa hawn. x bracket 9 huwa hawnhekk. x bracket 772 00:33:29,580 --> 00:33:37,960 10 huwa hawnhekk, li jfisser I am javżak, fil-linja 21, il-kompjuter li jpoġġi l- 773 00:33:37,960 --> 00:33:39,400 Numru fejn? 774 00:33:39,400 --> 00:33:42,010 In-numru 0 fejn? 775 00:33:42,010 --> 00:33:43,380 Ukoll, huwa 0, iva. 776 00:33:43,380 --> 00:33:45,460 Iżda biss l-fatt li 0 tagħha huwa tip ta 'koinċidenza. 777 00:33:45,460 --> 00:33:47,140 Dan jista 'jkun in-numru 50, għal kulħadd aħna kura. 778 00:33:47,140 --> 00:33:50,480 Iżda aħna qed tipprova tqiegħed lilha fuq x bracket 10, li huwa fejn dan 779 00:33:50,480 --> 00:33:53,700 trade mark in kwistjoni huwa mfassal, li mhix ħaġa tajba. 780 00:33:53,700 --> 00:33:57,070 Dan il-programm jista 'tajjeb ħafna crash bħala riżultat. 781 00:33:57,070 --> 00:33:59,400 >> Issa, ejja imorru quddiem u ara jekk dan huwa, tabilħaqq, dak li jiġri. 782 00:33:59,400 --> 00:34:02,600 Jagħmlu memorja, peress li l-fajl huwa msejjaħ memory.c. 783 00:34:02,600 --> 00:34:05,950 Ejja imorru quddiem u run il-memorja programm. 784 00:34:05,950 --> 00:34:08,239 Allura aħna ltqajna xxurtjati, fil-fatt, jidher. 785 00:34:08,239 --> 00:34:09,340 Sirna xxurtjati. 786 00:34:09,340 --> 00:34:11,060 Imma ejja ara jekk irridu issa run Valgrind. 787 00:34:11,060 --> 00:34:14,170 Ewwel daqqa t'għajn, programm tiegħi jista jidhru li huma perfettament korretta. 788 00:34:14,170 --> 00:34:18,010 Iżda let me run Valgrind mal- - Leakage-verifika ugwali sħiħa fuq il-memorja. 789 00:34:18,010 --> 00:34:20,110 >> U issa meta I run dan - 790 00:34:20,110 --> 00:34:21,030 interessanti. 791 00:34:21,030 --> 00:34:26,800 Invalid jiktbu ta 'daqs 4 fi linja 21 ta memory.c. 792 00:34:26,800 --> 00:34:29,284 Linja 21 ta memory.c huwa li wieħed? 793 00:34:29,284 --> 00:34:30,340 Oh, interessanti. 794 00:34:30,340 --> 00:34:31,080 Imma stenna. 795 00:34:31,080 --> 00:34:32,389 Daqs 4, dak hu li jirreferu għall? 796 00:34:32,389 --> 00:34:34,969 I biss ma wieħed jikteb, iżda huwa ta 'daqs 4. 797 00:34:34,969 --> 00:34:36,889 Għaliex huwa 4? 798 00:34:36,889 --> 00:34:39,280 Huwa għaliex dan huwa int, li huwa, għal darb'oħra, erba bytes. 799 00:34:39,280 --> 00:34:42,510 Allura Valgrind sabet bug li I, glancing fil-kodiċi tiegħi, ma. 800 00:34:42,510 --> 00:34:45,040 U forsi TF tiegħek kieku jew ma. 801 00:34:45,040 --> 00:34:48,469 What Iżda Valgrind għal dak żgur sabet ħadna żball hemm, anke 802 00:34:48,469 --> 00:34:52,719 jekk aħna ltqajna xxurtjati, u l-kompjuter iddeċieda, eh, jien mhux ser crash 803 00:34:52,719 --> 00:34:57,470 sempliċiment għaliex inti mimsus byte wieħed, waħda jiswew int ta 'memorja li inti ma 804 00:34:57,470 --> 00:34:58,550 attwalment stess. 805 00:34:58,550 --> 00:35:00,380 >> Well, x'iktar huwa Buggy hawn. 806 00:35:00,380 --> 00:35:01,180 Indirizz - 807 00:35:01,180 --> 00:35:03,190 dan huwa indirizz crazy tfittex f'hexadecimal. 808 00:35:03,190 --> 00:35:06,890 Dan ifisser biss x'imkien fil-borġ huwa żero bytes wara blokk ta 'daqs 40 809 00:35:06,890 --> 00:35:07,620 huwa allokat. 810 00:35:07,620 --> 00:35:10,610 Let me zoom out hawn u ara jekk dan huwa xi ftit aktar utli. 811 00:35:10,610 --> 00:35:11,410 Interessanti. 812 00:35:11,410 --> 00:35:15,600 40 bytes huma definittivament mitlufa fir-rekord telf 1 ta '1. 813 00:35:15,600 --> 00:35:17,840 Għal darb'oħra, kliem aktar milli huwa utli hawn. 814 00:35:17,840 --> 00:35:21,350 Iżda bbażata fuq il-linji indikati, fejn għandi probabbilment tiffoka tiegħi 815 00:35:21,350 --> 00:35:24,070 attenzjoni għall bug ieħor? 816 00:35:24,070 --> 00:35:26,570 Qisu linja 20 ta memory.c. 817 00:35:26,570 --> 00:35:30,990 >> Hekk jekk immorru lura għal-linja 20, dak l- wieħed li inti identifikat aktar kmieni. 818 00:35:30,990 --> 00:35:33,030 U huwa mhux neċessarjament buggy. 819 00:35:33,030 --> 00:35:35,160 Imma aħna għandna dan maqluba effetti tiegħu. 820 00:35:35,160 --> 00:35:38,790 Allura kif nista korretta mill-inqas wieħed minn dawk l-iżbalji? 821 00:35:38,790 --> 00:35:42,240 Liema jista 'nagħmel wara linja 21? 822 00:35:42,240 --> 00:35:47,110 I jistgħu jagħmlu mingħajr x, għalhekk hija li jagħtu lura li l-memorja. 823 00:35:47,110 --> 00:35:49,230 U kif nista jiffissaw dan bug? 824 00:35:49,230 --> 00:35:52,120 I għandek definittivament tmur aktar il-bogħod minn 0. 825 00:35:52,120 --> 00:35:53,670 So let me jippruvaw u jerġa 'jsir dan. 826 00:35:53,670 --> 00:35:56,080 Jiddispjacini, definittivament jmorru aktar il-bogħod minn 9. 827 00:35:56,080 --> 00:35:57,510 Għamla memorja. 828 00:35:57,510 --> 00:36:00,650 Let me terġa Valgrind fil-tieqa akbar. 829 00:36:00,650 --> 00:36:01,580 U issa tfittex. 830 00:36:01,580 --> 00:36:02,250 Nizza. 831 00:36:02,250 --> 00:36:03,270 Kollha blokki borġ kienu meħlusa. 832 00:36:03,270 --> 00:36:04,270 Ebda tnixxijiet huma possibbli. 833 00:36:04,270 --> 00:36:07,520 U sa hawn fuq hawn, hemm l-ebda referenza kwalunkwe aktar tad-dritt invalida. 834 00:36:07,520 --> 00:36:09,820 >> Just biex jiksbu greedy, u ejja ara jekk demostrazzjoni oħra 835 00:36:09,820 --> 00:36:11,050 ma jmurx kif maħsub - 836 00:36:11,050 --> 00:36:12,560 I ma jiksbu xxurtjati mument ilu. 837 00:36:12,560 --> 00:36:15,530 U l-fatt li dan huwa 0 huwa forsi qarrieqa bla bżonn. 838 00:36:15,530 --> 00:36:20,650 Ejja biss tagħmel 50, kemmxejn arbitrarja numru, għamla memorja memorja dot mmejla - 839 00:36:20,650 --> 00:36:21,410 xorta jiksbu xxurtjati. 840 00:36:21,410 --> 00:36:22,510 Xejn s jiġġarrfu. 841 00:36:22,510 --> 00:36:26,150 Ejja ngħidu I biss tagħmel xi ħaġa verament foolish, u I do 100. 842 00:36:26,150 --> 00:36:30,360 Let me remake memorja, dot mmejla memorja - 843 00:36:30,360 --> 00:36:31,075 ltqajna xxurtjati darb'oħra. 844 00:36:31,075 --> 00:36:32,800 Kif madwar 1,000? 845 00:36:32,800 --> 00:36:35,370 ints lil hinn, bejn wieħed u ieħor, fejn I għandhom ikunu? 846 00:36:35,370 --> 00:36:37,410 Għamla memorja - 847 00:36:37,410 --> 00:36:38,570 kkritikat dan. 848 00:36:38,570 --> 00:36:39,920 >> [Daħk] 849 00:36:39,920 --> 00:36:41,270 >> OK. 850 00:36:41,270 --> 00:36:43,920 Ejja ma mess madwar aktar. 851 00:36:43,920 --> 00:36:45,120 Terġa 'ssir memorja. 852 00:36:45,120 --> 00:36:45,840 Hemm immorru. 853 00:36:45,840 --> 00:36:46,410 Kull dritt. 854 00:36:46,410 --> 00:36:52,500 Allura apparentement inti indiċi 100.000 ints lil hinn fejn għandek ilhom 855 00:36:52,500 --> 00:36:54,410 memorja, affarijiet ħżiena jiġri. 856 00:36:54,410 --> 00:36:56,430 Allura dan huwa ovvjament mhux a hard, regola fast. 857 00:36:56,430 --> 00:36:58,190 I kien tip ta 'użu ta' prova u żball biex naslu s'hemm. 858 00:36:58,190 --> 00:37:02,230 Iżda dan huwa minħabba, storja twila fil-qosor, memorja tal-kompjuter tiegħek huwa maqsum ukoll 859 00:37:02,230 --> 00:37:03,580 fis-dawn l-affarijiet imsejħa segmenti. 860 00:37:03,580 --> 00:37:07,260 U xi kultant, il-kompjuter fil-fatt tak ftit aktar memorja 861 00:37:07,260 --> 00:37:08,400 milli inti titlob. 862 00:37:08,400 --> 00:37:12,170 Iżda għall-effiċjenza, huwa biss aktar faċli biex tikseb aktar memorja, iżda biss jgħidlek 863 00:37:12,170 --> 00:37:13,780 li int jkollna porzjon ta 'dan. 864 00:37:13,780 --> 00:37:16,370 >> U jekk ikollok xortik tajba kultant, Għalhekk, inti tista 'tkun tista' tmiss 865 00:37:16,370 --> 00:37:17,795 memorja li ma jappartjenix lilek. 866 00:37:17,795 --> 00:37:21,860 Inti għandek l-ebda garanzija li dak il-valur inti tpoġġi hemm se jibqgħu hemm, għaliex 867 00:37:21,860 --> 00:37:25,080 il-kompjuter xorta jaħseb mhuwiex tiegħek, iżda mhux neċessarjament għaddej 868 00:37:25,080 --> 00:37:29,910 li tolqot taqsima oħra ta 'memorja fil- kompjuter u jinduċi żball bħal 869 00:37:29,910 --> 00:37:31,710 dan wieħed hawn. 870 00:37:31,710 --> 00:37:32,060 Kull dritt. 871 00:37:32,060 --> 00:37:37,240 Kwalunkwe mistoqsijiet imbagħad fuq memorja? 872 00:37:37,240 --> 00:37:37,590 >> Kull dritt. 873 00:37:37,590 --> 00:37:40,610 Ejja tagħti ħarsa hawn, imbagħad, fil- xi ħaġa li aħna kont qed tieħu għal 874 00:37:40,610 --> 00:37:48,361 mogħti għal żmien pjuttost twil, li Huwa f'dan inkartament imsejjaħ cs50.h. 875 00:37:48,361 --> 00:37:49,420 Allura dan huwa fajl. 876 00:37:49,420 --> 00:37:51,130 Dawn huma biss mazz sħiħ ta 'kummenti up top. 877 00:37:51,130 --> 00:37:53,900 U inti jista 'jkollok ħares lejn dan jekk inti poked madwar fuq l-appliance. 878 00:37:53,900 --> 00:37:57,000 Iżda jirriżulta li l-ħin kollu, meta aħna użati biex jużaw string bħala 879 00:37:57,000 --> 00:38:01,130 sinonimu, il-mezzi li bihom aħna ddikjarat li sinonimu kien ma 'dan 880 00:38:01,130 --> 00:38:03,990 keyword typedef, għal definizzjoni tip. 881 00:38:03,990 --> 00:38:07,500 U aħna qed essenzjalment tgħid, tagħmel string sinonimu għal star char. 882 00:38:07,500 --> 00:38:11,190 Li l-mezzi li bihom il-munzell maħluqa dawn ir-roti ta 'taħriġ magħrufa bħala 883 00:38:11,190 --> 00:38:12,040 l-sekwenza. 884 00:38:12,040 --> 00:38:14,830 >> Issa hawn biss prototip għall getchar. 885 00:38:14,830 --> 00:38:17,350 Aħna tista raw qabel, iżda li tabilħaqq dak li tagħmel. getchar 886 00:38:17,350 --> 00:38:19,070 jieħu ebda argumenti, jirritorna char. 887 00:38:19,070 --> 00:38:21,340 getdouble jieħu ebda argumenti, jirritorna doppja. 888 00:38:21,340 --> 00:38:24,440 getfloat jieħu ebda argumenti, prospetti a float, u oħrajn. 889 00:38:24,440 --> 00:38:27,270 getint huwa fil hawn. getlonglong huwa fil hawn. 890 00:38:27,270 --> 00:38:28,820 U getstring huwa fil hawn. 891 00:38:28,820 --> 00:38:29,420 U li hu. 892 00:38:29,420 --> 00:38:33,080 Din il-linja vjola huwa Preprocessor ieħor Direttiva minħabba 893 00:38:33,080 --> 00:38:35,550 hashtag fil-bidu ta 'dan. 894 00:38:35,550 --> 00:38:35,870 >> Kull dritt. 895 00:38:35,870 --> 00:38:38,380 Allura issa let me jmorru fil cs50.c. 896 00:38:38,380 --> 00:38:40,400 U aħna mhux se jitkellmu twil wisq dwar dan. 897 00:38:40,400 --> 00:38:43,280 Iżda biex jagħtuk idea ta 'x'hemm ilu għaddej dan kollu 898 00:38:43,280 --> 00:38:46,434 ħin, let me go għal - 899 00:38:46,434 --> 00:38:48,250 ejja do getchar. 900 00:38:48,250 --> 00:38:51,050 Allura getchar huwa l-aktar kummenti. 901 00:38:51,050 --> 00:38:52,060 Iżda jidher qisu dan. 902 00:38:52,060 --> 00:38:54,800 Allura dan huwa l-funzjoni effettiva getchar li aħna kont qed 903 00:38:54,800 --> 00:38:56,055 tieħu għall mogħtija jeżisti. 904 00:38:56,055 --> 00:38:59,370 U anke jekk aħna ma jużaw dan wieħed li spiss, jekk qatt, huwa inqas 905 00:38:59,370 --> 00:39:00,470 relattivament sempliċi. 906 00:39:00,470 --> 00:39:02,580 Allura huwa min jieħu ħarsa lejn hawn. 907 00:39:02,580 --> 00:39:06,540 >> Allura getchar għandha loop infinita, deliberatament hekk apparentement. 908 00:39:06,540 --> 00:39:10,050 Imbagħad jitlob - u dan huwa tip ta ' użu mill-ġdid sbieħ ta 'kodiċi aħna lilna nfusna kiteb. 909 00:39:10,050 --> 00:39:11,220 Huwa jappella getstring. 910 00:39:11,220 --> 00:39:12,460 Minħabba dak ma jfissirx li tikseb char? 911 00:39:12,460 --> 00:39:14,730 Ukoll, inti tista 'ukoll tipprova tikseb linja kollha ta 'test mill-utent u 912 00:39:14,730 --> 00:39:16,940 imbagħad biss ħarsa lejn wieħed ta 'dawk il-karattri. 913 00:39:16,940 --> 00:39:19,170 F'konformità 60, hawn ftit daqsxejn ta 'verifika sanità. 914 00:39:19,170 --> 00:39:21,610 Jekk getstring lura null, ejja ma tipproċedi. 915 00:39:21,610 --> 00:39:22,820 Xi ħaġa li marret ħażin. 916 00:39:22,820 --> 00:39:28,120 >> Issa dan huwa kemmxejn tedjanti iżda konvenzjonali C. char max probabbilment 917 00:39:28,120 --> 00:39:29,960 jirrappreżenta biss dak li ibbażata fuq l-isem tagħha? 918 00:39:29,960 --> 00:39:31,670 Huwa kostanti. 919 00:39:31,670 --> 00:39:36,040 Huwa bħall-valur numeriku tal- akbar char inti tista 'tirrappreżenta ma 920 00:39:36,040 --> 00:39:40,370 wieħed gidma, li huwa probabbilment l- 255, li hija l-akbar numru li 921 00:39:40,370 --> 00:39:42,720 jirrappreżentaw tmien bits, jibdew minn żero. 922 00:39:42,720 --> 00:39:47,460 Allura stajt jużaw dan, f'dan il-funzjoni, meta miktub dan il-kodiċi, biss minħabba 923 00:39:47,460 --> 00:39:51,753 jekk xi ħaġa tmur ħażin fil getchar iżda l-għan tagħha fil-ħajja huwa li jirritornaw 924 00:39:51,753 --> 00:39:54,830 char, inti jeħtieġ li b'xi mod ikunu jistgħu li sinjal lill-utent li 925 00:39:54,830 --> 00:39:55,840 xi ħaġa li marret ħażin. 926 00:39:55,840 --> 00:39:56,970 Aħna ma jkunux jistgħu jirritornaw null. 927 00:39:56,970 --> 00:39:58,480 Jirriżulta li null hija pointer. 928 00:39:58,480 --> 00:40:01,030 U għal darb'oħra, getchar għandha jirritornaw char. 929 00:40:01,030 --> 00:40:04,760 >> Allura l-konvenzjoni, jekk xi ħaġa tmur ħażina, huwa inti, l-programmer, jew 930 00:40:04,760 --> 00:40:08,160 F'dan il-każ, mal-librerija me, I kellha a biss tiddeċiedi arbitrarju, jekk 931 00:40:08,160 --> 00:40:12,230 xi ħaġa tmur ħażin, jien ser jirritorna l-għadd 255, li huwa verament 932 00:40:12,230 --> 00:40:17,240 jfisser li nistgħu ma, l-utent ma jistax tip il-karattru rappreżentata mill- 933 00:40:17,240 --> 00:40:21,410 numru 255 għaliex kellna steal bħala hekk imsejħa valur Sentinel 934 00:40:21,410 --> 00:40:23,410 jirrappreżentaw problema. 935 00:40:23,410 --> 00:40:27,010 Issa jirriżulta li l-karattru 255 mhix xi ħaġa inti tista tip fuq 936 00:40:27,010 --> 00:40:28,380 keyboard tiegħek, dan huwa no big deal. 937 00:40:28,380 --> 00:40:30,910 L-utent ma avviż li Stajt misruqa dan il-karattru. 938 00:40:30,910 --> 00:40:34,620 Imma jekk inti qatt tara fil-paġni bniedem fuq sistema tal-kompjuter xi referenza għal 939 00:40:34,620 --> 00:40:38,560 tappijiet kollha kostanti bħal din li jgħid, f'każijiet ta 'żbalji Dan jista' kostanti 940 00:40:38,560 --> 00:40:42,720 jiġu rritornati, li kollox xi bniedem ma snin ilu kien arbitrarjament iddeċidiet li 941 00:40:42,720 --> 00:40:45,680 jirritorna dan il-valur speċjali u sejħa hija kostanti fil-każ 942 00:40:45,680 --> 00:40:46,840 xi ħaġa tmur ħażin. 943 00:40:46,840 --> 00:40:48,580 >> Issa l-magic jiġri stabbiliti hawn. 944 00:40:48,580 --> 00:40:52,600 L-ewwel, jien tiddikjara f'konformità 67 żewġ karattri, C1 u C2. 945 00:40:52,600 --> 00:40:57,080 U mbagħad fil-linja 68, hemm attwalment linja ta 'kodiċi li l-reminixxenti tal 946 00:40:57,080 --> 00:41:01,140 ħabib tagħna printf, peress li ma jkollu mija Cs fil-kwotazzjonijiet. 947 00:41:01,140 --> 00:41:06,490 Imma avviż dak li qed jiġri hawn. sscanf ifisser scan string - 948 00:41:06,490 --> 00:41:11,690 ifisser skanja ifformattjat spag, sscanf Ergo. 949 00:41:11,690 --> 00:41:12,590 X'ifisser dan? 950 00:41:12,590 --> 00:41:16,310 Dan ifisser li inti tgħaddi għal sscanf string. 951 00:41:16,310 --> 00:41:18,420 U l-linja hija tkun xi tkun it-tipi utent pulzieri 952 00:41:18,420 --> 00:41:23,520 Inti tgħaddi għal sscanf string format simili dan li tg scanf liema huma 953 00:41:23,520 --> 00:41:25,870 inti bit-tama l-utent ikun ittajpjat pulzieri 954 00:41:25,870 --> 00:41:29,730 Inti mbagħad jgħaddu fil-indirizzi ta 'tnejn biċċiet ta 'memorja, f'dan il-każ, 955 00:41:29,730 --> 00:41:31,150 għaliex għandi żewġ placeholders. 956 00:41:31,150 --> 00:41:34,610 Hekk jien ser jagħti dan l-indirizz tal C1 u l-indirizz tal C2. 957 00:41:34,610 --> 00:41:37,700 >> U tfakkar li inti tagħti funzjoni tal- indirizz ta 'xi varjabbli, x'hemm 958 00:41:37,700 --> 00:41:38,950 l-implikazzjoni? 959 00:41:38,950 --> 00:41:41,400 960 00:41:41,400 --> 00:41:45,050 X'jista 'dik il-funzjoni jagħmlu bħala riżultat li jagħtiha l-indirizz ta ' 961 00:41:45,050 --> 00:41:48,170 varjabbli, għall-kuntrarju il-varjabbli innifsu? 962 00:41:48,170 --> 00:41:49,450 Hija tista 'bidla, id-dritt? 963 00:41:49,450 --> 00:41:53,250 Jekk kellek xi ħadd mappa lil fiżika indirizz, jistgħu jmorru hemm u tagħmel 964 00:41:53,250 --> 00:41:54,750 kull ma jixtiequ f'dak l-indirizz. 965 00:41:54,750 --> 00:41:55,800 Istess idea hawn. 966 00:41:55,800 --> 00:41:59,950 Jekk aħna jgħaddu lill sscanf, l-indirizz ta 'żewġ biċċiet ta 'memorja, anke dawn ċkejkna 967 00:41:59,950 --> 00:42:03,585 biċċiet ftit ta 'memorja, C1 u C2, iżda aħna għid l-indirizz minnhom, 968 00:42:03,585 --> 00:42:05,170 sscanf tista 'bidla. 969 00:42:05,170 --> 00:42:08,530 >> Allura iskop sscanf fil-ħajja, jekk naqraw il-paġna bniedem, huwa li jaqra dak li l- 970 00:42:08,530 --> 00:42:13,420 utent ittajpjat fil, tama għall-utent li ittajpjat fil karattru u forsi 971 00:42:13,420 --> 00:42:16,470 karattru ieħor, u tkun xi tkun l-utent ittajpjat, l-ewwel karattru tmur 972 00:42:16,470 --> 00:42:19,310 hawn, it-tieni karattru tmur hawn. 973 00:42:19,310 --> 00:42:22,470 Issa, bħala twarrib, dan, u inti biss jafu dan mid-dokumentazzjoni, 974 00:42:22,470 --> 00:42:25,570 il-fatt li nressaq spazju vojt hemm ifisser biss li jien ma kura jekk 975 00:42:25,570 --> 00:42:28,440 l-utent hits-bar-ispazju ftit drabi qabel ma hu jew hi tieħu 976 00:42:28,440 --> 00:42:30,400 karattru, jien ser jinjora kull spazju abjad. 977 00:42:30,400 --> 00:42:32,510 Allura li, naf mill- id-dokumentazzjoni. 978 00:42:32,510 --> 00:42:36,570 >> Il-fatt li hemm tieni% a c segwit minn spazju abjad huwa attwalment 979 00:42:36,570 --> 00:42:37,410 intenzjonat. 980 00:42:37,410 --> 00:42:41,190 I jridu jkunu kapaċi li jikxfu jekk l-utent invitat up inkella ma kkooperawx. 981 00:42:41,190 --> 00:42:45,630 Hekk jien bit-tama li l-utent ittajpjat biss fil-karattru wieħed, għalhekk jien bit-tama 982 00:42:45,630 --> 00:42:50,640 li sscanf huwa biss se jirritorna l- valur ta '1 minħabba li, għal darb'oħra, jekk Naqra 983 00:42:50,640 --> 00:42:55,400 id-dokumentazzjoni, l-iskop sscanf fl ħajja huwa li jirritornaw għall-għadd ta ' 984 00:42:55,400 --> 00:42:59,170 varjabbli li ġew mimlija b'kontribut utent. 985 00:42:59,170 --> 00:43:02,270 >> I għaddew f'żewġ varjabbli indirizzi, C1 u C2. 986 00:43:02,270 --> 00:43:06,420 Jien bit-tama, madankollu, li wieħed biss mill- minnhom gets maqtula għaliex jekk sscanf 987 00:43:06,420 --> 00:43:11,130 prospetti 2, x'hemm preżumibbilment l-implikazzjoni loġikament? 988 00:43:11,130 --> 00:43:14,600 Li l-utent ma biss jagħtu me waħda karattru bħal I told lilu jew lilha. 989 00:43:14,600 --> 00:43:17,860 Huma probabbilment ittajpjat fil inqas żewġ karattri. 990 00:43:17,860 --> 00:43:22,430 Mela jekk jien minflok ma kellhomx it-tieni % C, I biss kellhom wieħed, li 991 00:43:22,430 --> 00:43:25,370 franchement tkun aktar intuwittivi approċċ, I think-ewwel daqqa t'għajn, 992 00:43:25,370 --> 00:43:30,220 int mhux se tkun kapaċi li jikxfu jekk l-utent ikun ġie jagħtik aktar 993 00:43:30,220 --> 00:43:31,780 input minn inti fil-fatt riedu. 994 00:43:31,780 --> 00:43:34,100 Allura dan huwa forma impliċita ta 'verifika żball. 995 00:43:34,100 --> 00:43:35,640 >> Imma dak I do avviż hawn. 996 00:43:35,640 --> 00:43:39,970 Ladarba jien ċert li l-utent tatni waħda karattru, I tilliberalizza l-linja, tagħmel 997 00:43:39,970 --> 00:43:44,450 l-oppost ta 'getstring, li mbagħad użi malloc, u mbagħad I lura 998 00:43:44,450 --> 00:43:51,030 C1, il-karattru li I ttamat l- utent sakemm u sakemm biss. 999 00:43:51,030 --> 00:43:54,680 Allura a quick glimpsed biss, imma xi mistoqsijiet dwar getchar? 1000 00:43:54,680 --> 00:43:57,450 1001 00:43:57,450 --> 00:43:59,590 Aħna ser jiġu lura uħud mill-oħrajn. 1002 00:43:59,590 --> 00:44:03,770 >> Well, let me imorru quddiem u tagħmel dan - jissoponi issa, biss biex jimmotivaw tagħna 1003 00:44:03,770 --> 00:44:08,910 diskussjoni fil-ġimgħa plus ħin, dan huwa fajl imsejjaħ structs.h. 1004 00:44:08,910 --> 00:44:11,440 U għal darb'oħra, dan huwa biss togħma ta 'xi ħaġa li tinsab quddiem. 1005 00:44:11,440 --> 00:44:13,090 Iżda avviż li ħafna ta 'dan huwa kummenti. 1006 00:44:13,090 --> 00:44:17,440 So let me jenfasizzaw biss il- parti interessanti għal issa. 1007 00:44:17,440 --> 00:44:18,020 typedef - 1008 00:44:18,020 --> 00:44:19,700 hemm l-istess keyword mill-ġdid. 1009 00:44:19,700 --> 00:44:23,100 typedef nużaw biex tiddikjara string bħala tip ta 'data speċjali. 1010 00:44:23,100 --> 00:44:27,490 Tista 'tuża typedef biex joħolqu marka ġdida tipi ta 'data li ma kinux jeżistu meta 1011 00:44:27,490 --> 00:44:28,570 C ġiet ivvintata. 1012 00:44:28,570 --> 00:44:32,520 Per eżempju, int jiġi ma C. char jiġi ma C. doppja tiġi ma C. Iżda 1013 00:44:32,520 --> 00:44:34,000 hemm l-ebda kunċett ta 'student. 1014 00:44:34,000 --> 00:44:37,230 And yet jkun pjuttost utli biex ikun kapaċi jikteb programm li taħżen 1015 00:44:37,230 --> 00:44:40,440 fil-varjabbli, għadd ID ta 'student, isem tagħhom, u d-dar tagħhom. 1016 00:44:40,440 --> 00:44:42,890 Fi kliem ieħor, tliet biċċiet ta 'data, bħal int u 1017 00:44:42,890 --> 00:44:44,420 spag u ieħor spaga. 1018 00:44:44,420 --> 00:44:48,220 >> Bil typedef, x'hemm pretty qawwija dwar dan u l-sturct keyword għal 1019 00:44:48,220 --> 00:44:53,660 istruttura, inti, l-programmer fl-2013, jistgħu attwalment tiddefinixxi stess l tiegħek 1020 00:44:53,660 --> 00:44:57,530 tipi ta 'data li ma kinux jeżistu snin ilu iżda li jaqdu skopijiet tiegħek. 1021 00:44:57,530 --> 00:45:01,910 U hekk hawn, fil-linji 13 permezz 19, aħna qed tiddikkjara tip ta 'data ġdida, bħall- 1022 00:45:01,910 --> 00:45:04,320 l int, iżda ssejjaħ dan student. 1023 00:45:04,320 --> 00:45:09,310 U ġewwa ta 'din il-varjabbli se jkun ta 'tliet affarijiet - l INT, string, 1024 00:45:09,310 --> 00:45:09,930 u string. 1025 00:45:09,930 --> 00:45:13,040 Allura inti tista 'taħseb x'hemm verament ġara hawn, anke jekk din hija 1026 00:45:13,040 --> 00:45:17,160 daqsxejn ta 'simplifikazzjoni għal-lum, student essenzjalment se 1027 00:45:17,160 --> 00:45:19,450 biex teżamina bħal dan. 1028 00:45:19,450 --> 00:45:22,580 Tagħha ser tkun blokki ta ' memorja ma 'ID, isem 1029 00:45:22,580 --> 00:45:25,580 qasam, u qasam dar. 1030 00:45:25,580 --> 00:45:30,670 U aħna ser ikunu jistgħu jużaw dawk biċċiet ta ' memorja u l-aċċess għalihom kif ġej. 1031 00:45:30,670 --> 00:45:38,870 >> Jekk immur fis struct0.c, hawnhekk hija relattivament twil, iżda wara 1032 00:45:38,870 --> 00:45:42,630 mudell, tal-kodiċi li tuża dan trick ġdid. 1033 00:45:42,630 --> 00:45:45,790 Allura l-ewwel, let me niġbidlek l-attenzjoni għall-partijiet interessanti top up. 1034 00:45:45,790 --> 00:45:49,670 Sharp jiddefinixxi istudenti 3, tiddikjara imsejħa istudenti kostanti u assenjati 1035 00:45:49,670 --> 00:45:53,450 huwa arbitrarjament-numru 3, biss so I jkollhom tliet studenti li jużaw 1036 00:45:53,450 --> 00:45:54,830 dan il-programm għal issa. 1037 00:45:54,830 --> 00:45:55,960 Hawnhekk tidħol Main. 1038 00:45:55,960 --> 00:45:58,860 U avviż, kif nista niddikjara firxa ta 'studenti? 1039 00:45:58,860 --> 00:46:00,480 Well, I biss tuża l-istess sintassi. 1040 00:46:00,480 --> 00:46:02,110 L-istudent kelma hija ovvjament ġdid. 1041 00:46:02,110 --> 00:46:04,790 Iżda studenti, klassi, l-istudenti parentesi. 1042 00:46:04,790 --> 00:46:06,720 >> Allura sfortunatament hemm ħafna ta 'użu mill-ġdid ta' termini hawn. 1043 00:46:06,720 --> 00:46:07,660 Dan huwa biss numru. 1044 00:46:07,660 --> 00:46:09,040 Allura dan huwa simili qal tlieta. 1045 00:46:09,040 --> 00:46:11,430 Klassi huwa biss dak li nixtieq li jsejħu l-varjabbli. 1046 00:46:11,430 --> 00:46:12,840 I jistgħu sejħa hija istudenti. 1047 00:46:12,840 --> 00:46:15,880 Iżda klassi, din mhix klassi fi oġġett orjentati Java tip ta 'mod. 1048 00:46:15,880 --> 00:46:17,220 Huwa biss klassi ta 'studenti. 1049 00:46:17,220 --> 00:46:20,590 U t-tip tad-data ta 'kull element f'dak array huwa student. 1050 00:46:20,590 --> 00:46:23,040 Allura dan huwa xi ftit differenti u minn tgħid xi ħaġa 1051 00:46:23,040 --> 00:46:25,250 bħal dan, huwa biss - 1052 00:46:25,250 --> 00:46:29,500 Jien qal jagħtu me tliet studenti u sejħa dik il-klassi array. 1053 00:46:29,500 --> 00:46:29,800 >> Kull dritt. 1054 00:46:29,800 --> 00:46:30,680 Issa hawn loop erbgħa. 1055 00:46:30,680 --> 00:46:33,480 Familjari Dan Guy - jtenni minn żero fuq sa tlieta. 1056 00:46:33,480 --> 00:46:35,160 U hawnhekk l-biċċa ġdida ta 'sintassi. 1057 00:46:35,160 --> 00:46:37,710 Il-programm għaddej biex iwassluni, il-bniedem, biex tagħtiha student 1058 00:46:37,710 --> 00:46:39,200 ID, li hija int. 1059 00:46:39,200 --> 00:46:44,650 U hawnhekk l-sintassi li magħhom inti tista ' jaħżnu xi ħaġa fil-qasam ID fi 1060 00:46:44,650 --> 00:46:48,630 klassi post bracket I. So dan sintassi mhix xi ħaġa ġdida. 1061 00:46:48,630 --> 00:46:51,450 Dan ifisser biss jagħtu me-tmien student fil-klassi. 1062 00:46:51,450 --> 00:46:52,940 Iżda dan is-simbolu huwa ġdid. 1063 00:46:52,940 --> 00:46:56,320 Sa issa, aħna ħadthom ma tistax tintuża dot, inqas fil-kodiċi bħal dan. 1064 00:46:56,320 --> 00:47:01,490 Dan ifisser mur l-Struct magħruf bħala student u xi ħaġa hemmhekk. 1065 00:47:01,490 --> 00:47:05,670 Bl-istess mod, f'dan il-linja li jmiss, 31, go quddiem u tpoġġi kwalunkwe tipi l-utent 1066 00:47:05,670 --> 00:47:10,530 għal isem hawn u dak li jagħmlu għal house, l-istess ħaġa, imorru quddiem u 1067 00:47:10,530 --> 00:47:13,230 poġġih fil. house. 1068 00:47:13,230 --> 00:47:15,955 >> Allura dak li ma dan il-programm finalment do? 1069 00:47:15,955 --> 00:47:17,220 Tista 'tara teaser ftit hemmhekk. 1070 00:47:17,220 --> 00:47:24,780 Let me imorru quddiem u do jagħmlu structs 0 dot mmejla Struct 0, ID istudent 1, 1071 00:47:24,780 --> 00:47:28,250 jgħidu David Mather, student ID 2. 1072 00:47:28,250 --> 00:47:32,070 Rob Kirkland, student ID 3. 1073 00:47:32,070 --> 00:47:35,010 Lauren Leverit - 1074 00:47:35,010 --> 00:47:38,380 u l-unika ħaġa dan il-programm ma, li huwa biss kompletament arbitrarja, huwa 1075 00:47:38,380 --> 00:47:40,980 Jien ridt li tagħmel xi ħaġa ma din id-data, issa li stajt mgħallma us kif 1076 00:47:40,980 --> 00:47:43,450 użu structs, huwa I biss kellhom dan loop extra hawn. 1077 00:47:43,450 --> 00:47:45,260 I jtenni fuq il-firxa ta 'studenti. 1078 00:47:45,260 --> 00:47:49,170 I użati, ħabib forsi issa familjari tagħna, string iqabblu, stircomp li 1079 00:47:49,170 --> 00:47:53,780 verifika huwa d-dar 8 istudent daqs Mather? 1080 00:47:53,780 --> 00:47:56,760 U jekk iva, biss print xi ħaġa arbitrarju simili, iva, huwa. 1081 00:47:56,760 --> 00:47:59,430 Iżda għal darb'oħra, biss jagħtu me opportunitajiet għall-użu u użu mill-ġdid u 1082 00:47:59,430 --> 00:48:02,270 użu mill-ġdid dan dot notazzjoni ġdida. 1083 00:48:02,270 --> 00:48:03,250 >> Allura quién, right? 1084 00:48:03,250 --> 00:48:06,270 Ġejjin bi programm istudent ikun kemmxejn arbitrarja, iżda jirriżulta 1085 00:48:06,270 --> 00:48:09,800 li nistgħu nagħmlu affarijiet utli ma dan, per eżempju kif ġej. 1086 00:48:09,800 --> 00:48:14,600 Din hija Struct ħafna aktar ikkumplikat fl C. Huwa ltqajna tużżana jew aktar oqsma, 1087 00:48:14,600 --> 00:48:15,880 kemmxejn cryptically jismu. 1088 00:48:15,880 --> 00:48:20,110 Imma jekk inti stajt qatt semgħu ta 'grafika format tal-fajl imsejħa Bitmap, BMP, huwa 1089 00:48:20,110 --> 00:48:22,830 Jirriżulta li l-format tal-fajl Bitmap pretty ħafna qisu li dan. 1090 00:48:22,830 --> 00:48:24,200 Huwa wiċċ stupid Smiley ftit. 1091 00:48:24,200 --> 00:48:27,840 Huwa image żgħira li stajt żżomjati fuq pretty big hekk li I tista 'tara kull 1092 00:48:27,840 --> 00:48:30,410 tal-tikek individwali jew pixels. 1093 00:48:30,410 --> 00:48:33,800 Issa, jirriżulta nistgħu jirrappreżentaw dot iswed, ngħidu aħna, in-numru 0. 1094 00:48:33,800 --> 00:48:35,520 U dot abjad bin-numru 1. 1095 00:48:35,520 --> 00:48:39,140 >> Allura fi kliem ieħor, jekk inti tixtieq li tiġbed Wiċċ smiley u ħlief li l-immaġni fil- 1096 00:48:39,140 --> 00:48:42,680 kompjuter, huwa biżżejjed li jaħżen żerijiet u dawk li jixbhu dan, fejn, 1097 00:48:42,680 --> 00:48:45,250 għal darb'oħra, dawk huma bojod u żerijiet huma suwed. 1098 00:48:45,250 --> 00:48:48,290 U flimkien, jekk inti effettivament ikollhom a gird ta dawk żerijiet, inti għandek 1099 00:48:48,290 --> 00:48:51,030 grid ta 'pixels, u jekk inti jistabbilixxu out, inti għandek ħelu 1100 00:48:51,030 --> 00:48:52,560 ftit wiċċ Smiley. 1101 00:48:52,560 --> 00:48:58,150 Issa, format tal-fajl Bitmap, BMP, huwa effettivament li taħtha il-barnuża, 1102 00:48:58,150 --> 00:49:00,970 iżda b'aktar pixels Sot li inti jistgħu attwalment jirrappreżentaw kuluri. 1103 00:49:00,970 --> 00:49:05,170 >> Imma meta jkollok aktar sofistikati formati tal-fajl bħal BMP u JPEG u GIF 1104 00:49:05,170 --> 00:49:09,360 li magħhom inti tista 'tkun familjari, dawk fajls fuq disk tipikament mhux biss 1105 00:49:09,360 --> 00:49:13,760 jkollhom żero u dawk għall-pixels, imma għandhom xi metadata kif ukoll - 1106 00:49:13,760 --> 00:49:16,960 meta fis-sens li mhuwiex verament data iżda huwa utli li jkollhom. 1107 00:49:16,960 --> 00:49:21,370 Allura dawn l-oqsma huma hawn jimplika, u aħna ser tara dan f'aktar dettall fil P-set 1108 00:49:21,370 --> 00:49:25,810 5, li qabel l-żero u dawk li jirrappreżentaw l-pixels fi immaġini, 1109 00:49:25,810 --> 00:49:29,110 hemm mazz ta 'metadata bħal id-daqs tal-immaġni u l- 1110 00:49:29,110 --> 00:49:30,250 wisa 'tal-immaġini. 1111 00:49:30,250 --> 00:49:32,910 U tinnota jien tnittif off xi affarijiet arbitrarji hawn - 1112 00:49:32,910 --> 00:49:34,260 wisa 'u għoli. 1113 00:49:34,260 --> 00:49:36,160 Għadd bit u xi affarijiet oħra. 1114 00:49:36,160 --> 00:49:37,840 Allura hemm xi metadata fil-fajl. 1115 00:49:37,840 --> 00:49:41,470 >> Iżda billi wieħed jifhem kif il-fajls huma stabbiliti out b'dan il-mod, inti tista 'attwalment 1116 00:49:41,470 --> 00:49:45,890 imbagħad jimmanipulaw immaġini, jirkupraw immaġini minn disk, resize immaġini. 1117 00:49:45,890 --> 00:49:47,560 Imma inti ma tistax neċessarjament itejbu lilhom. 1118 00:49:47,560 --> 00:49:48,480 I meħtieġa ritratt. 1119 00:49:48,480 --> 00:49:52,840 So I marru lura għal RJ hawn, li inti raw fuq l-iskrin pjuttost xi żmien ilu. 1120 00:49:52,840 --> 00:49:57,160 U jekk I jiftħu Keynote hawn, dan huwa x'jiġri jekk inti tipprova li zoom u 1121 00:49:57,160 --> 00:49:59,380 itejbu RJ. 1122 00:49:59,380 --> 00:50:01,480 Huwa ma jkollna xi aħjar verament. 1123 00:50:01,480 --> 00:50:06,240 Issa Keynote huwa tip ta ċajpir hu ftit, biss biex tleqqija fuq il- 1124 00:50:06,240 --> 00:50:11,040 fatt li RJ ma jiksbu partikolarment msaħħa meta inti zoom pulzieri 1125 00:50:11,040 --> 00:50:13,310 U jekk tagħmel dan il-mod, tara l-kwadri? 1126 00:50:13,310 --> 00:50:15,490 Yeah, inti tista 'definittivament tara il-kwadri fuq projector. 1127 00:50:15,490 --> 00:50:17,690 >> Dan huwa dak ikollok meta inti ittejjeb. 1128 00:50:17,690 --> 00:50:22,570 Iżda fil-fehim kif RJ tagħna jew l- Smiley wiċċ hija implimentata se let us 1129 00:50:22,570 --> 00:50:24,950 attwalment jikteb il-kodiċi li jimmanipula dawn l-affarijiet. 1130 00:50:24,950 --> 00:50:29,970 U ħsibt I d tintemm fit din in-nota, ma 55 sekondi ta 'jtejjbu dik l- 1131 00:50:29,970 --> 00:50:31,230 I DARE, ngħidu aħna pjuttost qarrieqa. 1132 00:50:31,230 --> 00:50:32,990 >> [Daqq video] 1133 00:50:32,990 --> 00:50:34,790 >> -Hu tinsab. 1134 00:50:34,790 --> 00:50:38,310 Dwar dak, I do not know. 1135 00:50:38,310 --> 00:50:41,200 >> Allura dak li-nafu? 1136 00:50:41,200 --> 00:50:45,280 >> Li fil-09:15 Ray Santoya kien fil-ATM. 1137 00:50:45,280 --> 00:50:47,830 >> Għalhekk il-kwistjoni-huwa dak kien hu tagħmel fi 9:16? 1138 00:50:47,830 --> 00:50:50,750 >> -Isparar-disa millimeter fuq xi ħaġa. 1139 00:50:50,750 --> 00:50:52,615 Forsi hu ra l-sniper. 1140 00:50:52,615 --> 00:50:54,760 >> -Or kien jaħdem miegħu. 1141 00:50:54,760 --> 00:50:56,120 >> Stenna-. 1142 00:50:56,120 --> 00:50:57,450 Mur lura waħda. 1143 00:50:57,450 --> 00:50:58,700 >> Liema taħseb? 1144 00:50:58,700 --> 00:51:05,530 1145 00:51:05,530 --> 00:51:09,490 >> Wassal-wiċċ tiegħu up, full screen. 1146 00:51:09,490 --> 00:51:09,790 >> Tiegħu-nuċċalijiet. 1147 00:51:09,790 --> 00:51:11,040 >> -Hemm riflessjoni. 1148 00:51:11,040 --> 00:51:21,790 1149 00:51:21,790 --> 00:51:23,520 >> -Dik hija l-tim tal-baseball Neuvitas. 1150 00:51:23,520 --> 00:51:24,530 C'est logo tagħhom. 1151 00:51:24,530 --> 00:51:27,040 >> -U hu jitkellem lil min hu liebes ġakketta li. 1152 00:51:27,040 --> 00:51:27,530 >> [Daqq video END] 1153 00:51:27,530 --> 00:51:29,180 >> DAVID J. Malan: Dan se jkun Problema Set 5. 1154 00:51:29,180 --> 00:51:30,720 Aħna se tara inti ġimgħa d-dieħla. 1155 00:51:30,720 --> 00:51:32,330 >> SPEAKER MALE: Fl-CS50 jmiss. 1156 00:51:32,330 --> 00:51:39,240 >> [Crickets chirping] 1157 00:51:39,240 --> 00:51:41,270 >> [Daqq tal-mużika]