1 00:00:00,000 --> 00:00:00,499 2 00:00:00,499 --> 00:00:11,261 [Daqq ta mużika] 3 00:00:11,261 --> 00:00:12,640 >> DAVID J. Malan: Kull dritt. 4 00:00:12,640 --> 00:00:14,525 Dan huwa CS50. 5 00:00:14,525 --> 00:00:16,009 U dan huwa l-bidu tal-ġimgħa 5. 6 00:00:16,009 --> 00:00:18,050 U kif jista 'jkollok ndunat, xi wħud mill-materjal 7 00:00:18,050 --> 00:00:21,050 huwa jkollna ftit aktar kumpless, il-b'densita ogħla ftit. 8 00:00:21,050 --> 00:00:24,560 >> U huwa faċli ħafna, speċjalment jekk inti ħadthom ġiet fil-drawwa għal xi żmien, 9 00:00:24,560 --> 00:00:28,600 li tkun qed tipprova scribble stabbiliti aktar xejn nagħmlu, aħna qed tgħid fil-klassi. 10 00:00:28,600 --> 00:00:31,626 Iżda jirrealizzaw, li mhuwiex forsi l-approċċ pedagoġiku ideali 11 00:00:31,626 --> 00:00:34,250 għat-tagħlim dan it-tip ta 'materjal, u materjal b'mod aktar ġenerali. 12 00:00:34,250 --> 00:00:37,250 U hekk aħna pjaċir li jħabbar Gheng li CS50 stess 13 00:00:37,250 --> 00:00:39,780 Gong bdiet tipprepara sett canonical ta 'noti 14 00:00:39,780 --> 00:00:42,100 għall-kors, l-tama ta ' li hija li, wieħed, dawn 15 00:00:42,100 --> 00:00:44,030 jservu mhux biss bħala referenza u riżorsa 16 00:00:44,030 --> 00:00:47,410 għar-reviżjoni materjal u jmorru lura permezz materjal li jista 'jkollhom 17 00:00:47,410 --> 00:00:51,230 maħruba inti l-ewwel darba madwar, iżda wkoll sabiex kapijiet tiegħek tista 'tkun aktar 18 00:00:51,230 --> 00:00:53,740 up minn isfel, meta niġu żmien biex jagħti konferenza, 19 00:00:53,740 --> 00:00:56,960 sabiex inti tista 'tidħol aktar thoughtfully, bħala 20 00:00:56,960 --> 00:00:59,170 kuntrarju aktar scribbly. 21 00:00:59,170 --> 00:01:02,510 >> Ma 'dak imsemmi, dak li inti ser issib fuq il-websajt hija tali dokumenti bħal din. 22 00:01:02,510 --> 00:01:04,660 U avviż, fil-quċċata xellug, hemm mhux biss tabella ta 'kontenut, 23 00:01:04,660 --> 00:01:06,920 iżda wkoll kodiċijiet ħin li se immedjatament jaqbżu inti 24 00:01:06,920 --> 00:01:09,077 għall-parti xierqa fil-online video. 25 00:01:09,077 --> 00:01:11,410 U dak Chang hawn għamlet huwa, essenzjalment, dokumentati 26 00:01:11,410 --> 00:01:13,340 dak li ġara f'dan il- partikolari lecture. 27 00:01:13,340 --> 00:01:16,370 U ħafna mill-lectures huma diġà online issa ma dan il-URL. 28 00:01:16,370 --> 00:01:20,110 U aħna ser tkompli post l-bqija ta 'dawk mill-aħħar ta' din il-ġimgħa, 29 00:01:20,110 --> 00:01:22,380 sabiex ma jieħdu vantaġġ ta 'dik ir-riżorsa. 30 00:01:22,380 --> 00:01:25,740 >> Allura mingħajr aktar dewmien, bdejna biex jitqaxxru lura 31 00:01:25,740 --> 00:01:28,180 is-saff li kien string għal xi żmien. 32 00:01:28,180 --> 00:01:30,670 U dak ma ngħidu string attwalment huwa aħħar ġimgħa? 33 00:01:30,670 --> 00:01:31,720 34 00:01:31,720 --> 00:01:32,900 Star Allura char. 35 00:01:32,900 --> 00:01:34,900 U star char, ukoll, liema ma li verament tfisser? 36 00:01:34,900 --> 00:01:37,150 Ukoll, dan kollu ħin, jekk konna ilu jitlob funzjoni, 37 00:01:37,150 --> 00:01:40,450 bħall getString, u l-ħażna l-hekk imsejħa 'ritorn 38 00:01:40,450 --> 00:01:42,910 valur ta getString fil variable-- huwa msejjaħ 39 00:01:42,910 --> 00:01:47,721 Tip s string-- konna ġie miktub l-linja tal-kodiċi up hemm fuq. 40 00:01:47,721 --> 00:01:49,970 U huwa biss meta nara tiegħi kalligrafija eżaltat hawn 41 00:01:49,970 --> 00:01:51,930 do I jirrealizzaw kemm atroċi dan huwa. 42 00:01:51,930 --> 00:01:54,180 >> Madankollu, ejja nassumu li, fuq in-naħa tal-lemin 43 00:01:54,180 --> 00:01:57,070 huwa, madankollu, raġonevoli rappreżentazzjoni ta 'x'hemm 44 00:01:57,070 --> 00:01:58,880 ilu għaddej dan kollu ħin ma getString. 45 00:01:58,880 --> 00:02:00,380 getString, naturalment, gets string. 46 00:02:00,380 --> 00:02:01,691 Imma dak li verament ma jfisser? 47 00:02:01,691 --> 00:02:04,190 Dan ifisser jiġrilha blokki ta ' memorja mis-sistema operattiva 48 00:02:04,190 --> 00:02:06,040 billi ssejjaħ il-funzjoni, imsejħa malloc. 49 00:02:06,040 --> 00:02:07,390 Iżda aktar fuq dan aktar tard. 50 00:02:07,390 --> 00:02:09,139 U allura populates li blokki ta 'memorja 51 00:02:09,139 --> 00:02:11,764 bl-ittri l-utent għandu ittajpjat fil, segwit minn, naturalment, 52 00:02:11,764 --> 00:02:14,800 karattru null, jew backslash żero fl-aħħar ħafna. 53 00:02:14,800 --> 00:02:18,280 >> Sadanittant, fuq in-naħa tax-xellug ta 'din l-istorja, dan il-ħin, 54 00:02:18,280 --> 00:02:20,850 konna qed tiddikjara varjabbli, bħall-s. 55 00:02:20,850 --> 00:02:24,770 U dak il-varjabbli huwa dak li issa se tibda sejħa pointer. 56 00:02:24,770 --> 00:02:29,190 Mhuwiex kaxxa ġewwa minnhom aħna tpoġġi l-string, Daven, per se, 57 00:02:29,190 --> 00:02:32,550 iżda pjuttost nitfgħu f'dak kwadru kaxxa fuq ix-xellug x'inhi eżattament? 58 00:02:32,550 --> 00:02:34,890 59 00:02:34,890 --> 00:02:35,390 Yeah? 60 00:02:35,390 --> 00:02:37,118 >> UDJENZA: L-indirizz ta ' fejn huwa jinsab fil-memorja. 61 00:02:37,118 --> 00:02:38,118 >> DAVID J. Malan: Eżattament. 62 00:02:38,118 --> 00:02:40,690 L-indirizz ta 'fejn Daven tinsab fil-memorja. 63 00:02:40,690 --> 00:02:44,650 U mhux fejn kollha ta 'Daven jinsab, per se, iżda speċifikament l-indirizz 64 00:02:44,650 --> 00:02:45,150 ta 'dak? 65 00:02:45,150 --> 00:02:46,311 66 00:02:46,311 --> 00:02:46,810 Yeah? 67 00:02:46,810 --> 00:02:47,460 >> UDJENZA: L-ewwel karattru. 68 00:02:47,460 --> 00:02:50,209 >> DAVID J. Malan: L-ewwel karattru fil Daven, li, f'dan il-każ, 69 00:02:50,209 --> 00:02:53,820 I pproponiet kien arbitrarju u realistiċi 1, OX1, 70 00:02:53,820 --> 00:02:55,910 li sempliċiment tfisser il- numru hexadeċimali tal-1. 71 00:02:55,910 --> 00:02:57,993 Iżda huwa probabbilment se li jkun hemm numru ħafna akbar 72 00:02:57,993 --> 00:03:01,260 li nistgħu jiġbed bi 0x bħala prefiss, 73 00:03:01,260 --> 00:03:02,806 li jirrappreżenta karattru hexadeċimali. 74 00:03:02,806 --> 00:03:05,930 U għaliex aħna ma bżonn tkun taf fejn il-bqija tal-karattri ta 'Daven 75 00:03:05,930 --> 00:03:09,860 huma, minħabba dak disinn sempliċi deċiżjoni li kien sar ħafna snin ilu? 76 00:03:09,860 --> 00:03:10,548 Yeah? 77 00:03:10,548 --> 00:03:11,651 >> UDJENZA: Backslash 0. 78 00:03:11,651 --> 00:03:12,900 DAVID J. Malan: Yeah, eżattament. 79 00:03:12,900 --> 00:03:18,100 Il backslash 0 jippermettilek, għalkemm ħin lineari, biex travers-sekwenza, 80 00:03:18,100 --> 00:03:20,400 jimxu mix-xellug għal-lemin, ma 'għall-loop, jew waqt 81 00:03:20,400 --> 00:03:22,608 loop, jew xi ħaġa bħal li, u jiddeterminaw, oh, hawnhekk 82 00:03:22,608 --> 00:03:24,751 hija t-tmiem ta 'din is-sekwenza partikolari. 83 00:03:24,751 --> 00:03:27,000 Allura ma biss l-indirizz li l-bidu ta 'spag, 84 00:03:27,000 --> 00:03:30,290 nistgħu aċċess għall-intier tal- dan, għaliex dan kollu filwaqt li, 85 00:03:30,290 --> 00:03:32,030 string għadu kif ġie stilla char. 86 00:03:32,030 --> 00:03:36,370 >> Allura huwa ċertament multa li tkompli tuża il-librerija CS50 u dan estrazzjoni, 87 00:03:36,370 --> 00:03:38,440 biex ngħidu hekk, imma aħna ser tibda tara eżattament 88 00:03:38,440 --> 00:03:41,230 dak li kien għaddej taħtha dan iż-żmien kollu. 89 00:03:41,230 --> 00:03:45,260 Allura inti tista 'tfakkar dan l-eżempju, wisq, mill-aħħar darba, iqabblu 0, 90 00:03:45,260 --> 00:03:47,300 li ma attwalment tqabbel. 91 00:03:47,300 --> 00:03:49,070 Iżda aħna beda biex issolvi din. 92 00:03:49,070 --> 00:03:52,020 >> Iżda bħala forsi aġġornament, jista I interess lil xi ħadd 93 00:03:52,020 --> 00:03:54,261 fil iljunfant roża llum, ssir ukoll minn Chang? 94 00:03:54,261 --> 00:03:55,760 Kif dwarek quddiem? [Inaudible]. 95 00:03:55,760 --> 00:03:56,660 Come fuq up. 96 00:03:56,660 --> 00:03:58,740 >> U fil-frattemp, kif inti toħroġ, ejja 97 00:03:58,740 --> 00:04:01,670 jikkunsidraw għal ftit mument liema dan il-kodiċi kien fil-fatt jagħmlu. 98 00:04:01,670 --> 00:04:04,917 Huwa tiddikjara żewġ varjabbli up top, iu t, u ssejjaħ getString. 99 00:04:04,917 --> 00:04:08,250 Dan mhuwiex programm faċli għall-utent ħafna, għaliex ma jgħidlek x'għandek tagħmel. 100 00:04:08,250 --> 00:04:10,541 Imma ejja biss wieħed jassumi aħna qed jiffoka fuq il-parti mmerraq. 101 00:04:10,541 --> 00:04:14,470 U mbagħad nagħmlu, jekk i ugwali ugwali t, għandu jkun hemm printf, 102 00:04:14,470 --> 00:04:16,170 inti ittajpjat-istess ħaġa. 103 00:04:16,170 --> 00:04:16,670 Hello. 104 00:04:16,670 --> 00:04:17,050 X'hemm isem tiegħek? 105 00:04:17,050 --> 00:04:17,779 >> Janelle: Janelle. 106 00:04:17,779 --> 00:04:19,529 DAVID J. Malan: Janelle, sbieħ li jissodisfaw inti. 107 00:04:19,529 --> 00:04:21,800 Allura l-isfida tiegħek fuq idejn għal dan iljunfant 108 00:04:21,800 --> 00:04:25,230 huwa li l-ewwel jiġbed us stampa ta 'x'hemm li jkunu rrappreżentati f'dawk ewwel tnejn 109 00:04:25,230 --> 00:04:25,970 linji. 110 00:04:25,970 --> 00:04:28,139 Allura s u t jista 'jkun irrappreżentata kif fuq l-iskrin? 111 00:04:28,139 --> 00:04:30,680 U inti tista 'biss jiġbed ma finger tiegħek fuq dan l-iskrin big. 112 00:04:30,680 --> 00:04:31,780 113 00:04:31,780 --> 00:04:34,510 >> Allura hemm żewġ nofsijiet għall kull naħa ta 'dik ekwazzjoni. 114 00:04:34,510 --> 00:04:37,760 Allura hemm i fuq ix-xellug, u imbagħad getString fuq il-lemin. 115 00:04:37,760 --> 00:04:40,540 U allura hemm t fuq ix-xellug, u mbagħad getString fuq il-lemin. 116 00:04:40,540 --> 00:04:42,630 Allura kif tista nibdew tpinġija stampa li 117 00:04:42,630 --> 00:04:46,340 jirrappreżenta x'inhu għaddej hawn fil-memorja, would you say? 118 00:04:46,340 --> 00:04:49,150 U let me let inti tispjega dak li qed tagħmel kif tmur. 119 00:04:49,150 --> 00:04:49,820 >> Janelle: OK. 120 00:04:49,820 --> 00:04:58,890 Ukoll, l-ewwel, ikun tistaqsi inti biex tikseb l-sekwenza input. 121 00:04:58,890 --> 00:05:00,439 U ikun store-- oh, sorry. 122 00:05:00,439 --> 00:05:01,230 DAVID J. Malan: OK. 123 00:05:01,230 --> 00:05:01,730 Tajba. 124 00:05:01,730 --> 00:05:03,330 U dan huwa msejjaħ liema? 125 00:05:03,330 --> 00:05:03,950 Oh, OK. 126 00:05:03,950 --> 00:05:04,450 Żomm għaddejjin. 127 00:05:04,450 --> 00:05:05,575 I ma jfissirx li jinterrompi. 128 00:05:05,575 --> 00:05:07,060 Janelle: Jiddispjacini. 129 00:05:07,060 --> 00:05:14,237 Għalhekk ikun input fis l-indirizz mhux of-- ċert. 130 00:05:14,237 --> 00:05:17,320 I ma tistax tiftakar eżattament in-numru, imma nemmen li kien jibda bl 0. 131 00:05:17,320 --> 00:05:18,420 >> DAVID J. Malan: Li kollox id-dritt, minħabba I magħmula in-numri up, 132 00:05:18,420 --> 00:05:19,650 hekk hemm ebda dritt risposta. 133 00:05:19,650 --> 00:05:22,105 >> Janelle: Nibdew bl-ark 0. 134 00:05:22,105 --> 00:05:24,000 >> DAVID J. Malan: OK, hekk element 0. 135 00:05:24,000 --> 00:05:24,765 Sure. 136 00:05:24,765 --> 00:05:28,295 >> Janelle: U mbagħad jekk kienx bħal biss ta 'żewġ letter-- 137 00:05:28,295 --> 00:05:30,496 >> DAVID J. Malan: OK, lura lilek. 138 00:05:30,496 --> 00:05:33,629 >> Janelle: Allura element 0, u imbagħad element 1 jew element 2. 139 00:05:33,629 --> 00:05:36,670 DAVID J. Malan: U liema biċċa ta ' l-istampa huma inti tpinġija dritt issa? 140 00:05:36,670 --> 00:05:37,690 Is-sejħa għall getString? 141 00:05:37,690 --> 00:05:38,830 Jew id-dikjarazzjoni ta 'i? 142 00:05:38,830 --> 00:05:42,890 >> Janelle: Id-dikjarazzjoni ta 'i, nemmen. 143 00:05:42,890 --> 00:05:45,980 Oh, il-getString, għaliex kieku jiġu inputted fis f'kull [? żona. ?] 144 00:05:45,980 --> 00:05:46,510 >> DAVID J. Malan: Tajba. 145 00:05:46,510 --> 00:05:47,051 Eżattament. 146 00:05:47,051 --> 00:05:49,300 Anke jekk dan effettivament prospetti firxa, recall, 147 00:05:49,300 --> 00:05:53,300 meta nikbru lura string, nistgħu indiċi f'dak string jużaw 01 u 2. 148 00:05:53,300 --> 00:05:56,180 Teknikament, dawn huma probabbilment irrappreżentata minn indirizzi individwali, 149 00:05:56,180 --> 00:05:57,100 iżda li l-multa. 150 00:05:57,100 --> 00:06:00,170 >> Allura jissoponi, jekk nista 'biss fast tibgħat lill fejn aħna jitħalla 'off 151 00:06:00,170 --> 00:06:04,320 aħħar darba, jekk wieħed il-kordi kien g a b e, 152 00:06:04,320 --> 00:06:10,337 backslash 0, li b'hekk jirrappreżentaw Gabe tal input, kif jista nirrappreżentaw s issa? 153 00:06:10,337 --> 00:06:12,670 Jekk dan huwa l-memorja li l- ġew irritornati minn getString? 154 00:06:12,670 --> 00:06:14,415 155 00:06:14,415 --> 00:06:17,610 >> Janelle: Ikun irrappreżentat minn ark? 156 00:06:17,610 --> 00:06:18,750 >> DAVID J. Malan: Billi ark? 157 00:06:18,750 --> 00:06:19,130 Well, no. 158 00:06:19,130 --> 00:06:21,171 Ejja ngħidu biss, pictorially, let me biss jimxi 'l quddiem 159 00:06:21,171 --> 00:06:25,710 u nipproponi li, jekk dan huwa i, dan huwa l-valur tar-ritorn ta 'getString. 160 00:06:25,710 --> 00:06:29,482 U inti stajt mfassla dan bħala 0, 1, 2, li huwa perfettament raġonevoli, għaliex aħna 161 00:06:29,482 --> 00:06:30,940 jista indiċi fil-string, bħala tali. 162 00:06:30,940 --> 00:06:33,340 Iżda biss li tkun konsistenti mal- aħħar darba, let me imorru quddiem 163 00:06:33,340 --> 00:06:37,310 u arbitrarju nipproponi li din huwa l-indirizz 1, dan huwa l-indirizz 2, 164 00:06:37,310 --> 00:06:39,597 dan huwa l-indirizz 3, u ibqa 'sejjer hekk. 165 00:06:39,597 --> 00:06:41,430 U għalhekk, biss biex tkun super ċara, x'inhu għaddej 166 00:06:41,430 --> 00:06:44,580 li jmorru fl-i bħala riżultat ta 'dak ewwel linja tal-kodiċi, would you say? 167 00:06:44,580 --> 00:06:45,420 >> Janelle: Indirizz 1? 168 00:06:45,420 --> 00:06:46,420 >> DAVID J. Malan: Eżattament. 169 00:06:46,420 --> 00:06:47,190 Allura jindirizzaw 0x1. 170 00:06:47,190 --> 00:06:48,220 171 00:06:48,220 --> 00:06:51,230 U sadanittant, let me imorru quddiem u duplikat ħafna ta 'dak li inti ghamilt 172 00:06:51,230 --> 00:06:52,740 u żid t tiegħi stess hawn. 173 00:06:52,740 --> 00:06:56,340 I Jekk kellhom tip fil Gabe darb'oħra, għat-tieni darba, 174 00:06:56,340 --> 00:07:01,530 meta imħeġġa bil getString, fejn, naturalment, huwa Gabe se jmorru? 175 00:07:01,530 --> 00:07:02,280 Well, presumably-- 176 00:07:02,280 --> 00:07:04,935 177 00:07:04,935 --> 00:07:05,975 >> Janelle: Bħal hawn fuq? 178 00:07:05,975 --> 00:07:06,850 DAVID J. Malan: Yeah. 179 00:07:06,850 --> 00:07:08,516 Janelle: Or huwa wkoll fl-istess kaxxi? 180 00:07:08,516 --> 00:07:11,940 DAVID J. Malan: Let me tipproponi, yeah, eżattament, hekk f'dawn il-kaxxa addizzjonali. 181 00:07:11,940 --> 00:07:15,230 Imma x'hemm importanti issa huwa li, anki għalkemm stajt mfassla dawn pretty qrib 182 00:07:15,230 --> 00:07:18,650 together-- 0x1, dan huwa 0x2-- fir-realtà, 183 00:07:18,650 --> 00:07:25,750 issa dan jista 'jkun l-indirizz 0x10, per eżempju, u 0x11, u 0x12, 184 00:07:25,750 --> 00:07:26,870 u ibqa 'sejjer hekk. 185 00:07:26,870 --> 00:07:29,955 U għalhekk, jekk dan huwa l-każ, x'inhu għaddej biex jispiċċaw here f't? 186 00:07:29,955 --> 00:07:30,830 >> Janelle: 0x10? 187 00:07:30,830 --> 00:07:31,830 DAVID J. Malan: Eżattament. 188 00:07:31,830 --> 00:07:33,180 Allura 0x10. 189 00:07:33,180 --> 00:07:34,570 U hekk issa, kwistjoni finali. 190 00:07:34,570 --> 00:07:37,510 Inti għandek, bil-bosta, kellu jaħdem il- agħar għat iljunfant s'issa. 191 00:07:37,510 --> 00:07:42,650 Sa issa, jekk I pull up-kodiċi darb'oħra, meta I do, fil-linja tlieta, 192 00:07:42,650 --> 00:07:47,630 jekk i ugwali ugwali t, dak am I attwalment qabbel li konna mfassla hawn? 193 00:07:47,630 --> 00:07:49,271 >> Janelle: Iż-żewġ indirizzi? 194 00:07:49,271 --> 00:07:50,270 DAVID J. Malan: Eżattament. 195 00:07:50,270 --> 00:07:53,350 So jien tgħid huwa s ugwali ugwali għal t? 196 00:07:53,350 --> 00:07:56,210 Fi kliem ieħor, hija l-1 ugwali ugwali għal 10? 197 00:07:56,210 --> 00:07:59,710 U naturalment, l- risposta ovvja issa, l-ebda. 198 00:07:59,710 --> 00:08:02,920 U hekk dan il-programm huwa finalment morna għall-istampa dak, would you say? 199 00:08:02,920 --> 00:08:05,770 200 00:08:05,770 --> 00:08:08,405 >> Janelle: Ikun, inti ittajpjat-istess ħaġa? 201 00:08:08,405 --> 00:08:11,446 >> DAVID J. Malan: Mela jekk i hija l-1 u t hija 10? 202 00:08:11,446 --> 00:08:13,320 >> Janelle: Inti ittajpjat affarijiet differenti. 203 00:08:13,320 --> 00:08:13,570 >> DAVID J. Malan: Eżattament. 204 00:08:13,570 --> 00:08:14,480 Inti ittajpjat affarijiet differenti. 205 00:08:14,480 --> 00:08:14,850 Kull dritt. 206 00:08:14,850 --> 00:08:16,714 Allura rawnd ta 'applause, jekk nistgħu, hawn. 207 00:08:16,714 --> 00:08:17,214 [Applause] 208 00:08:17,214 --> 00:08:17,708 Dan kien uġigħ. 209 00:08:17,708 --> 00:08:18,208 I know. 210 00:08:18,208 --> 00:08:19,684 Nicely jsir. 211 00:08:19,684 --> 00:08:24,690 Allura issa ejja ara jekk ma nkunux nistgħu tease apparti dak l-jiffissaw kien. 212 00:08:24,690 --> 00:08:28,040 U ovvjament, meta aħna fiss this-- li jiena ser issa jirrappreżentaw fil green-- 213 00:08:28,040 --> 00:08:29,690 għamilna ftit ta 'titjib hawn. 214 00:08:29,690 --> 00:08:32,409 L-ewwel, biss bħala sanità jivverifikaw, jien l-ewwel verifika 215 00:08:32,409 --> 00:08:35,110 jekk i ugwali null u t ugwali null. 216 00:08:35,110 --> 00:08:39,440 U biss li tkun ċara, meta jista s jew t tkun nulla fir kodiċi bħal dan? 217 00:08:39,440 --> 00:08:43,140 218 00:08:43,140 --> 00:08:44,490 Meta jista 's jew T jkun null. 219 00:08:44,490 --> 00:08:44,990 Yeah? 220 00:08:44,990 --> 00:08:45,990 >> UDJENZA: [inaudible]. 221 00:08:45,990 --> 00:08:49,490 222 00:08:49,490 --> 00:08:50,510 >> DAVID J. Malan: Eżattament. 223 00:08:50,510 --> 00:08:52,840 Jekk l-sekwenza li l-utent ittajpjat fil huwa mod wisq twil 224 00:08:52,840 --> 00:08:56,140 sabiex jinkwadraw fil-memorja, jew xi każ kantuniera stramb bħal dik, 225 00:08:56,140 --> 00:08:59,010 getString, kif Ser naraw, litteralment llum, fid-dokumentazzjoni tagħha, 226 00:08:59,010 --> 00:09:02,330 jgħid li se terġa 'lura null bħala valur speċjali sentinella, 227 00:09:02,330 --> 00:09:05,417 jew biss tip ta 'simbolu speċjali dan ifisser xi ħaġa li marret ħażin. 228 00:09:05,417 --> 00:09:07,500 Allura aħna tixtieq li jikkontrolla għal li, minħabba li jirriżulta 229 00:09:07,500 --> 00:09:09,720 li null huwa valur perikoluża ħafna. 230 00:09:09,720 --> 00:09:14,250 >> Spiss, jekk inti tipprova tagħmel xi ħaġa ma ' null jinvolvi function-- tgħaddi 231 00:09:14,250 --> 00:09:17,470 bħala input, għal instance-- dik il-funzjoni jista ħafna se tiġrifa u, magħha, 232 00:09:17,470 --> 00:09:19,090 jieħdu l-programm kollu tiegħek. 233 00:09:19,090 --> 00:09:22,570 Allura dan it-tielet linja issa hija biss sanità jivverifikaw, verifika żball, jekk inti se. 234 00:09:22,570 --> 00:09:25,450 C'est drawwa tajba issa għall li nġibu fi kwalunkwe ħin aħna 235 00:09:25,450 --> 00:09:28,050 jippruvaw jużaw valur li jista, potenzjalment, tkun nulla. 236 00:09:28,050 --> 00:09:32,000 >> Issa, fir-raba 'linja hawn, "Jekk strcmp (i, t)," tajjeb, 237 00:09:32,000 --> 00:09:33,180 X'hemm li jirreferu għall? 238 00:09:33,180 --> 00:09:36,750 Well, għidna dan kien konċiż ħafna funzjoni imsemmija għall-paragun string. 239 00:09:36,750 --> 00:09:40,370 U l-iskop tagħha fil-ħajja huwa li jitqabblu ewwel argument tagħha kontra dan it-tieni, 240 00:09:40,370 --> 00:09:44,640 iżda mhux f'termini ta 'l-indirizzi tagħhom, kif għamilna involontarjament mument 241 00:09:44,640 --> 00:09:48,270 ilu bil-kodiċi aħmar, iżda pjuttost li tqabbel dawk iż-żewġ 242 00:09:48,270 --> 00:09:53,210 kordi fl-umanament intuwittivi mod billi jitqabblu dan, kontra dan, 243 00:09:53,210 --> 00:09:56,690 kontra dan, kontra dan, u imbagħad jieqaf jekk u meta wieħed 244 00:09:56,690 --> 00:09:59,590 jew it-tnejn ta 'swaba tiegħi hits backslash 0. 245 00:09:59,590 --> 00:10:04,530 Strcmp Allura snin xi ħadd implimentati ilu biex jimplimentaw għalina l-funzjonalità 246 00:10:04,530 --> 00:10:08,890 li aħna ttamat għandna gotten bi ftit jitqabblu żewġ valuri sempliċi. 247 00:10:08,890 --> 00:10:14,929 >> Issa franchement, I iżommu tpinġija kollha ta 'dawn in-numri varji. 248 00:10:14,929 --> 00:10:17,470 Iżda r-realtà hija, stajt ġiet jagħmlu dawn il-up il-ħin kollu. 249 00:10:17,470 --> 00:10:19,580 U so let me biss jimxi 'l quddiem u scribble dawn jitwettqu 250 00:10:19,580 --> 00:10:23,100 biex jagħmel point li, fl-aħħar tal-ġurnata u jimxi 'l quddiem, 251 00:10:23,100 --> 00:10:30,160 aħna mhux qed verament se jimpurtahom liema jindirizza affarijiet huma attwalment 252 00:10:30,160 --> 00:10:30,790 fil-memorja. 253 00:10:30,790 --> 00:10:34,320 Hekk jien mhux ser tiġbed dawn tipi ta 'numri tant aktar, 254 00:10:34,320 --> 00:10:38,970 Jien biss astratt dan bogħod ftit aktar faċli ma 'biss vleġeġ. 255 00:10:38,970 --> 00:10:42,060 >> Fi kliem ieħor, jekk i huwa pointer, ukoll, ejja biss tiġbed, litteralment, 256 00:10:42,060 --> 00:10:45,430 bħala pointer, vleġġa li tipponta minn ruħha li xi ħaġa oħra, 257 00:10:45,430 --> 00:10:48,280 u ma jinkwetaw wisq aktar dwar l-dettall ta 'dawn l-indirizzi 258 00:10:48,280 --> 00:10:49,910 li, għal darb'oħra, I magħmula xorta waħda. 259 00:10:49,910 --> 00:10:52,680 Iżda aħna ser tara dawk l-indirizzi, kultant, meta debugging kodiċi. 260 00:10:52,680 --> 00:10:56,450 >> Issa sadanittant, dan il-programm up here jiffissa, naturalment, 261 00:10:56,450 --> 00:10:58,720 dik il-problema billi jitqabblu dawn iż-żewġ kordi. 262 00:10:58,720 --> 00:11:00,260 Iżda aħna dam fis problema oħra. 263 00:11:00,260 --> 00:11:03,180 Dan kien mill-kopja programm aħħar darba, 264 00:11:03,180 --> 00:11:06,880 biha, I kien qed jipprova għall-kapitalizzazzjoni biss l-ewwel karattru string. 265 00:11:06,880 --> 00:11:09,620 Imma dak kien il-sintomu rajna aħħar darba meta 266 00:11:09,620 --> 00:11:14,150 utent ittajpjat fil-valur, bħal Gabe fl lowercase, għall-i, 267 00:11:14,150 --> 00:11:19,310 allura aħna assenjati s fis t, bħal fil-tielet linja hemm, 268 00:11:19,310 --> 00:11:22,900 u mbagħad I ppruvaw kapitalizzazzjoni t bracket 0? 269 00:11:22,900 --> 00:11:25,950 Liema kienet l-effett ta ' jinbidlu t bracket 0 hawn? 270 00:11:25,950 --> 00:11:27,150 >> UDJENZA: Huwa biddel s. 271 00:11:27,150 --> 00:11:29,360 >> DAVID J. Malan: Yeah, I mibdula s, kif ukoll. 272 00:11:29,360 --> 00:11:31,050 Minħabba dak li kien verament jiġri? 273 00:11:31,050 --> 00:11:34,130 Well, let me ara jekk I tista 'nadif up din l-istampa, kif ġej. 274 00:11:34,130 --> 00:11:41,390 >> Jekk i huwa, għal darb'oħra, il-kelma g, a, b, e, backslash, 0, u s 275 00:11:41,390 --> 00:11:44,084 aħna ser tkompli tpinġija bħala kaxxa hawn, iżda mhux aktar indirizzi. 276 00:11:44,084 --> 00:11:45,250 Ejja tieqaf tagħmel affarijiet up. 277 00:11:45,250 --> 00:11:47,510 Ejja biss jiġbed stampa biex jissimplifikaw il-dinja. 278 00:11:47,510 --> 00:11:52,640 >> Meta Niddikjara t mal string t, li toħloq dik blokki ta 'memorja. 279 00:11:52,640 --> 00:11:55,850 Pjazza jiġri li jkun 32 bits fil-kompjuters aktar. 280 00:11:55,850 --> 00:11:59,530 Fil-fatt, jekk inti stajt qatt semgħu ta ' kompjuter li jkollu arkitettura 32-bit, 281 00:11:59,530 --> 00:12:03,000 verament fancy-jitkellmu, li biss ifisser li juża indirizzi 32-bit. 282 00:12:03,000 --> 00:12:05,370 U bħala tekniku aside, jekk inti stajt qatt staqsiet 283 00:12:05,370 --> 00:12:09,630 għaliex kompjuters anzjani, jekk inti fil-fatt ppruvaw soppa lilhom up ma 'lottijiet ta' RAM, 284 00:12:09,630 --> 00:12:12,360 jista 'jkollu biss massimu ta 'erba' gigabytes ta 'RAM, 285 00:12:12,360 --> 00:12:14,860 ukoll dan għaliex, litteralment, kompjuter qadim tiegħek jista biss 286 00:12:14,860 --> 00:12:17,250 jgħoddu bħala għoli daqs 4 biljun, 4 biljuni bytes, 287 00:12:17,250 --> 00:12:20,590 minħabba li kien qed juża 32-bit Numri għall-indirizzi. 288 00:12:20,590 --> 00:12:23,260 >> Iżda fi kwalunkwe każ, f'dan il- eżempju, l-istorja tal-ferm aktar sempliċi. 289 00:12:23,260 --> 00:12:27,250 t huwa biss ieħor pointer, jew verament stilla char, aka string. 290 00:12:27,250 --> 00:12:30,860 U kif ma nixtieq li taġġorna din l-istampa issa ma 'dik it-tieni linja tal-kodiċi, 291 00:12:30,860 --> 00:12:31,950 wara l-dot, dot, dot? 292 00:12:31,950 --> 00:12:35,845 Meta I do string t ugwali virgola s, kif ma tbiddel din l-istampa? 293 00:12:35,845 --> 00:12:37,500 294 00:12:37,500 --> 00:12:38,000 Yeah? 295 00:12:38,000 --> 00:12:38,916 >> UDJENZA: [inaudible]. 296 00:12:38,916 --> 00:12:41,087 297 00:12:41,087 --> 00:12:42,020 >> DAVID J. Malan: Yeah. 298 00:12:42,020 --> 00:12:42,600 Eżattament. 299 00:12:42,600 --> 00:12:45,620 I biss jitqiegħed vleġġa mill- t kaxxa għall-istess indirizz, 300 00:12:45,620 --> 00:12:47,570 l-istess ewwel ittra taw. 301 00:12:47,570 --> 00:12:50,850 Jew teknikament, jekk dan Guy kienu għadhom fil 0x1, 302 00:12:50,850 --> 00:12:53,052 huwa bħallikieku kelli 0x1 hawn u 0x1 hawn. 303 00:12:53,052 --> 00:12:54,760 Iżda għal darb'oħra, quién dwar l-indirizzi? 304 00:12:54,760 --> 00:12:56,345 Huwa biss l-idea li issa l-kwistjonijiet. 305 00:12:56,345 --> 00:12:57,720 Allura dan huwa dak li qed jiġri hawn. 306 00:12:57,720 --> 00:13:02,690 Allura naturalment, jekk inti tagħmel bracket t 0, li huwa notazzjoni array, 307 00:13:02,690 --> 00:13:05,650 ta course-- u franchement, huwa jistenna simili hemm firxa hawn fuq, 308 00:13:05,650 --> 00:13:07,340 imma issa hemm dan ħaġa stramb. 309 00:13:07,340 --> 00:13:11,160 Kun af li l-lingwa ta 'programmar, C, toffrilek din il-karatteristika, 310 00:13:11,160 --> 00:13:14,650 biha, anke jekk t hija pointer, jew i huwa pointer, 311 00:13:14,650 --> 00:13:18,050 inti xorta tista 'tuża dik familjari, bracket kwadru komdu 312 00:13:18,050 --> 00:13:22,520 Notazzjoni biex tmur l-ewwel element, jew it-tieni element, jew kwalunkwe element 313 00:13:22,520 --> 00:13:26,130 li din pointer huwa tipponta li minħabba, preżumibbilment, huwa 314 00:13:26,130 --> 00:13:29,410 huwa, bħal f'dan il-każ, tipponta lejn uħud firxa. 315 00:13:29,410 --> 00:13:30,340 >> Allura kif nistgħu jiffissaw dan? 316 00:13:30,340 --> 00:13:33,660 Franchement, dan huwa fejn ltqajna ftit enormi fl-ewwel daqqa t'għajn. 317 00:13:33,660 --> 00:13:35,340 Iżda hawnhekk hija verżjoni ġdida u mtejba. 318 00:13:35,340 --> 00:13:37,460 >> Allura l-ewwel, jien jkollna rid tal-librerija CS50, 319 00:13:37,460 --> 00:13:41,170 biss biex jesponu li s tabilħaqq stilla char, biss sinonimu. 320 00:13:41,170 --> 00:13:43,540 U t huwa wkoll stilla char. 321 00:13:43,540 --> 00:13:48,290 Imma dak li qed jiġri fuq il- naħa tal-lemin ta 'dik il-linja 322 00:13:48,290 --> 00:13:49,970 fejn t huwa assenjat valur? 323 00:13:49,970 --> 00:13:50,790 >> X'inhu malloc? 324 00:13:50,790 --> 00:13:51,630 Liema huwa strlen? 325 00:13:51,630 --> 00:13:52,547 X'inhu sizeof (char)? 326 00:13:52,547 --> 00:13:54,380 Għaliex l-Heck ma dan linja ħarsa tant kumplessa? 327 00:13:54,380 --> 00:13:55,713 X'hemm dan isir fuq livell għoli? 328 00:13:55,713 --> 00:13:56,482 329 00:13:56,482 --> 00:13:57,440 X'hemm dan ħażna f't? 330 00:13:57,440 --> 00:13:58,646 Yeah? 331 00:13:58,646 --> 00:14:01,104 UDJENZA: Huwa allokazzjoni ta ' Ċertu ammont ta 'spazju memorja. 332 00:14:01,104 --> 00:14:03,032 Huwa biex jaħżnu, I raden, ittri [inaudible]. 333 00:14:03,032 --> 00:14:04,032 >> DAVID J. Malan: Perfect. 334 00:14:04,032 --> 00:14:04,540 Perfect. 335 00:14:04,540 --> 00:14:06,650 Huwa allokazzjoni ċertu ammont ta 'spazju memorja 336 00:14:06,650 --> 00:14:08,940 biex jaħżnu, preżumibbilment, ittri futuri. 337 00:14:08,940 --> 00:14:11,310 U b'mod partikolari, malloc Għalhekk huwa jirritorna liema? 338 00:14:11,310 --> 00:14:13,114 339 00:14:13,114 --> 00:14:14,851 >> UDJENZA: Jirritornaw il-[inaudible]? 340 00:14:14,851 --> 00:14:15,850 DAVID J. Malan: Eżattament. 341 00:14:15,850 --> 00:14:18,850 Jirritorna l-indirizz ta 'dik memorja, li huwa mod fancy ta 'tgħid, 342 00:14:18,850 --> 00:14:21,640 jirritorna l-indirizz tal- ewwel byte ta 'dak memorja. 343 00:14:21,640 --> 00:14:25,460 L-oneru huwa fuq lili biex tiftakar kemm memorja I attwalment 344 00:14:25,460 --> 00:14:27,140 allokat jew talab malloc għal. 345 00:14:27,140 --> 00:14:28,384 >> Issa kemm huwa li? 346 00:14:28,384 --> 00:14:30,550 Well, anki jekk hemm lott ta 'parentesi hawn, 347 00:14:30,550 --> 00:14:32,970 malloc tieħu biss argument uniku. 348 00:14:32,970 --> 00:14:37,250 U jien tispeċifika strlen ta 'i, hekk jagħtu lili bħala ħafna bytes kif hemm fl-i, 349 00:14:37,250 --> 00:14:37,800 iżda żid wieħed. 350 00:14:37,800 --> 00:14:38,300 Għaliex? 351 00:14:38,300 --> 00:14:39,030 352 00:14:39,030 --> 00:14:39,530 Yeah? 353 00:14:39,530 --> 00:14:40,840 >> UDJENZA: Il backslash 0. 354 00:14:40,840 --> 00:14:41,840 DAVID J. Malan: Eżattament. 355 00:14:41,840 --> 00:14:43,423 Imxejna ltqajna biex jagħmlu manutenzjoni ftit. 356 00:14:43,423 --> 00:14:45,970 Allura għaliex hemm backslash 0, aħna'd aħjar ftakar li. 357 00:14:45,970 --> 00:14:47,310 Inkella, aħna qed tmur biex joħolqu string li 358 00:14:47,310 --> 00:14:49,170 ma jkollux dik terminatur speċjali. 359 00:14:49,170 --> 00:14:52,640 >> Sadanittant, biss biex tkun super anali, I jkollhom sizeof (char), 360 00:14:52,640 --> 00:14:55,730 biss fil-każ li xi ħadd runs tiegħi kodiċi mhux fuq l-appliance CS50, 361 00:14:55,730 --> 00:14:58,220 imma forsi kompjuter differenti b'kollox fejn Chars 362 00:14:58,220 --> 00:15:01,470 huma byte wieħed, b'konvenzjoni, iżda tnejn bytes, jew xi ħaġa akbar minn dak. 363 00:15:01,470 --> 00:15:04,490 Huwa biss sabiex ikunu super, super beżgħana li żbalji. 364 00:15:04,490 --> 00:15:06,940 Anki jekk, fir-realtà, huwa x'aktarx se tkun ta '1. 365 00:15:06,940 --> 00:15:11,490 >> Issa, sadanittant, I imorru quddiem u kopja tal- string, parentesi t i huwa ugwali bracket t s. 366 00:15:11,490 --> 00:15:14,962 U jien se tiddifferixxi għall-ġimgħa li għaddiet kodiċi tas-sors biex tara x'inhu għaddej. 367 00:15:14,962 --> 00:15:17,670 Imma l-takeaway ewlenin, u l- raġuni I tpoġġi l-kodiċi issa fl-aħdar, 368 00:15:17,670 --> 00:15:22,520 huwa minħabba li ħafna aħħar linja, t bracket 0 ugwali toupper, 369 00:15:22,520 --> 00:15:25,230 għandha l-effett ta ' Kapitalizzazzjoni li string? 370 00:15:25,230 --> 00:15:26,960 t u / jew s? 371 00:15:26,960 --> 00:15:29,280 372 00:15:29,280 --> 00:15:30,580 Din l-aħħar linja tal-kodiċi. 373 00:15:30,580 --> 00:15:32,930 374 00:15:32,930 --> 00:15:35,560 >> Just t, għaliex x'hemm ġara dan iż-żmien, 375 00:15:35,560 --> 00:15:41,500 jekk I ftit jneħħu dik l-aħħar pass, x'hemm ġara jiġifieri, meta I-sejħa malloc, 376 00:15:41,500 --> 00:15:45,380 I essenzjalment nikseb blokki ta 'memorja li huwa l-istess daqs bħal-oriġinali, 377 00:15:45,380 --> 00:15:47,020 għaliex dan huwa l-aritmetika li għamilt. 378 00:15:47,020 --> 00:15:50,920 Jien ħażna f't-indirizz ta 'dik blokki ta' memorja. 379 00:15:50,920 --> 00:15:53,370 Anke jekk dan jistenna sbieħ u pretty, sbieħ u vojta, 380 00:15:53,370 --> 00:15:56,882 Ir-realtà hija hemm, hu li aħna ser iżommu ssejjaħ, il-valuri taż-żibel fil hawn. 381 00:15:56,882 --> 00:15:59,340 Li blokki ta 'memorja tista' ħafna ukoll ġew użati qabel, 382 00:15:59,340 --> 00:16:00,940 ftit sekondi, ftit minuti ilu. 383 00:16:00,940 --> 00:16:04,410 Allura jista 'jkun hemm assolutament numri jew ittri hemmhekk, biss mill-inċident. 384 00:16:04,410 --> 00:16:08,580 Imma dawn mhux qed validu, sal I myself timla din blokki ta 'memorja 385 00:16:08,580 --> 00:16:12,510 ma Chars attwali, bħala I tagħmel li għal loop hemmhekk. 386 00:16:12,510 --> 00:16:13,180 Kull dritt? 387 00:16:13,180 --> 00:16:16,180 >> Allura issa, il-quċċata ta ' dawn it-tliet eżempji 388 00:16:16,180 --> 00:16:20,730 li kienu apparentement maqsuma aħħar darba, dan l-eżempju Swap, din il-funzjoni 389 00:16:20,730 --> 00:16:23,670 ħadem fis-sens li biddlu u b. 390 00:16:23,670 --> 00:16:25,620 Iżda ma ħadmux fil F'liema sens ieħor? 391 00:16:25,620 --> 00:16:27,616 392 00:16:27,616 --> 00:16:28,614 Yeah? 393 00:16:28,614 --> 00:16:29,612 >> UDJENZA: [inaudible]. 394 00:16:29,612 --> 00:16:35,600 395 00:16:35,600 --> 00:16:36,700 >> DAVID J. Malan: Eżattament. 396 00:16:36,700 --> 00:16:39,530 I Jekk kellhom call din il-funzjoni minn another-- per eżempju, 397 00:16:39,530 --> 00:16:42,870 minn funzjoni bħal prinċipali, fejn I jkollhom varjabbli, X u Y, bħala I 398 00:16:42,870 --> 00:16:46,160 għamlet aħħar ġimgħa, l-istess kodiċi, u I jgħaddu xuy 399 00:16:46,160 --> 00:16:49,860 li tpartit, u mbagħad is-sejħa Swap-- dan, naturalment, hija l-verżjoni korretta 400 00:16:49,860 --> 00:16:52,220 huwa dak li aħna qed waslu biex see-- ma ħadmux. 401 00:16:52,220 --> 00:16:53,770 Allura x'inhi l-jiffissaw? 402 00:16:53,770 --> 00:16:56,850 >> Well, hekk biss biex tkun ċara, let me imorru quddiem 403 00:16:56,850 --> 00:17:05,450 and-- tagħti me tieni waħda hawn, u ara jekk I tista 'turi li inti l-aħħar wieħed, li 404 00:17:05,450 --> 00:17:12,464 se jkun in-- ejja ara jekk I tista 'ssib dan OK fast-- reali, [inaudible]. 405 00:17:12,464 --> 00:17:18,440 406 00:17:18,440 --> 00:17:19,240 OK, hemm hu. 407 00:17:19,240 --> 00:17:21,000 Allura jinjora l-kmandi jien biss ittajpjar. 408 00:17:21,000 --> 00:17:23,780 I tixtieq li tkun irkuprata fi l-aħħar minuta eżempju 409 00:17:23,780 --> 00:17:27,960 mill-aħħar darba, li issa hija msejħa ebda Swap. 410 00:17:27,960 --> 00:17:30,200 >> Allura l-ebda Swap huwa fejn aħna jitħalla 'off-aħħar darba, 411 00:17:30,200 --> 00:17:32,930 biha, I initialized x 1 u y għal 2. 412 00:17:32,930 --> 00:17:35,840 I imbagħad call Swap, li jgħaddi f'1 u 2. 413 00:17:35,840 --> 00:17:37,930 U allura din il-funzjoni ħadem f'xi sens, 414 00:17:37,930 --> 00:17:40,750 imma kellu l-ebda permanenti effett fuq xu y. 415 00:17:40,750 --> 00:17:45,430 Għalhekk il-kwistjoni fil-idejn hija, kif issa do we attwalment jiffissaw din il-problema? 416 00:17:45,430 --> 00:17:47,820 X'inhi s-soluzzjoni fil-idejn? 417 00:17:47,820 --> 00:17:53,150 >> Ukoll, fil-swap.c, li huwa ġdid llum, avviż koppja ta 'differenzi. 418 00:17:53,150 --> 00:17:54,700 X u Y huma l-istess. 419 00:17:54,700 --> 00:17:57,250 Imma dak li hu b'mod ċar differenti dwar il-linja 25? 420 00:17:57,250 --> 00:17:58,880 421 00:17:58,880 --> 00:18:01,715 X'hemm ġdid hemmhekk, jekk inti tiftakar dak li dehru qishom tieni ilu? 422 00:18:01,715 --> 00:18:02,565 >> UDJENZA: [inaudible]. 423 00:18:02,565 --> 00:18:03,440 >> DAVID J. Malan: Yeah. 424 00:18:03,440 --> 00:18:06,680 Allura l-ampersands huma biċċa ġdida tal sintassi mhux biss f'dan il-programm, 425 00:18:06,680 --> 00:18:08,560 iżda wkoll b'mod aktar ġenerali fil CS50. 426 00:18:08,560 --> 00:18:10,680 Sal-lum, ma naħsibx Rajna xi eżempji 427 00:18:10,680 --> 00:18:14,070 jew verament tkellem dwarhom fi kwalunkwe dettall, minbarra, forsi, preemptively 428 00:18:14,070 --> 00:18:16,467 fis-sezzjoni, l-ampersand bħal dan. 429 00:18:16,467 --> 00:18:19,300 Ukoll, jirriżulta ampersand huwa wieħed tal-aħħar biċċiet ta 'sintassi ġdida 430 00:18:19,300 --> 00:18:20,174 aħna qed tmur biex jitgħallmu. 431 00:18:20,174 --> 00:18:23,500 Kollha dan ifisser huwa l- indirizz ta 'xi varjabbli. 432 00:18:23,500 --> 00:18:25,070 Fuq liema indirizz ma x jgħixu? 433 00:18:25,070 --> 00:18:26,510 Imma dak l-indirizz ma y jgħixu? 434 00:18:26,510 --> 00:18:28,700 Għaliex jekk il- problema fundamentali qabel 435 00:18:28,700 --> 00:18:32,970 kien qed jingħadda li xuy bħala kopji, dak li aħna verament trid tagħmel 436 00:18:32,970 --> 00:18:38,780 hija tipprovdi Swap ma bħal teżor Mappa li twassal għal fejn x uy attwalment 437 00:18:38,780 --> 00:18:41,910 huma fil-RAM, hekk li Swap tista 'ssegwi dik mappa 438 00:18:41,910 --> 00:18:47,760 u mur fejn x jew y jimmarka l-post u jibdlu l-valuri attwali 1 u 2 439 00:18:47,760 --> 00:18:48,270 hemmhekk. 440 00:18:48,270 --> 00:18:50,710 >> Allura Swap jeħtieġ li jinbidel xi ftit wisq. 441 00:18:50,710 --> 00:18:53,760 U fl-ewwel daqqa t'għajn, dan jista ' jidhru ftit simili għal star char. 442 00:18:53,760 --> 00:18:54,850 U tabilħaqq huwa. 443 00:18:54,850 --> 00:18:59,635 Allura huwa pointer għal dak it-tip ta 'data, ibbażata fuq dan il-porzjon enfasizzat? 444 00:18:59,635 --> 00:19:00,810 445 00:19:00,810 --> 00:19:01,620 Allura huwa ta 'int. 446 00:19:01,620 --> 00:19:04,880 >> Allura m'għadhiex int, huwa l-indirizz ta 'int. 447 00:19:04,880 --> 00:19:07,910 U bl-istess mod, b huwa issa għaddej li jkun l-indirizz ta 'int. 448 00:19:07,910 --> 00:19:12,470 Allura meta I issa sejħa Swap minn Main, Jien ma jmur biex jagħtu Swap 1 u 2. 449 00:19:12,470 --> 00:19:15,540 Jien ser tagħtiha simili Ox-xi ħaġa u OX-xi ħaġa, 450 00:19:15,540 --> 00:19:19,820 żewġ indirizzi li se jwasslu Swap għall-postijiet attwali tagħhom 451 00:19:19,820 --> 00:19:21,310 fil-memorja tal-kompjuter tiegħi. 452 00:19:21,310 --> 00:19:25,580 >> Allura issa, implimentazzjoni jifdal tiegħi jeħtieġ li tinbidel a tad. 453 00:19:25,580 --> 00:19:28,650 X'hemm ovvjament differenti issa f'dawn it-tliet linji ta 'kodiċi? 454 00:19:28,650 --> 00:19:31,350 Hemm dawn l-istilel kkritikat kollha fuq il-post, id-dritt? 455 00:19:31,350 --> 00:19:33,014 Allura x'inhu għaddej hawn? 456 00:19:33,014 --> 00:19:33,514 Yeah? 457 00:19:33,514 --> 00:19:35,055 >> UDJENZA: Huwa ovvjament [inaudible]. 458 00:19:35,055 --> 00:19:36,832 459 00:19:36,832 --> 00:19:37,990 >> DAVID J. Malan: Eżattament. 460 00:19:37,990 --> 00:19:41,560 Allura f'dan context-- u dan ma kienx id-deċiżjoni aħjar disinn, ċertament, 461 00:19:41,560 --> 00:19:42,530 snin ilu. 462 00:19:42,530 --> 00:19:45,110 F'dan il-kuntest, fejn inti biss għandek stilla, 463 00:19:45,110 --> 00:19:48,240 u inti ma għandekx tip ta 'dejta, bħal int, immedjatament lejn ix-xellug, 464 00:19:48,240 --> 00:19:53,146 minflok għandek sinjal ugwali, b'mod ċar, f'dan il-kuntest, meta inti tgħidli stilla a, 465 00:19:53,146 --> 00:19:56,980 dan ifisser jmorru għall- indirizz li fil a. 466 00:19:56,980 --> 00:19:58,870 Segwi l-mappa teżor, biex ngħidu hekk. 467 00:19:58,870 --> 00:20:01,720 >> U sadanittant, fil-linja 37, dan ifisser l-istess ħaġa. 468 00:20:01,720 --> 00:20:05,460 Mur fl-indirizz ta ', u mqiegħda liema hemmhekk? 469 00:20:05,460 --> 00:20:09,520 Tkun xi tkun fil- post li b jispeċifika. 470 00:20:09,520 --> 00:20:10,980 Fi kliem ieħor, mur biex b. 471 00:20:10,980 --> 00:20:12,130 Get dak il-valur. 472 00:20:12,130 --> 00:20:15,620 Mur fil u, kull l-ugwaljanza jiffirmaw, l-operatur assenjazzjoni, 473 00:20:15,620 --> 00:20:17,010 tpoġġi dak il-valur hemmhekk. 474 00:20:17,010 --> 00:20:19,272 >> Bl-istess mod, temperatura int huwa biss int. 475 00:20:19,272 --> 00:20:20,730 Xejn jeħtieġ li jinbidel dwar temperatura. 476 00:20:20,730 --> 00:20:24,810 Huwa biss ħġieġ spare minn Annenberg għal xi ħalib jew meraq tal-larinġ. 477 00:20:24,810 --> 00:20:27,630 Imma I do bżonn li jgħidu, mur b. 478 00:20:27,630 --> 00:20:31,449 Mur dik id-destinazzjoni u tpoġġi l-valur temp hemmhekk. 479 00:20:31,449 --> 00:20:32,490 Allura x'inhu jiġri allura? 480 00:20:32,490 --> 00:20:36,540 Meta I attwalment sejħa Swap dan iż-żmien, jekk dan l-ewwel trej hawn tirrappreżenta Main, 481 00:20:36,540 --> 00:20:42,270 dan it-tieni trej jirrappreżenta Swap, meta I jgħaddu ampersand xuy ampersand 482 00:20:42,270 --> 00:20:47,150 minn Main tpartit, biss biex tkun ċara, dak li huwa dan munzell frame tirċievi? 483 00:20:47,150 --> 00:20:48,700 484 00:20:48,700 --> 00:20:49,200 Yeah? 485 00:20:49,200 --> 00:20:50,180 >> UDJENZA: [inaudible]. 486 00:20:50,180 --> 00:20:51,180 DAVID J. Malan: Eżattament. 487 00:20:51,180 --> 00:20:53,129 L-indirizz ta 'X u l-indirizz ta' y. 488 00:20:53,129 --> 00:20:55,170 U inti tista 'taħseb dawn bħal indirizzi postali. 489 00:20:55,170 --> 00:20:58,772 33 Oxford Street u 35 Oxford Street, u inti 490 00:20:58,772 --> 00:21:01,230 tixtieq li jċaqalqu l-żewġ binjiet li huma f'dawn il-postijiet. 491 00:21:01,230 --> 00:21:04,680 >> Huwa tip ta 'idea redikoli, iżda li kollox aħna jfisser minn indirizz. 492 00:21:04,680 --> 00:21:07,000 Fejn fid-dinja tista ' issib dawn iż-żewġ ints? 493 00:21:07,000 --> 00:21:09,470 Fejn fid-dinja tista 'inti isibu dawn iż-żewġ binjiet? 494 00:21:09,470 --> 00:21:15,170 Mela jekk finalment, wara kollox dan iż-żmien I jmorru fis-kodiċi sors tal-lum u jikkumpilaw 495 00:21:15,170 --> 00:21:22,110 Swap u run ./swap, finalment, għall- ewwel darba do we attwalment tara li 496 00:21:22,110 --> 00:21:25,330 Valuri tiegħi jkollhom tabilħaqq ġie skambjat b'suċċess. 497 00:21:25,330 --> 00:21:30,860 U issa, nistgħu anke jieħu nota ta 'dan fil, ngħidu aħna, GDB. 498 00:21:30,860 --> 00:21:32,740 >> So let me jmorru fil-fajl istess. 499 00:21:32,740 --> 00:21:35,010 Let me imorru quddiem u run GDB ta ./swap. 500 00:21:35,010 --> 00:21:36,590 501 00:21:36,590 --> 00:21:40,547 U issa, fl Swap, jien se jmorru quddiem u tistabbilixxi punt tal-qasma fil-Main. 502 00:21:40,547 --> 00:21:42,630 U issa jien se jmorru quddiem u tmexxi l-programm. 503 00:21:42,630 --> 00:21:45,810 U issa naraw kodiċi tiegħi waqfa qasira fil dik il-linja. 504 00:21:45,810 --> 00:21:48,330 >> Jekk I imorru quddiem u print x, x'għandi nara hawn? 505 00:21:48,330 --> 00:21:49,314 506 00:21:49,314 --> 00:21:49,980 Din hija mistoqsija. 507 00:21:49,980 --> 00:21:51,030 508 00:21:51,030 --> 00:21:51,530 Say mill-ġdid? 509 00:21:51,530 --> 00:21:52,295 >> UDJENZA: [inaudible]. 510 00:21:52,295 --> 00:21:53,910 >> DAVID J. Malan: So numri bl-addoċċ, forsi. 511 00:21:53,910 --> 00:21:56,010 Maybe I nikseb xxurtjati, u huwa sbieħ u sempliċi, bħal 0. 512 00:21:56,010 --> 00:21:57,230 Imma forsi huwa xi numru bl-addoċċ. 513 00:21:57,230 --> 00:21:58,090 F'dan il-każ, sibt xxurtjati. 514 00:21:58,090 --> 00:21:59,030 Huwa biss jiġri li jkun 0. 515 00:21:59,030 --> 00:22:00,780 Iżda huwa tabilħaqq Xorti, għaliex mhux sa I 516 00:22:00,780 --> 00:22:06,280 tip li jmiss u mbagħad print x ikollu dik linja tal-kodiċi, linja 19, ġiet eżegwita. 517 00:22:06,280 --> 00:22:10,942 >> Sadanittant, jekk I tip li jmiss darb'oħra, u issa jistampa y, jien ser tara 2. 518 00:22:10,942 --> 00:22:13,900 Issa, jekk I tip li jmiss, li għaddej biex jiksbu ftit konfuża, għaliex issa, 519 00:22:13,900 --> 00:22:17,250 l printf se jidhru fuq l-iskrin, kif għamlet. x hija l-1. 520 00:22:17,250 --> 00:22:18,606 >> Ejja nagħmlu dan mill-ġdid. 521 00:22:18,606 --> 00:22:20,480 U issa, hawn fejn affarijiet nikseb interessanti. 522 00:22:20,480 --> 00:22:21,580 523 00:22:21,580 --> 00:22:26,580 Qabel I call Swap jew saħansitra pass fis dan, ejja tieħu Peek ftit. 524 00:22:26,580 --> 00:22:28,980 x hija, għal darb'oħra, 1. 525 00:22:28,980 --> 00:22:33,240 Y hija, naturalment, sanità malajr jivverifikaw, 2, u għalhekk mhux iebsa hemmhekk. 526 00:22:33,240 --> 00:22:35,740 Imma dak li hu ampersand x? 527 00:22:35,740 --> 00:22:36,760 528 00:22:36,760 --> 00:22:39,350 Tweġiba, huwa tip ta 'funky tfittex. 529 00:22:39,350 --> 00:22:43,500 Iżda l-istilla int fil-parentesi huwa biss mod PGD ta 'tgħid dan huwa indirizz. 530 00:22:43,500 --> 00:22:48,290 Huwa mhux int, huwa pointer għal int, jew inkella magħruf bħala indirizz. 531 00:22:48,290 --> 00:22:49,742 >> X'inhu dan il-ħaġa crazy? 532 00:22:49,742 --> 00:22:51,825 Imxejna qatt dehru xi ħaġa pjuttost simili li qabel. 533 00:22:51,825 --> 00:22:53,650 534 00:22:53,650 --> 00:22:58,120 Allura dan huwa l-indirizz fil-kompjuter tiegħi memorja ta 'fejn x jiġri li jgħixu. 535 00:22:58,120 --> 00:22:59,040 Hija Ox-xi ħaġa. 536 00:22:59,040 --> 00:23:01,290 U dan huwa, franchement, għaliex Stajt beda tpinġija vleġeġ, 537 00:23:01,290 --> 00:23:03,340 minflok ta 'numri, minħabba li verament jimpurtah 538 00:23:03,340 --> 00:23:06,890 li int tiegħek huwa fi partikulari indirizz li li big. 539 00:23:06,890 --> 00:23:12,160 Iżda bffff0c4, dawn huma kollha tabilħaqq ċifri hexadeċimali, 540 00:23:12,160 --> 00:23:13,720 li huma 0 permezz f. 541 00:23:13,720 --> 00:23:16,590 >> Allura aħna ma tkunx qed tmur biex nitkellem wisq twil fuq liema dawk l-affarijiet huma. 542 00:23:16,590 --> 00:23:19,400 Imma jekk I jistampa y, naturalment, nara 2. 543 00:23:19,400 --> 00:23:22,440 Iżda y ampersand, nara dan l-indirizz. 544 00:23:22,440 --> 00:23:26,527 U avviż, għall-kurjuż, kemm apparti huma xuy? 545 00:23:26,527 --> 00:23:27,985 Inti tista 'tinjora l-aktar tal-indirizz. 546 00:23:27,985 --> 00:23:29,330 547 00:23:29,330 --> 00:23:29,920 Erba bytes. 548 00:23:29,920 --> 00:23:33,510 U li konsistenti mal tagħna qabel jsostnu li kemm hu kbir huwa int? 549 00:23:33,510 --> 00:23:34,130 Erba bytes. 550 00:23:34,130 --> 00:23:37,420 Allura jidher qisu lining kollox li up nicely, kif inti tista 'tama, fil-memorja. 551 00:23:37,420 --> 00:23:40,010 >> Allura issa, ejja biss fast quddiem sa l-aħħar ta 'din l-istorja. 552 00:23:40,010 --> 00:23:43,290 Ejja imorru quddiem u t-tip pass, adsa fil-funzjoni Swap. 553 00:23:43,290 --> 00:23:46,880 Issa avviż, jekk I tip A, huwa identiku għall-indirizz ta 'x. 554 00:23:46,880 --> 00:23:52,130 Jekk tip I b, huwa identiku fl-indirizz ta 'y. 555 00:23:52,130 --> 00:23:57,020 Allura dak għandi tara jekk I jgħidu, mur l-indirizz ta '? 556 00:23:57,020 --> 00:23:58,120 Allura print star a. 557 00:23:58,120 --> 00:24:00,130 Allura star ifisser jmorru hemm, f'dan il-kuntest. 558 00:24:00,130 --> 00:24:02,730 Ampersand ifisser x'inhu l-indirizz ta '. 559 00:24:02,730 --> 00:24:05,000 Allura istilla mezz 1. 560 00:24:05,000 --> 00:24:09,590 U print star b tagħti me 2. 561 00:24:09,590 --> 00:24:15,750 >> U let me tassumi, għall-mument, li mill-inqas l-kodiċi li 562 00:24:15,750 --> 00:24:18,950 tipproċedi biex tesegwixxi issa jista 'jkun motivata permezz ta 'fil-mod. 563 00:24:18,950 --> 00:24:21,150 Iżda aħna ser tirrevedi din l-idea qabel twil. 564 00:24:21,150 --> 00:24:23,850 Allura din il-verżjoni tal Swap huwa issa korretta u tippermetti 565 00:24:23,850 --> 00:24:26,650 us li tpartit dan it-tip tad-data partikolari. 566 00:24:26,650 --> 00:24:29,120 >> Mela xi mistoqsijiet imbagħad fuq Swap? 567 00:24:29,120 --> 00:24:29,890 Fuq star? 568 00:24:29,890 --> 00:24:30,690 Fuq l-indirizz ta '? 569 00:24:30,690 --> 00:24:33,270 U tkun taf tara, ma problema stabbiliti 4, tip ta ', 570 00:24:33,270 --> 00:24:37,310 iżda problema stabbiliti 5, definittivament, kif dawn affarijiet huma utli u jiksbu ħafna aktar 571 00:24:37,310 --> 00:24:39,584 komdu magħhom, bħala riżultat. 572 00:24:39,584 --> 00:24:40,430 Xejn fil-livelli kollha? 573 00:24:40,430 --> 00:24:40,930 Kull dritt. 574 00:24:40,930 --> 00:24:44,350 Allura malloc huwa, għal darb'oħra, din il-funzjoni li biss jalloka memorja, memorja 575 00:24:44,350 --> 00:24:45,330 allokazzjoni. 576 00:24:45,330 --> 00:24:47,024 U għaliex dan huwa utli? 577 00:24:47,024 --> 00:24:48,940 Ukoll, dan il-ħin, inti kont qed tuża malloc. 578 00:24:48,940 --> 00:24:52,230 Jekk inti tqis issa kif getString xogħlijiet, preżumibbilment, huwa 579 00:24:52,230 --> 00:24:56,140 ġew tistaqsi lil xi ħadd għal blokki ta ' memorja, ghaċ-tipi utent string 580 00:24:56,140 --> 00:24:59,040 fil, għaliex aħna ċertament ma kinitx taf, bħala persunal CS50, 581 00:24:59,040 --> 00:25:02,710 kif dawk kordi big li l-bnedmin ser tip jista 'jkun. 582 00:25:02,710 --> 00:25:07,910 >> Mela ejja, għall-ewwel darba, jibdew Qaxxar kif jaħdem il-librerija CS50, 583 00:25:07,910 --> 00:25:10,990 permezz ta 'koppja ta' eżempji li se iwassalna hemmhekk. 584 00:25:10,990 --> 00:25:15,300 Mela jekk jien jiftħu gedit u jiftħu scanf 0, 585 00:25:15,300 --> 00:25:17,055 aħna qed tmur biex tara d-kodiċi li ġejjin. 586 00:25:17,055 --> 00:25:18,720 587 00:25:18,720 --> 00:25:23,530 Scanf 0, disponibbli fuq il-websajt għall- llum, għandha relattivament ftit linji tal-kodiċi 588 00:25:23,530 --> 00:25:25,351 hawn, 14 sa 20. 589 00:25:25,351 --> 00:25:26,600 U ejja ara dak li qed jagħmel. 590 00:25:26,600 --> 00:25:28,920 Hija tiddikjara int, imsejħa x. 591 00:25:28,920 --> 00:25:30,850 Hija tgħid xi ħaġa simili, numru jogħġbok. 592 00:25:30,850 --> 00:25:33,940 U issa jgħid, scanf% i, & x. 593 00:25:33,940 --> 00:25:35,620 Allura hemm mazz ta 'għalf ġdid hemmhekk. 594 00:25:35,620 --> 00:25:38,420 >> Iżda scanf, inti tista 'tip ta' jaħsbu bħala l-oppost ta 'printf. 595 00:25:38,420 --> 00:25:40,090 printf, naturalment, prints għall-iskrin. 596 00:25:40,090 --> 00:25:44,410 sort scanf tal scans mill-utent tal- xi ħaġa keyboard hu jew hi jkun ittajpjat. 597 00:25:44,410 --> 00:25:46,550 >> % I huwa bħad printf. 598 00:25:46,550 --> 00:25:49,410 Dan ifisser jistennew li l- utent biex tip AN int. 599 00:25:49,410 --> 00:25:52,820 U issa, għaliex taħseb I jista 'jkun li tgħaddi scanf & x? 600 00:25:52,820 --> 00:25:54,030 601 00:25:54,030 --> 00:25:57,770 Jekk l-iskop fil-ħajja ta 'scanf huwa li tikseb xi ħaġa mill-utent, 602 00:25:57,770 --> 00:26:02,480 x'inhi t-tifsira ta ' jgħaddiha, & x, issa? 603 00:26:02,480 --> 00:26:02,980 Yeah? 604 00:26:02,980 --> 00:26:03,896 >> UDJENZA: [inaudible]. 605 00:26:03,896 --> 00:26:05,540 606 00:26:05,540 --> 00:26:06,540 DAVID J. Malan: Eżattament. 607 00:26:06,540 --> 00:26:12,900 Tkun xi tkun I, il-bniedem, it-tip fil, input tiegħi se jiġu ffrankati f'dak il-post. 608 00:26:12,900 --> 00:26:17,660 Mhuwiex biżżejjed, tfakkar, għal ftit jgħaddu x, għaliex aħna stajt tidher diġà, 609 00:26:17,660 --> 00:26:21,630 kwalunkwe ħin li inti tgħaddi biss varjabbli prima, bħal int, għal xi funzjoni oħra, 610 00:26:21,630 --> 00:26:25,640 ċert, li tista 'tibdel dik varjabbli, imma mhux b'mod permanenti. 611 00:26:25,640 --> 00:26:27,360 Ma jistax jkollhom effett fuq Main. 612 00:26:27,360 --> 00:26:29,420 Hija tista 'biss tibdel kopja lokali tiegħu stess. 613 00:26:29,420 --> 00:26:32,560 Iżda jekk, minflok, inti ma tagħti me l-int attwali, 614 00:26:32,560 --> 00:26:36,640 imma inti tagħti me direzzjonijiet li int, I issa, qed scanf, 615 00:26:36,640 --> 00:26:41,050 żgur, I tista 'ssegwi dik jindirizzaw u tpoġġi numru hemmhekk 616 00:26:41,050 --> 00:26:43,280 hekk ikollok aċċess għaliha kif ukoll. 617 00:26:43,280 --> 00:26:45,120 >> Allura meta I run dan il-programm, ejja ara. 618 00:26:45,120 --> 00:26:49,660 Jagħmlu scanf 0 dot mmejla, scanf 0. 619 00:26:49,660 --> 00:26:54,030 U jekk I issa tip numru bħall 50, grazzi għall-50. 620 00:26:54,030 --> 00:26:58,150 Jekk I issa tip numru bħal negattiv 1, għall-negattiv 1. 621 00:26:58,150 --> 00:27:04,200 I issa tip numru bħall 1.5, hm. 622 00:27:04,200 --> 00:27:06,030 Għaliex ma tiegħi program jinjora lili? 623 00:27:06,030 --> 00:27:07,300 624 00:27:07,300 --> 00:27:09,880 Well, għaliex sempliċiment, I told li tistenna int biss. 625 00:27:09,880 --> 00:27:10,380 Kull dritt. 626 00:27:10,380 --> 00:27:11,630 Allura dak verżjoni waħda ta 'din. 627 00:27:11,630 --> 00:27:16,600 Ejja jieħdu l-affarijiet up a talja u nipproponi li din mhix tajba. 628 00:27:16,600 --> 00:27:20,530 U hawnhekk tinsab eżempju sempliċi ħafna ta 'kif nistgħu tibda bil-miktub kodiċi 629 00:27:20,530 --> 00:27:24,450 li nies oħra tista 'tisfrutta jew kompromess billi tagħmel affarijiet ħżiena. 630 00:27:24,450 --> 00:27:28,336 Allura linja 16, hekk simili fl-ispirtu li qabel, 631 00:27:28,336 --> 00:27:29,960 imma jien ma tiddikjarah int f'dan il-ħin. 632 00:27:29,960 --> 00:27:32,970 Jien li tiddikjaraha bħala star char, aka string. 633 00:27:32,970 --> 00:27:35,190 >> Imma dak li verament ma jfisser? 634 00:27:35,190 --> 00:27:38,790 Mela jekk jien ma jispeċifika address-- u Jien ssejjaħ dan arbitrarju, buffer, 635 00:27:38,790 --> 00:27:43,370 imma I tista 'sejħa hija s, li jkun simple-- u mbagħad I do dan, tispjega lill me, 636 00:27:43,370 --> 00:27:48,630 jekk inti tista ', ibbażata fuq il-preċedenti loġika, dak li huwa scanf tagħmel fil-linja 18, 637 00:27:48,630 --> 00:27:55,000 jekk jgħaddu% s u buffer, li huwa indirizz? 638 00:27:55,000 --> 00:27:58,210 X'inhu scanf, jekk inti tapplika l- istess loġika eżatt bħal verżjoni 0, 639 00:27:58,210 --> 00:28:00,640 ser jipprova jagħmel hawnhekk, meta l-xi ħaġa tipi utent fl? 640 00:28:00,640 --> 00:28:02,630 641 00:28:02,630 --> 00:28:03,409 Yeah? 642 00:28:03,409 --> 00:28:04,407 >> UDJENZA: [inaudible]. 643 00:28:04,407 --> 00:28:07,401 644 00:28:07,401 --> 00:28:08,890 >> DAVID J. Malan: Eżattament. 645 00:28:08,890 --> 00:28:11,577 Scanf, mill-loġika ta 'qabel, huwa ser jieħu l-sekwenza 646 00:28:11,577 --> 00:28:13,410 li l-ttajpjata bniedem in-- huwa issa string, 647 00:28:13,410 --> 00:28:15,790 mhuwiex numru, preżumibbilment, jekk hu jew hi cooperates-- 648 00:28:15,790 --> 00:28:19,310 u li għaddej biex tipprova tpoġġi dan string fil-memorja fi kwalunkwe indirizz 649 00:28:19,310 --> 00:28:20,340 buffer jispeċifika. 650 00:28:20,340 --> 00:28:23,870 U dan huwa kbir, għaliex buffer tabilħaqq maħsub biex ikun indirizz. 651 00:28:23,870 --> 00:28:30,470 >> Imma I titlob dan il-programm huwa Buggy fil mod serju ħafna, għaliex dak valur huwa 652 00:28:30,470 --> 00:28:31,330 buffer kontumaċja? 653 00:28:31,330 --> 00:28:33,380 654 00:28:33,380 --> 00:28:34,790 Liema kienu I initialized fis? 655 00:28:34,790 --> 00:28:35,770 Liema blokki ta 'memorja? 656 00:28:35,770 --> 00:28:37,480 657 00:28:37,480 --> 00:28:38,620 I ma jkunux, id-dritt? 658 00:28:38,620 --> 00:28:42,265 >> Allura anke jekk stajt allokat star char thats m'għadhomx imsejħa s, 659 00:28:42,265 --> 00:28:48,030 minflok sejjaħ, buffer-- hekk ejja jiġbed isem tal-varjabbli tal- 660 00:28:48,030 --> 00:28:53,380 issa bħala buffer-- jekk ikolli ma imsejħa getString jew malloc hawn, 661 00:28:53,380 --> 00:28:56,030 li effettivament ifisser li buffer hija biss ftit valur żibel. 662 00:28:56,030 --> 00:28:57,030 >> Issa dak ma jfisser? 663 00:28:57,030 --> 00:29:00,220 Dan ifisser li jien qallek scanf li jistennew string mill-utent. 664 00:29:00,220 --> 00:29:01,300 U inti taf liema? 665 00:29:01,300 --> 00:29:03,883 Tkun xi tkun dan il-ħaġa hija li tipponta to-- u I tfassal mark kwistjoni, 666 00:29:03,883 --> 00:29:07,060 iżda fir-realtà, li għaddej biex tkun xi ħaġa bħal OX1, 2, 3, id-dritt? 667 00:29:07,060 --> 00:29:10,730 Huwa xi valur fittizji li biss jiġri li jkun hemm minn qabel. 668 00:29:10,730 --> 00:29:13,440 Allura fi kliem ieħor, huwa bħallikieku buffer huwa biss 669 00:29:13,440 --> 00:29:16,180 tipponta lejn xi ħaġa fil-memorja. 670 00:29:16,180 --> 00:29:17,610 Għandi l-ebda idea dak. 671 00:29:17,610 --> 00:29:24,130 >> Mela jekk jien tip fil Gabe issa, li għaddej biex tipprova tpoġġi g-a-b-e / 0 hemmhekk. 672 00:29:24,130 --> 00:29:25,530 Imma min jaf dak li hu? 673 00:29:25,530 --> 00:29:27,480 U fil-passat, xi żmien konna ppruvaw tmissx 674 00:29:27,480 --> 00:29:29,770 memorja li ma jappartjenix lilna, dak li ġara? 675 00:29:29,770 --> 00:29:31,020 676 00:29:31,020 --> 00:29:32,870 Jew kważi kull darba. 677 00:29:32,870 --> 00:29:34,310 Tort Segmentazzjoni, id-dritt? 678 00:29:34,310 --> 00:29:37,829 >> Din il-vleġġa, għandi l-ebda idea fejn huwa tipponta. huwa biss xi valur każwali. 679 00:29:37,829 --> 00:29:40,370 U ovvjament, jekk inti tinterpreta valur każwali bħala indirizz, 680 00:29:40,370 --> 00:29:42,610 int se jmorru biex xi destinazzjoni każwali. 681 00:29:42,610 --> 00:29:46,810 Allura Gabe ċertament jista crash programm tiegħi f'dan il-każ hawnhekk. 682 00:29:46,810 --> 00:29:50,600 >> Allura x'nistgħu nagħmlu dan huwa kważi bħala ħżiena? 683 00:29:50,600 --> 00:29:52,660 Ikkunsidra dan it-tielet u Eżempju finali ta scanf. 684 00:29:52,660 --> 00:29:53,890 685 00:29:53,890 --> 00:29:56,870 Din il-verżjoni huwa aħjar fir F'liema sens? 686 00:29:56,870 --> 00:29:57,990 687 00:29:57,990 --> 00:30:01,400 Jekk inti komdu ma 'l- problema preċedenti, dan huwa aħjar. 688 00:30:01,400 --> 00:30:02,250 Għaliex? 689 00:30:02,250 --> 00:30:03,250 >> UDJENZA: [inaudible]. 690 00:30:03,250 --> 00:30:06,235 691 00:30:06,235 --> 00:30:07,110 DAVID J. Malan: Tajba. 692 00:30:07,110 --> 00:30:09,970 Allura f'dan il-każ tal-linja 16 hija aħjar, fis-sens 693 00:30:09,970 --> 00:30:12,030 li aħna qed espliċitament allokazzjoni xi memorja. 694 00:30:12,030 --> 00:30:14,190 Aħna mhux qed tuża malloc, aħna qed jużaw il-ġimgħa 2 695 00:30:14,190 --> 00:30:16,060 approċċ ta 'ftit tiddikjara firxa. 696 00:30:16,060 --> 00:30:18,130 U aħna ħadthom qal qabel li string huwa biss firxa ta 'karattri, 697 00:30:18,130 --> 00:30:19,690 għalhekk dan huwa totalment leġittimu. 698 00:30:19,690 --> 00:30:22,910 Imma hija, naturalment, bħala inti nota, id-daqs fiss, 16. 699 00:30:22,910 --> 00:30:25,440 >> Allura dan il-programm huwa totalment sikur, jekk tip I 700 00:30:25,440 --> 00:30:29,760 f'qatet twal karattru wieħed, b'żewġ karattri kordi, 15 sekwenzi ta 'karattri. 701 00:30:29,760 --> 00:30:34,970 Imma malli I tibda ittajpjar 16, 17, 18, 1,000 sekwenzi ta 'karattri, 702 00:30:34,970 --> 00:30:37,390 fejn dak string ser jispiċċaw? 703 00:30:37,390 --> 00:30:39,570 Huwa ser jispiċċaw parzjalment here. 704 00:30:39,570 --> 00:30:42,820 Iżda mbagħad li jaf x'iktar huwa lil hinn mill-konfini 705 00:30:42,820 --> 00:30:44,270 ta 'dan array partikolari? 706 00:30:44,270 --> 00:30:48,015 >> Huwa bħallikieku stajt ddikjarati 16 kaxxi hawn. 707 00:30:48,015 --> 00:30:49,300 708 00:30:49,300 --> 00:30:52,690 Allura minflok jiġbed out kollha 16, aħna ser biss nippretendu li stajt mfassla 16. 709 00:30:52,690 --> 00:30:56,540 Imma jekk jien mbagħad jippruvaw biex taqra string thats ħafna itwal, bħal 50 karattru, 710 00:30:56,540 --> 00:31:01,270 Jien ser tibda tqegħid a, b, c, d, x, y, z. 711 00:31:01,270 --> 00:31:04,916 U dan huwa preżumibbilment xi segment memorja ieħor 712 00:31:04,916 --> 00:31:06,790 li, għal darb'oħra, jista 'jikkawża programm tiegħi li jikkraxxja, 713 00:31:06,790 --> 00:31:10,600 għaliex stajt ma talab għal xejn aktar milli sempliċiment 16 bytes. 714 00:31:10,600 --> 00:31:12,260 >> Allura quién? 715 00:31:12,260 --> 00:31:13,880 Well, hawn l-librerija CS50. 716 00:31:13,880 --> 00:31:17,220 U l-aktar ta 'dan huwa biss bħall-istruzzjonijiet top up. 717 00:31:17,220 --> 00:31:21,670 Il-librerija CS50, dan il-ħin, kellu din il-linja fil-linja 52. 718 00:31:21,670 --> 00:31:23,680 Rajna typedef, jew se tara typedef 719 00:31:23,680 --> 00:31:27,930 fil pset 4, li biss joħloq sinonimu biha star char tista 'tkun aktar 720 00:31:27,930 --> 00:31:29,290 sempliċiment imsemmija bħala string. 721 00:31:29,290 --> 00:31:31,540 Allura dan huwa wieħed mill- roti ta 'taħriġ ftit 722 00:31:31,540 --> 00:31:34,120 konna użati segretament taħt il-barnuża. 723 00:31:34,120 --> 00:31:36,490 >> Sadanittant, hawnhekk l-funzjoni, getchar. 724 00:31:36,490 --> 00:31:38,190 Issa apparentement, hemm ebda korp li lilha. 725 00:31:38,190 --> 00:31:40,273 U fil-fatt, jekk I iżommu scrolling, I ma attwalment 726 00:31:40,273 --> 00:31:42,080 tara xi implimentazzjonijiet ta 'dawn il-funzjonijiet. 727 00:31:42,080 --> 00:31:43,140 728 00:31:43,140 --> 00:31:45,516 Bħala kontroll sanità, għaliex huwa li? 729 00:31:45,516 --> 00:31:46,795 >> UDJENZA: [inaudible]. 730 00:31:46,795 --> 00:31:47,670 DAVID J. Malan: Yeah. 731 00:31:47,670 --> 00:31:48,950 Allura dan huwa l-fajl header. 732 00:31:48,950 --> 00:31:52,520 U fajls header fihom prototipi, flimkien ma 'xi għalf ieħor, jidher, 733 00:31:52,520 --> 00:31:53,780 bħal typedefs. 734 00:31:53,780 --> 00:31:56,910 Iżda fil CS50.c, li aħna ħadthom qatt tak kollox, 735 00:31:56,910 --> 00:32:02,100 iżda kien fil-appliance CS50 kollha dan iż-żmien, fil-fond ġewwa ta 'folders tagħha, 736 00:32:02,100 --> 00:32:04,990 avviż li hemm sħiħa mazz ta 'funzjonijiet fil hawn. 737 00:32:04,990 --> 00:32:06,720 >> Fil-fatt, ejja iscroll. 738 00:32:06,720 --> 00:32:08,810 Ejja jinjora ħafna minnhom, għal issa. 739 00:32:08,810 --> 00:32:12,670 Iżda iscroll biex getInt u tara kif getInt taħdem. 740 00:32:12,670 --> 00:32:13,890 Allura hawnhekk huwa getInt. 741 00:32:13,890 --> 00:32:17,727 U jekk inti qatt verament kkurati kif tikseb int taħdem, hawnhekk huwa d-dokumentazzjoni tagħha. 742 00:32:17,727 --> 00:32:19,560 U fost l-affarijiet li jgħid huwa jgħidlek 743 00:32:19,560 --> 00:32:21,340 dak li l-firxiet ta 'valuri li jistgħu jirritornaw. 744 00:32:21,340 --> 00:32:24,400 Huwa essenzjalment negattiva 2 biljuni għall-pożittiv 2 biljun, jagħtu jew jieħu. 745 00:32:24,400 --> 00:32:26,420 >> U jirriżulta, dan kollu żmien, anke jekk aħna qatt ma stajt 746 00:32:26,420 --> 00:32:28,570 kellha inti tiċċekkja għal dan, jekk xi ħaġa tmur ħażin, 747 00:32:28,570 --> 00:32:30,680 jirriżulta li kollha dan iż-żmien, getInt għandha 748 00:32:30,680 --> 00:32:33,600 ġie jirritornaw speċjali kostanti, mhux null, 749 00:32:33,600 --> 00:32:36,760 iżda pjuttost int_max, li hija konvenzjoni biss programmer. 750 00:32:36,760 --> 00:32:38,846 Dan ifisser hawnhekk huwa valur speċjali. 751 00:32:38,846 --> 00:32:41,470 Kun żgur li tiċċekkja għal dan, biss fil-każ xi ħaġa tmur ħażin. 752 00:32:41,470 --> 00:32:43,261 Iżda aħna qatt ma stajt bothered ma 'dak sal-lum, 753 00:32:43,261 --> 00:32:45,200 minħabba darb'oħra, dan huwa maħsub biex jissimplifika. 754 00:32:45,200 --> 00:32:46,950 >> Imma kif ma getInt nikseb implimentati? 755 00:32:46,950 --> 00:32:48,450 Ukoll, wieħed, hija tieħu l-ebda argumenti. 756 00:32:48,450 --> 00:32:49,390 Aħna nafu li. 757 00:32:49,390 --> 00:32:50,820 Hija jirritorna int. 758 00:32:50,820 --> 00:32:51,950 Aħna nafu li. 759 00:32:51,950 --> 00:32:54,460 Allura kif taħdem taħt il-barnuża? 760 00:32:54,460 --> 00:32:58,290 >> Allura apparentement hemm xi infinita loop, mill-inqas l-apparenza ta 'wieħed. 761 00:32:58,290 --> 00:33:00,290 Avviż li aħna qed jużaw getString. 762 00:33:00,290 --> 00:33:04,000 Allura li interessanti. getInt jitlob funzjoni tagħna stess, getString. 763 00:33:04,000 --> 00:33:05,645 U issa għaliex jista dan ikun il-każ? 764 00:33:05,645 --> 00:33:07,400 765 00:33:07,400 --> 00:33:09,842 Why am I qed difensiva hawn fil-linja 165? 766 00:33:09,842 --> 00:33:11,390 767 00:33:11,390 --> 00:33:15,639 Liema jista 'jiġri fil-linja 164, biss biex tkun ċara? 768 00:33:15,639 --> 00:33:16,930 Huwa l-istess risposta bħal qabel. 769 00:33:16,930 --> 00:33:18,660 770 00:33:18,660 --> 00:33:20,089 Jista 'jkun biss barra ta' memorja. 771 00:33:20,089 --> 00:33:23,130 Xi ħaġa tmur ħażin ma getString, konna ltqajna biex ikunu jistgħu jimmaniġġjaw dan. 772 00:33:23,130 --> 00:33:27,070 U r-raġuni I ma jirritornawx null hija li, teknikament, nulla huwa pointer. 773 00:33:27,070 --> 00:33:29,120 getInt għandu jirritorna l int. 774 00:33:29,120 --> 00:33:31,060 So I stajt arbitrarjament iddeċieda, essenzjalment, 775 00:33:31,060 --> 00:33:34,600 li 2 biljun, jagħtu jew jieħu, huwa għaddej li tkun valur speċjali li nista qatt 776 00:33:34,600 --> 00:33:35,970 fil-fatt tikseb mill-utent. 777 00:33:35,970 --> 00:33:39,930 Huwa biss il-valur wieħed jien ser għall-iskart li jirrappreżentaw kodiċi żball. 778 00:33:39,930 --> 00:33:41,540 >> Allura issa, l-affarijiet jiksbu fancy ftit. 779 00:33:41,540 --> 00:33:44,670 U huwa pjuttost mhux l-istess funzjoni bħal qabel, iżda huwa simili ħafna. 780 00:33:44,670 --> 00:33:50,120 So avviż, niddikjara hawn, f'konformità 172, kemm n int u char c. 781 00:33:50,120 --> 00:33:53,600 U mbagħad I jużaw din il-linja funky, sscanf, li jirriżulta 782 00:33:53,600 --> 00:33:55,990 ma scan string mill-keyboard. 783 00:33:55,990 --> 00:33:59,226 Inhi string eżistenti li l-utent diġà ittajpjat fil. 784 00:33:59,226 --> 00:34:02,100 So I diġà imsejħa getString, li ifisser I jkollhom string fil-memorja. 785 00:34:02,100 --> 00:34:05,020 sscanf huwa dak youd sejħa funzjoni parsing. 786 00:34:05,020 --> 00:34:07,760 Hija tħares lejn l-sekwenza stajt ittajpjat fil, karattri minn karattru, 787 00:34:07,760 --> 00:34:09,250 u ma xi ħaġa utli. 788 00:34:09,250 --> 00:34:10,969 Dan string hija maħżuna fil-linja. 789 00:34:10,969 --> 00:34:13,560 U naf li biss billi tmur back up hawn u qal, oh, OK, 790 00:34:13,560 --> 00:34:15,143 I sejħitilha ma s dan iż-żmien, iżda linja. 791 00:34:15,143 --> 00:34:15,989 792 00:34:15,989 --> 00:34:18,080 >> U issa dan huwa xi ftit differenti. 793 00:34:18,080 --> 00:34:22,480 Iżda dan effettivament ifisser, għal raġunijiet aħna ser kemmxejn mewġa idejn tagħna lejn llum, 794 00:34:22,480 --> 00:34:26,070 li aħna verifika biex ara jekk l-utent ittajpjat fil 795 00:34:26,070 --> 00:34:29,909 u int u forsi karattru ieħor. 796 00:34:29,909 --> 00:34:33,610 Jekk l-utent ittajpjat fi int, huwa ser jiġi maħżun fil n, għaliex jien 797 00:34:33,610 --> 00:34:36,739 tgħaddi dan billi indirizz, l- trick ġdid Rajna llum. 798 00:34:36,739 --> 00:34:41,570 Jekk l-utent ittajpjat wkoll fil 123x simili, li x 799 00:34:41,570 --> 00:34:45,060 se jispiċċaw ta ' ittra fil-karattru c. 800 00:34:45,060 --> 00:34:48,739 >> Issa jirriżulta li sscanf se tell me, intelliġenti, 801 00:34:48,739 --> 00:34:54,750 kemm varjabbli kien sscanf b'suċċess kapaċi li jimlew. 802 00:34:54,750 --> 00:34:58,770 Allura billi din il-loġika, jekk il-funzjoni Jien implimentazzjoni huwa getInt, 803 00:34:58,770 --> 00:35:00,900 imma jien iċċekkjar, potenzjalment, għall-utent 804 00:35:00,900 --> 00:35:04,190 li ittajpjat fi int segwit minn xi ħaġa oħra, 805 00:35:04,190 --> 00:35:08,580 liema do Irrid tal sscanf valur tar-ritorn tassew tkun? 806 00:35:08,580 --> 00:35:10,950 Jekk l-għan huwa li tikseb biss int mill-utent? 807 00:35:10,950 --> 00:35:13,980 808 00:35:13,980 --> 00:35:19,300 >> Mela jekk sscanf prospetti 2, dak ma jfisser? 809 00:35:19,300 --> 00:35:21,660 L-utent ittajpjat fil xi ħaġa simili, litteralment, 810 00:35:21,660 --> 00:35:24,770 123x, li huwa biss nonsense. 811 00:35:24,770 --> 00:35:27,490 Huwa ta 'kundizzjoni żball, u Irrid sabiex jikkontrolla għal dak. 812 00:35:27,490 --> 00:35:32,960 >> Mela jekk it-tipi utent dan, billi din il-loġika, dak ma sscanf ritorn, 813 00:35:32,960 --> 00:35:33,740 would you say? 814 00:35:33,740 --> 00:35:35,070 815 00:35:35,070 --> 00:35:39,130 Allura li għaddej biex jirritornaw 2, minħabba l-123 se jmorru fil hawn, 816 00:35:39,130 --> 00:35:41,580 u l-x se jispiċċaw fil hawn. 817 00:35:41,580 --> 00:35:43,970 Imma jien ma jridu li l-x li tikseb mimlija. 818 00:35:43,970 --> 00:35:48,580 Irrid li sscanf biss tirnexxi fil timla l-ewwel 'varjabbli tagħha. 819 00:35:48,580 --> 00:35:52,490 U hekk hu għalhekk li I tixtieq sscanf li jirritornaw 1. 820 00:35:52,490 --> 00:35:55,750 >> U jekk dan huwa daqsxejn fuq ir-ras għall-mument, li l-totalment multa. 821 00:35:55,750 --> 00:36:00,030 Tirrealizza madankollu, li wieħed mill- valuri ta 'getInt u getString 822 00:36:00,030 --> 00:36:03,630 huwa li aħna qed tagħmel Heck ta ' lott ta 'verifika żball bħal dan hekk 823 00:36:03,630 --> 00:36:07,130 li, sal-lum, inti tista pretty ħafna tip xejn keyboard tiegħek, 824 00:36:07,130 --> 00:36:08,490 u aħna se qabda. 825 00:36:08,490 --> 00:36:10,592 U aħna ċertament, l- persunal, se definittivament mhux 826 00:36:10,592 --> 00:36:13,300 tkun is-sors ta 'bug fil tiegħek programm, għaliex aħna qed defensively 827 00:36:13,300 --> 00:36:16,270 verifika għall kollha ta 'l stupid affarijiet li utent tista 'tagħmel, 828 00:36:16,270 --> 00:36:18,900 bħal ittajpjar string, meta int verament riedu int. 829 00:36:18,900 --> 00:36:21,350 Allura għal now-- aħna ser jaslu lura għal dan qabel long-- 830 00:36:21,350 --> 00:36:23,710 iżda dan il-ħin, getString u getInt jkollhom 831 00:36:23,710 --> 00:36:29,950 Kien taħt il-barnuża li jużaw dan idea bażika ta 'indirizzi tal-memorja. 832 00:36:29,950 --> 00:36:32,580 >> Allura issa, ejja tagħmel affarijiet ftit aktar faċli għall-utent. 833 00:36:32,580 --> 00:36:38,740 Kif inti tista 'recall, minn Binky aħħar time-- jekk ġurdien tiegħi se cooperate-- hekk 834 00:36:38,740 --> 00:36:42,560 kellna dan il-kodiċi, li franchement, huwa pjuttost tagħmel sens. 835 00:36:42,560 --> 00:36:45,330 Dan il-kodiċi tikseb xejn utli, iżda kien l-eżempju 836 00:36:45,330 --> 00:36:48,330 li professur Parlante użat sabiex jirrappreżenta 837 00:36:48,330 --> 00:36:51,840 dak li kien għaddej fil- programm li jinvolvi memorja. 838 00:36:51,840 --> 00:36:54,850 >> Mela ejja retell dan istorja fil-qosor super. 839 00:36:54,850 --> 00:36:58,720 Dawn l-ewwel żewġ linji, b'mod Ingliż, do dak, would you say? 840 00:36:58,720 --> 00:37:01,230 841 00:37:01,230 --> 00:37:05,430 Biss fil raġonevolment bniedem, iżda ftit termini tekniċi, tieħu stab. 842 00:37:05,430 --> 00:37:06,346 UDJENZA: [inaudible]. 843 00:37:06,346 --> 00:37:07,705 844 00:37:07,705 --> 00:37:11,080 >> DAVID J. Malan: OK, int tistabbilixxi indirizzi għal x tiegħek u varjabbli y. 845 00:37:11,080 --> 00:37:15,520 Mhux pjuttost, minħabba x u y mhumiex varjabbli fis-sens tradizzjonali. 846 00:37:15,520 --> 00:37:18,054 X u Y huma l-indirizzi jew ser taħżen indirizz. 847 00:37:18,054 --> 00:37:19,220 Mela ejja jippruvaw dan darba aktar. 848 00:37:19,220 --> 00:37:21,010 Mhux bidu bad, għalkemm. 849 00:37:21,010 --> 00:37:21,510 Yeah? 850 00:37:21,510 --> 00:37:22,426 >> UDJENZA: [inaudible]. 851 00:37:22,426 --> 00:37:23,966 852 00:37:23,966 --> 00:37:24,840 DAVID J. Malan: Tajba. 853 00:37:24,840 --> 00:37:26,173 Naħseb li cleaner ftit. 854 00:37:26,173 --> 00:37:28,630 Tiddikjara żewġ pointers, żewġ interi. 855 00:37:28,630 --> 00:37:30,150 U aħna qed titlob minnhom xuy. 856 00:37:30,150 --> 00:37:32,790 Jew jekk konna biex tiġbed dan bħala stampa, għal darb'oħra, 857 00:37:32,790 --> 00:37:36,410 jfakkru sempliċement li kollha li aħna qed tagħmel ma 'dak l-ewwel linja 858 00:37:36,410 --> 00:37:39,690 hija tpinġija kaxxa bħal dan, ma 'xi valur żibel fiha, 859 00:37:39,690 --> 00:37:41,920 u ssejjaħ dan x, u mbagħad ieħor kaxxa bħal dan, 860 00:37:41,920 --> 00:37:43,880 ma 'xi valur żibel fiha, ssejjaħ dan y. 861 00:37:43,880 --> 00:37:45,810 Imxejna ddikjarat żewġ pointers li finalment 862 00:37:45,810 --> 00:37:47,860 ser taħżen l-indirizz ta 'int. 863 00:37:47,860 --> 00:37:49,170 Allura li kollox hemm. 864 00:37:49,170 --> 00:37:53,290 >> Allura meta Binky għamlet dan, il- tafal biss ħares bħal dan. 865 00:37:53,290 --> 00:37:55,350 U Nick biss tip ta ' jitgeżwer l-vleġeġ, 866 00:37:55,350 --> 00:37:57,590 bħallikieku dawn mhux qed tipponta kullimkien b'mod partikolari, għaliex qed biss 867 00:37:57,590 --> 00:37:58,250 Valuri taż-żibel. 868 00:37:58,250 --> 00:38:01,670 Dawn mhux qed initialized espliċitament kullimkien b'mod partikolari. 869 00:38:01,670 --> 00:38:03,980 >> Issa l-linja li jmiss ta ' kodiċi, irtirar, kien dan. 870 00:38:03,980 --> 00:38:07,510 Għalhekk fl raġonevolment faċli għall-utent, iżda Ingliż kemmxejn tekniku, 871 00:38:07,510 --> 00:38:09,790 dak li huwa din il-linja tal-kodiċi tagħmel? 872 00:38:09,790 --> 00:38:10,391 Yeah? 873 00:38:10,391 --> 00:38:11,333 >> UDJENZA: [inaudible]. 874 00:38:11,333 --> 00:38:12,746 875 00:38:12,746 --> 00:38:13,950 >> DAVID J. Malan: Perfect. 876 00:38:13,950 --> 00:38:17,016 Huwa allokazzjoni tal-blokki ta 'l- memorja li l-daqs ta 'int. 877 00:38:17,016 --> 00:38:18,140 U li nofs ir-risposta. 878 00:38:18,140 --> 00:38:20,056 Weġibt id-dritt nofs l-espressjoni. 879 00:38:20,056 --> 00:38:22,473 Dak li qed jiġri fuq il- naħa tax-xellug tas-sinjal ugwali? 880 00:38:22,473 --> 00:38:22,972 Yeah? 881 00:38:22,972 --> 00:38:24,814 UDJENZA: U jassenja lill-varjabbli x? 882 00:38:24,814 --> 00:38:27,690 >> DAVID J. Malan: u tassenja lill-varjabbli x. 883 00:38:27,690 --> 00:38:31,650 Allura biex terġa, jalloka naħa tal-lemin memorja biżżejjed biex jaħżnu int. 884 00:38:31,650 --> 00:38:34,150 Iżda malloc speċifikament jirritorna l-indirizz 885 00:38:34,150 --> 00:38:37,270 ta 'dik blokki ta' memorja, li inti stajt kif ipproponiet gets maħżuna fil x. 886 00:38:37,270 --> 00:38:42,560 >> Allura dak Nick għamlet aħħar darba bl Binky huwa huwa mkaxkra li pointer out, il-tafal, 887 00:38:42,560 --> 00:38:46,820 għall-punt issa fil blokki abjad ta 'memorja li huwa ugwali għad-daqs ta 'int. 888 00:38:46,820 --> 00:38:49,360 U fil-fatt, li kien ifisser biex jirrappreżentaw erba bytes. 889 00:38:49,360 --> 00:38:55,310 >> Issa, il-linja li jmiss tal-kodiċi ma dan, star x gets 42. 890 00:38:55,310 --> 00:38:58,530 Allura 42 huwa sempliċi fuq il- naħa tal-lemin, tifsira tal-ħajja. 891 00:38:58,530 --> 00:39:00,500 Naħa tax-xellug idejn, star x ifisser liema? 892 00:39:00,500 --> 00:39:01,600 893 00:39:01,600 --> 00:39:03,280 Li wisq jista 'jkollhom gone-- thats OK. 894 00:39:03,280 --> 00:39:04,220 OK. 895 00:39:04,220 --> 00:39:06,875 >> UDJENZA: Bażikament, mur l-[inaudible] 896 00:39:06,875 --> 00:39:07,750 DAVID J. Malan: Tajba. 897 00:39:07,750 --> 00:39:08,760 UDJENZA: [inaudible]. 898 00:39:08,760 --> 00:39:09,760 DAVID J. Malan: Eżattament. 899 00:39:09,760 --> 00:39:11,979 Naħa tax-xellug tan-naħa ifisser mur x. 900 00:39:11,979 --> 00:39:12,520 x hija indirizz. 901 00:39:12,520 --> 00:39:15,520 Huwa simili 33 Oxford Street, jew OX1. 902 00:39:15,520 --> 00:39:18,690 U star x ifisser tmur f'dak jindirizzaw u mqiegħda liema hemmhekk? 903 00:39:18,690 --> 00:39:19,520 42. 904 00:39:19,520 --> 00:39:21,290 >> Allura fil-fatt, dan huwa eżattament dak Nick għamlet. 905 00:39:21,290 --> 00:39:23,740 Huwa beda bil minn, essenzjalment, mentalment 906 00:39:23,740 --> 00:39:26,270 tipponta subgħajha lejn x, wara l-vleġġa 907 00:39:26,270 --> 00:39:30,670 għall-kaxxa bajda fuq il-lemin naħa, u t-tqegħid-numru 42 hemmhekk. 908 00:39:30,670 --> 00:39:34,120 Imma mbagħad l-affarijiet ltqajna ftit perikoluża, id-dritt? 909 00:39:34,120 --> 00:39:35,860 Tal Binky dwar li jitilfu kap tiegħu. 910 00:39:35,860 --> 00:39:39,465 >> Y Star ugwali 13, xortih ħażina, ifisser liema? 911 00:39:39,465 --> 00:39:43,620 Allura mezzi y star tmur għall-indirizz y. 912 00:39:43,620 --> 00:39:45,630 Imma dak huwa l-indirizz y? 913 00:39:45,630 --> 00:39:47,899 914 00:39:47,899 --> 00:39:49,440 Kull dritt, huwa valur żibel, id-dritt? 915 00:39:49,440 --> 00:39:50,800 I ġibdet bħala kwistjoni mark. 916 00:39:50,800 --> 00:39:54,850 Nick ġibdet bħala vleġġa indivja up. 917 00:39:54,850 --> 00:39:59,600 U hekk kif inti tipprova do y star, qal jmorru hemm, 918 00:39:59,600 --> 00:40:03,872 iżda ma jkunx hemm leġittimu indirizz, huwa xi post fittizji, 919 00:40:03,872 --> 00:40:05,080 il-programm għaddej li jikkraxxja. 920 00:40:05,080 --> 00:40:08,580 U ras Binky huwa għaddej li jtajru off hawn, kif għamlet. 921 00:40:08,580 --> 00:40:12,130 >> Għalhekk fl-aħħar, dan il-programm kien biss difett out fissa. 922 00:40:12,130 --> 00:40:13,540 Kien programm Buggy. 923 00:40:13,540 --> 00:40:14,760 U hemm bżonn li tiġi ffissata. 924 00:40:14,760 --> 00:40:18,260 U l-uniku mod, verament, biex jiffissaw dan tkun, per eżempju, din il-linja, 925 00:40:18,260 --> 00:40:21,010 li aħna ma anki jiksbu għal, għaliex il-programm ġġarraf wisq malajr. 926 00:40:21,010 --> 00:40:26,170 Imma jekk konna biex jiffissaw dan, dak effett ma tagħmel y x indaqs jkollhom? 927 00:40:26,170 --> 00:40:30,010 Ukoll, huwa essenzjalment punti y fuq ikun x'ikun il-valur x hija li tipponta lejn. 928 00:40:30,010 --> 00:40:32,430 >> Għalhekk fl-istorja Nick, jew storja Binky tal, kemm 929 00:40:32,430 --> 00:40:34,640 X u Y kienu tipponta lejn l-blokki abjad tal-memorja, 930 00:40:34,640 --> 00:40:38,300 b'tali mod li, finalment, meta inti do istilla y ugwali 13 darb'oħra, 931 00:40:38,300 --> 00:40:43,080 inti tispiċċa tqegħid 13 fil il-post xieraq. 932 00:40:43,080 --> 00:40:47,640 Allura kollha ta 'dawn il-linji huma perfettament leġittimu, ħlief għal dan wieħed, 933 00:40:47,640 --> 00:40:51,730 meta tkun seħħet qabel ma inti attwalment assenjat y xi valur. 934 00:40:51,730 --> 00:40:54,290 >> Issa Thankfully, inti ma għandek raġuni kollha permezz 935 00:40:54,290 --> 00:40:56,560 ta 'dawn it-tipi ta' kwistjonijiet fuq tiegħek. 936 00:40:56,560 --> 00:40:59,310 Let me imorru quddiem u tiftaħ up tieqa terminal hawn 937 00:40:59,310 --> 00:41:03,050 u jiftħu, għal ftit mument, programm super qasir li 938 00:41:03,050 --> 00:41:04,360 wkoll huwa tip ta inutli. 939 00:41:04,360 --> 00:41:05,152 Huwa ikrah. 940 00:41:05,152 --> 00:41:06,610 Hija ma jiksbu xejn utli. 941 00:41:06,610 --> 00:41:10,180 Iżda dan ma juri kwistjonijiet tal-memorja, so ejja tagħti ħarsa. 942 00:41:10,180 --> 00:41:11,830 >> Main, super sempliċi. 943 00:41:11,830 --> 00:41:14,830 Hija apparentement tappella funzjoni, f, u mbagħad jirritornaha 0. 944 00:41:14,830 --> 00:41:16,310 Huwa tip ta 'diffiċli biex mess dan up. 945 00:41:16,310 --> 00:41:18,540 Allura Main hija pjuttost tajba, s'issa. 946 00:41:18,540 --> 00:41:20,100 >> Allura f hija problematika. 947 00:41:20,100 --> 00:41:22,120 U biss ma poġġiex ħafna sforz fis tismija 948 00:41:22,120 --> 00:41:23,990 hawn, li jżomm il-fokus fuq il-kodiċi. 949 00:41:23,990 --> 00:41:25,740 f għandha żewġ linji. 950 00:41:25,740 --> 00:41:27,610 U ejja tara x'inhu issa għaddej. 951 00:41:27,610 --> 00:41:29,840 Allura fuq naħa waħda here-- u let me jagħmlu 952 00:41:29,840 --> 00:41:32,680 dan konsistenti mal-preċedenti example-- fuq naħa waħda, 953 00:41:32,680 --> 00:41:35,830 in-naħa tax-xellug huwa tagħmel dak, bl-Ingliż? 954 00:41:35,830 --> 00:41:36,493 Hija is-- 955 00:41:36,493 --> 00:41:37,701 UDJENZA: Ħolqien ta 'pointer. 956 00:41:37,701 --> 00:41:40,830 DAVID J. Malan: Ħolqien ta 'pointer għal int u ssejjaħ dan x. 957 00:41:40,830 --> 00:41:43,789 Allura huwa ħolqien wieħed minn dawn il-kaxxi I iżommu tpinġija fuq il-touch screen. 958 00:41:43,789 --> 00:41:45,913 U issa, fuq il-lemin naħa, malloc, naturalment, 959 00:41:45,913 --> 00:41:47,420 qed jalloka blokki ta 'memorja. 960 00:41:47,420 --> 00:41:49,989 U biss li jkun ċar, kif memorja ħafna huwa apparentement 961 00:41:49,989 --> 00:41:52,030 allokazzjoni, jekk inti biss tip ta 'jagħmlu l-matematika hawn? 962 00:41:52,030 --> 00:41:53,200 963 00:41:53,200 --> 00:41:54,040 >> Allura huwa 40 bytes. 964 00:41:54,040 --> 00:41:57,400 U naf li biss għaliex naf li int, fuq l-appliance CS50, għall-inqas, 965 00:41:57,400 --> 00:41:58,060 huwa erba bytes. 966 00:41:58,060 --> 00:41:59,610 Allura 10 darbiet 4 huwa 40. 967 00:41:59,610 --> 00:42:04,924 Allura dan huwa ħażna ta x,-indirizz ta 'l-ewwel barra' 40 ints li 968 00:42:04,924 --> 00:42:07,340 ġew allokati spazju lura, biex lura, biex lura, lura. 969 00:42:07,340 --> 00:42:08,470 >> U dan huwa x'hemm ewlieni dwar malloc. 970 00:42:08,470 --> 00:42:11,261 Hija ma tieħu memorja ftit hawn, ftit hawn, ftit hawn. 971 00:42:11,261 --> 00:42:14,220 Dan jagħtik chunk wieħed ta 'memorja, contiguously, mill-operattiva 972 00:42:14,220 --> 00:42:15,240 sistema. 973 00:42:15,240 --> 00:42:18,500 >> Issa dak dwar dan, x bracket 10 egwali għal 0? 974 00:42:18,500 --> 00:42:19,470 Linja arbitrarja tal-kodiċi. 975 00:42:19,470 --> 00:42:21,100 Hija ma jiksbu xejn utli. 976 00:42:21,100 --> 00:42:26,128 Iżda huwa interessanti, minħabba x bracket 10--? 977 00:42:26,128 --> 00:42:26,628 Yeah? 978 00:42:26,628 --> 00:42:27,912 >> UDJENZA: [inaudible]? 979 00:42:27,912 --> 00:42:30,500 >> DAVID J. Malan: x bracket 10 ma għandhom ikunu null. 980 00:42:30,500 --> 00:42:35,070 Il-dettal null tidħol biss fis-play ma kordi, fit-tmiem ta string. 981 00:42:35,070 --> 00:42:36,700 Iżda riflessjoni tajba. 982 00:42:36,700 --> 00:42:39,615 >> Kemm hi kbira din array, anke għalkemm stajt allokat 40 bytes? 983 00:42:39,615 --> 00:42:42,560 984 00:42:42,560 --> 00:42:43,690 Huwa 0 permezz ta 'disa, id-dritt? 985 00:42:43,690 --> 00:42:45,120 Huwa 10 ints, total. 986 00:42:45,120 --> 00:42:48,790 40 bytes, iżda 10 ints, indiċjati 0 permezz 0. 987 00:42:48,790 --> 00:42:50,930 >> Allura dak hu li x bracket 10? 988 00:42:50,930 --> 00:42:53,090 Huwa fil-fatt xi valur żibel mhux magħruf. 989 00:42:53,090 --> 00:42:54,780 Huwa memorja li ma jappartjenix lili. 990 00:42:54,780 --> 00:42:59,650 I m'għandhomx ikunu jmissu li numru 41, 42, 43, 44 byte. 991 00:42:59,650 --> 00:43:01,420 Jien ser kemmxejn wisq. 992 00:43:01,420 --> 00:43:04,490 >> U fil-fatt, jekk I run dan programm, jista 'tajjeb ħafna crash. 993 00:43:04,490 --> 00:43:05,790 Imma kultant, aħna ser nikseb xxurtjati. 994 00:43:05,790 --> 00:43:07,706 U hekk biss biex juru this-- u franchement, 995 00:43:07,706 --> 00:43:11,000 int qatt ma taf qabel do it-- ejja run dan. 996 00:43:11,000 --> 00:43:12,480 Hija ma attwalment crash. 997 00:43:12,480 --> 00:43:15,032 >> Imma jekk nibdel dan, għal Pereżempju, li jkun simili 1,000, 998 00:43:15,032 --> 00:43:16,740 biex jagħmlu dan verament deliberat, ejja ara 999 00:43:16,740 --> 00:43:18,710 jekk nistgħu ġġibu li jikkraxxja dan iż-żmien. 1000 00:43:18,710 --> 00:43:20,070 OK, hija ma crash. 1001 00:43:20,070 --> 00:43:22,600 Kif dwar 100,000? 1002 00:43:22,600 --> 00:43:25,000 Ejja remake, u issa terġa dan. 1003 00:43:25,000 --> 00:43:25,500 OK. 1004 00:43:25,500 --> 00:43:25,960 Phew. 1005 00:43:25,960 --> 00:43:26,460 Kull dritt. 1006 00:43:26,460 --> 00:43:29,090 Allura apparentement, għal darb'oħra, dawn segmenti ta 'memorja, biex ngħidu hekk, 1007 00:43:29,090 --> 00:43:32,660 huma raġonevolment big, sabiex inkunu nistgħu jiksbu xxurtjati darb'oħra u għal darb'oħra. 1008 00:43:32,660 --> 00:43:36,510 Imma eventwalment, ladarba inti tikseb redikoli u verament jmorru barra ħafna fuq l-iskrin, 1009 00:43:36,510 --> 00:43:39,120 inti touch memorja li verament, verament ma jappartjenix lilek. 1010 00:43:39,120 --> 00:43:40,870 >> Iżda franchement, dawn tipi ta 'bugs huma għaddejjin 1011 00:43:40,870 --> 00:43:43,020 li jkun aktar diffiċli u aktar diffiċli biex insemmu fuq tiegħek. 1012 00:43:43,020 --> 00:43:47,880 Iżda Thankfully, bħala programmaturi, għandna għodod li jippermettu magħna biex jagħmlu dan għalina. 1013 00:43:47,880 --> 00:43:50,140 Allura dan huwa, forsi, wieħed tal-programmi ugliest, 1014 00:43:50,140 --> 00:43:52,060 anke uglier milli l-produzzjoni GDB tal. 1015 00:43:52,060 --> 00:43:55,670 Iżda dejjem għandha linja jew tnejn li huma super utli. 1016 00:43:55,670 --> 00:44:00,310 >> Valgrind huwa programm li jgħin inti mhux debug programm, per se, 1017 00:44:00,310 --> 00:44:03,500 iżda ssib relatati mal-memorja problemi, speċifikament. 1018 00:44:03,500 --> 00:44:07,590 Hija se awtomatikament run kodiċi tiegħek għall inti u jfittxu għal mill-inqas żewġ affarijiet. 1019 00:44:07,590 --> 00:44:10,680 Wieħed, ma inti tagħmel xi ħaġa aċċidentali bħal memorja touch 1020 00:44:10,680 --> 00:44:11,980 li ma kienx jappartjeni lilek? 1021 00:44:11,980 --> 00:44:13,590 Dan ser jgħinek issib dawk il-każijiet. 1022 00:44:13,590 --> 00:44:15,710 >> U tnejn, hija se tgħin biex issib xi ħaġa imsejħa 1023 00:44:15,710 --> 00:44:19,270 tnixxijiet memorja, li għandna kompletament injorati, naively, 1024 00:44:19,270 --> 00:44:21,380 għal xi żmien u blissfully. 1025 00:44:21,380 --> 00:44:23,140 Iżda jirriżulta, kollha dan iż-żmien, kull meta 1026 00:44:23,140 --> 00:44:26,620 inti stajt imsejħa getString fl tant ta 'programmi tagħna, 1027 00:44:26,620 --> 00:44:28,930 int tistaqsi l operattiva sistema għall-memorja, 1028 00:44:28,930 --> 00:44:32,070 imma għandek xi rikollizzjoni ta 'dejjem jtuha 1029 00:44:32,070 --> 00:44:36,169 lura, tagħmel unalloc, jew ħielsa, kif huwa msejjaħ. 1030 00:44:36,169 --> 00:44:37,960 Le, għaliex aħna qatt ma stajt talab li inti tagħmel hekk. 1031 00:44:37,960 --> 00:44:41,250 >> Iżda dan kollu ħin, il-programmi inti ħadthom ġie miktub fl C 1032 00:44:41,250 --> 00:44:43,800 ġew jnixxu memorja, titlob lill-operattiva 1033 00:44:43,800 --> 00:44:46,190 sistema għal aktar u aktar memorja għall-kordi u whatnot, 1034 00:44:46,190 --> 00:44:47,870 iżda qatt għoti lura. 1035 00:44:47,870 --> 00:44:50,080 U issa dan huwa daqsxejn ta 'oversimplification, 1036 00:44:50,080 --> 00:44:53,550 imma jekk inti stajt qatt run Mac tiegħek jew PC tiegħek għal żmien pjuttost twil, il-ftuħ 1037 00:44:53,550 --> 00:44:55,790 lottijiet ta 'programmi, forsi għeluq programmi, 1038 00:44:55,790 --> 00:44:57,795 u anki jekk tiegħek kompjuter ma ġġarraf, 1039 00:44:57,795 --> 00:45:01,690 huwa jkollna hekk ħafna aktar kajman, daqslikieku huwa verament 1040 00:45:01,690 --> 00:45:04,290 użu ta 'lott ta' memorja jew riżorsi, anki jekk, 1041 00:45:04,290 --> 00:45:06,070 jekk int ma anki jmissu l-keyboard, 1042 00:45:06,070 --> 00:45:10,430 li jistgħu be-- iżda mhux always-- setgħux jkun li l-programmi int taħdem 1043 00:45:10,430 --> 00:45:11,920 infushom tnixxijiet memorja. 1044 00:45:11,920 --> 00:45:15,645 U dawn iżommu tistaqsi l-OS aktar u memorja aktar, iżda jinsa dwar dan, 1045 00:45:15,645 --> 00:45:18,470 mhux attwalment tużah, imma għalhekk qegħdin jieħdu memorja bogħod 1046 00:45:18,470 --> 00:45:20,500 minn programmi oħra li tista 'tixtieq dan. 1047 00:45:20,500 --> 00:45:23,940 Allura dak spjegazzjoni komuni. 1048 00:45:23,940 --> 00:45:25,940 Issa hawn fejn l Valgrind output huwa kompletament 1049 00:45:25,940 --> 00:45:29,290 atroċi għal dawk inqas u aktar komdi bl-istess mod. 1050 00:45:29,290 --> 00:45:32,690 Iżda l-interessanti Jittieħed huwa dritt up here. 1051 00:45:32,690 --> 00:45:37,060 Huwa javżak me jiktbu invalidu ta daqs erba jiġri f'dan il-programm, 1052 00:45:37,060 --> 00:45:40,640 b'mod partikolari, fil-linja 21 tat memory.c. 1053 00:45:40,640 --> 00:45:45,450 >> Jekk immur għal-linja 21, hm, hemm tabilħaqq huwa tikteb invalidu d-daqs erbgħa. 1054 00:45:45,450 --> 00:45:46,250 Għaliex daqs erba? 1055 00:45:46,250 --> 00:45:49,500 Ukoll, dan number-- u jista 'jkun anything-- huwa int. 1056 00:45:49,500 --> 00:45:50,450 Allura huwa erba 'bytes. 1057 00:45:50,450 --> 00:45:52,550 So jien tqegħid erba 'bytes fejn dawn ma jappartjenux. 1058 00:45:52,550 --> 00:45:55,080 Dak hu Valgrind huwa attwalment javżak me. 1059 00:45:55,080 --> 00:45:57,600 Barra dan, se wkoll tell me, kif Ser naraw, 1060 00:45:57,600 --> 00:46:01,490 kif inti tmexxi dan fil pset futur, jekk u meta inti stajt nixxew memorja, li tabilħaqq 1061 00:46:01,490 --> 00:46:05,300 I jkollhom, għaliex stajt imsejħa malloc, imma jien ma attwalment 1062 00:46:05,300 --> 00:46:08,010 sejjaħ, f'dan il-każ, b'xejn, li aħna ser eventwalment tara 1063 00:46:08,010 --> 00:46:09,830 huwa l-oppost ta 'malloc. 1064 00:46:09,830 --> 00:46:10,860 1065 00:46:10,860 --> 00:46:12,930 >> Allura issa, I think, eżempju finali. 1066 00:46:12,930 --> 00:46:14,050 1067 00:46:14,050 --> 00:46:16,690 Allura dan wieħed huwa ftit aktar arcane, iżda huwa forsi 1068 00:46:16,690 --> 00:46:19,180 l-akbar raġuni biex tkun attenta mal-memorja, 1069 00:46:19,180 --> 00:46:24,490 u r-raġuni li ħafna programmi u / jew servers mill-web, anki għal din il-ġurnata, 1070 00:46:24,490 --> 00:46:28,200 huma meħuda mill guys ħżiena x'imkien fuq l-internet li b'xi mod huma 1071 00:46:28,200 --> 00:46:33,390 jibgħat pakketti taparsi biex server tiegħek jippruvaw kompromess kontijiet tiegħek, 1072 00:46:33,390 --> 00:46:36,420 jew jieħdu data tiegħek, jew biss ġeneralment tieħu f'idejha magna. 1073 00:46:36,420 --> 00:46:38,910 Overflow buffer, bħala l- isem jissuġġerixxi, mezzi 1074 00:46:38,910 --> 00:46:40,740 overflowing mhux int, iżda buffer. 1075 00:46:40,740 --> 00:46:43,490 U buffer huwa biss mod fancy ta 'tgħid huwa mazz ta' memorja. 1076 00:46:43,490 --> 00:46:46,710 >> U fil-fatt, I imsejħa string qabel buffer, minflok i. 1077 00:46:46,710 --> 00:46:49,234 Għaliex jekk huwa buffer, bħal fis-sens YouTube, 1078 00:46:49,234 --> 00:46:52,400 jew kwalunkwe ħin inti qed jaraw a video, inti tista raw l-buffering kelma, 1079 00:46:52,400 --> 00:46:53,040 dot, dot, dot. 1080 00:46:53,040 --> 00:46:54,240 Huwa oerhört annoying. 1081 00:46:54,240 --> 00:46:55,990 U dan ifisser biss li l-video player tiegħek 1082 00:46:55,990 --> 00:46:58,710 qed tipprova tniżżel lottijiet ta 'bytes, lottijiet ta' bytes 1083 00:46:58,710 --> 00:47:00,170 minn video mill-internet. 1084 00:47:00,170 --> 00:47:02,920 Imma hija bil-mod, hekk huwa tipprova biex tniżżel mazz ta 'minnhom 1085 00:47:02,920 --> 00:47:06,430 biex timla buffer, kontenitur, b'tali mod li inti għandek bytes biżżejjed li tista 'mbagħad 1086 00:47:06,430 --> 00:47:09,174 nuruk l-video, mingħajr jieqaf kontinwament. 1087 00:47:09,174 --> 00:47:11,340 Iżda jirriżulta, inti tista ' jkollhom buffer għal din big. 1088 00:47:11,340 --> 00:47:15,710 Iżda tipprova tpoġġi din id-data ħafna fl dan, u ħafna affarijiet ħżiena jista 'jiġri. 1089 00:47:15,710 --> 00:47:22,780 Allura per eżempju, ejja nħarsu lejn dan teaser finali ta 'eżempju. 1090 00:47:22,780 --> 00:47:24,720 Dan huwa programm ieħor li, ewwel daqqa t'għajn, 1091 00:47:24,720 --> 00:47:26,540 ma tagħmel xejn super utli. 1092 00:47:26,540 --> 00:47:29,590 Huwa ltqajna funzjoni Main li s-sejħiet dik il-funzjoni, f. 1093 00:47:29,590 --> 00:47:36,640 U dik il-funzjoni, f, up here, għandha firxa char, imsejħa c, ta 'daqs 12. 1094 00:47:36,640 --> 00:47:39,340 U allura huwa jużaw dan funzjoni ġdida msejħa strncpy. 1095 00:47:39,340 --> 00:47:40,430 1096 00:47:40,430 --> 00:47:45,190 >> Jirriżulta li, ma 'dan sempliċi, linja sempliċi ta 'kodiċi, biss żewġ linji, 1097 00:47:45,190 --> 00:47:49,130 għamilna programm kollu tiegħi, u għalhekk, kompjuter kollu tiegħi, 1098 00:47:49,130 --> 00:47:54,000 u kont ta 'utent tiegħi, u hard tiegħi issuq potenzjalment vulnerabbli għal kulħadd 1099 00:47:54,000 --> 00:47:58,170 li jaf u hija tajba biżżejjed biex imexxu dan il-programm ma 'ċerta linja ta' kmand 1100 00:47:58,170 --> 00:47:58,900 argument. 1101 00:47:58,900 --> 00:48:03,400 Fi kliem ieħor, jekk dan Guy ħażina tpoġġi ġewwa tal argvargv [1] billi jittajpja 1102 00:48:03,400 --> 00:48:08,750 fuq il-keyboard ħafna apposta crafted string, mhux abc, 123, iżda essenzjalment, 1103 00:48:08,750 --> 00:48:15,180 simboli binarja li jirrappreżentaw eżekutibbli kodiċi, programm li hu jew hi kitbet, 1104 00:48:15,180 --> 00:48:19,190 ma dan il-programm sempliċi, li hija rappreżentattiv ta 'eluf ta' programmi 1105 00:48:19,190 --> 00:48:23,610 li huma simili vulnerabbli, daresay, hu jew hi jista 'finalment titħassar kull 1106 00:48:23,610 --> 00:48:26,680 l-fajls fuq hard drive tiegħi, jiksbu Teptip fil-pront sabiex hu jew hi tista ' 1107 00:48:26,680 --> 00:48:30,170 tip jikkmanda fuq tagħhom stess, email fajls kollha li myself. 1108 00:48:30,170 --> 00:48:34,660 Kwalunkwe ħaġa li I jistgħu jagħmlu, huwa jew hi tista 'tagħmel ma' dan il-kodiċi. 1109 00:48:34,660 --> 00:48:36,575 >> Aħna mhux se pjuttost issolvi dan suġġett s'issa. 1110 00:48:36,575 --> 00:48:38,700 U fil-fatt, li għaddej biex jinvolvu stampa ftit 1111 00:48:38,700 --> 00:48:41,470 bħal dan, li aħna ser dalwaqt jaslu biex jifhmu l-aħjar. 1112 00:48:41,470 --> 00:48:44,480 Iżda għal-lum, ejja jintemm fil- x'hemm, wieħed jittama, kemmxejn aktar 1113 00:48:44,480 --> 00:48:48,360 Joke XKCD jinftiehem, sakemm aħna jerġa ħin li jmiss. 1114 00:48:48,360 --> 00:48:51,100 1115 00:48:51,100 --> 00:48:51,600 Kull dritt. 1116 00:48:51,600 --> 00:48:53,446 Ara inti nhar l-Erbgħa. 1117 00:48:53,446 --> 00:48:54,754 >> [Daqq ta mużika] 1118 00:48:54,754 --> 00:48:57,790 >> SPEAKER: U issa, fil-fond ħsibijiet, billi Daven Farnham. 1119 00:48:57,790 --> 00:49:00,890 1120 00:49:00,890 --> 00:49:04,770 Memorja huwa simili jaqbeż f'gozz ta ' weraq tad-deheb fuq Ħadd wara nofsinhar. 1121 00:49:04,770 --> 00:49:09,000 Riħ nfiħ, tossing tiegħek hair-- oh, I miss-ġranet when-- 1122 00:49:09,000 --> 00:49:11,100 1123 00:49:11,100 --> 00:49:12,650 >> [Rires] 1124 00:49:12,650 --> 00:49:13,750