1 00:00:00,000 --> 00:00:11,242 >> [Daqq tal-mużika] 2 00:00:11,242 --> 00:00:16,630 >> DAVID J. Malan: Kull dritt dan huwa CS50 u dan huwa l-bidu ta 'ħames ġimgħa. 3 00:00:16,630 --> 00:00:21,480 Allura llum, taħt kuxxini sedil tiegħek, m'intix ser issib xejn. 4 00:00:21,480 --> 00:00:24,790 Iżda fuq, għandek issib dawn, ftit token ta 'apprezzament tagħna għall- 5 00:00:24,790 --> 00:00:26,970 kollha tal-ħidma li inti tpoġġi fil-Game tal Ħmistax. 6 00:00:26,970 --> 00:00:30,290 Simply tneħħi l-ċirku ftit fuq il- qiegħ biex tibda playing għall- 7 00:00:30,290 --> 00:00:31,680 bqija tal-klassi. 8 00:00:31,680 --> 00:00:38,930 >> Allura jfakkru li, jew tkun taf li problema stabbiliti erba, li marru out dan il-weekend, 9 00:00:38,930 --> 00:00:40,340 jinvolvi kitba logħba oħra. 10 00:00:40,340 --> 00:00:43,740 Iżda din id-darba jinvolvi l-użu ta ' attwali user interface grafika, mhux 11 00:00:43,740 --> 00:00:46,310 interface testwali bħal Game tal-Ħmistax kien. 12 00:00:46,310 --> 00:00:50,210 U l-logħba li tinsab quddiem tal inti, jekk inti stajt għadhom ma rajt dan li jmiss, 13 00:00:50,210 --> 00:00:52,310 jistenna ftit xi ħaġa bħal din. 14 00:00:52,310 --> 00:00:55,170 Jien se jmorru fil terminal tiegħi tieqa hawn fil GDB. 15 00:00:55,170 --> 00:00:58,600 U jien ser jimxi 'l quddiem u tmexxi l- Soluzzjoni persunal, li inti tista 'aċċess 16 00:00:58,600 --> 00:01:01,010 wara running aġġornament 50 bħas-soltu. 17 00:01:01,010 --> 00:01:04,090 >> Imma jien ser jitqiegħdu fil-ftit modalità sigriet, bajd tal-Għid ftit, 18 00:01:04,090 --> 00:01:08,480 hekk imsejħa modalità Alla, billi tqegħid Alla fil argv1. 19 00:01:08,480 --> 00:01:12,920 U I għandhom jsegwu direzzjonijiet tiegħi stess, running fl tiegħi stess 20 00:01:12,920 --> 00:01:14,220 problema stabbiliti direttorju. 21 00:01:14,220 --> 00:01:19,190 Allura issa inti tara verżjoni kompluta tal-logħba tal tbegħid. 22 00:01:19,190 --> 00:01:21,090 Fil-fatt, dan huwa mod no-idejn. 23 00:01:21,090 --> 00:01:24,850 Allura huwa attwalment - 24 00:01:24,850 --> 00:01:26,470 wowed għalkemm inti tista 'tkun - 25 00:01:26,470 --> 00:01:30,850 pretty trivjali biex jimplimentaw modalità Alla Tbegħid, b'differenza Game tal-Ħmistax, 26 00:01:30,850 --> 00:01:33,590 li xi wħud minnkom setgħet tieħu ħsieb għall-edizzjoni Hacker. 27 00:01:33,590 --> 00:01:37,890 >> Fil tbegħid huwa biżżejjed f'Alla Mod li sempliċiment tagħmel dak, 28 00:01:37,890 --> 00:01:41,220 intuwittivament mal-jaqdfu? 29 00:01:41,220 --> 00:01:45,630 Just jagħmluha daqs ikun x'ikun l- pożizzjoni orizzontali tal-ballun. 30 00:01:45,630 --> 00:01:49,220 U sakemm inti tagħmel dan fil lockstep bil-ballun li jiċċaqilqu f'dan il-logħba se 31 00:01:49,220 --> 00:01:53,100 qatt, qatt, qatt jitilfu l-ballun u tkun taf tirbaħ kull darba. 32 00:01:53,100 --> 00:01:55,430 >> Iżda fl-edizzjoni Hacker din il-ġimgħa hemm aktar minn sempliċiment modalità Alla. 33 00:01:55,430 --> 00:01:56,720 Hemm numru ta 'fatturi oħra. 34 00:01:56,720 --> 00:01:58,140 Fost dawn, lasers. 35 00:01:58,140 --> 00:02:01,070 B'tali mod li jekk int verament tikseb paċenzja inti tista 'tibda UNOMIG-briks 36 00:02:01,070 --> 00:02:02,120 u ftit oħrajn. 37 00:02:02,120 --> 00:02:04,560 U għal dawk minnkom li tixtieq jikkalibra standard versus Hacker 38 00:02:04,560 --> 00:02:08,750 edizzjoni, I jista 'jara li din il-ġimgħa Edizzjoni Hacker deliberatament huwa 39 00:02:08,750 --> 00:02:12,830 ftit aktar doable, ngħidu aħna, minn Alla modalità kien ma Game tal-Ħmistax. 40 00:02:12,830 --> 00:02:15,300 >> Mela jekk inti qed tfittex għal stretch u qed tfittex xi gost addizzjonali 41 00:02:15,300 --> 00:02:18,400 karatteristiċi do adsa jekk ta 'interess. 42 00:02:18,400 --> 00:02:21,280 Issa aktar konkret, let me punt out ħaġa waħda kif ukoll. 43 00:02:21,280 --> 00:02:24,780 GDB, li xi wħud minnkom jista 'ma jkollhomx għadhom mimsus personalment, li huwa multa. 44 00:02:24,780 --> 00:02:28,530 Imma issa huwa verament il-ħin biex jidraw għal dan u komdu ma 'din l-għodda 45 00:02:28,530 --> 00:02:31,510 minħabba li se jagħmlu l-ħajja tiegħek ħafna aktar faċli, verament. 46 00:02:31,510 --> 00:02:34,900 >> Per lecture Rob fuq GDB koppja ta 'ġimgħat ilu, recall 47 00:02:34,900 --> 00:02:36,810 li GDB huwa debugger. 48 00:02:36,810 --> 00:02:41,230 Huwa għodda li ihallik run tiegħek programm iżda run pass pass, linja 49 00:02:41,230 --> 00:02:45,680 b'linja, sabiex inti tista 'poke madwar, sabiex inti tara l-affarijiet jiġri, hekk 50 00:02:45,680 --> 00:02:47,310 li inti tista 'jistampa valuri tal-varjabbli. 51 00:02:47,310 --> 00:02:50,580 Fil-qosor, tagħtik daqstant aktar enerġija minn printDef ma. 52 00:02:50,580 --> 00:02:52,900 >> Issa ċertament, l-interface hija pjuttost arcane. 53 00:02:52,900 --> 00:02:55,180 Iswed u abjad interface testwali għall-parti l-kbira. 54 00:02:55,180 --> 00:02:57,400 Il-kmandijiet huma kemmxejn iebsa li tiftakar fl-ewwel. 55 00:02:57,400 --> 00:03:01,230 Iżda anki jekk inti tista 'tieħu nofs siegħa, siegħa, li tikkontesta din bil-quddiem 56 00:03:01,230 --> 00:03:02,940 investiment ta 'ħin fis dan, trust me. 57 00:03:02,940 --> 00:03:06,440 Ċertament sa tmiem semestru tal se jiffrankaw inti ordni ta 'kobor aktar 58 00:03:06,440 --> 00:03:07,600 żmien minn dik. 59 00:03:07,600 --> 00:03:09,200 >> Daqshekk kmieni fil-ġimgħa adsa pulzieri 60 00:03:09,200 --> 00:03:13,200 U f'termini ta 'tbegħid, taf li inti tista 'tagħmel dan sakemm ikollok 61 00:03:13,200 --> 00:03:18,230 il-kodiċi ta 'distribuzzjoni jew il-kodiċi tiegħek fil-progress fl-direttorju Pst4 tiegħek. 62 00:03:18,230 --> 00:03:21,680 Taf li inti tista 'taħdem GDB. / Tbegħid. 63 00:03:21,680 --> 00:03:23,490 >> Dan se tiftaħ tieqa bħal dan. 64 00:03:23,490 --> 00:03:25,530 Ħalli nagħtikom myself aktar ta 'tieqa terminal. 65 00:03:25,530 --> 00:03:27,770 U allura dak li jien ser jimxi 'l quddiem u jagħmlu, huwa mhux biss run. 66 00:03:27,770 --> 00:03:30,690 Jien ser ewwel stabbilit punt tal-qasma recall, li tippermetti li inti nieqaf 67 00:03:30,690 --> 00:03:32,500 eżekuzzjoni f'post partikolari. 68 00:03:32,500 --> 00:03:35,750 >> Just li żżomm affarijiet sempliċi jien ser li jiksru fuq linja waħda biss billi jittajpja 69 00:03:35,750 --> 00:03:37,000 in-numru wieħed. 70 00:03:37,000 --> 00:03:40,080 71 00:03:40,080 --> 00:03:43,250 Let me attwalment terġa 'tiftaħ il-tieqa għaliex dan huwa jkollna 72 00:03:43,250 --> 00:03:45,700 ftit żgħira hemmhekk. 73 00:03:45,700 --> 00:03:53,270 Allura dak li jien issa ser tagħmel hawnhekk huwa jekk I tiftaħ tieqa terminal tiegħi. 74 00:03:53,270 --> 00:03:53,910 Come on, hemm immorru. 75 00:03:53,910 --> 00:03:59,850 >> Allura issa jekk immur lura għall Dropbox, Pst4 u run GDB. / tbegħid jidħlu, avviż 76 00:03:59,850 --> 00:04:02,600 Jien ser jiksru wieħed biex jistabbilixxu punt waqfa fil-linja waħda. 77 00:04:02,600 --> 00:04:04,840 U issa jien se jmorru quddiem u tip run. 78 00:04:04,840 --> 00:04:07,370 U meta I do, avviż xejn jidher li jiġri. 79 00:04:07,370 --> 00:04:08,120 >> M'hemm l-ebda up pop. 80 00:04:08,120 --> 00:04:09,790 M'hemm l-ebda grafika user interface s'issa. 81 00:04:09,790 --> 00:04:13,340 Imma dak li jinftiehem għaliex jien litteralment fuq linja waħda fil-programm tiegħi. 82 00:04:13,340 --> 00:04:17,110 U tinnota li stajt fast mgħoddija, speċifikament issa sa 62, minħabba li kull 83 00:04:17,110 --> 00:04:20,600 l-għalf fil-quċċata ta 'dan il-fajl huwa affarijiet simili kummenti u kostanti u 84 00:04:20,600 --> 00:04:22,460 uninteresting Jittieħed għal issa. 85 00:04:22,460 --> 00:04:25,840 >> Allura issa jien ġewwa tal ewlieni, jidher, fil-linja 62. 86 00:04:25,840 --> 00:04:27,960 U dan huwa biss il distribuzzjoni kodiċi, recall. 87 00:04:27,960 --> 00:04:33,810 Jekk I miftuħa dan billi tmur, b'mod simili, fil-kaxxa drop tiegħi direttorju fis Pst4, 88 00:04:33,810 --> 00:04:35,450 fis breakout.c. 89 00:04:35,450 --> 00:04:40,670 U jekk I iscroll u 'l isfel u' l isfel, u let me go quddiem u mbagħad fuq 90 00:04:40,670 --> 00:04:44,990 linja numri tiegħi. 91 00:04:44,990 --> 00:04:50,300 >> What I ser tara, jekk I iscroll biex linja 62, huwa eżattament l-linja li 92 00:04:50,300 --> 00:04:50,910 konna waqfa qasira fuq. 93 00:04:50,910 --> 00:04:53,720 Allura din il-linja hawn, 62, huwa fejn aħna qed dwar li jkun. 94 00:04:53,720 --> 00:04:57,470 Allura issa GDB, jekk immur quddiem u tip issa jmiss, jidħol li għaddej biex 95 00:04:57,470 --> 00:04:58,450 tesegwixxi dik il-linja. 96 00:04:58,450 --> 00:05:00,610 U voila, aħna għandna l- hekk imsejħa g tieqa. 97 00:05:00,610 --> 00:05:02,800 Jekk familjari ma 'dak ta' GWindow huwa, biex ma tinkwetax. 98 00:05:02,800 --> 00:05:05,740 Il spec se jintroduċi inti għalih, kif ukoll numru ta 'videos walkthrough 99 00:05:05,740 --> 00:05:06,830 inkorporati fil-spec. 100 00:05:06,830 --> 00:05:08,610 >> Imma issa ejja jagħmlu dan ftit aktar interessanti. 101 00:05:08,610 --> 00:05:10,960 Let me jimxu fuq il-tieqa għall-ġenb ftit. 102 00:05:10,960 --> 00:05:13,480 Let me jagħmlu l-tieqa ftit akbar so I tista 'tara aktar. 103 00:05:13,480 --> 00:05:16,140 >> U issa let me imorru quddiem u jagħmlu li jmiss darb'oħra. 104 00:05:16,140 --> 00:05:17,550 U hemm briks tiegħi. 105 00:05:17,550 --> 00:05:20,490 Jekk tip I jmiss darb'oħra issa nara l-ballun. 106 00:05:20,490 --> 00:05:23,520 U jekk tip I jmiss darb'oħra issa nara l-jaqdfu. 107 00:05:23,520 --> 00:05:26,690 >> U fortunatament dan gedit mhuwiex verament jikkoperaw billi juru lili 108 00:05:26,690 --> 00:05:27,660 kollox irrid. 109 00:05:27,660 --> 00:05:30,820 Imma issa jekk nagħmel jmiss darb'oħra, jmiss darb'oħra, jien biss 110 00:05:30,820 --> 00:05:32,260 tiddikjara xi varjabbli. 111 00:05:32,260 --> 00:05:34,750 U I jistgħu jistampaw kwalunkwe wieħed ta 'dawn guys out. 112 00:05:34,750 --> 00:05:37,170 Briks Stampa, ħajja stampi. 113 00:05:37,170 --> 00:05:39,910 >> U issa jekk I tkompli tagħmel jmiss, avviż li jien ser tkun 114 00:05:39,910 --> 00:05:40,870 ġewwa ta 'dan loop. 115 00:05:40,870 --> 00:05:43,380 Iżda l-kodiċi se tesegwixxi eżattament kif I jistennew. 116 00:05:43,380 --> 00:05:45,810 Allura meta I hit din il-funzjoni, Stenna għall Ikklikkja, li għaddej biex tagħmel 117 00:05:45,810 --> 00:05:46,830 huwa litteralment dak. 118 00:05:46,830 --> 00:05:48,870 So I deher li tilef il-kontroll matul il-programm. 119 00:05:48,870 --> 00:05:50,480 >> GDB mhux qed jagħti lili ieħor pront. 120 00:05:50,480 --> 00:05:51,500 Iżda ma tinkwetax. 121 00:05:51,500 --> 00:05:53,720 Mur logħba tiegħi, ikklikkja x'imkien. 122 00:05:53,720 --> 00:05:56,270 >> U voila, issa tipproċedi għal-linja 86. 123 00:05:56,270 --> 00:05:59,460 Għalhekk għal darb'oħra, huwa imprezzabbli, finalment, għall-problemi debugging. 124 00:05:59,460 --> 00:06:03,050 Għaliex inti tista litteralment pass permezz kodiċi tiegħek, jistampa l-affarijiet barra u ħafna, 125 00:06:03,050 --> 00:06:03,640 ħafna, aktar. 126 00:06:03,640 --> 00:06:07,210 Iżda għal issa, dawn l-għodod biss għandhom inti tikseb pretty bogħod. 127 00:06:07,210 --> 00:06:10,050 >> Allura aħna qed, naturalment, tieħu ħarsa fil Grafika issa, kollha f'daqqa. 128 00:06:10,050 --> 00:06:12,350 U issa dinja tagħna gets ftit aktar interessanti. 129 00:06:12,350 --> 00:06:15,680 U inti taf, forsi, minn xi wħud mill- videos online li għandna dawn 130 00:06:15,680 --> 00:06:18,280 xorts li inti kont qed jaraw bħala parti ta 'settijiet problema. 131 00:06:18,280 --> 00:06:20,460 >> U ħadthom ġew maqtula, deliberatament, fuq sfond abjad. 132 00:06:20,460 --> 00:06:23,380 U xi wħud minnhom għandhom l-tagħlim Fellows tpinġija xi test fuq il- 133 00:06:23,380 --> 00:06:25,490 screen thats jinksew fuq in-naħa minnhom. 134 00:06:25,490 --> 00:06:27,760 Iżda naturalment, dan huwa mhux kollha li interessanti fid-dinja reali. 135 00:06:27,760 --> 00:06:30,520 Dan huwa biss sala lecture ma ' screen abjad kbar u sfond. 136 00:06:30,520 --> 00:06:33,330 U aqwa sort tagħna tim tal-produzzjoni ta 'jagħmel kollox tfittex sbieħ 137 00:06:33,330 --> 00:06:36,620 wara l-fatt billi ħsad out jew overlaying xejn 138 00:06:36,620 --> 00:06:37,840 nagħmlu jew ma jridux. 139 00:06:37,840 --> 00:06:41,560 >> Issa biss biex jimmotivaw din il-ġimgħa u verament, fejn inti tista 'tmur, finalment, 140 00:06:41,560 --> 00:06:42,560 ma 'xjenza tal-kompjuter. 141 00:06:42,560 --> 00:06:44,260 Mhux biss wara problema stabbiliti erbgħa. 142 00:06:44,260 --> 00:06:48,240 Iżda wara kors ieħor jew kollu kurrikulu huwa aqwa dak li tista 143 00:06:48,240 --> 00:06:51,090 tagħmel dawn il-jiem f'termini ta ' grafika partikolari. 144 00:06:51,090 --> 00:06:53,440 >> Xi wħud minnkom tista raw dan flowing madwar online. 145 00:06:53,440 --> 00:06:56,240 Imma ħsibt I d nuruk, għal ftit ftit minuti, idea ta 'dak 146 00:06:56,240 --> 00:07:01,890 teknoloġija tal-kompjuter u dak CGI, grafika tal-kompjuter tista 'tagħmel dawn il-jiem 147 00:07:01,890 --> 00:07:04,510 bil-kanzunetta familjari u forsi movie. 148 00:07:04,510 --> 00:07:05,760 >> [MUSIC - Lana DEL RAY, "Żgħażagħ u sbieħ] 149 00:07:05,760 --> 00:10:50,270 150 00:10:50,270 --> 00:10:52,470 >> SPEAKER 1: Huwa biss ftit aqwa, forsi, kemm 151 00:10:52,470 --> 00:10:52,857 omnipreżenti - 152 00:10:52,857 --> 00:10:57,040 >> [Applause] 153 00:10:57,040 --> 00:10:59,230 >> SPEAKER 1: I biss jitniżżel. 154 00:10:59,230 --> 00:11:02,920 Imma huwa verament aqwa, I think, biss kif software omnipreżenti u l-kodiċi u 155 00:11:02,920 --> 00:11:04,230 għodod bħal dan verament huma. 156 00:11:04,230 --> 00:11:07,685 Allura dak togħma tad-direzzjoni fejn inti tista 'tmur. 157 00:11:07,685 --> 00:11:10,620 Oh, mhux aktar Appliance illum. 158 00:11:10,620 --> 00:11:14,640 Ukoll, li timing attwalment traġiku minħabba l-punt I biss ippruvaw jagħmlu. 159 00:11:14,640 --> 00:11:18,670 >> Kull dritt, hekk ejja tniedi Fużjoni darb'oħra. 160 00:11:18,670 --> 00:11:20,800 Ifakkru lili aktar tard. 161 00:11:20,800 --> 00:11:24,190 Kull dritt, u inti għandek ltqajna email bħala aside jekk inti ma jiksbu 162 00:11:24,190 --> 00:11:25,460 avviż bħal dik. 163 00:11:25,460 --> 00:11:29,940 Kull dritt, hekk ifakkar li ġimgħa li għaddiet bdejna biex titqaxxar lura din 164 00:11:29,940 --> 00:11:31,380 aktar magħrufa bħala sekwenza. 165 00:11:31,380 --> 00:11:34,700 >> string ifakkar tip data li l- iddikjarati fil-librerija CS50. 166 00:11:34,700 --> 00:11:37,740 U huwa parti mir-roti ta 'taħriġ li issa se tibda tieħu off. 167 00:11:37,740 --> 00:11:41,280 Kienet kunċett utli kmieni. 168 00:11:41,280 --> 00:11:43,750 Imma issa li għaddej biex tikseb aktar interessanti u aktar qawwija biex 169 00:11:43,750 --> 00:11:48,330 attwalment ara li taħt il-barnuża, string huwa biss dak, ma għidna? 170 00:11:48,330 --> 00:11:50,500 >> Yeah, dan huwa l-hekk imsejħa char *. 171 00:11:50,500 --> 00:11:53,860 U l-* hemm tindika li hemm xi tip ta 'indirizz involuti. 172 00:11:53,860 --> 00:11:58,690 U hekk meta inti tgħidli char * inti jfissirx biss varjabbli li tip ta 'data hija 173 00:11:58,690 --> 00:11:59,290 pointer issa. 174 00:11:59,290 --> 00:12:01,770 Il-fatt li hemm l-istilla hemm ifisser biss li inti tiddikjara li 175 00:12:01,770 --> 00:12:03,020 hekk imsejħa pointer. 176 00:12:03,020 --> 00:12:06,220 U li pointer se apparentement jaħżnu l-indirizz ta ', ta' 177 00:12:06,220 --> 00:12:07,810 ovvjament, char. 178 00:12:07,810 --> 00:12:08,960 >> Issa għaliex ma dan jagħmel sens? 179 00:12:08,960 --> 00:12:11,200 Ukoll, dak li huwa string taħt il-barnuża? 180 00:12:11,200 --> 00:12:15,130 Ukoll, għal xi żmien konna qed tgħid li string taħt il-barnuża huwa 181 00:12:15,130 --> 00:12:18,460 biss h-e-l-l-o, per eżempju. 182 00:12:18,460 --> 00:12:21,585 >> Iżda aħna ve tkellem dwar dan bħala jkunu, essenzjalment, firxa. 183 00:12:21,585 --> 00:12:25,410 U l-firxa mbagħad tfittex ftit aktar bħal dan, ma 'kull wieħed minn dawn 184 00:12:25,410 --> 00:12:26,460 bidu gidma. 185 00:12:26,460 --> 00:12:28,710 U allura aħna stajt qal li hemm xi ħaġa speċjali lura hawn, il- 186 00:12:28,710 --> 00:12:31,270 backslash 0, jew null terminatur. 187 00:12:31,270 --> 00:12:35,230 >> Allura dan il-ħin, dan hawn kien string. 188 00:12:35,230 --> 00:12:38,320 Imma verament, string hija attwalment indirizz. 189 00:12:38,320 --> 00:12:43,210 U l-indirizzi, kif Ser naraw, huma ta 'spiss prefissi bil 0x minn konvenzjoni. 190 00:12:43,210 --> 00:12:44,540 X'tagħmel 0x jindikaw? 191 00:12:44,540 --> 00:12:45,970 Hawn xi ħadd jaf? 192 00:12:45,970 --> 00:12:47,320 >> Allura dan ifisser biss hexadecimal. 193 00:12:47,320 --> 00:12:52,360 Allura inti tista 'recall, attwalment, minn Pst 1, nemmen, wieħed mill-warm-up 194 00:12:52,360 --> 00:12:55,740 mistoqsijiet attwalment mistoqsi dwar eżadeċimali minbarra 195 00:12:55,740 --> 00:12:57,100 binarja u deċimali. 196 00:12:57,100 --> 00:13:00,460 U l-motivazzjoni hawnhekk huwa li ma hexadecimal għandek 16 197 00:13:00,460 --> 00:13:01,770 ċifri għad-dispożizzjoni tiegħek. 198 00:13:01,770 --> 00:13:07,900 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, segwita minn a, b, c, d, e, f. 199 00:13:07,900 --> 00:13:10,430 >> U jekk inti għadd dawk kollha up, ikollok total ta '16. 200 00:13:10,430 --> 00:13:13,200 Allura dan huwa b'kuntrast ma ' dećimali, fejn għandna 10 201 00:13:13,200 --> 00:13:14,690 numri, 0 permezz disa. 202 00:13:14,690 --> 00:13:17,750 Huwa b'kuntrast mal-binarju fejn aħna biss għandhom 0 u 1. 203 00:13:17,750 --> 00:13:21,450 >> Iżda fl-aħħar tal-ġurnata inti tista 'biss jirrappreżentaw l-istess numri, iżda 204 00:13:21,450 --> 00:13:22,500 kemmxejn differenti. 205 00:13:22,500 --> 00:13:25,840 U hexadecimal huwa komuni għaliex kif jirriżulta - u aħna ser tara dan 206 00:13:25,840 --> 00:13:28,790 aktar tard fil-kors - anke meta nikbru l-ipprogrammar web fil-kuntest ta ' 207 00:13:28,790 --> 00:13:32,100 HTML u l-kodiċi tal-kulur, hexadecimal huwa sbieħ. 208 00:13:32,100 --> 00:13:36,390 Minħabba li kull ċifri, jirriżulta, tirrappreżenta erba bits perfettament. 209 00:13:36,390 --> 00:13:39,280 Għalhekk biss tip ta 'linji up nicely kif aħna ser eventwalment tara. 210 00:13:39,280 --> 00:13:44,720 Allura dan jista 'jkun Ox123 jew xi ħaġa bħal dik, li turi l-indirizz 123 211 00:13:44,720 --> 00:13:47,050 x'imkien ġewwa tal tiegħi memorja tal-kompjuter. 212 00:13:47,050 --> 00:13:50,600 >> Iżda naturalment, jinqalgħu xi problemi minħabba dan sottostanti 213 00:13:50,600 --> 00:13:51,520 implimentazzjoni. 214 00:13:51,520 --> 00:13:55,930 U tfakkar li I ħa stab fuq implimentazzjoni ta 'funzjoni bħal dan - 215 00:13:55,930 --> 00:14:00,260 jqabblu sing 0 dot c aħħar ġimgħa, li anki jekk dehru qishom kien 216 00:14:00,260 --> 00:14:04,270 dritt, hija sempliċement ma qabbilx żewġ kordi korrett. 217 00:14:04,270 --> 00:14:07,470 >> Stajt tintrema prinċipali, u stajt jintefa bogħod l-kummenti biss biex tiffoka fuq 218 00:14:07,470 --> 00:14:08,970 il-kodiċi li l-'interess hawnhekk. 219 00:14:08,970 --> 00:14:10,660 U huwa bl-aħmar għaliex dan huwa Buggy. 220 00:14:10,660 --> 00:14:11,670 Għal liema raġuni? 221 00:14:11,670 --> 00:14:15,890 >> Ukoll, fil-quċċata hemm meta I ddikjarat string, dak li kien verament għaddejjin 222 00:14:15,890 --> 00:14:17,260 taħt il-barnuża? 223 00:14:17,260 --> 00:14:19,530 Well, let me jmorru fuq l- iskrin hawn u jqabbluhom. 224 00:14:19,530 --> 00:14:23,230 So I iddikjarat, għal darb'oħra, string s GetString. 225 00:14:23,230 --> 00:14:26,640 >> Hekk jien ser jimxi 'l quddiem u issa jiġbed s għal dak li hu verament. 226 00:14:26,640 --> 00:14:28,590 Huwa ser tkun kwadru hawn. 227 00:14:28,590 --> 00:14:30,490 U jien ser titlob li dan huwa 32 bits. 228 00:14:30,490 --> 00:14:32,890 Mill-inqas huwa normalment hi, inqas fuq il-CS50 229 00:14:32,890 --> 00:14:34,520 apparat fil-lott ta 'kompjuters. 230 00:14:34,520 --> 00:14:35,980 Jien ser sejħa hija s. 231 00:14:35,980 --> 00:14:39,070 >> Imma issa jfakkru li aħna imsejħa GetString. 232 00:14:39,070 --> 00:14:41,430 Prospetti hekk GetString, naturalment, string. 233 00:14:41,430 --> 00:14:45,790 Jekk it-tipi utent fil-h e-l-l-o jidħol l-sekwenza bonjour gets lura. 234 00:14:45,790 --> 00:14:51,010 U li string, kif aħna biss qal, truf up x'imkien fil-memorja tal-kompjuter tiegħek 235 00:14:51,010 --> 00:14:53,240 ma 'backslash 0 fl-aħħar. 236 00:14:53,240 --> 00:14:56,650 I ser tiġbed bħall-firxa - jew blokk kontigwi ta 'karattri - 237 00:14:56,650 --> 00:14:58,330 li fil-fatt hu. 238 00:14:58,330 --> 00:15:01,790 >> U issa, dak li huwa GetString attwalment jirritornaw? 239 00:15:01,790 --> 00:15:04,340 Dak li GetString ġie jirritornaw kollha ta 'dan iż-żmien? 240 00:15:04,340 --> 00:15:07,520 Well, nistgħu ngħidu, fil-ġimgħat minn qabel, dan jirritorna string. 241 00:15:07,520 --> 00:15:10,250 Iżda aktar teknikament, dak ma GetString ritorn apparentement? 242 00:15:10,250 --> 00:15:11,610 >> UDJENZA: An indirizz. 243 00:15:11,610 --> 00:15:12,600 >> SPEAKER 1: An indirizz. 244 00:15:12,600 --> 00:15:16,630 Speċifikament dan jirritorna l-indirizz ta ' l-ewwel gidma, tkun xi tkun. 245 00:15:16,630 --> 00:15:18,830 I biss iżommu użu ta 'wieħed, tnejn, tlieta għaliex dan huwa konvenjenti. 246 00:15:18,830 --> 00:15:21,380 >> Dan jirritorna l-indirizz ta 'l-ewwel karattru fis-sekwenza. 247 00:15:21,380 --> 00:15:23,510 U aħna qal aħħar ġimgħa li li huwa biżżejjed. 248 00:15:23,510 --> 00:15:26,710 Minħabba nistgħu dejjem insemmu fejn l-aħħar tas-sekwenza biss billi 249 00:15:26,710 --> 00:15:30,150 iterazzjoni fuqha, forsi, ma 'għall- loop jew filwaqt li loop jew xi ħaġa simili 250 00:15:30,150 --> 00:15:34,990 li, biss tfittex għal "backslash 0", l-karattru speċjali sentinella. 251 00:15:34,990 --> 00:15:37,220 >> U allura aħna nafu li l-sekwenza jiġri li jkun ta 'tul - 252 00:15:37,220 --> 00:15:37,980 f'dan il-każ - 253 00:15:37,980 --> 00:15:38,670 ħamsa. 254 00:15:38,670 --> 00:15:43,800 Allura teknikament dak GetString ma huwa dan jirritorna Ox123 f'dan il-każ. 255 00:15:43,800 --> 00:15:53,670 U teknikament dak allura jiġri huwa li aħna taħżen, ġewwa ta 'i, Ox123. 256 00:15:53,670 --> 00:15:56,460 Fl-aħħar tal-ġurnata, anke jekk din huwa kunċett ġdid, pointers, dawn qed 257 00:15:56,460 --> 00:15:57,350 biss varjabbli. 258 00:15:57,350 --> 00:16:00,440 Iżda jiġri li jaħżnu bits li jirrappreżentaw kollettivament l-indirizz. 259 00:16:00,440 --> 00:16:03,700 Allura teknikament kollha li gets maħżuna s huwa Ox123. 260 00:16:03,700 --> 00:16:04,680 >> Iżda aħna bħala bnedmin - 261 00:16:04,680 --> 00:16:06,020 inklużi illum onward - 262 00:16:06,020 --> 00:16:09,290 huma verament mhux se kura, tipikament, dak l-indirizz attwali hija 263 00:16:09,290 --> 00:16:10,520 ta 'xi blokki ta' memorja. 264 00:16:10,520 --> 00:16:14,040 Huwa biss mal-livell baxx ta 'dettall li jkun intellettwalment interessanti. 265 00:16:14,040 --> 00:16:15,440 Hekk jien ser teqred dan. 266 00:16:15,440 --> 00:16:19,810 U minflok, livell aktar għoli, biss jgħidu li meta aħna qed jitkellem dwar pointers 267 00:16:19,810 --> 00:16:22,170 Jien ser biss jiġbed aktar arrow faċli għall-utent li twassal l- 268 00:16:22,170 --> 00:16:26,060 istess idea u astratti bogħod l- dettalji ta 'dak l-attwali 269 00:16:26,060 --> 00:16:27,700 indirizz sottostanti huwa. 270 00:16:27,700 --> 00:16:33,290 >> Issa jekk immorru lura għall-kodiċi, liema ġara aħħar ġimgħa jekk ikollna string t 271 00:16:33,290 --> 00:16:34,510 ugwali GetString? 272 00:16:34,510 --> 00:16:38,630 Ukoll, jekk I darb'oħra, tip bonjour dan iż-żmien jien ser tikseb 273 00:16:38,630 --> 00:16:40,460 ieħor fi blokki ta 'memorja. 274 00:16:40,460 --> 00:16:44,820 h-e-l-l-o backslash 0. 275 00:16:44,820 --> 00:16:48,320 >> Iżda minħabba I imsejħa GetString għat-tieni darba - 276 00:16:48,320 --> 00:16:51,100 u naf dan mill tħares lejn l- source code għall GetString - anke 277 00:16:51,100 --> 00:16:54,350 għalkemm huwa koinċidenza li bonjour kien ittajpjat fil darbtejn, GetString mhuwiex 278 00:16:54,350 --> 00:16:55,890 ser jippruvaw jottimizzaw u tkun għaqlija. 279 00:16:55,890 --> 00:16:58,550 Huwa biss se tikseb ieħor fi blokki ta ' memorja mill-kompjuter, li hija 280 00:16:58,550 --> 00:16:59,640 se tkun fuq indirizz ieħor. 281 00:16:59,640 --> 00:17:02,330 Ejja ngħidu biss arbitrarju 456. 282 00:17:02,330 --> 00:17:04,079 >> U allura dak huwa se jirritorna? 283 00:17:04,079 --> 00:17:08,030 Huwa ser jirritorna 456 u jaħżnu f't. 284 00:17:08,030 --> 00:17:12,010 Allura dak li hu verament għaddej, fuq il- naħa tax-xellug huwa Għandi ieħor fi blokki 285 00:17:12,010 --> 00:17:14,260 tal-memorja, 32 bits tipikament. 286 00:17:14,260 --> 00:17:16,720 U fil hemm se jmorru Ox456. 287 00:17:16,720 --> 00:17:20,140 Iżda għal darb'oħra, jien ma interessati f'dawn numri partikolari jibqgħalu. 288 00:17:20,140 --> 00:17:23,069 Jien biss ser astratt tiġbed bħala vleġġa. 289 00:17:23,069 --> 00:17:25,202 >> Allura dan issa huwa spjegazzjoni ġdida. 290 00:17:25,202 --> 00:17:28,735 Imma hija l-istess idea eżatt li l- kien jiġri dan il-ħin. 291 00:17:28,735 --> 00:17:33,150 U għalhekk l-raġuni allura, li din l-ewwel verżjoni tal tqabbel kien buggy 292 00:17:33,150 --> 00:17:34,480 aħħar ġimgħa huwa għaliex? 293 00:17:34,480 --> 00:17:38,000 Meta inti tagħmel jekk i ugwali ugwali t X'Ser verament 294 00:17:38,000 --> 00:17:40,550 taħt il-barnuża jitqabblu? 295 00:17:40,550 --> 00:17:41,910 >> Inti jitqabblu l-indirizzi. 296 00:17:41,910 --> 00:17:47,950 U biss intuwittivament, b'mod ċar, Ox123 mhux se ugwali Ox456. 297 00:17:47,950 --> 00:17:49,380 Dawn in-numri, dawk bits huma biss differenti. 298 00:17:49,380 --> 00:17:53,220 >> U għalhekk konsistenti, ġimgħa li għaddiet huwa qal inti tip affarijiet differenti, anke jekk il- 299 00:17:53,220 --> 00:17:55,360 kliem kienu verbatim-istess. 300 00:17:55,360 --> 00:17:58,770 Allura aħna jiffissaw dan. 301 00:17:58,770 --> 00:18:00,120 F'termini layman, dak li kien l-jiffissaw? 302 00:18:00,120 --> 00:18:02,110 >> UDJENZA: Uża funzjoni. 303 00:18:02,110 --> 00:18:02,870 >> SPEAKER 1: Uża funzjoni. 304 00:18:02,870 --> 00:18:05,190 Jew istilel huma definittivament involuti, imma jużaw funzjoni biex jagħmlu dak? 305 00:18:05,190 --> 00:18:05,962 >> UDJENZA: Biex tqabbel il-kordi. 306 00:18:05,962 --> 00:18:07,390 >> SPEAKER 1: Biex tqabbel il-kordi. 307 00:18:07,390 --> 00:18:11,030 Allura l-problema fundamentali hawn kien li I kien biss tikkunsidra l- 308 00:18:11,030 --> 00:18:15,870 kwalità ta 'kordi li għandhom jiġu definiti mill- paragun ta 'indirizzi tagħhom. 309 00:18:15,870 --> 00:18:18,540 U ovvjament dan huwa biss mutu issa darba inti tifhem x'inhu għaddej 310 00:18:18,540 --> 00:18:19,510 taħt il-barnuża. 311 00:18:19,510 --> 00:18:23,270 Biex verament tqabbel kordi biex tara jekk dawn qed ugwali fil-mod li bniedem 312 00:18:23,270 --> 00:18:26,680 jikkunsidraw żewġ kordi li jkun ugwali għandna bżonn biex iqabblu lilhom karattru għal 313 00:18:26,680 --> 00:18:28,070 karattru għall-karattru. 314 00:18:28,070 --> 00:18:30,020 >> Issa I seta 'jsir dan ħafna tediously. 315 00:18:30,020 --> 00:18:32,240 Iżda familjari, aħna qed tuża għall-loop. 316 00:18:32,240 --> 00:18:36,050 U biss jqabblu bracket s i kontra t bracket i. 317 00:18:36,050 --> 00:18:39,590 s bracket i plus 1 kontra t bracket i plus 1, u oħrajn, ġewwa 318 00:18:39,590 --> 00:18:40,580 xi tip ta 'loop. 319 00:18:40,580 --> 00:18:44,950 U jekk I post xi żewġ karattri li differenti, jew jekk Nifhem li ooh, s hija 320 00:18:44,950 --> 00:18:48,410 iqsar minn t jew itwal minn t I jista 'immedjatament ngħid falza, 321 00:18:48,410 --> 00:18:49,390 dawn mhux qed l-istess. 322 00:18:49,390 --> 00:18:55,370 >> Imma jekk jien jiksbu permezz iu t u jgħidu istess, l-istess, l-istess, l-istess, l-istess, tmiem ta ' 323 00:18:55,370 --> 00:18:58,520 kemm kordi, nista 'ngħid veru, huma ugwali. 324 00:18:58,520 --> 00:19:01,040 Ukoll, B'xorti tajba, sena ilu xi ħadd kiteb li kodiċi għall us. 325 00:19:01,040 --> 00:19:03,790 >> U huma qalu li din StrComp għal string jqabblu. 326 00:19:03,790 --> 00:19:11,900 U anki jekk huwa kontro ftit intuwittivi, StrComp prospetti 0 jekk dawk 327 00:19:11,900 --> 00:19:14,520 żewġ kordi, iu t huma l-istess. 328 00:19:14,520 --> 00:19:18,090 Iżda dan jirritorna valur negattiv jekk i Għandu jiġi qabel t alfabetikament jew 329 00:19:18,090 --> 00:19:20,610 valur pożittiv jekk hu għandu jaqa ' wara t alfabetikament. 330 00:19:20,610 --> 00:19:24,030 >> Mela jekk inti qatt tixtieq li sort xi ħaġa, jirriżulta li StrComp huwa utli. 331 00:19:24,030 --> 00:19:26,660 Għaliex ma biss jgħidu iva jew le, ugwali jew le. 332 00:19:26,660 --> 00:19:30,440 Dan jagħtik sens ta 'tordna bħal Jista dizzjunarju. 333 00:19:30,440 --> 00:19:33,770 Allura StrComp, s comma t tkun daqs ugwali 0 tfisser li l- 334 00:19:33,770 --> 00:19:35,200 kordi huma verament ugwali. 335 00:19:35,200 --> 00:19:38,680 Minħabba min kiteb din il-funzjoni snin ilu preżumibbilment użati għall loop 336 00:19:38,680 --> 00:19:42,840 jew filwaqt li loop jew xi ħaġa bħal dik biex jintegraw aktar l-karattri mill-ġdid 337 00:19:42,840 --> 00:19:45,270 u għal darb'oħra u għal darb'oħra. 338 00:19:45,270 --> 00:19:47,300 >> Iżda tnejn problema nħolqot hawn. 339 00:19:47,300 --> 00:19:48,750 Dan kien copy0.c. 340 00:19:48,750 --> 00:19:51,680 U t-tnejn bl-aħmar huwa għaliex dan huwa difettuż. 341 00:19:51,680 --> 00:19:52,800 U dak li ma nagħmlu hawn? 342 00:19:52,800 --> 00:19:54,310 Ukoll, qabel I imsejħa GetString. 343 00:19:54,310 --> 00:19:56,255 U jien maħżuna l-valur tar-ritorn fl-i. 344 00:19:56,255 --> 00:20:00,260 Allura dak pretty ħafna l-istess bħal din il-parti ta 'fuq tal-istampa. 345 00:20:00,260 --> 00:20:01,490 >> Imma dak li jiġi wara dak? 346 00:20:01,490 --> 00:20:04,980 Well, let me imorru quddiem u jeħles ta mazz sħiħ ta 'dan. 347 00:20:04,980 --> 00:20:09,650 Aħna ser kontrina fil-ħin biex fejn aħna biss jkollhom i, li issa huwa konsistenti ma ' 348 00:20:09,650 --> 00:20:10,940 linja waħda up hemm. 349 00:20:10,940 --> 00:20:11,400 >> I check. 350 00:20:11,400 --> 00:20:13,450 Jekk i ugwali egwali għal 0. 351 00:20:13,450 --> 00:20:18,670 Issa, nota naħa quick, meta jista GetString ritorn 0? 352 00:20:18,670 --> 00:20:19,580 Hemm ma memorja biżżejjed. 353 00:20:19,580 --> 00:20:19,880 Dritt? 354 00:20:19,880 --> 00:20:22,310 >> Huwa rari li dan jiġri, ċertament fuq kompjuter li l- 355 00:20:22,310 --> 00:20:24,740 ltqajna mijiet ta 'megs jew anki gigs ta 'RAM. 356 00:20:24,740 --> 00:20:27,080 Iżda tista ', fit-teorija, ir-ritorn 0, speċjalment jekk il- 357 00:20:27,080 --> 00:20:28,080 utent ma tikkoperax. 358 00:20:28,080 --> 00:20:31,640 Hemm modi biex nippretendu simili ikollok ma xejn inputted u trick 359 00:20:31,640 --> 00:20:34,100 GetString fis jirritornaw 0 effettiv. 360 00:20:34,100 --> 00:20:35,470 >> Allura li għaddej biex jiċċekkja għal dan. 361 00:20:35,470 --> 00:20:39,430 Għaliex jekk kwalunkwe inti bdew tikseb, diġà, difetti segmentazzjoni - 362 00:20:39,430 --> 00:20:42,280 li x'aktarx ilha sors ta 'xi frustrazzjoni - 363 00:20:42,280 --> 00:20:46,150 dawn huma kważi dejjem l-riżultat ta 'memorja relatati żball. 364 00:20:46,150 --> 00:20:50,440 B'xi inti messed up fir-rigward ta ' pointer, anki jekk inti ma jirrealizzaw 365 00:20:50,440 --> 00:20:51,530 kien hemm pointer. 366 00:20:51,530 --> 00:20:55,260 Allura inti jista 'jkollok indotta segmentazzjoni difetti kmieni kemm ġimgħa li jużaw 367 00:20:55,260 --> 00:21:02,100 xi ħaġa bħal għal loop jew waqt loop u l-firxa minn esaġerata 368 00:21:02,100 --> 00:21:05,900 passat il-konfini ta 'xi firxa li inti ddikjarat, f'żewġ ġimgħa 369 00:21:05,900 --> 00:21:06,690 partikolari. 370 00:21:06,690 --> 00:21:09,220 >> Inti jista 'jkollok għamlu dan anki fil-problema stabbiliti erba bi tbegħid. 371 00:21:09,220 --> 00:21:12,910 Anke jekk inti probabilment ma bbenefikawx stilla fil-kodiċi tad-distribuzzjoni għal 372 00:21:12,910 --> 00:21:17,410 Tbegħid, jirriżulta li dawk GRect u GOval u oħrajn affarijiet bħal dawn, 373 00:21:17,410 --> 00:21:19,650 dawk huma attwalment pointers taħt il-barnuża. 374 00:21:19,650 --> 00:21:23,430 >> Iżda Stanford, bħalna, tip ta 'ġlud li jiddettalja mill-inqas għal-libreriji 375 00:21:23,430 --> 00:21:26,540 skopijiet, simili ħafna nagħmlu għal string u char *. 376 00:21:26,540 --> 00:21:30,060 Iżda GRect u GOval u kollha ta 'dawk affarijiet inti guys huma jew se tuża 377 00:21:30,060 --> 00:21:32,630 din il-ġimgħa huma finalment indirizzi memorja. 378 00:21:32,630 --> 00:21:33,650 Inti biss ma jafu. 379 00:21:33,650 --> 00:21:37,240 >> Għalhekk mhuwiex sorprendenti allura, forsi, li inti tista 'vjaġġ fuq xi 380 00:21:37,240 --> 00:21:38,580 difetti segmentazzjoni. 381 00:21:38,580 --> 00:21:41,290 Imma x'hemm interessanti hawn issa, jekk wara we jiċċekkja għal 0 nagħmlu 382 00:21:41,290 --> 00:21:43,460 string t gets s. 383 00:21:43,460 --> 00:21:44,690 Well, let me tiddikjara t. 384 00:21:44,690 --> 00:21:47,730 Jien ser tiġbed bħala kwadru, 32 bits, sejħa hija t. 385 00:21:47,730 --> 00:21:49,740 U allura jien ser tagħmel gets s. 386 00:21:49,740 --> 00:21:51,130 >> Well, dak ma jfisser? 387 00:21:51,130 --> 00:21:53,280 Ukoll, huwa ftit diffiċli li wieħed jaħseb dwar dan stampa għaqli. 388 00:21:53,280 --> 00:21:55,025 Imma ejja jaħsbu dwar x'hemm ġewwa ta 'x? 389 00:21:55,025 --> 00:21:59,430 X'hemm litteralment ġewwa dan il-varjabbli? 390 00:21:59,430 --> 00:22:01,500 Il Ox123 valur. 391 00:22:01,500 --> 00:22:05,815 >> Allura meta I say string t gets s, li ftit tfisser litteralment tieħu n-numru 392 00:22:05,815 --> 00:22:10,070 fil i, li huwa Ox123 u poġġih Ox123. 393 00:22:10,070 --> 00:22:13,740 Jew pictorially, jekk I tip ta 'astratt bogħod minn dak dettall hija għandha l- 394 00:22:13,740 --> 00:22:16,600 effett ta 'litteralment tagħmel dan ukoll. 395 00:22:16,600 --> 00:22:22,110 >> Allura issa, naħseb lura għall-aħħar ġimgħa meta aħna ipproċediet biex kapitalist T. I 396 00:22:22,110 --> 00:22:23,800 għamlet T bracket 0. 397 00:22:23,800 --> 00:22:27,150 Ukoll, T parentesi 0, anki jekk huwa pointer, inti tista 'titratta dan bħala għalkemm 398 00:22:27,150 --> 00:22:29,220 huwa ta 'firxa, bi kwadru notazzjoni bracket. 399 00:22:29,220 --> 00:22:31,550 >> Għalhekk, fejn huwa T bracket 0? 400 00:22:31,550 --> 00:22:32,990 Ukoll, huwa l-h. 401 00:22:32,990 --> 00:22:36,800 U hekk meta nużaw dik il-linja ta 'kodiċi, tnejn ta 'fuq, li huwa f'dak c type.h 402 00:22:36,800 --> 00:22:38,460 fajl tal-header, li fejn huwa ddikjarat. 403 00:22:38,460 --> 00:22:44,410 Inti kapitalizzazzjoni dan H. Iżda Naturalment, dak l-istess h eżatt li l- 404 00:22:44,410 --> 00:22:46,540 ġewwa ta 'i, biex ngħidu hekk. 405 00:22:46,540 --> 00:22:51,930 U hekk issa inti nbidlu jew kapitalizzat kemm l-oriġinali u l- 406 00:22:51,930 --> 00:22:53,120 hekk imsejħa kopja. 407 00:22:53,120 --> 00:22:56,620 Għaliex inti ma tagħmel kopja fil- mod li bniedem tkunx tixtieq li jkun. 408 00:22:56,620 --> 00:22:59,710 >> Allura dak li kien l-tiffissa hawn, fl-aħħar ġimgħa copy1.c? 409 00:22:59,710 --> 00:23:03,070 410 00:23:03,070 --> 00:23:05,580 Funzjonijiet, hekk nistgħu attwalment kopja-sekwenza. 411 00:23:05,580 --> 00:23:08,700 U fundamentalment, dak li għandna bżonn li jagħmlu sabiex kopja-sekwenza? 412 00:23:08,700 --> 00:23:12,070 >> Ukoll, f'dan il-verżjoni aħdar hawn jien se tagħmel dan livell pjuttost baxx. 413 00:23:12,070 --> 00:23:14,260 Hemm effettivament il-funzjonijiet dawn jistgħu jgħinu ma 'dan. 414 00:23:14,260 --> 00:23:17,710 Iżda l-aktar waħda bażika, u l-aktar waħda familjari, għall-inqas, dalwaqt se tkun 415 00:23:17,710 --> 00:23:19,600 familjari għalina, huwa dan li ġej - 416 00:23:19,600 --> 00:23:21,910 għalhekk wieħed fuq l-ewwel linja tal-kodiċi fl-aħdar issa. 417 00:23:21,910 --> 00:23:23,970 >> I biss rewrote s bħala char *. 418 00:23:23,970 --> 00:23:25,250 M'hemm l-ebda funzjonali differenza hemmhekk. 419 00:23:25,250 --> 00:23:28,790 I biss threw bogħod il-librerija CS50 u Jien ssejjaħ dak li hi, char *. 420 00:23:28,790 --> 00:23:31,640 >> Issa dot, dot, dot, minħabba li kien hemm xi verifika żball li mhux 421 00:23:31,640 --> 00:23:33,200 interessanti biex jitkellmu dwar mill-ġdid. 422 00:23:33,200 --> 00:23:34,710 Allura issa t hija ddikjarata. 423 00:23:34,710 --> 00:23:35,780 Huwa wisq huwa char *. 424 00:23:35,780 --> 00:23:38,280 So I ġibdet kwadru ftit fuq l-iskrin bħal qabel. 425 00:23:38,280 --> 00:23:41,870 >> Iżda fuq in-naħa tal-lemin, malloc, għidna huwa memorja allokati. 426 00:23:41,870 --> 00:23:44,130 Allura jalloka xi blokki ta 'memorja. 427 00:23:44,130 --> 00:23:48,830 U kemm bytes għandna attwalment tixtieq li jallokaw, ma jidhirx? 428 00:23:48,830 --> 00:23:50,340 >> Ukoll, it-tul sensiela ta 's. 429 00:23:50,340 --> 00:23:52,310 Mela jekk huwa bonjour dan huwa se tkun ħamsa. 430 00:23:52,310 --> 00:23:53,950 Aħna ser jgħidu h-e-l-l-o. 431 00:23:53,950 --> 00:23:55,090 Allura ħames bytes. 432 00:23:55,090 --> 00:23:57,960 >> Iżda mbagħad plus 1, għaliex 1? 433 00:23:57,960 --> 00:23:58,830 Il-karattru 0. 434 00:23:58,830 --> 00:24:03,640 Jekk aħna ma jħallu spazju għal dan Guy aħna jistgħu aċċidentalment joħolqu sitwazzjoni 435 00:24:03,640 --> 00:24:05,600 meta l-sekwenza huwa h-e-l-l-o. 436 00:24:05,600 --> 00:24:08,470 U allura l-ħin li jmiss hu GetString imsejħa u I tip, per eżempju, 437 00:24:08,470 --> 00:24:14,020 David, D-a-vs-i-d, il-kompjuter huwa għaddej li jaħsbu li s huwa attwalment 438 00:24:14,020 --> 00:24:18,900 h-e-l-l-o-d-a-vs-i-d għaliex hemm ebda waqfa fl bejn dawn il-kliem. 439 00:24:18,900 --> 00:24:19,810 >> Għalhekk għandna bżonn li break. 440 00:24:19,810 --> 00:24:20,720 Allura aħna ma rridux ħamsa. 441 00:24:20,720 --> 00:24:22,100 Irridu sitt bytes. 442 00:24:22,100 --> 00:24:23,110 >> U bytes I say. 443 00:24:23,110 --> 00:24:25,220 Imma huwa daqs tassew ħin ta 'char. 444 00:24:25,220 --> 00:24:28,040 Teknikament char huwa kważi dejjem f'byte wieħed. 445 00:24:28,040 --> 00:24:31,030 >> Iżda biss biex jagħmlu kodiċi tagħna portabbli, biex ngħidu hekk, b'tali mod li taħdem fuq 446 00:24:31,030 --> 00:24:33,750 kompjuters differenti anke jekk dawn jistgħu jkun kemmxejn differenti minn taħt il- 447 00:24:33,750 --> 00:24:36,590 barnuża, jien ser ġenerikament jgħidu daqs tal char sabiex 448 00:24:36,590 --> 00:24:37,660 kodiċi tiegħi dejjem xogħol. 449 00:24:37,660 --> 00:24:40,610 U jien ma jkollhom recompile hija biss minħabba I jaġġornaw il-kompjuter tiegħi jew l-użu 450 00:24:40,610 --> 00:24:42,140 xi pjattaforma differenti. 451 00:24:42,140 --> 00:24:45,300 >> Allura stajt ltqajna 6 darbiet id-daqs ta ' a char, li jiġri li jkun 1. 452 00:24:45,300 --> 00:24:47,440 Allura dan ifisser malloc jistgħu tagħti me sitt bytes. 453 00:24:47,440 --> 00:24:49,140 X'inhu li fil-fatt jagħmlu? 454 00:24:49,140 --> 00:24:52,810 Well, let me roll lura fil-ħin hawn biex fejn ninsabu fl-istorja. 455 00:24:52,810 --> 00:24:57,620 >> Mela jekk jien tmur lura hawn, stajt iddikjarat a char * imsejjaħ t. 456 00:24:57,620 --> 00:25:00,280 Stajt issa msejjaħ malloc għal sitt bytes. 457 00:25:00,280 --> 00:25:06,400 U issa jien ser tiġbed dawk sitta bytes bħad-firxa qabel. 458 00:25:06,400 --> 00:25:10,570 Imma I attwalment ma nafx x'hemm ġewwa dan array. 459 00:25:10,570 --> 00:25:14,640 >> Jekk inti talloka memorja jirriżulta li inti ma tistax fiduċja li hemm xi 460 00:25:14,640 --> 00:25:15,810 valur magħrufa hemmhekk. 461 00:25:15,810 --> 00:25:18,400 Dan jista 'jkunu ġew użati minn xi ħaġa inkella, xi funzjoni oħra, xi oħrajn 462 00:25:18,400 --> 00:25:19,630 linja tal-kodiċi li inti kiteb. 463 00:25:19,630 --> 00:25:22,870 Allura aħna ser ġeneralment sejħa dawn żibel valuri u tiġbed minnhom, forsi, kif 464 00:25:22,870 --> 00:25:26,170 trade marks in kwistjoni, biss li jindika li aħna ma nafx x'hemm attwalment hemm. 465 00:25:26,170 --> 00:25:30,390 U li l-ebda big deal sakemm aħna huma intelliġenti biżżejjed biex jissostitwixxu dawk 466 00:25:30,390 --> 00:25:34,550 Valuri taż-żibel bin-numri jew Chars li aħna jimpurtahom. 467 00:25:34,550 --> 00:25:36,340 >> Allura f'dan il-każ dak li jien se jagħmlu? 468 00:25:36,340 --> 00:25:38,670 Ukoll, il-kodiċi linja tiegħi ta ' jmiss, I jkollhom erba. 469 00:25:38,670 --> 00:25:41,350 Int I nikseb 0, n gets l- tul sensiela ta 's. 470 00:25:41,350 --> 00:25:42,750 Allura familjari għal loop. 471 00:25:42,750 --> 00:25:45,875 I hija inqas minn jew ugwali għal n, li normalment huwa ogħla. 472 00:25:45,875 --> 00:25:47,500 >> Iżda dan iż-żmien huwa intenzjonat. 473 00:25:47,500 --> 00:25:51,890 I + +, u mbagħad I sempliċiment tagħmel t bracket i gets s. 474 00:25:51,890 --> 00:25:56,320 Minħabba stampa tiegħi tidher bħal dan fil dan il-mument, maħżuna t hija l- 475 00:25:56,320 --> 00:25:59,530 indirizz ta 'dik blokki każwali ta' memorja Valuri tagħhom huma magħrufa. 476 00:25:59,530 --> 00:26:03,030 Iżda hekk kif nagħmel t bracket 0 li tpoġġi me hawn. 477 00:26:03,030 --> 00:26:07,430 >> U dak jispiċċa jkollna mfassla hemmhekk? 478 00:26:07,430 --> 00:26:08,740 Aħna jispiċċaw tqegħid h. 479 00:26:08,740 --> 00:26:11,170 Għaliex dan huwa dak i fil s bracket 0. 480 00:26:11,170 --> 00:26:14,300 U allura l-istess ħaġa għall- e, u l, u l, u o. 481 00:26:14,300 --> 00:26:17,930 >> n, għaliex ma mmur up permezz ugwali għal n? 482 00:26:17,930 --> 00:26:19,200 Minħabba l-karattru 0. 483 00:26:19,200 --> 00:26:23,580 Hekk biss tkun ċara, allura, jekk I attwalment iħassar kwalunkwe dawn żibel 484 00:26:23,580 --> 00:26:28,870 Valuri huma u mbagħad fil-fatt tiġbed dak I jistennew, dan huwa s parentesi 1, 2, 485 00:26:28,870 --> 00:26:32,440 3, 4, plus thats batuta karattru ġdid. 486 00:26:32,440 --> 00:26:36,080 >> U hekk issa jekk aħna kompliet passat il-dot, dot, dot f'dan il-verżjoni korretta 487 00:26:36,080 --> 00:26:41,930 u kategorija kapitalizzat t 0 I għandux, Naturalment, jiġu kapitalizzazzjoni biss dan 488 00:26:41,930 --> 00:26:47,050 Guy hawn, li kunċettwalment, kien finalment il-għan. 489 00:26:47,050 --> 00:26:48,040 Allura dak l-pointer huwa. 490 00:26:48,040 --> 00:26:51,430 >> U inti stajt ilhom jużawhom għal ġimgħat issa fil-kuntest ta 'spag. 491 00:26:51,430 --> 00:26:53,530 Iżda taħt il-barnuża li qed ftit aktar kumplessa. 492 00:26:53,530 --> 00:26:57,520 Imma jekk inti taħseb dwarhom f'dan forma bl-istampi nipproponi li dawn qed 493 00:26:57,520 --> 00:27:01,720 probabbilment mhux kollha li scary kif jista 'jidher l-ewwel mad-daqqa t'għajn, 494 00:27:01,720 --> 00:27:04,730 partikolarment ma 'tali sintassi ġdid. 495 00:27:04,730 --> 00:27:07,290 Kwalunkwe mistoqsijiet dwar pointers, kordi, jew jaħraq? 496 00:27:07,290 --> 00:27:07,580 Yeah? 497 00:27:07,580 --> 00:27:09,252 >> UDJENZA: Tista 'tmur lura għall-[inaudible]? 498 00:27:09,252 --> 00:27:10,502 >> SPEAKER 1: Sure. 499 00:27:10,502 --> 00:27:14,058 500 00:27:14,058 --> 00:27:19,525 >> UDJENZA: Allura kif jidħlu fil aħħar tiegħek ħafna linja, inti ma għandekx * linja t 501 00:27:19,525 --> 00:27:21,513 u * i fil-linja? 502 00:27:21,513 --> 00:27:23,004 M'għandekx ikollok-referenza għall-- 503 00:27:23,004 --> 00:27:24,640 >> SPEAKER 1: Ah, kwistjoni verament tajba. 504 00:27:24,640 --> 00:27:26,800 Għaliex ma I jkollhom * t * u s? 505 00:27:26,800 --> 00:27:30,340 Minħabba fil-qosor, l-aħħar ġimgħa, bħal fil tagħna tpartit funzjoni, I ma jgħidu li meta 506 00:27:30,340 --> 00:27:33,350 inti stajt ltqajna pointer l-mezzi li inti tmur hemm kif għamilna 507 00:27:33,350 --> 00:27:36,590 fiżikament fuq il-palk, kien li fil-fatt jużaw l-operatur star. 508 00:27:36,590 --> 00:27:40,570 >> Jirriżulta li din square-bracket notazzjoni huwa dak li aħna ser sejħa sintattika 509 00:27:40,570 --> 00:27:44,190 zokkor, li huwa biss mod sexy ta ' qal huwa notazzjoni shorthand għal 510 00:27:44,190 --> 00:27:45,950 eżattament dak li qed tiddeskrivi. 511 00:27:45,950 --> 00:27:49,385 Imma hija ftit aktar intuwittivi. 512 00:27:49,385 --> 00:27:53,510 U għar-riskju ta 'teħid din jidhru aktar ikkumplikata milli jeħtieġ li jkun, 513 00:27:53,510 --> 00:27:56,990 x'inhu verament jiġri hawn fuq huwa dan li ġej - 514 00:27:56,990 --> 00:28:01,450 Jekk ngħid * t li jfisser mur l-indirizz maħżuna t. 515 00:28:01,450 --> 00:28:04,350 >> Allura litteralment, jekk t hija ħażna l-indirizz ta 'dik h 516 00:28:04,350 --> 00:28:07,300 inizjalment, * mezzi t mur hawn. 517 00:28:07,300 --> 00:28:10,730 Issa, dak ma t bracket 0 jfisser? 518 00:28:10,730 --> 00:28:11,560 Ħaġa eżatt istess. 519 00:28:11,560 --> 00:28:13,510 Huwa biss aktar faċli ftit friendly li tikteb. 520 00:28:13,510 --> 00:28:14,430 >> Imma jien ma isir s'issa. 521 00:28:14,430 --> 00:28:17,800 I ma tistax biss jgħidu * t gets * i. 522 00:28:17,800 --> 00:28:19,440 Minħabba dak li nkun tagħmel allura? 523 00:28:19,440 --> 00:28:22,950 I d tkun tqegħid h, h, h, h, h matul il-ħaġa sħiħa. 524 00:28:22,950 --> 00:28:22,995 Dritt? 525 00:28:22,995 --> 00:28:26,020 >> Minħabba * t hija tmur għall-indirizz f't. 526 00:28:26,020 --> 00:28:27,580 Iżda aħna qed ġewwa ta 'loop. 527 00:28:27,580 --> 00:28:32,150 U liema valur am I inkrementazzjoni, naturalment, fuq kull iterazzjoni? 528 00:28:32,150 --> 00:28:32,690 i. 529 00:28:32,690 --> 00:28:34,590 >> Iżda hemm opportunità hawn, id-dritt? 530 00:28:34,590 --> 00:28:37,870 Anke jekk dan iħoss bħal huwa jkollna ftit aktar sofistikati 531 00:28:37,870 --> 00:28:40,730 mill-notazzjoni square-bracket konna użati għal xi żmien - 532 00:28:40,730 --> 00:28:43,840 let me jneħħu bidla h tiegħi hemm - 533 00:28:43,840 --> 00:28:48,870 anke jekk din issa qed jkollna ftit fancier, l-idea bażika, jekk * t 534 00:28:48,870 --> 00:28:53,630 ifisser hawn u * t huwa biss mur l-indirizz f't. 535 00:28:53,630 --> 00:28:54,990 >> Imma dak li kien l-indirizz fl t? 536 00:28:54,990 --> 00:28:56,850 In-numru inżommu tuża? 537 00:28:56,850 --> 00:29:00,540 Bħal Ox456, ejja idaħħlu dak lura biss għall-fini ta 'diskussjoni. 538 00:29:00,540 --> 00:29:05,380 Ukoll, jekk nixtieq nikseb fil-e fl t string, I biss trid tmur, 539 00:29:05,380 --> 00:29:06,460 essenzjalment, 456. 540 00:29:06,460 --> 00:29:09,230 >> Jew pjuttost, 457. 541 00:29:09,230 --> 00:29:10,590 I biss bżonn li żżid waħda. 542 00:29:10,590 --> 00:29:11,790 Imma I tista 'tagħmel dan, id-dritt? 543 00:29:11,790 --> 00:29:14,680 Minħabba t, anki jekk I iżommu tpinġija issa bħala vleġġa, huwa biss 544 00:29:14,680 --> 00:29:16,570 numru, Ox456. 545 00:29:16,570 --> 00:29:21,400 U jekk I żid għal dan, jew aktar ġeneralment, jekk I żid I ta 'dak I tista' 546 00:29:21,400 --> 00:29:24,350 fil-fatt tikseb eżattament fejn irrid. 547 00:29:24,350 --> 00:29:26,260 Mela jekk jien fil-fatt jagħmlu dan - 548 00:29:26,260 --> 00:29:28,970 u dan huwa dak li issa msejjaħ aritmetika pointer - 549 00:29:28,970 --> 00:29:30,375 I tista 'tneħħi din il-linja. 550 00:29:30,375 --> 00:29:33,550 Liema hija, franchement, I think aktar ċara u aktar utent ftit faċli biex jinqara. 551 00:29:33,550 --> 00:29:35,970 Iżda dan huwa mhux inqas korretta. 552 00:29:35,970 --> 00:29:38,570 >> Din il-linja tal-kodiċi issa qiegħda tuża aritmetika pointer. 553 00:29:38,570 --> 00:29:40,920 Huwa qal tmur għall- indirizz li ġej - 554 00:29:40,920 --> 00:29:44,670 tkun xi tkun il-bidu ta 't huwa, li huwa t plus i, li inizjalment 555 00:29:44,670 --> 00:29:45,730 huwa 0, li hija kbira. 556 00:29:45,730 --> 00:29:49,280 Minħabba dan ifisser il-bidu ta 't plus 1, flimkien ma '2, miżjuda bi 3, u oħrajn. 557 00:29:49,280 --> 00:29:51,030 U l-istess jittrattaw s. 558 00:29:51,030 --> 00:29:52,750 >> Zokkor hekk sintatttiku għal dan. 559 00:29:52,750 --> 00:29:55,900 Imma fehim x'inhu verament għaddej taħt il-barnuża, nixtieq jargumentaw, 560 00:29:55,900 --> 00:29:57,410 huwa attwalment utli u fih innifsu. 561 00:29:57,410 --> 00:30:00,620 Għaliex dan ikun ifisser issa hemm mhux ħafna aktar magic jiġri 562 00:30:00,620 --> 00:30:01,620 taħt il-barnuża. 563 00:30:01,620 --> 00:30:03,920 Hemm mhumiex ser ikunu ħafna aktar saffi li nistgħu Qaxxar għalik. 564 00:30:03,920 --> 00:30:04,810 Dan huwa ċ. 565 00:30:04,810 --> 00:30:06,410 U dan huwa l-ipprogrammar. 566 00:30:06,410 --> 00:30:08,002 Verament tajba kwistjoni. 567 00:30:08,002 --> 00:30:11,570 >> Kull dritt, u għalhekk din kienet l buggy programm I kien qed jirreferi għal qabel. 568 00:30:11,570 --> 00:30:12,650 swap kien difettuż. 569 00:30:12,650 --> 00:30:14,070 Jekk ma jidhirx li jaħdmu. 570 00:30:14,070 --> 00:30:17,390 Ifakkar li bħad mal-ħalib u il-meraq tal-larinġ - li bdejt 571 00:30:17,390 --> 00:30:18,660 xorb dimostrazzjoni tal-lum. 572 00:30:18,660 --> 00:30:22,220 Hekk biss bħala bil-meraq tal-larinġ u l-ħalib, aħna ma għandek tuża 573 00:30:22,220 --> 00:30:26,200 varjabbli temporanja, TMP, li jkollhom temporanjament b'tali mod li nistgħu mbagħad 574 00:30:26,200 --> 00:30:28,820 bidla valur tagħha u mbagħad taġġorna b. 575 00:30:28,820 --> 00:30:32,870 >> Iżda din il-funzjoni, għidna, jew dan programm li fih din il-funzjoni kienet 576 00:30:32,870 --> 00:30:35,670 miktuba kienet żbaljata u difettuż, għaliex? 577 00:30:35,670 --> 00:30:38,870 578 00:30:38,870 --> 00:30:39,090 Iva? 579 00:30:39,090 --> 00:30:42,471 >> UDJENZA: [inaudible]. 580 00:30:42,471 --> 00:30:44,940 >> SPEAKER 1: Eżattament, meta inti sejħa swap - 581 00:30:44,940 --> 00:30:47,820 jew b'mod iktar ġenerali, meta inti sejħa aktar xi funzjoni - 582 00:30:47,820 --> 00:30:51,210 jekk l-argumenti għal dik il-funzjoni huma primittiv, biex ngħidu hekk, ints u Chars 583 00:30:51,210 --> 00:30:56,740 u doubles u sufruni, affarijiet mingħajr stilla, inti tgħaddi fil-kopja ta ' 584 00:30:56,740 --> 00:30:57,540 l-argument. 585 00:30:57,540 --> 00:31:01,580 Mela jekk x 1 kien uy kien 2, a va li jkun 1, u b se tkun 2. 586 00:31:01,580 --> 00:31:05,250 Iżda dawn qed tmur biex tkun biċċiet differenti ta 'bits, biċċiet differenti ta' 587 00:31:05,250 --> 00:31:07,540 memorja li jiġri li tkun ħażna valuri identiċi. 588 00:31:07,540 --> 00:31:12,160 >> Allura din il-kodiċi huwa super perfetta fi iskambji au b. 589 00:31:12,160 --> 00:31:13,850 Hija l-ebda tajba fil jagħmlu skambju - 590 00:31:13,850 --> 00:31:15,290 fl-eżempju ġimgħa li għaddiet - 591 00:31:15,290 --> 00:31:16,390 xuy. 592 00:31:16,390 --> 00:31:18,780 Minħabba darb'oħra, dawn qed fl-ambitu ħażin. 593 00:31:18,780 --> 00:31:21,310 >> Issa, kif ma immorru dwar l-iffissar dan? 594 00:31:21,310 --> 00:31:23,140 Kellna biex jagħmlu l-funzjoni tfittex uglier ftit. 595 00:31:23,140 --> 00:31:25,250 Iżda għal darb'oħra, jikkunsidraw dak dan ifisser biss. 596 00:31:25,250 --> 00:31:27,840 597 00:31:27,840 --> 00:31:31,500 >> U fil-fatt, let me, għall-konsistenza, bidla ħaġa waħda hekk huwa identiku għal 598 00:31:31,500 --> 00:31:33,200 dak li aħna biss għamlet. 599 00:31:33,200 --> 00:31:35,690 Kif semmejt aħħar ġimgħa, ma jimpurtax fejn tmur. 600 00:31:35,690 --> 00:31:38,120 Fil-fatt, tipikament inti tpoġġi l- star ħdejn l-isem varjabbli. 601 00:31:38,120 --> 00:31:40,750 Imma jien naħseb li jkun ftit aktar faċli tikkunsidra l-* li jmiss għall- 602 00:31:40,750 --> 00:31:44,910 tip ta 'data fis-sens huwa pointer għal int f'dan il-każ. 603 00:31:44,910 --> 00:31:46,270 >> Allura dak am I tagħmel hawn? 604 00:31:46,270 --> 00:31:49,590 Jien qal ma jagħtux me int segwit minn int ieħor, 605 00:31:49,590 --> 00:31:50,810 ssejjaħ minnhom u b. 606 00:31:50,810 --> 00:31:52,460 Agħtini l-indirizz ta 'int. 607 00:31:52,460 --> 00:31:53,960 Agħtini l-indirizz ta int ieħor. 608 00:31:53,960 --> 00:31:56,330 Sejħa dawk tindirizza u b. 609 00:31:56,330 --> 00:32:00,860 >> U mbagħad tuża l-notazzjoni * isfel hawn taħt, mur kull wieħed minn dawk l-indirizzi 610 00:32:00,860 --> 00:32:05,290 kif meħtieġ biex tikseb jew jew sett valur tagħha. 611 00:32:05,290 --> 00:32:07,400 Iżda hemm eċċezzjoni hawn. 612 00:32:07,400 --> 00:32:11,130 Għaliex I ma jkollhom * jmiss TMP? 613 00:32:11,130 --> 00:32:15,070 Għaliex għandi ma tagħmel dan, per eżempju? 614 00:32:15,070 --> 00:32:19,370 Hija tħoss bħal I għandhom biss jmorru kollha out u jikkoreġu l-ħaġa sħiħa. 615 00:32:19,370 --> 00:32:19,752 Yeah? 616 00:32:19,752 --> 00:32:21,002 >> UDJENZA: [inaudible]. 617 00:32:21,002 --> 00:32:23,280 618 00:32:23,280 --> 00:32:25,480 >> SPEAKER 1: I ma dikjarati TMP bħala sekwenza. 619 00:32:25,480 --> 00:32:28,830 620 00:32:28,830 --> 00:32:34,950 Allura dan ikollu jiddikjara, f'dan il-każ, f'TMP li tkun l-indirizz ta 'int. 621 00:32:34,950 --> 00:32:37,380 Iżda li ma tantx huwa dak li nixtieq, għal ftit ta 'raġunijiet. 622 00:32:37,380 --> 00:32:38,616 >> UDJENZA: Inti ma tridx li tpartit lilhom. 623 00:32:38,616 --> 00:32:41,800 >> SPEAKER 1: Eżattament, Ma rridx li tpartit xejn ma TMP. TMP huwa biss 624 00:32:41,800 --> 00:32:42,790 Jittieħed ġimgħa waħda. 625 00:32:42,790 --> 00:32:45,150 All I trid hu varjabbli biex jaħżnu xi numru. 626 00:32:45,150 --> 00:32:47,330 Jien ma anki kura dwar l-indirizzi f'dan il-mument. 627 00:32:47,330 --> 00:32:50,530 >> I biss bżonn 32 bits jew hekk biex jaħżnu int. 628 00:32:50,530 --> 00:32:56,690 U nixtieq li tqiegħed f'dawk 32 bits kwalunkwe ma jkunx, biex ngħidu hekk, iżda 629 00:32:56,690 --> 00:33:01,260 dak li huwa fi, biss biex tkun iktar preċiża. 630 00:33:01,260 --> 00:33:06,420 Għaliex jekk huwa indirizz, * mezz jmorru hemm u jiksbu l-valur 1. 631 00:33:06,420 --> 00:33:10,560 Per eżempju, fl-eżempju ġimgħa li għaddiet jew fil-każ b tal, jiksbu mill-valur 2. 632 00:33:10,560 --> 00:33:11,750 >> Allura x'inhu verament għaddej? 633 00:33:11,750 --> 00:33:15,070 Let me tfassal stampa hawn li se tease apparti biss parti tal-lum. 634 00:33:15,070 --> 00:33:18,580 Iżda dan se jibqgħu jidhru għal żmien pjuttost twil. 635 00:33:18,580 --> 00:33:22,430 >> Dan, nitlob, huwa dak tal-kompjuter tiegħek memorja qisu meta inti tmexxi 636 00:33:22,430 --> 00:33:24,060 programm, kwalunkwe programm. 637 00:33:24,060 --> 00:33:28,340 Meta inti tmexxi programm fuq nett ta 'RAM kompjuter tiegħek - sabiex jaħsbu 638 00:33:28,340 --> 00:33:33,530 dan ir-rettangolu, verament, kif tiegħek RAM jew memorja tal-kompjuter, kollha 101 639 00:33:33,530 --> 00:33:36,920 biljun bytes ta 'dan, kull żewġ biljuni ta bytes, kollha żewġ gigabytes ta 'dan, 640 00:33:36,920 --> 00:33:39,910 tkun xi tkun il-kwantità għandek huwa, ejja tiġbed bħala rettangolu. 641 00:33:39,910 --> 00:33:43,260 U jien jsostnu li meta inti tmexxi programm bħal Microsoft Word jew Chrome 642 00:33:43,260 --> 00:33:49,220 jew xi ħaġa bħal dik, l-bits li Microsoft jew li Google kiteb - 643 00:33:49,220 --> 00:33:50,910 fil-każijiet ta 'dawk il-programmi - 644 00:33:50,910 --> 00:33:54,490 huma mgħobbija fil-memorja tal-kompjuter tiegħek fejn jistgħu jiġu esegwiti aktar 645 00:33:54,490 --> 00:33:57,520 malajr u mitmugħa fil-CPU, li huwa l-imħuħ tal-kompjuter. 646 00:33:57,520 --> 00:34:00,940 >> U fil TAM dawn qed maħżuna fil-ħafna quċċata tal-programm tiegħek, biex ngħidu hekk. 647 00:34:00,940 --> 00:34:03,300 Fi kliem ieħor, jekk dan huwa blokki ta ' memorja, meta inti ikklikkja darbtejn fuq 648 00:34:03,300 --> 00:34:05,740 Microsoft Word, il-bits come off-hard drive. 649 00:34:05,740 --> 00:34:06,680 Huma jiksbu mgħobbija fil RAM. 650 00:34:06,680 --> 00:34:10,330 U aħna ser shove lilhom up fuq nett ta 'dan ir-rettangolu kunċettwalment. 651 00:34:10,330 --> 00:34:13,010 >> Ukoll, il-bqija tal-memorja tiegħek huwa użat għall-affarijiet differenti. 652 00:34:13,010 --> 00:34:16,460 Fuq nett tara initialize data u uninitialize data. 653 00:34:16,460 --> 00:34:20,500 Dan għandu ma, għall-parti l-kbira, mal- kostanti jew varjabbli globali 654 00:34:20,500 --> 00:34:21,340 li għandhom valuri. 655 00:34:21,340 --> 00:34:22,980 Iżda aktar fuq dawk ieħor żmien. 656 00:34:22,980 --> 00:34:25,150 >> Imbagħad għandek l-borġ, li aħna ser terga 'lura għal. 657 00:34:25,150 --> 00:34:28,420 Iżda fil-qiegħ hija l-parti li l- partikolarment germane dritt issa. 658 00:34:28,420 --> 00:34:30,210 Hu l-munzell hekk imsejħa. 659 00:34:30,210 --> 00:34:33,850 Allura eżatt bħal fil-maġġoranza f'kull sala D hawn fuq kampus, inti għandek trejs dawk li 660 00:34:33,850 --> 00:34:37,210 biss munzell fuq quċċata ta 'xulxin li inti tista 'tpoġġi l-ikel u whatnot. 661 00:34:37,210 --> 00:34:40,139 Il-munzell ta 'sistema tal-kompjuter huwa simili ħafna. 662 00:34:40,139 --> 00:34:42,679 Ħlief billi l-trej, kif nużaw fil -sala dining, naturalment, huwa maħsub 663 00:34:42,679 --> 00:34:45,710 biex iwettqu affarijiet-trejs jew il-frejms - 664 00:34:45,710 --> 00:34:49,469 kif aħna ser sejħa minnhom - fi tal-kompjuter memorja huwa użat biex iżomm 665 00:34:49,469 --> 00:34:51,610 varjabbli u valuri. 666 00:34:51,610 --> 00:34:53,929 >> Allura dak li verament tmur fuq taħt il-barnuża? 667 00:34:53,929 --> 00:34:55,820 Well, let me flip fuq għall-iskrin hawn. 668 00:34:55,820 --> 00:34:58,370 U ejja tiffoka biss fuq il- parti t'isfel għal mument. 669 00:34:58,370 --> 00:35:02,770 Jekk dan huwa l-porzjon qiegħ tal tiegħi memorja tal-kompjuter jirriżulta meta I 670 00:35:02,770 --> 00:35:05,350 sejħa tal-funzjoni prinċipali - li jiġri, franchement, 671 00:35:05,350 --> 00:35:06,950 awtomatikament għalija - 672 00:35:06,950 --> 00:35:10,510 I nikseb blokki ta 'memorja fil- qiegħ ta 'RAM tiegħi biex ngħidu hekk. 673 00:35:10,510 --> 00:35:13,390 U dan huwa fejn l-prinċipali varjazzjonijiet lokali go. 674 00:35:13,390 --> 00:35:16,770 Huwa fejn argc u ARGV forsi imorru, u kwalunkwe varjabbli I 675 00:35:16,770 --> 00:35:18,170 tiddikjara ġewwa ta 'prinċipali. 676 00:35:18,170 --> 00:35:20,260 Huma jispiċċaw fil-qiegħ ta 'RAM kompjuter tiegħi. 677 00:35:20,260 --> 00:35:25,040 >> Issa ejja ngħidu li s-sejħiet ewlenin ta 'funzjoni bħal tpartit, ma bhalu aħħar ġimgħa? 678 00:35:25,040 --> 00:35:30,620 Well, aħna essenzjalment tpoġġi trej ġdid, qafas ġdid, fuq blokki tiegħi ta 'memorja. 679 00:35:30,620 --> 00:35:34,160 U jien ser tiddeskrivi dan bħala jappartjenu għall-funzjoni tpartit. 680 00:35:34,160 --> 00:35:35,770 >> Issa x'hemm ġewwa tal swap? 681 00:35:35,770 --> 00:35:39,240 Ukoll, ibbażata fuq programm ġimgħa li għaddiet u l-waħda aħna biss raw silta minn, 682 00:35:39,240 --> 00:35:46,590 ġewwa tal-qafas tal tpartit, jew fuq l-swap trej, huma dak varjabbli? 683 00:35:46,590 --> 00:35:47,970 Well, au b. 684 00:35:47,970 --> 00:35:51,850 Għaliex dawk kienu l-argumenti lokali tiegħu, flimkien ma 'terz, PAT. 685 00:35:51,850 --> 00:35:54,470 Allura verament, I jista 'jiġbed dan ftit aktar nadif. 686 00:35:54,470 --> 00:35:56,680 Let me imorru quddiem u jneħħu t-tikketta. 687 00:35:56,680 --> 00:35:58,520 U let me jsostnu li inti taf liema? 688 00:35:58,520 --> 00:36:00,560 >> a huwa probabbilment se jispiċċaw here. 689 00:36:00,560 --> 00:36:02,160 B hija ser jispiċċaw here. 690 00:36:02,160 --> 00:36:03,810 U TMP huwa ser jispiċċaw here. 691 00:36:03,810 --> 00:36:05,160 Issa, l-ordni jista ' tkun ftit differenti. 692 00:36:05,160 --> 00:36:06,840 Iżda kunċettwalment dan huwa l-idea. 693 00:36:06,840 --> 00:36:11,490 >> U biss kollettivament, dan huwa dak aħna ser sejħa frame tpartit ta, jew 694 00:36:11,490 --> 00:36:12,136 trej dining sala-. 695 00:36:12,136 --> 00:36:13,150 U l-istess jittrattaw prinċipali. 696 00:36:13,150 --> 00:36:14,040 Imma jien mhux se tiġbed dik. 697 00:36:14,040 --> 00:36:17,810 Iżda li meta argc u ARGV u kull ta 'varjabbli lokali tiegħu bħal xuy 698 00:36:17,810 --> 00:36:18,940 jista 'jkun ukoll. 699 00:36:18,940 --> 00:36:22,170 >> Allura issa jqisu x'inhu verament jiġri meta inti sejħa swap. 700 00:36:22,170 --> 00:36:26,370 Meta inti sejħa tpartit, eżekuzzjoni kodiċi bħal dan, int tgħaddi fi, fil- 701 00:36:26,370 --> 00:36:30,670 verżjoni Buggy, aub bħala kopji ta 'xuy. 702 00:36:30,670 --> 00:36:34,300 Mela jekk jien issa tiġbed fuq l-iskrin - 703 00:36:34,300 --> 00:36:36,700 ltqajna biex tikseb aħjar fil dan - 704 00:36:36,700 --> 00:36:40,850 hekk l-istorja I kien javżak li myself Kien f'dan il-verżjoni Buggy, meta aħna 705 00:36:40,850 --> 00:36:46,130 sejħa tpartit tgħaddi fis litteralment u b bħala numri sħaħ, dak li verament jiġri? 706 00:36:46,130 --> 00:36:48,250 >> Ukoll, dak li verament jiġri huwa dan. 707 00:36:48,250 --> 00:36:52,850 Let me imorru quddiem u jneħħu biss biex tnaddaf xi spazju here. 708 00:36:52,850 --> 00:36:54,720 Allura dan huwa memorja tal-kompjuter tiegħi. 709 00:36:54,720 --> 00:36:57,510 >> Mela jekk jien, per eżempju - 710 00:36:57,510 --> 00:36:58,910 attwalment ejja tagħmel dan il-mod - 711 00:36:58,910 --> 00:37:02,690 jekk I jsostnu li din hija x-ħażna il-valur 1 bħad aħħar ġimgħa. 712 00:37:02,690 --> 00:37:05,930 U dan huwa y, il-ħażna tal-valur 2 bħad aħħar ġimgħa. 713 00:37:05,930 --> 00:37:11,370 U dan huwa prinċipali, meta I sejħa tpartit, b'hekk myself aċċess għal u 714 00:37:11,370 --> 00:37:15,150 b u TMP, jien ser jsostnu li dan huwa u dan huwa 1. 715 00:37:15,150 --> 00:37:16,080 >> Dan huwa b. 716 00:37:16,080 --> 00:37:17,010 Dan huwa 2. 717 00:37:17,010 --> 00:37:18,370 Din tissejjaħ TMP. 718 00:37:18,370 --> 00:37:23,360 >> U inizjalment, hija għandha xi valur żibel sal I attwalment jaħżnu ġewwa fih, 719 00:37:23,360 --> 00:37:24,450 li huwa 1. 720 00:37:24,450 --> 00:37:28,320 Imbagħad I jimxi 'l quddiem u l-bidla a li jkun dak li? 721 00:37:28,320 --> 00:37:29,720 Valur B. 722 00:37:29,720 --> 00:37:31,980 >> U hekk issa għandi tnejn hawn. 723 00:37:31,980 --> 00:37:34,050 U allura għidna b gets TMP. 724 00:37:34,050 --> 00:37:37,670 Għal darb'oħra, biss bħala tiċċekkja sanità, it-tielet linja tal-kodiċi hawn hija sempliċement dan 725 00:37:37,670 --> 00:37:39,440 waħda, b gets TMP. 726 00:37:39,440 --> 00:37:41,730 >> U għalhekk fl-aħħarnett, x'għandi nagħmel? 727 00:37:41,730 --> 00:37:46,800 I jimxi 'l quddiem u l-bidla b li jkun x'ikun il-valur tal-TMP huwa, li huwa 1. 728 00:37:46,800 --> 00:37:48,390 I ma tmissx darb'oħra TMP. 729 00:37:48,390 --> 00:37:54,100 >> Imma issa, il-problema hija hekk kif swap prospetti, għaliex mhuwiex għoti 730 00:37:54,100 --> 00:37:57,540 lura xi valur, hemm ebda ritorn dikjarazzjoni b'mod espliċitu fiha. 731 00:37:57,540 --> 00:37:59,080 X'qed verament jiġri? 732 00:37:59,080 --> 00:38:03,480 Ukoll, essenzjalment dan kollu memorja - 733 00:38:03,480 --> 00:38:07,410 OK, apparentement l-Eraser jħobb finger wieħed biss kull darba - 734 00:38:07,410 --> 00:38:08,180 kemm xejn jispartixxi. 735 00:38:08,180 --> 00:38:10,070 >> Issa fir-realtà mhuwiex jmorru kullimkien. 736 00:38:10,070 --> 00:38:11,810 Iżda int tista 'taħseb issa bħala trade marks in kwistjoni. 737 00:38:11,810 --> 00:38:14,040 Għaliex dan huwa m'għadux attwalment użati. 738 00:38:14,040 --> 00:38:17,470 U ma jsir xejn ma 'dawk il-valuri. 739 00:38:17,470 --> 00:38:21,920 >> Allura fil-każ tal-verżjoni aħdar ta ' dan il-kodiċi, dak minflok qed 740 00:38:21,920 --> 00:38:24,640 għadda fis swap? 741 00:38:24,640 --> 00:38:25,770 Allura tindirizza. 742 00:38:25,770 --> 00:38:28,520 Allura l-indirizz tal xu l-indirizz ta 'y. 743 00:38:28,520 --> 00:38:35,790 Allura jekk aħna mill-ġdid tgħid din l-istorja wieħed aħħar ħin, u I attwalment tiġbed swap mill-ġdid, 744 00:38:35,790 --> 00:38:44,620 iżda ma pointers, peress li din hija, dan jkunu b, u dan TMP tkun, dak li huwa 745 00:38:44,620 --> 00:38:49,080 attwalment maħżuna f'dan aħdar verżjoni tal-kodiċi tiegħi fejn jien tgħaddi 746 00:38:49,080 --> 00:38:52,110 fl indirizzi? 747 00:38:52,110 --> 00:38:53,780 >> Huwa ser tkun pointer li x. 748 00:38:53,780 --> 00:38:54,890 So I jista 'jiġbed vleġġa. 749 00:38:54,890 --> 00:38:57,310 Imma ejja jużaw l-istess arbitrarja Eżempju bħal qabel. 750 00:38:57,310 --> 00:39:01,220 Ejja ngħidu li dan huwa xi ħaġa bħal Ox123. 751 00:39:01,220 --> 00:39:04,970 U dan se tkun Ox127 minħabba huwa l-erba 'bytes bogħod għax huwa ta' 752 00:39:04,970 --> 00:39:07,370 int, hekk Ox127. 753 00:39:07,370 --> 00:39:09,080 >> U għal darb'oħra, jien tieħu xi libertajiet man-numri. 754 00:39:09,080 --> 00:39:11,430 Huma qed ħafna iżgħar milli kieku fil-fatt tkun u f'ordni differenti. 755 00:39:11,430 --> 00:39:14,350 Imma li kif l-istampa issa hija differenti. 756 00:39:14,350 --> 00:39:19,060 >> Imma meta I jużaw dan il-kodiċi aħdar u jien TMP int jiksbu * a. 757 00:39:19,060 --> 00:39:25,010 * Mezz biex tagħmel li ġej, jieħdu l- jindirizzaw li fil au mur għaliha, 758 00:39:25,010 --> 00:39:26,190 li huwa 1. 759 00:39:26,190 --> 00:39:28,480 U dan huwa dak I mbagħad titqiegħed fl TMP. 760 00:39:28,480 --> 00:39:32,480 Sadanittant, fil-linja li jmiss tal-kodiċi hawn, * a gets b, xi jfisser? 761 00:39:32,480 --> 00:39:36,910 >> Well, * a, hekk mur hawn gets * b, li jfisser jmorru hemm. 762 00:39:36,910 --> 00:39:39,310 U dan ifisser tpoġġi l-valur li hemm. 763 00:39:39,310 --> 00:39:43,670 Fl-aħħarnett, l-aħħar linja tal-kodiċi sempliċement qalet * b gets TMP. 764 00:39:43,670 --> 00:39:48,900 >> Allura b jgħid jmorru hemm u jissostitwixxu ma ' TMP li, f'dan il-każ, huwa għaddej 765 00:39:48,900 --> 00:39:51,520 li tkun, għal darb'oħra, 1. 766 00:39:51,520 --> 00:39:54,920 U dan huwa għaliex l-verżjoni aħdar ta ' xogħlijiet kodiċi tagħna, billi l-aħmar 767 00:39:54,920 --> 00:39:56,010 verżjoni qatt ma għamlu. 768 00:39:56,010 --> 00:39:59,020 Huwa kollha biss jeħodna dwar kif il- memorja huwa ġestit u fejn huwa 769 00:39:59,020 --> 00:40:02,580 fil-fatt imqiegħed tiegħek RAM kompjuter. 770 00:40:02,580 --> 00:40:07,270 U għal issa, li waħda mill-affarijiet li l-munzell ikun qed jintuża għall. 771 00:40:07,270 --> 00:40:09,225 >> Mistoqsijiet dwar il-format? 772 00:40:09,225 --> 00:40:10,380 Fuq pointers? 773 00:40:10,380 --> 00:40:11,630 Jew fuq tpartit? 774 00:40:11,630 --> 00:40:13,740 775 00:40:13,740 --> 00:40:17,043 >> Kull dritt, hekk malloc, recall, għamilt xi ħaġa bħal din. 776 00:40:17,043 --> 00:40:18,260 Dan kien eżempju sempliċi super. 777 00:40:18,260 --> 00:40:20,550 U dan kien il-wieħed li Binky introdotti magħna biex, għalkemm pjuttost 778 00:40:20,550 --> 00:40:21,870 malajr, fl-aħħar tal-klassi. 779 00:40:21,870 --> 00:40:24,480 Dammit, hemm aħna go darb'oħra. 780 00:40:24,480 --> 00:40:28,780 >> Allura wieħed jiftakar li din kienet l-eżempju li Binky introdotti magħna biex, għalkemm 781 00:40:28,780 --> 00:40:30,360 kemmxejn malajr fl-aħħar tal-klassi. 782 00:40:30,360 --> 00:40:33,640 U hawn aħna użati malloc verament għat-tieni darba. 783 00:40:33,640 --> 00:40:37,330 Minħabba li l-ewwel darba aħna użati biex joħolqu RAM biżżejjed, jallokaw biżżejjed RAM 784 00:40:37,330 --> 00:40:38,340 taħżen string. 785 00:40:38,340 --> 00:40:40,250 >> Din id-darba Binky jinżammu sempliċi. 786 00:40:40,250 --> 00:40:42,465 Allura huwa li taħżen biss l int, apparentement. 787 00:40:42,465 --> 00:40:43,510 U li totalment multa. 788 00:40:43,510 --> 00:40:46,560 Huwa ftit stramb, franchement, li użu malloc talloka int wieħed. 789 00:40:46,560 --> 00:40:50,650 Imma l-punt ta 'claymation Nick kienet verament ftit tgħid l-istorja ta 'dak li 790 00:40:50,650 --> 00:40:53,830 jiġri jew ma jiġri meta inti maltrattati memorja. 791 00:40:53,830 --> 00:40:56,520 >> Allura f'dan il-każ, dan il-programm ma ftit affarijiet. 792 00:40:56,520 --> 00:41:01,580 Fl-ewwel każ hawnhekk, tiddikjara a pointer msejħa x għal int. 793 00:41:01,580 --> 00:41:04,480 Imbagħad tiddikjara pointer imsejħa y għal int. 794 00:41:04,480 --> 00:41:06,150 Imbagħad imħażen x, liema? 795 00:41:06,150 --> 00:41:07,110 Xi ħadd ieħor issa. 796 00:41:07,110 --> 00:41:09,685 Liema gets maħżuna x skond it-tielet linja ta 'dan il-programm? 797 00:41:09,685 --> 00:41:12,380 >> UDJENZA: [inaudible]. 798 00:41:12,380 --> 00:41:14,130 >> SPEAKER 1: Well, pjuttost mhux bytes, kull say. 799 00:41:14,130 --> 00:41:16,760 Ikunu aktar preċiżi issa. 800 00:41:16,760 --> 00:41:18,325 Liema gets maħżuna x? 801 00:41:18,325 --> 00:41:21,000 802 00:41:21,000 --> 00:41:22,060 An indirizz, I think I smajt dan. 803 00:41:22,060 --> 00:41:23,570 >> Allura dak li ma malloc lura? 804 00:41:23,570 --> 00:41:26,030 malloc behaviorally jalloka blokki ta 'memorja. 805 00:41:26,030 --> 00:41:27,850 Imma kif ma jagħtik aċċess għal dan? 806 00:41:27,850 --> 00:41:29,460 Dan jirritorna liema? 807 00:41:29,460 --> 00:41:32,000 L-indirizz ta 'l-ewwel byte fil-blokki ta 'memorja. 808 00:41:32,000 --> 00:41:33,020 >> Issa, dan huwa sempliċi super. 809 00:41:33,020 --> 00:41:35,380 Huwa wieħed biss byte, li tfisser il- tindirizza aħna jkollna lura hija l- 810 00:41:35,380 --> 00:41:37,300 indirizz tal-ħaġa sħiħa. 811 00:41:37,300 --> 00:41:42,070 Allura maħżuna x allura, huwa l-indirizz ta 'dik blokki ta' memorja. 812 00:41:42,070 --> 00:41:43,400 Sadanittant, dak li jiġri li jmiss? 813 00:41:43,400 --> 00:41:45,890 Allura fil-fatt, ejja imorru quddiem u tiġbed fast out reali. 814 00:41:45,890 --> 00:41:52,490 >> Allura jekk aħna jmorru fuq l-iskrin hawn u we play dan out int * x u int * y 815 00:41:52,490 --> 00:41:53,740 huwa se jagħmel dak għalija? 816 00:41:53,740 --> 00:41:58,280 I jsostnu li huwa biss se jagħmlu xi ħaġa bħal din u sejħa hija x, u 817 00:41:58,280 --> 00:42:00,010 dan u sejħa hija y. 818 00:42:00,010 --> 00:42:03,110 Sadanittant, it-tielet linja ta 'kodiċi ser jalloka l-daqs ta 'int, 819 00:42:03,110 --> 00:42:06,160 li jiġri li jkun - sorry jekk I qal wieħed qabel I fisser int wieħed - 820 00:42:06,160 --> 00:42:08,280 erba bytes fuq kompjuter tipiku. 821 00:42:08,280 --> 00:42:09,720 Mill-inqas ma 'l-appliance CS50. 822 00:42:09,720 --> 00:42:11,490 >> Allura dan se talloka dan, li jaf? 823 00:42:11,490 --> 00:42:12,800 X'imkien hawn. 824 00:42:12,800 --> 00:42:15,780 U dan huwa maħżun f'xi indirizz OX, li jaf? 825 00:42:15,780 --> 00:42:18,330 Imma dak li għaddej biex tikseb lura huwa dak l-indirizz. 826 00:42:18,330 --> 00:42:22,270 Iżda aħna ser tiġbed pictorially biss bħala vleġġa bħal dik. 827 00:42:22,270 --> 00:42:25,430 >> Issa fil-linja li jmiss * x gets 42. 828 00:42:25,430 --> 00:42:29,400 X'tagħmel * x jfissirx f'termini laymans? 829 00:42:29,400 --> 00:42:30,040 Just jmorru hemm. 830 00:42:30,040 --> 00:42:30,960 Tmur f'dak indirizz. 831 00:42:30,960 --> 00:42:35,900 Jew fi kliem ieħor, isegwu l- vleġġa u mqiegħda 42 hemmhekk. 832 00:42:35,900 --> 00:42:38,140 Iżda mbagħad xi ħaġa ħażina ġara li Binky, id-dritt? 833 00:42:38,140 --> 00:42:43,950 >> Ifakkar li linja ħamsa hawn, * y gets 13, fil-fatt numru unlucky, 834 00:42:43,950 --> 00:42:44,760 ma dak għalina? 835 00:42:44,760 --> 00:42:47,320 Ukoll, * mezzi y jmorru hemm. 836 00:42:47,320 --> 00:42:50,460 Ukoll, dan ma ngħatatx valur għadhom, id-dritt? 837 00:42:50,460 --> 00:42:54,090 Il-kodiċi ma jkollhom y qed initialized għal xejn. 838 00:42:54,090 --> 00:42:56,120 Kellna x qed initialized għal indirizz. 839 00:42:56,120 --> 00:42:57,640 Iżda y ġiet iddikjarata top up. 840 00:42:57,640 --> 00:43:00,250 Iżda mbagħad virgola b'punt, ebda valur kien effettivament tqiegħed fiha. 841 00:43:00,250 --> 00:43:02,330 Allura huwa ġust li sejħa dan valur żibel. 842 00:43:02,330 --> 00:43:03,430 Min jaf x'hemm hemmhekk? 843 00:43:03,430 --> 00:43:07,160 Huwa l-fdalijiet ta bits li kienu użati minn xi linja ta 'qabel tal-kodiċi fil- 844 00:43:07,160 --> 00:43:08,300 programm tiegħi. 845 00:43:08,300 --> 00:43:13,250 >> Mela jekk jien ngħid jmorru hemm, dan huwa simili, Għandi l-ebda idea fejn dan vleġġa 846 00:43:13,250 --> 00:43:14,490 ser jispiċċaw. 847 00:43:14,490 --> 00:43:17,720 U li meta inti tipikament tikseb tort segmentazzjoni. 848 00:43:17,720 --> 00:43:22,430 Jekk inti aċċidentalment dereference, biex jitkellmu, jew mur l-indirizz li mhux 849 00:43:22,430 --> 00:43:25,400 attwalment indirizz leġittimu, affarijiet ħżiena jiġri. 850 00:43:25,400 --> 00:43:27,550 >> U dan huwa eżattament dak li ġara biex jaħsbu Binky. 851 00:43:27,550 --> 00:43:31,060 Allura ifakkar li l-istorja li Nick kien javżak hawn kien l-istess idea bħala dak 852 00:43:31,060 --> 00:43:34,050 Stajt tinġibed l-illużjoni ta ' ġibs fuq il-bord hemmhekk. 853 00:43:34,050 --> 00:43:35,960 X u Y huma ddikjarati. 854 00:43:35,960 --> 00:43:39,690 >> Imbagħad aħna allokat id-daqs ta ' l int u maħżuna fil x. 855 00:43:39,690 --> 00:43:42,130 Imbagħad il-linja li jmiss għamilna * x. 856 00:43:42,130 --> 00:43:46,070 Dan kien bastun maġiku Nick ta dereferencing. 857 00:43:46,070 --> 00:43:49,780 Li jpoġġu 42 fil-memorja enfasizzat mill x. 858 00:43:49,780 --> 00:43:51,600 >> Iżda din hija fejn l-affarijiet marru horribly ħażin. 859 00:43:51,600 --> 00:43:51,820 Dritt? 860 00:43:51,820 --> 00:43:53,550 Aħna ppruvaw y dereference. 861 00:43:53,550 --> 00:43:55,620 Iżda y kellhom xi valur fittizji, right? 862 00:43:55,620 --> 00:43:57,720 >> Li arrow fil-qiegħ tax-xellug kantuniera, mhuwiex 863 00:43:57,720 --> 00:43:58,950 attwalment tipponta lejn xejn. 864 00:43:58,950 --> 00:44:01,520 Huwa tip ta 'tagħmel dak I għamlet hawn fuq il-bord. 865 00:44:01,520 --> 00:44:05,900 Sabiex l-affarijiet ħżiena jiġri, segmentazzjoni tort, jew Binky tort, f'dan il-każ. 866 00:44:05,900 --> 00:44:10,800 >> Imma jekk aħna mbagħad jiffissaw dan billi tagħmel x gets y Kif jinbidel istorja? 867 00:44:10,800 --> 00:44:15,760 Ukoll, jekk I do x gets y, li l- effettivament l-istess kif qal 868 00:44:15,760 --> 00:44:19,235 tkun xi tkun din hija, OX-ħaġa se tkun l-istess hawn, 869 00:44:19,235 --> 00:44:20,080 Ox-ħaġa. 870 00:44:20,080 --> 00:44:22,970 Jew pictorially aħna ser tiġbed vleġġa. 871 00:44:22,970 --> 00:44:25,530 >> Allura hawn fuq il-bord ma 'Binky, mal-linja li jmiss ta ' 872 00:44:25,530 --> 00:44:28,350 kodiċi, * y ifisser jmorru hemm. 873 00:44:28,350 --> 00:44:29,400 Fejn hemm? 874 00:44:29,400 --> 00:44:30,820 Dan ifisser hawn fuq. 875 00:44:30,820 --> 00:44:36,050 >> U meta aħna aġġornament li biex jkun ta '13 hija biss jinvolvi għaddejjin u 876 00:44:36,050 --> 00:44:39,470 miktub 13 hawn issa. 877 00:44:39,470 --> 00:44:44,130 Allura forsi mhux kompletament sempliċi ewwel daqqa t'għajn. 878 00:44:44,130 --> 00:44:47,740 Iżda biex terġa u jużaw l-istess lingwaġġ li Binky kienet qed tuża hawn, hekk 879 00:44:47,740 --> 00:44:50,485 l-ewwel tnejn talloka l-pointers, X u Y, iżda mhux il-pointees. 880 00:44:50,485 --> 00:44:54,750 U pointees mhix terminu ġeneralment użat. 881 00:44:54,750 --> 00:44:56,120 Iżda pointer assolutament hu. 882 00:44:56,120 --> 00:44:59,200 Iżda huwa dak li qed osservat fil fin-nomenklatura Binky tal. 883 00:44:59,200 --> 00:45:01,660 >> Din il-linja li jmiss, naturalment, jalloka pointee int. 884 00:45:01,660 --> 00:45:04,840 Allura blokki ta 'memorja - kif I ġibdet fuq fuq in-naħa tal-lemin hemm - u sett 885 00:45:04,840 --> 00:45:06,470 x ugwali għall-punt lilha. 886 00:45:06,470 --> 00:45:11,350 Dan dereferences x biex jaħżnu 42 l-memorja li huwa tipponta lejn. 887 00:45:11,350 --> 00:45:13,380 U allura dan, naturalment, kienet ħaġa ħażina. 888 00:45:13,380 --> 00:45:15,600 Minħabba y ma kienx tipponta fil xejn s'issa. 889 00:45:15,600 --> 00:45:16,530 Dan jiffissa dan. 890 00:45:16,530 --> 00:45:18,240 Allura dan għadu programm buggy. 891 00:45:18,240 --> 00:45:21,580 Sempliċiment għax aħna qed blowing permezz tal- kodiċi linja b'linja u qal, oh ukoll, 892 00:45:21,580 --> 00:45:22,690 ħalliha crash hemmhekk. 893 00:45:22,690 --> 00:45:23,420 Li l-ħaġa ħażina. 894 00:45:23,420 --> 00:45:26,790 Odds huma l-programm jinsab biss ser abort kollox f'dak linja. 895 00:45:26,790 --> 00:45:30,550 Imma jekk ġejt biex tneħħi l-ġġarraf linja u tibdilha ma 'l-aħħar tnejn 896 00:45:30,550 --> 00:45:32,470 linji hemm inti tassenja - 897 00:45:32,470 --> 00:45:35,310 użu assenjazzjoni pointer - y għall-punt li x bħala punt t. 898 00:45:35,310 --> 00:45:39,280 U allura inti dereference y b'mod sikuri ferm. 899 00:45:39,280 --> 00:45:41,520 >> Għalhekk, fejn ma dan il-leave us? 900 00:45:41,520 --> 00:45:45,350 Ukoll, jirriżulta li taħt il-barnuża fil-librerija CS50, pointers huma 901 00:45:45,350 --> 00:45:46,320 użat kollu. 902 00:45:46,320 --> 00:45:48,910 U aħna ser attwalment tibda titqaxxar lura li saff qabel twil. 903 00:45:48,910 --> 00:45:51,740 Iżda jirriżulta wisq, espressjoni li xi wħud minnkom jista 'jkun familjari ma', 904 00:45:51,740 --> 00:45:54,580 partikolarment dawk aktar komda, huwa attwalment dak ta 'popolari ħafna 905 00:45:54,580 --> 00:45:56,390 websajt, jew overflow munzell, dawn il-jiem. 906 00:45:56,390 --> 00:45:58,720 >> Iżda dan attwalment għandha ħafna tifsira tekniku. 907 00:45:58,720 --> 00:46:00,160 Aħna issa jkunu jafu x'inhi munzell hu. 908 00:46:00,160 --> 00:46:02,550 Huwa bħal munzell ta 'dixxijiet ġewwa ta 'sala dining. 909 00:46:02,550 --> 00:46:05,140 >> Jew ġewwa tal-kompjuter tiegħek memorja tiegħu dawk frames 910 00:46:05,140 --> 00:46:06,900 li huma użati mill-funzjonijiet. 911 00:46:06,900 --> 00:46:10,760 Ukoll, jirriżulta li minħabba li implimentazzjoni sempliċi ħafna ta ' 912 00:46:10,760 --> 00:46:14,970 memorja u l-kwadri fuq l-hekk imsejħa munzell, inti tista 'attwalment jieħdu l-kontroll 913 00:46:14,970 --> 00:46:17,050 ta 'sistema tal-kompjuter pjuttost faċilment. 914 00:46:17,050 --> 00:46:22,180 Tista Hack fis-sistema jekk in-nies bħalna ma miktub kodiċi tagħna 915 00:46:22,180 --> 00:46:23,300 partikolarment tajjeb. 916 00:46:23,300 --> 00:46:26,670 >> Jekk in-nies bħalna jużaw biċċiet tal-memorja jew l-użu arrays - 917 00:46:26,670 --> 00:46:27,810 saħansitra aktar komunement - 918 00:46:27,810 --> 00:46:31,800 imma xi kultant tinsa li jivverifika l- konfini ta 'firxa tagħna kif inti tista' 919 00:46:31,800 --> 00:46:38,470 jkollhom yourself kultant, u tennew mod wisq passat l-aħħar firxa. 920 00:46:38,470 --> 00:46:40,520 Fil-każ aħjar, program tiegħek tista 'biss crash. 921 00:46:40,520 --> 00:46:42,280 Tort Segmentazzjoni, tip ta 'embarrassing. 922 00:46:42,280 --> 00:46:45,480 Mhux kbira, iżda mhux neċessarjament ħaġa immensament ħażina. 923 00:46:45,480 --> 00:46:49,480 >> Imma jekk program tiegħek huwa attwalment fuq reali kompjuters utenti, jekk huwa taħdem 924 00:46:49,480 --> 00:46:53,070 fuq websajt li nies bl-addoċċ attwali fuq l-internet qed tolqot, kiri 925 00:46:53,070 --> 00:46:56,690 nies jinduċi affarijiet ħżiena fuq kodiċi tiegħek huwa ġeneralment mhux ħaġa tajba għaliex 926 00:46:56,690 --> 00:46:59,930 dan ifisser l-opportunità li jieħu kontroll tal-kompjuter. 927 00:46:59,930 --> 00:47:01,350 U dan se tfittex ftit cryptic. 928 00:47:01,350 --> 00:47:04,570 Imma ħsibt I d biża inti ma dan l-aħħar eżempju hawn. 929 00:47:04,570 --> 00:47:05,650 >> Hawn eżempju ta 'kodiċi. 930 00:47:05,650 --> 00:47:07,370 U hemm Wikipedia tajba artikolu li mixjiet permezz 931 00:47:07,370 --> 00:47:08,530 dan f'aktar dettal. 932 00:47:08,530 --> 00:47:13,890 Għandi prinċipali fuq is-sejħa tal-qiegħ foo, li jgħaddi fil ARGV ta '1. 933 00:47:13,890 --> 00:47:15,750 U dan huwa biss sabiex inti tista ' tmexxi l-programm u jgħaddu 934 00:47:15,750 --> 00:47:17,080 input arbitrarja. 935 00:47:17,080 --> 00:47:20,180 >> U allura foo huwa ddikjarat up top bħala taċċetta string, jew aktar 936 00:47:20,180 --> 00:47:21,700 preċiżament, char *. 937 00:47:21,700 --> 00:47:23,860 Imbagħad jiddikjara firxa ta 'Chars. 938 00:47:23,860 --> 00:47:27,130 Sejħa hija ta 'buffer, b'mod aktar ġenerali, ta 'daqs 12. 939 00:47:27,130 --> 00:47:30,900 Allura 12 Chars jistgħu joqogħdu ġewwa ta 'dak array imsejħa c. 940 00:47:30,900 --> 00:47:33,510 >> U allura juża din il-funzjoni l-ġdida, li huwa ġdid imma mhux diffiċli biex 941 00:47:33,510 --> 00:47:34,930 jifhmu, kopja memorja. 942 00:47:34,930 --> 00:47:39,290 Hija kopji l-memorja minn bar, li kienet il-varjabbli n passat, ikun x'ikun l- 943 00:47:39,290 --> 00:47:42,080 utent ittajpjat fil ARGV 1 fis c. 944 00:47:42,080 --> 00:47:43,090 Kemm bytes ħafna? 945 00:47:43,090 --> 00:47:44,260 It-tul sensiela ta 'bar. 946 00:47:44,260 --> 00:47:48,380 >> Allura fi kliem ieħor, jekk it-tipi l-utent fil- h-e-l-l-o jidħlu, it-tul string 947 00:47:48,380 --> 00:47:49,260 ta bonjour huwa ħamsa. 948 00:47:49,260 --> 00:47:52,790 Allura ħamsa minn dawk bytes hija se tikseb ikkopjata fil-firxa imsejħa c, li 949 00:47:52,790 --> 00:47:54,110 hija ta 'daqs 12. 950 00:47:54,110 --> 00:47:58,710 Imma dak it-tipi l-utent fil-ħafna itwal kelma li l-13-karattri jew 14 951 00:47:58,710 --> 00:48:01,250 karattri jew 100 karattri jew aktar? 952 00:48:01,250 --> 00:48:02,660 >> Fejn huma se jmorru? 953 00:48:02,660 --> 00:48:06,090 Ukoll, dak il-qafas, li trej fil-ċmieni dining sala-, 954 00:48:06,090 --> 00:48:06,930 dawn qed tmur biex jmorru hemm. 955 00:48:06,930 --> 00:48:10,080 U huwa biss ser tibda kitba fuq oħra Jittieħed oħra li l-diġà 956 00:48:10,080 --> 00:48:12,880 fuq dik munzell, overflowing l-munzell, biex ngħidu hekk. 957 00:48:12,880 --> 00:48:14,780 >> Allura pictorially, think ta 'dan il-mod. 958 00:48:14,780 --> 00:48:17,970 Dan huwa biss verżjoni mlewna ta ' l-istampa konna qed jieħu. 959 00:48:17,970 --> 00:48:20,060 Fil-qiegħ, ejja ngħidu, hija prinċipali. 960 00:48:20,060 --> 00:48:24,690 U fuq il-quċċata, dak li qed tara issa huwa l-qafas, kulur kkodifikati issa, għal 961 00:48:24,690 --> 00:48:26,090 funzjoni msejħa foo. 962 00:48:26,090 --> 00:48:30,170 Imma x'hemm interessanti hawn dwar foo hija li hawnhekk huwa frejm tagħha. 963 00:48:30,170 --> 00:48:32,860 Allura huwa mfassal bħad I għamlet iżda bil-blu dawl. 964 00:48:32,860 --> 00:48:35,220 U issa dan huwa fejn c bracket 0 tmur. 965 00:48:35,220 --> 00:48:37,410 U dan huwa fejn bracket c 11 huwa ser jispiċċaw. 966 00:48:37,410 --> 00:48:39,670 >> Fi kliem ieħor, dan jiġri jkun irrappreżentat bħala kwadru. 967 00:48:39,670 --> 00:48:42,320 Imma jekk inti biss iżommu plopping bytes isfel - jew jaħraq - dawn qed tmur biex tintemm 968 00:48:42,320 --> 00:48:46,070 up fil-post 0-triq kollha sa sa 11, għaliex dan huwa 0 indiċjati. 969 00:48:46,070 --> 00:48:49,170 >> Iżda fejn huwa l-karattru 13 ser jispiċċaw? 970 00:48:49,170 --> 00:48:50,310 Fejn hi l-14 ta? 971 00:48:50,310 --> 00:48:52,430 Fejn hi l-karattru 50 ser jispiċċaw? 972 00:48:52,430 --> 00:48:54,070 >> Huwa ser jibqgħu għaddejjin isfel. 973 00:48:54,070 --> 00:48:57,350 Għaliex anki jekk konna ġibdu l- istampa bil-munzell jikbru, il- 974 00:48:57,350 --> 00:48:59,920 indirizzi, jirriżulta, imorru minn indirizzi żgħar, żgħar 975 00:48:59,920 --> 00:49:01,830 pointers, għal indirizzi kbar. 976 00:49:01,830 --> 00:49:03,540 Allura hija biss iżomm għaddej up u aġġornata. 977 00:49:03,540 --> 00:49:05,660 >> Mela jekk tipi l-utent fil- hello, li l-kbir. 978 00:49:05,660 --> 00:49:08,650 Nru bug, l-ebda problema, sikur kulħadd. 979 00:49:08,650 --> 00:49:11,940 Iżda jekk it-tipi l-utent fil dak li aħna ser sejħa kodiċi kontradittorju, irrappreżentata 980 00:49:11,940 --> 00:49:16,040 ġeneriku bħala, attakk, attakk, attakk, attakk, dak li jista 'jiġri? 981 00:49:16,040 --> 00:49:19,760 >> Ukoll, jekk kollha ta 'l-input li l-utent ttajpjata mhix biss ftit friendly 982 00:49:19,760 --> 00:49:21,540 jew sekwenza ta 'karattri offensiv. 983 00:49:21,540 --> 00:49:24,050 Huwa fil-fatt sekwenza ta 'karattri li jekk inti miġbura dan, 984 00:49:24,050 --> 00:49:26,050 fil-fatt hu kodiċi. 985 00:49:26,050 --> 00:49:29,570 Forsi huwa kodiċi li tħassar l- fajls fuq hard drive tiegħek jew jibgħat spam 986 00:49:29,570 --> 00:49:30,810 jew xi ħaġa bħal dik. 987 00:49:30,810 --> 00:49:35,110 Avviż li x'hemm prinċipali hawnhekk hija li jekk il-Guy ħażina ltqajna xortik tajba biżżejjed biex 988 00:49:35,110 --> 00:49:37,830 jissostitwixxu l-blokki aħmar tal-memorja - 989 00:49:37,830 --> 00:49:41,080 li jien ma tibbaża fuq stampa tiegħi iżda din l-istampa Wikipedija għandha hawnhekk - 990 00:49:41,080 --> 00:49:42,890 hekk imsejħa indirizz ta 'ritorn tagħha. 991 00:49:42,890 --> 00:49:47,470 >> Meta jerġa 'jibda l-ikel, meta tpartit prospetti, kif ma 'l-kompjuter jaf li jmorru minn 992 00:49:47,470 --> 00:49:49,790 up hawn biex stabbiliti hawn? 993 00:49:49,790 --> 00:49:52,920 Jew fil-segment tech up hawn fuq, kif ma taf li jmorru mit-tpartit 994 00:49:52,920 --> 00:49:54,870 kodiċi - il-0 u l-1 li jikkomponu swap - 995 00:49:54,870 --> 00:49:56,020 lura għall prinċipali? 996 00:49:56,020 --> 00:50:00,450 Hemm hekk imsejħa indirizz ta 'ritorn maħżuna fl-istess qafas munzell, fuq 997 00:50:00,450 --> 00:50:02,140 l-istess trej kafetterija. 998 00:50:02,140 --> 00:50:06,080 >> Allura jekk il-Guy ħażina hija għaqlija biżżejjed biex tpoġġi kodiċi attakk, attakk kodiċi, attakk 999 00:50:06,080 --> 00:50:07,960 kodiċi, u jiksbu xortik tajba biżżejjed - 1000 00:50:07,960 --> 00:50:11,630 spiss permezz ta 'prova u żball - li jissostitwixxu dak l-indirizz tar-ritorn aħmar, 1001 00:50:11,630 --> 00:50:14,360 bl-indirizz u avviż il-quċċata ħafna. 1002 00:50:14,360 --> 00:50:16,830 Avviż 0835C080. 1003 00:50:16,830 --> 00:50:20,650 Huwa bil-miktub lura up fuq għall- raġunijiet aħna ser tirrevedi forsi. 1004 00:50:20,650 --> 00:50:22,050 Dan huwa dak in-numru. 1005 00:50:22,050 --> 00:50:25,790 >> Allura jekk il-Guy ħażina gets xortik tajba biżżejjed jew huwa intelliġenti biżżejjed biex jissostitwixxu l-aħmar 1006 00:50:25,790 --> 00:50:29,480 strixxa ta 'memorja bl-indirizz ta' kodiċi li hu jew hi għandu b'xi mod 1007 00:50:29,480 --> 00:50:34,980 injettat fis-kompjuter tiegħek, raden li kodiċi se jiġu rritornati lill 1008 00:50:34,980 --> 00:50:38,260 malli foo isir eżekuzzjoni? 1009 00:50:38,260 --> 00:50:39,440 >> Kodiċi l-Guy ħażina tal. 1010 00:50:39,440 --> 00:50:43,610 Allura dan il-kodiċi attakk, AAA, għal darb'oħra, jista jibgħat l-ispam, tista tħassar il-fajls kollha 1011 00:50:43,610 --> 00:50:44,500 fuq hard drive tiegħek. 1012 00:50:44,500 --> 00:50:48,740 Imma dan huwa dak verament overflow munzell huwa, jew eċċess buffer, jew 1013 00:50:48,740 --> 00:50:51,060 protezzjoni kontra attakk overflow. 1014 00:50:51,060 --> 00:50:54,400 >> U huwa oerhört, oerhört komuni din il-ġurnata ma 'programmi miktubin 1015 00:50:54,400 --> 00:50:58,220 C, C + +, u anki f'xi lingwi oħra. 1016 00:50:58,220 --> 00:51:02,275 Fuq din in-nota scary, aħna ser jispiċċa bil Joke. 1017 00:51:02,275 --> 00:51:03,230 >> [Daħk] 1018 00:51:03,230 --> 00:51:04,550 >> Ara inti nhar l-Erbgħa. 1019 00:51:04,550 --> 00:51:07,920 1020 00:51:07,920 --> 00:51:10,310 Fl-CS50 jmiss - 1021 00:51:10,310 --> 00:51:15,920 Hekk jien kollha barra ta 'lampi disk lum, iżda stenna, ħalib, nofs it-telefon bla xaħam 1022 00:51:15,920 --> 00:51:17,850 ktieb, il-meraq tal-larinġ li I xorbu illum. 1023 00:51:17,850 --> 00:51:20,370 1024 00:51:20,370 --> 00:51:22,780 USB cable, a wrench. 1025 00:51:22,780 --> 00:51:24,800 >> [Daqq tal-mużika]