1 00:00:00,000 --> 00:00:01,110 >> [MUSIC KUCHEZA] 2 00:00:01,110 --> 00:00:10,567 3 00:00:10,567 --> 00:00:11,650 DAVID J. Malan: All wa kulia. 4 00:00:11,650 --> 00:00:15,610 Hii ni CS50, na hii ni mwisho wa Wiki ya Nne. 5 00:00:15,610 --> 00:00:19,420 Na moja ya mada leo ni ile ya forensics digital, 6 00:00:19,420 --> 00:00:20,989 sanaa ya kurejesha habari. 7 00:00:20,989 --> 00:00:22,780 Na hakika, hata kama wewe ni katikati 8 00:00:22,780 --> 00:00:25,070 hivi sasa ya Amani katika Tatu na kuzuka, wiki ijayo, 9 00:00:25,070 --> 00:00:27,880 mkazo uwe kwenye just uwanja huu. 10 00:00:27,880 --> 00:00:30,686 >> Hivyo moja ya kazi coolest mimi milele alikuwa alikuwa nyuma katika shule ya kuhitimu, 11 00:00:30,686 --> 00:00:33,560 wakati nilikuwa kazi kwa ajili ya mitaa Middlesex County Wilaya ya Mwanasheria 12 00:00:33,560 --> 00:00:34,950 ofisi, kufanya forensics kazi. 13 00:00:34,950 --> 00:00:37,450 Hivyo kimsingi, Massachusetts Hali Polisi, juu ya tukio, 14 00:00:37,450 --> 00:00:40,100 wakati wa kufanya kazi juu ya kesi ingekuwa kuleta katika mambo kama anatoa ngumu 15 00:00:40,100 --> 00:00:42,185 na floppy disks na kadi ya kumbukumbu na kama. 16 00:00:42,185 --> 00:00:44,060 Na wangeweza mkono wao kwangu na mshauri wangu, 17 00:00:44,060 --> 00:00:48,070 na lengo letu lilikuwa kupata ushahidi, kama kulikuwa na yoyote, kwenye vyombo vya habari hizi. 18 00:00:48,070 --> 00:00:50,700 Kiza sasa, unaweza kuwa na kuonekana wa ulimwengu huu wa forensics 19 00:00:50,700 --> 00:00:53,000 katika vyombo vya habari, TV na sinema. 20 00:00:53,000 --> 00:00:55,730 Lakini kazi Mimi nilikuwa, na daresay dunia kwamba, 21 00:00:55,730 --> 00:00:57,550 ni si kabisa kama ungependa kuona. 22 00:00:57,550 --> 00:01:00,794 Hebu kuangalia nini ve pengine kuona. 23 00:01:00,794 --> 00:01:01,460 [VIDEO avspelning] 24 00:01:01,460 --> 00:01:02,930 -OK. 25 00:01:02,930 --> 00:01:05,380 Sasa, hebu kupata nzuri kuangalia wewe. 26 00:01:05,380 --> 00:01:06,850 >> [MUSIC KUCHEZA] 27 00:01:06,850 --> 00:01:12,260 28 00:01:12,260 --> 00:01:12,932 >> -Hold Yake. 29 00:01:12,932 --> 00:01:13,657 Kukimbia kwamba nyuma. 30 00:01:13,657 --> 00:01:14,733 >> -Wait Dakika. 31 00:01:14,733 --> 00:01:15,233 Kwenda kulia. 32 00:01:15,233 --> 00:01:16,371 33 00:01:16,371 --> 00:01:16,870 -Kuna. 34 00:01:16,870 --> 00:01:17,369 Freeze hiyo. 35 00:01:17,369 --> 00:01:17,930 -Kamili-Screen. 36 00:01:17,930 --> 00:01:18,376 >> -OK. 37 00:01:18,376 --> 00:01:18,875 Freeze hiyo. 38 00:01:18,875 --> 00:01:20,160 -Tighten Juu ya kwamba, je,? 39 00:01:20,160 --> 00:01:22,126 >> -Vector Katika juu ya kwamba guy na gurudumu nyuma. 40 00:01:22,126 --> 00:01:24,435 >> -Zoom Katika haki hapa kwenye doa hii. 41 00:01:24,435 --> 00:01:28,580 >> -Kwa Vifaa sahihi, picha inaweza wazi na makali. 42 00:01:28,580 --> 00:01:29,330 >> -Nini Hiyo? 43 00:01:29,330 --> 00:01:30,780 >> -Ni Ni mpango kukuza. 44 00:01:30,780 --> 00:01:32,170 >> -Je Wewe wazi kwamba up yoyote? 45 00:01:32,170 --> 00:01:33,070 >> -I Hawajui. 46 00:01:33,070 --> 00:01:34,150 Hebu kuongeza yake. 47 00:01:34,150 --> 00:01:35,440 >> -Enhance Sehemu A6. 48 00:01:35,440 --> 00:01:36,570 49 00:01:36,570 --> 00:01:38,562 Mimi kuimarishwa undani, and-- 50 00:01:38,562 --> 00:01:40,020 -I Nadhani kuna kutosha kuimarisha. 51 00:01:40,020 --> 00:01:40,976 Kutolewa kwa screen yangu. 52 00:01:40,976 --> 00:01:42,559 >> -I Kuimarishwa reflection katika macho yake. 53 00:01:42,559 --> 00:01:44,322 -Let Kukimbia hii kwa njia ya video kukuza. 54 00:01:44,322 --> 00:01:45,210 >> -Edgar, Unaweza kuongeza hii? 55 00:01:45,210 --> 00:01:45,710 >> -Hang Juu ya. 56 00:01:45,710 --> 00:01:47,570 57 00:01:47,570 --> 00:01:49,458 >> -I've Wamekuwa wakifanya kazi katika reflection huu. 58 00:01:49,458 --> 00:01:50,402 >> Reflection -Kuna ya mtu. 59 00:01:50,402 --> 00:01:50,902 >> -Reflection. 60 00:01:50,902 --> 00:01:52,870 -Kuna Ni reflection ya uso wa mtu. 61 00:01:52,870 --> 00:01:53,694 >> -The Reflection! 62 00:01:53,694 --> 00:01:54,610 -Kuna Ni reflection. 63 00:01:54,610 --> 00:01:55,880 -Zoom Katika juu ya kioo. 64 00:01:55,880 --> 00:01:57,860 Unaweza kuona reflection. 65 00:01:57,860 --> 00:01:59,630 >> -Je Wewe kuongeza picha kutoka hapa? 66 00:01:59,630 --> 00:02:00,377 67 00:02:00,377 --> 00:02:01,210 -Je Wewe kuongeza yake? 68 00:02:01,210 --> 00:02:02,190 -Je Wewe kuongeza yake? 69 00:02:02,190 --> 00:02:03,066 -Je Sisi kuongeza hii? 70 00:02:03,066 --> 00:02:03,898 -Je Wewe kuongeza yake? 71 00:02:03,898 --> 00:02:04,740 -Hold Ya pili. 72 00:02:04,740 --> 00:02:05,281 Mimi itabidi kuongeza. 73 00:02:05,281 --> 00:02:06,470 -Zoom Katika juu ya mlango. 74 00:02:06,470 --> 00:02:06,970 -Times 10. 75 00:02:06,970 --> 00:02:08,009 -Zoom. 76 00:02:08,009 --> 00:02:08,509 -Move Katika. 77 00:02:08,509 --> 00:02:09,340 -Zaidi. 78 00:02:09,340 --> 00:02:10,094 -Wait, Kuacha. 79 00:02:10,094 --> 00:02:10,750 -Stop. 80 00:02:10,750 --> 00:02:11,250 -Pause Yake. 81 00:02:11,250 --> 00:02:13,542 -Rotate Us digrii 75 karibu wima, tafadhali. 82 00:02:13,542 --> 00:02:14,750 83 00:02:14,750 --> 00:02:16,127 >> -Stop. 84 00:02:16,127 --> 00:02:19,330 Nenda nyuma sehemu juu ya mlango tena. 85 00:02:19,330 --> 00:02:21,420 >> -Got Picha enhancer ambayo inaweza bitmap? 86 00:02:21,420 --> 00:02:24,420 >> -Maybe Tunaweza kutumia Pradeep Singh njia ya kuona ndani ya madirisha. 87 00:02:24,420 --> 00:02:25,902 >> Programu -The ni hali ya sanaa. 88 00:02:25,902 --> 00:02:26,866 >> -The Eigenvalue ni mbali. 89 00:02:26,866 --> 00:02:29,758 >> -Kwa Haki mchanganyiko wa algorithms-- 90 00:02:29,758 --> 00:02:32,168 >> Hapo ya kuchukuliwa kuja algorithms ngazi ya pili, 91 00:02:32,168 --> 00:02:34,110 na siwezi matumizi yao ya kuongeza picha hii. 92 00:02:34,110 --> 00:02:36,840 >> -Lock Juu na kupanua z-mhimili. 93 00:02:36,840 --> 00:02:37,351 >> -Enhance. 94 00:02:37,351 --> 00:02:37,850 Kuimarisha. 95 00:02:37,850 --> 00:02:38,720 -Enhance. 96 00:02:38,720 --> 00:02:40,070 -Freeze Na kuongeza. 97 00:02:40,070 --> 00:02:43,420 [END video avspelning] 98 00:02:43,420 --> 00:02:45,830 DAVID J. Malan: Hivyo wale ni maneno hayo yote, lakini hawakuwa 99 00:02:45,830 --> 00:02:47,870 kutumika katika hukumu kwa usahihi. 100 00:02:47,870 --> 00:02:52,370 Na hakika katika siku zijazo, wakati wowote, tafadhali, wewe kusikia mtu kusema neno, 101 00:02:52,370 --> 00:02:54,250 "Kuongeza," chuckle kidogo tu. 102 00:02:54,250 --> 00:02:57,190 Kwa sababu wakati wewe kujaribu kuboresha, kwa mfano, hii ni kile kinachotokea. 103 00:02:57,190 --> 00:02:58,580 >> Hivyo hapa ni picha gorgeous. 104 00:02:58,580 --> 00:02:59,720 Hii ni CS50 ya mwenyewe Daven. 105 00:02:59,720 --> 00:03:03,740 Na kudhani kwamba sisi alitaka kuzingatia katika juu ya twinkle katika jicho lake, 106 00:03:03,740 --> 00:03:05,870 au reflection ya guy mbaya kwamba ilikuwa wazi 107 00:03:05,870 --> 00:03:07,820 alitekwa na kamera ya usalama. 108 00:03:07,820 --> 00:03:10,330 Hii ni kile kinachotokea wakati wewe zoom katika juu ya picha kwamba 109 00:03:10,330 --> 00:03:14,060 ina tu idadi finite ya bits yanayohusiana na hayo. 110 00:03:14,060 --> 00:03:15,420 >> Hiyo ni nini ungependa kupata. 111 00:03:15,420 --> 00:03:19,190 Na hakika, katika jicho Daven ya ni lakini nne, labda sita saizi 112 00:03:19,190 --> 00:03:22,110 ambayo kutunga nini hasa mara glimmering huko. 113 00:03:22,110 --> 00:03:25,890 Hivyo Set Tatizo Tarakimu hatimaye kuwa na wewe kuchunguza dunia hii, hasa 114 00:03:25,890 --> 00:03:28,090 na asili ya kitu sisi kuwaita faili i / o, ambapo 115 00:03:28,090 --> 00:03:31,000 i / o ni njia tu ya dhana ya akisema pembejeo na mazao. 116 00:03:31,000 --> 00:03:34,280 >> Hivyo hivi sasa, yote ya mwingiliano tulikuwa na kompyuta 117 00:03:34,280 --> 00:03:36,770 wamekuwa kwa kiasi kikubwa na yako keyboard na screen, 118 00:03:36,770 --> 00:03:40,770 lakini si sana na disk ngumu, au kuokoa files ya zaidi ya wale wewe 119 00:03:40,770 --> 00:03:41,620 mwenyewe kuandika. 120 00:03:41,620 --> 00:03:44,570 Mipango yako hivi sasa na si kujenga, na kuokoa, 121 00:03:44,570 --> 00:03:46,270 na uppdatering files yao wenyewe. 122 00:03:46,270 --> 00:03:47,150 >> Naam, ni nini faili ni nani? 123 00:03:47,150 --> 00:03:48,105 Naam, kitu kama JPEG. 124 00:03:48,105 --> 00:03:50,520 Hii ni picha waweza na au upload kwa Facebook, 125 00:03:50,520 --> 00:03:51,690 au kuona mahali popote kwenye mtandao. 126 00:03:51,690 --> 00:03:54,460 Hakika, kwamba picha sisi tu saw ya Daven mara JPEG. 127 00:03:54,460 --> 00:03:57,570 Na nini kuvutia kuhusu files kama JPEGs 128 00:03:57,570 --> 00:04:02,170 ni kwamba wanaweza kuwa na kutambuliwa, kawaida, na mifumo ya baadhi ya bits. 129 00:04:02,170 --> 00:04:05,200 >> Kwa maneno mengine, je ni kwamba tofauti kati ya JPEG kutoka GIF 130 00:04:05,200 --> 00:04:08,109 kutoka PING kutoka kwa Neno la hati kutoka Excel file? 131 00:04:08,109 --> 00:04:09,900 Naam, ni tofauti tu mifumo ya bits. 132 00:04:09,900 --> 00:04:12,820 Na wale mifumo tofauti ni kawaida katika mwanzo wa files wale. 133 00:04:12,820 --> 00:04:18,200 >> Hivyo kwamba wakati kompyuta yako kuufungua Neno doc, au wakati kompyuta kufungua JPEG, 134 00:04:18,200 --> 00:04:20,940 inaonekana kawaida katika kwanza bits kadhaa katika faili. 135 00:04:20,940 --> 00:04:24,059 Na kama ni inatambua muundo, inasema, oh, hii ni picha. 136 00:04:24,059 --> 00:04:25,850 Hebu kuonyesha ni kwa user kama graphic. 137 00:04:25,850 --> 00:04:27,870 Au, oh, hii inaonekana kama Neno doc. 138 00:04:27,870 --> 00:04:30,480 Hebu kuonyesha kuwa na user kama insha. 139 00:04:30,480 --> 00:04:33,020 >> Hivyo kwa mfano, JPEGs, ni zamu nje, ni 140 00:04:33,020 --> 00:04:35,460 haki kisasa chini ya Hood. 141 00:04:35,460 --> 00:04:40,140 Lakini kwanza ka tatu katika wengi kila JPEG kuanza na namba hizi tatu. 142 00:04:40,140 --> 00:04:44,680 Hivyo Byte sifuri, moja, na wawili ni, katika wengi kila JPEG, 255, kisha ya simu 143 00:04:44,680 --> 00:04:46,675 216, kisha namba 255. 144 00:04:46,675 --> 00:04:48,990 >> Na nini wewe utakuwa na uwezo kuanza kufanya wiki ijayo 145 00:04:48,990 --> 00:04:52,920 ni kweli poking chini ya kofia ya files kama JPEGs 146 00:04:52,920 --> 00:04:57,210 na kama files bitmap, na kuona nini daima imekuwa pale kwa muda mrefu 147 00:04:57,210 --> 00:04:58,650 kama wewe tumekuwa kutumia kompyuta. 148 00:04:58,650 --> 00:05:01,860 >> Lakini kuna nini huko ni si kawaida imeandikwa kama namba decimal kama hii. 149 00:05:01,860 --> 00:05:04,620 Wanasayansi wa kompyuta kufanya si huwa na kusema katika decimal. 150 00:05:04,620 --> 00:05:06,139 Wao si kweli kuzungumza katika binary. 151 00:05:06,139 --> 00:05:07,930 Kwa kawaida, wakati tunataka kueleza idadi, 152 00:05:07,930 --> 00:05:10,710 sisi kweli matumizi hexadecimal, ambayo unaweza kukumbuka 153 00:05:10,710 --> 00:05:13,027 kutoka, kusema, Tatizo Set Moja, ambayo changamoto ya 154 00:05:13,027 --> 00:05:14,610 wewe kufikiri juu ya mfumo tofauti. 155 00:05:14,610 --> 00:05:17,170 >> Sisi, bila shaka, ni ukoo na decimal, zero kwa njia ya tisa. 156 00:05:17,170 --> 00:05:18,215 Sisi aliyesema kuhusu binary. 157 00:05:18,215 --> 00:05:20,710 Na sisi si kweli kuwa kutumia kiasi kwamba hapa 158 00:05:20,710 --> 00:05:22,470 juu ya nje, kwa sababu kompyuta kutumia hiyo. 159 00:05:22,470 --> 00:05:24,900 Lakini programmers mapenzi sana mara nyingi, lakini si mara zote, 160 00:05:24,900 --> 00:05:29,360 kutumia hexadecimal, ambayo ina maana tu una barua 16 katika alfabeti yako, 161 00:05:29,360 --> 00:05:31,330 kinyume na mbili au 10. 162 00:05:31,330 --> 00:05:34,530 >> Hivyo ni jinsi gani wewe kuhesabu juu ya tisa katika hexadecimal? 163 00:05:34,530 --> 00:05:41,120 Unaweza kwenda 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, tu kwa mkataba. 164 00:05:41,120 --> 00:05:43,540 Lakini nini muhimu ni kwamba kila kati ya hayo ni ishara moja. 165 00:05:43,540 --> 00:05:44,340 Hakuna 10. 166 00:05:44,340 --> 00:05:48,400 Hakuna 11, per se, kwa sababu kila ya tarakimu yako, tu kama katika decimal 167 00:05:48,400 --> 00:05:51,940 na kama tu katika binary, lazima tu kuwa tabia moja, na mkataba. 168 00:05:51,940 --> 00:05:55,280 >> Hivyo kwamba basi ni alfabeti tuna tulizonazo kwa hexadecimal. 169 00:05:55,280 --> 00:05:58,600 Kwa hiyo ni nini JPEG kuangalia kama kama wewe walikuwa na kuandika wale watatu wa kwanza 170 00:05:58,600 --> 00:06:01,980 ka si kama decimal lakini, kwa mfano, kama hexadecimal? 171 00:06:01,980 --> 00:06:03,640 Na kwa nini ni hex hata yote muhimu? 172 00:06:03,640 --> 00:06:05,290 >> Naam, kuangalia haraka katika mfano. 173 00:06:05,290 --> 00:06:09,030 Hivyo kama mimi kuandika bits kwamba kuwakilisha hizi numbers-- decimal 174 00:06:09,030 --> 00:06:12,450 hii inaweza kuwa kutu kidogo sasa kutoka wiki chache nyuma, 175 00:06:12,450 --> 00:06:14,820 lakini moja wa kushoto na haki moja ni pretty rahisi. 176 00:06:14,820 --> 00:06:17,990 255 ilikuwa kubwa idadi sisi inaweza kuwakilisha na bits nane. 177 00:06:17,990 --> 00:06:18,820 Ilikuwa ni wale wote. 178 00:06:18,820 --> 00:06:21,320 Hivyo moja tu kwamba ni upole kuvutia ni moja kati. 179 00:06:21,320 --> 00:06:24,700 Na kama wewe aina ya kufanya nje math, utakuwa kuthibitisha kwamba, kwa kweli, 180 00:06:24,700 --> 00:06:27,949 kwamba mfumo wa moja na zeros inawakilisha 216. 181 00:06:27,949 --> 00:06:30,240 Basi hebu tu inasema kwa sasa kwamba hizi ni sahihi. 182 00:06:30,240 --> 00:06:31,730 Lakini kwa nini hii ni ya kuvutia? 183 00:06:31,730 --> 00:06:33,970 >> Naam, Byte, bila shaka, ni bits nane. 184 00:06:33,970 --> 00:06:38,980 Na zinageuka kuwa kama unadhani ya Byte kama chunks wawili wa bits nne, 185 00:06:38,980 --> 00:06:39,500 kama hii. 186 00:06:39,500 --> 00:06:41,000 Napenda tu kuongeza baadhi ya nafasi. 187 00:06:41,000 --> 00:06:42,550 Basi, kabla ya, baada ya. 188 00:06:42,550 --> 00:06:46,520 Nimekuwa tu aliongeza baadhi ya nafasi nyeupe kwa ajili visualization hapa. 189 00:06:46,520 --> 00:06:51,840 Jinsi gani sisi sasa kuwakilisha katika, kusema, hexadecimal kila quad ya bits, 190 00:06:51,840 --> 00:06:52,880 kila seti ya bits nne? 191 00:06:52,880 --> 00:06:56,420 >> Hivyo kwa mfano, upande wa kushoto sasa, tuna 1,111 katika binary. 192 00:06:56,420 --> 00:07:00,420 Je, ni kwamba idadi katika decimal, kama wewe kufanya nje math? 193 00:07:00,420 --> 00:07:03,780 Una ndio mahali, wawili-wawili mahali, fours mahali, na eights mahali. 194 00:07:03,780 --> 00:07:04,341 >> Watazamaji: 15. 195 00:07:04,341 --> 00:07:05,340 DAVID J. Malan: Ni 15. 196 00:07:05,340 --> 00:07:08,340 Hivyo kama sisi kufanya nane pamoja na nne pamoja na mbili pamoja na moja, sisi kupata 15. 197 00:07:08,340 --> 00:07:11,790 Ili niweze kuandika 15 chini 1111, lakini hatua nzima hapa 198 00:07:11,790 --> 00:07:13,190 ni hexadecimal, si decimal. 199 00:07:13,190 --> 00:07:17,310 Hivyo badala ya kuandika 15, 1-5, Mimi nina kwenda kuandika kwamba katika hex, 200 00:07:17,310 --> 00:07:22,311 ambayo kama wewe kufikiri nyuma, kama una zero kupitia f, ni nini 15 kwenda kuwa? 201 00:07:22,311 --> 00:07:22,810 Watazamaji: f. 202 00:07:22,810 --> 00:07:24,434 DAVID J. Malan: Hivyo ni zamu nje ni ya f. 203 00:07:24,434 --> 00:07:29,140 Na unaweza kufanya kazi nje kwamba kwa kusema, vizuri, kama ni 10, kisha OK, f ni 15. 204 00:07:29,140 --> 00:07:33,250 Hivyo kweli, tunaweza kuandika upya kuweka hii moja ya namba kama f f. 205 00:07:33,250 --> 00:07:35,750 Na kisha kama sisi kufanya kidogo ya math, tutaweza kuthibitisha kwamba hiyo ni d. 206 00:07:35,750 --> 00:07:38,650 Nane ni pretty rahisi, kwa sababu sisi na moja katika eights mahali. 207 00:07:38,650 --> 00:07:40,620 Na kisha, sisi kuwa wanandoa zaidi f f ya. 208 00:07:40,620 --> 00:07:44,669 >> Basi nini binadamu huwa na kufanya kwa mkataba wakati matumizi ya hexadecimal ni wao tu 209 00:07:44,669 --> 00:07:47,710 kuandika hii kidogo zaidi kwa ufupi, kujikwamua zaidi ya nafasi ya kuwa nyeupe. 210 00:07:47,710 --> 00:07:50,890 Na tu kuwa super wazi kwa wasomaji kwamba hii ni hexadecimal, 211 00:07:50,890 --> 00:07:54,670 mkataba kati ya rahisi binadamu ni wewe kuandika zero 212 00:07:54,670 --> 00:07:58,000 x, ambayo haina maana nyingine kuliko kitambulisho Visual ya, 213 00:07:58,000 --> 00:07:59,590 hiyo inakuja idadi hex. 214 00:07:59,590 --> 00:08:04,210 >> Na kisha, unaweza kuweka tarakimu mbili za, f f katika kesi hii, basi d, basi f f. 215 00:08:04,210 --> 00:08:06,700 Hivyo hadithi muda mfupi, hexadecimal tu huelekea 216 00:08:06,700 --> 00:08:11,990 kuwa na manufaa kwa sababu kila moja ya yake tarakimu, sifuri kupitia f, kikamilifu mistari 217 00:08:11,990 --> 00:08:13,880 up na muundo wa bits nne. 218 00:08:13,880 --> 00:08:18,080 >> Hivyo kama una tarakimu hexadecimal mbili, zero kupitia F, tena na tena, 219 00:08:18,080 --> 00:08:20,256 kwamba anatoa kikamilifu bits nane au Byte moja. 220 00:08:20,256 --> 00:08:22,380 Hivyo ndiyo sababu inaelekea kuwa conventionally muhimu. 221 00:08:22,380 --> 00:08:24,990 Hakuna miliki maudhui kweli zaidi ya hapo, 222 00:08:24,990 --> 00:08:27,010 zaidi ya matumizi yake halisi. 223 00:08:27,010 --> 00:08:29,310 >> Sasa JPEGs ni si tu faili format kwa graphics. 224 00:08:29,310 --> 00:08:33,230 Unaweza kukumbuka kwamba kuna files kama hii katika dunia, 225 00:08:33,230 --> 00:08:34,830 angalau kutoka miaka michache nyuma. 226 00:08:34,830 --> 00:08:37,580 >> Hivyo hii ilikuwa kweli imewekwa katika Windows XP 227 00:08:37,580 --> 00:08:39,960 juu ya mamilioni ya PC duniani kote. 228 00:08:39,960 --> 00:08:43,000 Na hii ilikuwa bitmap faili, BMP. 229 00:08:43,000 --> 00:08:47,690 Na bitmap faili, kama utaona ya wiki, tu ina maana ya muundo wa dots, 230 00:08:47,690 --> 00:08:51,710 Ukubwa kama wao ni kuitwa, a ramani juu ya bits, kwa kweli. 231 00:08:51,710 --> 00:08:55,160 >> Basi nini kuvutia, ingawa, kuhusu hili format file, BMP, ni 232 00:08:55,160 --> 00:08:58,590 kwamba chini ya Hood, ni ina zaidi ya ka tatu tu 233 00:08:58,590 --> 00:09:01,020 ambayo kutunga header yake, hivyo kusema, kwanza kuumwa chache. 234 00:09:01,020 --> 00:09:03,330 Ni kweli inaonekana kidogo ngumu katika mtazamo wa kwanza. 235 00:09:03,330 --> 00:09:04,704 Na utaona hili katika P kuweka. 236 00:09:04,704 --> 00:09:06,810 Na kupata kitu nje fulani ya hii sasa 237 00:09:06,810 --> 00:09:10,720 si hivyo muhimu, kama tu ukweli kuwa katika mwanzo wa kila bitmap 238 00:09:10,720 --> 00:09:13,823 file, format graphical, kuna rundo zima wa idadi. 239 00:09:13,823 --> 00:09:14,980 240 00:09:14,980 --> 00:09:16,720 >> Sasa Microsoft, mwandishi wa muundo huu, 241 00:09:16,720 --> 00:09:18,820 huelekea kuwaita wale mambo si ints na chars 242 00:09:18,820 --> 00:09:22,259 na ikifungwa lakini maneno na d maneno na anatamani na ka. 243 00:09:22,259 --> 00:09:23,800 Hivyo wao ni tu aina tofauti data. 244 00:09:23,800 --> 00:09:25,170 Wao ni majina tofauti kwa kitu kimoja. 245 00:09:25,170 --> 00:09:26,740 Lakini utaona kwamba katika P Set Nne. 246 00:09:26,740 --> 00:09:31,450 >> Lakini hii ni tu kusema kwamba kama binadamu mbili-Clicks baadhi ya faili .bmp upande wake 247 00:09:31,450 --> 00:09:35,015 au gari yake kwa bidii, na dirisha kuufungua up kuonyesha kwake picha kwamba, 248 00:09:35,015 --> 00:09:38,500 kwamba kilichotokea kwa sababu uendeshaji mfumo labda niliona si tu 249 00:09:38,500 --> 00:09:41,460 .bmp Faili ugani katika jina la faili, 250 00:09:41,460 --> 00:09:45,010 lakini pia ni ukweli kwamba kuna baadhi ya mkataba kwa mfano wa bits 251 00:09:45,010 --> 00:09:47,490 mwanzoni sana ya kwamba bitmap faili. 252 00:09:47,490 --> 00:09:50,270 >> Lakini hebu sasa kuzingatia kama faili ngumu, 253 00:09:50,270 --> 00:09:52,120 lakini badala yake juu ya kitu kama hiki. 254 00:09:52,120 --> 00:09:55,190 Tuseme hapa katika gedit, mimi tu mwanzo 255 00:09:55,190 --> 00:09:57,070 wa mpango huo pretty rahisi. 256 00:09:57,070 --> 00:09:58,860 Mimi nimepata baadhi ni pamoja na juu juu. 257 00:09:58,860 --> 00:10:02,120 Sasa mimi nimepata #include "structs.h" lakini Mimi itabidi kuja nyuma na kwamba katika wakati huu. 258 00:10:02,120 --> 00:10:03,974 Lakini hii ni muhimu kwa sasa. 259 00:10:03,974 --> 00:10:05,890 Hivyo hii ni mpango hiyo ni kwenda kutekeleza 260 00:10:05,890 --> 00:10:07,335 kama database msajili ya. 261 00:10:07,335 --> 00:10:09,710 Hivyo database ya wanafunzi, na kila mwanafunzi katika dunia 262 00:10:09,710 --> 00:10:13,190 ina jina na nyumba na pengine baadhi ya mambo mengine, lakini tutaweza kushika ni rahisi. 263 00:10:13,190 --> 00:10:15,140 Kila mwanafunzi ana jina na nyumba. 264 00:10:15,140 --> 00:10:17,700 >> Hivyo kama mimi alitaka kuandika mpango ambao lengo katika maisha 265 00:10:17,700 --> 00:10:19,860 mara tu iterate kutoka sifuri juu ya hadi tatu, 266 00:10:19,860 --> 00:10:22,070 kama kuna wanafunzi watatu katika Chuo Kikuu cha Harvard. 267 00:10:22,070 --> 00:10:25,350 Na mimi nataka tu kupata, kwa kutumia GetString, jina la kila mwanafunzi na nyumba, 268 00:10:25,350 --> 00:10:26,600 na kisha tu magazeti wale nje. 269 00:10:26,600 --> 00:10:28,630 >> Hii ni aina ya kama Wiki Moja, Wiki Barua mambo sasa, 270 00:10:28,630 --> 00:10:30,810 ambapo mimi nataka tu kwa kitanzi au kitu kama hicho. 271 00:10:30,810 --> 00:10:34,500 Na mimi nataka kuwaita GetString chache mara kwa mara, na kisha magazeti f mara chache. 272 00:10:34,500 --> 00:10:37,340 Hivyo jinsi gani mimi kufanya hivyo, ingawa, wakati wote jina na nyumba 273 00:10:37,340 --> 00:10:39,070 ni kushiriki kwa kila mwanafunzi? 274 00:10:39,070 --> 00:10:42,830 >> Hivyo silika yangu ya kwanza nguvu kuwa kufanya kitu kama hiki. 275 00:10:42,830 --> 00:10:49,620 Mimi anaweza kusema kwanza, vizuri, nipe, kusema, safu ya masharti kuitwa majina. 276 00:10:49,620 --> 00:10:51,530 Na sitaki hardcode tatu hapa. 277 00:10:51,530 --> 00:10:53,064 Nini nataka kuweka huko? 278 00:10:53,064 --> 00:10:55,730 Hivyo WANAFUNZI, kwa sababu hiyo tu mara kwa mara alitangaza saa ya juu, 279 00:10:55,730 --> 00:10:57,860 hivyo tu sina kwa hardcode tatu katika maeneo mbalimbali. 280 00:10:57,860 --> 00:11:00,859 Kwa njia hii, siwezi mabadiliko hayo sehemu moja, na huathiri mabadiliko kila mahali. 281 00:11:00,859 --> 00:11:04,470 Na kisha, mimi ili kufanya kamba nyumba WANAFUNZI. 282 00:11:04,470 --> 00:11:10,250 >> Na sasa, mimi ili kufanya kitu kama kwa (int i = 0; i 00:11:14,390 Hivyo mimi nina kuandika haraka, lakini hii ni pengine familiar syntax sasa. 284 00:11:14,390 --> 00:11:17,030 >> Na sasa, hii ilikuwa zaidi ya hivi karibuni. 285 00:11:17,030 --> 00:11:22,890 Kama mimi nataka kuweka katika i-th jina mwanafunzi, mimi nadhani kufanya hivyo. 286 00:11:22,890 --> 00:11:26,480 Na kisha, si majina lakini nyumba mabano i. 287 00:11:26,480 --> 00:11:29,930 Mimi kufanya hivyo, GetString, na basi mimi kwenda nyuma na kurekebisha mstari huu. 288 00:11:29,930 --> 00:11:30,430 Kukubaliana? 289 00:11:30,430 --> 00:11:31,200 Hawakubaliani? 290 00:11:31,200 --> 00:11:32,366 Siyo sana user-kirafiki. 291 00:11:32,366 --> 00:11:33,890 Sikumwambia user nini cha kufanya. 292 00:11:33,890 --> 00:11:36,520 >> Lakini sasa, kama mimi pia alitaka baadaye, hebu 293 00:11:36,520 --> 00:11:40,060 kusema, magazeti hayo out-- hivyo TODO baadaye. 294 00:11:40,060 --> 00:11:42,330 Mimi nina kwenda kufanya zaidi na Haya hii arguably yaani 295 00:11:42,330 --> 00:11:45,970 utekelezaji sahihi ya kupata majina na nyumba, tatu 296 00:11:45,970 --> 00:11:48,870 wao jumla ya kila mmoja, kutoka kwa mtumiaji. 297 00:11:48,870 --> 00:11:51,280 >> Lakini hii si nzuri sana kubuni, haki? 298 00:11:51,280 --> 00:11:55,220 Nini kama mwanafunzi ana si tu jina na nyumba, lakini pia ID ya simu, 299 00:11:55,220 --> 00:11:57,770 na namba ya simu, na barua pepe, 300 00:11:57,770 --> 00:12:00,280 na labda ukurasa wa nyumbani, na labda Twitter kushughulikia, 301 00:12:00,280 --> 00:12:03,730 na idadi yoyote ya maelezo mengine kuhusishwa na mwanafunzi au mtu, 302 00:12:03,730 --> 00:12:04,610 ujumla zaidi. 303 00:12:04,610 --> 00:12:07,720 Jinsi gani sisi kuanza kuongeza utendaji kwa mpango huu? 304 00:12:07,720 --> 00:12:14,080 >> Naam, mimi najisikia kama njia rahisi nguvu kuwa kufanya kitu kama, hebu sema, 305 00:12:14,080 --> 00:12:16,490 int Vitambulisho WANAFUNZI. 306 00:12:16,490 --> 00:12:18,380 Hivyo siwezi kuweka vitambulisho yao yote huko. 307 00:12:18,380 --> 00:12:22,240 Na kisha, kwa ajili ya kitu kama namba za simu, 308 00:12:22,240 --> 00:12:24,400 Mimi nina uhakika jinsi ya kuwakilisha kwamba bado tu. 309 00:12:24,400 --> 00:12:30,280 Basi hebu kwenda mbele na wito tu hii Twitters WANAFUNZI, ambayo 310 00:12:30,280 --> 00:12:33,550 ni ajabu kidogo, but-- na rundo mashamba zaidi. 311 00:12:33,550 --> 00:12:36,360 >> Nimeanza kwa ufanisi nakala na kuweka hapa. 312 00:12:36,360 --> 00:12:39,416 Na hii ni kwenda kukua pretty unwieldy pretty haraka, haki? 313 00:12:39,416 --> 00:12:42,290 Je, si ni kuwa nzuri kama kulikuwa na katika dunia muundo data inayojulikana 314 00:12:42,290 --> 00:12:45,600 si kama int au kamba, lakini kitu ngazi ya juu, kufikirika, hivyo 315 00:12:45,600 --> 00:12:47,570 kusema, unaojulikana kama mwanafunzi? 316 00:12:47,570 --> 00:12:50,220 C hakuwa kuja na kujengwa katika utendaji kwa ajili ya wanafunzi, 317 00:12:50,220 --> 00:12:52,260 lakini nini kama mimi alitaka kuwapa hizo? 318 00:12:52,260 --> 00:12:55,640 >> Naam, ni zamu nje, mimi nina kwenda kufungua faili inayoitwa structs.h hapa, 319 00:12:55,640 --> 00:12:57,090 na unaweza kufanya hasa kwamba. 320 00:12:57,090 --> 00:12:58,290 Na sisi ni kwenda kuanza kufanya hivi sasa. 321 00:12:58,290 --> 00:13:01,490 Na chini ya Hood ya P Set ya Tatu, umefanya tayari kufanya hivyo sasa. 322 00:13:01,490 --> 00:13:05,920 Hakuna kitu kama vile g rect ni au g mviringo katika lugha ya programu C. 323 00:13:05,920 --> 00:13:10,570 >> Folks katika Stanford kutekelezwa wale aina data kwa kutumia mbinu hii hapa, 324 00:13:10,570 --> 00:13:13,900 kutangaza yao wenyewe data mpya aina kutumia keyword mpya 325 00:13:13,900 --> 00:13:16,744 kuitwa struct na mwingine mtu mmoja aitwaye typedef. 326 00:13:16,744 --> 00:13:19,660 Na hakika, hata kama syntax inaonekana tofauti kidogo kutoka kwa mambo 327 00:13:19,660 --> 00:13:23,550 tumeona kabla, katika Kimsingi, ni super rahisi. 328 00:13:23,550 --> 00:13:25,297 >> Hii ina maana "kufafanua aina." 329 00:13:25,297 --> 00:13:27,255 Hiyo inaenda kuwa muundo, na muundo 330 00:13:27,255 --> 00:13:29,400 ni tu kama chombo kwa ajili ya mambo mbalimbali. 331 00:13:29,400 --> 00:13:31,780 Na muundo kwamba ni kwenda kuwa na string kuitwa jina, 332 00:13:31,780 --> 00:13:33,210 na string kuitwa nyumba. 333 00:13:33,210 --> 00:13:37,520 Na hebu kuwaita, tu kwa urahisi, muundo data hii yote mwanafunzi. 334 00:13:37,520 --> 00:13:40,320 >> Hivyo wakati wewe kupata semicolon, una sasa 335 00:13:40,320 --> 00:13:43,280 kuundwa data yako mwenyewe aina kuitwa mwanafunzi 336 00:13:43,280 --> 00:13:46,420 kwamba sasa anasimama sambamba int, na kuelea, na char, na kamba, 337 00:13:46,420 --> 00:13:50,270 na g rect, na g mviringo, na idadi yoyote ya mambo mengine watu kuwa wakiyazua. 338 00:13:50,270 --> 00:13:53,340 >> Basi nini muhimu kuhusu hii sasa ni kwamba kama mimi kwenda nyuma 339 00:13:53,340 --> 00:13:57,430 kwa struct 0 na kumaliza hii utekelezaji, ambayo niliandika 340 00:13:57,430 --> 00:14:02,080 mapema hapa, taarifa kwamba wote ya messiness kuepukika kwamba 341 00:14:02,080 --> 00:14:05,490 ilikuwa juu ya kuanza kinachotokea kama mimi aliongeza namba za simu na Twitters na wote 342 00:14:05,490 --> 00:14:07,370 mambo haya mengine kwa mwanafunzi ufafanuzi, 343 00:14:07,370 --> 00:14:11,810 sasa ni ufupi ilimalizika kama safu moja tu ya wanafunzi. 344 00:14:11,810 --> 00:14:15,500 >> Na kila mmoja wa wanafunzi hao sasa ina mambo mbalimbali ndani yake. 345 00:14:15,500 --> 00:14:16,930 Hivyo kwamba tu majani swali moja. 346 00:14:16,930 --> 00:14:19,700 Jinsi gani unaweza kupata katika jina, na nyumba, na ID, 347 00:14:19,700 --> 00:14:21,640 chochote ambacho ni ndani ya mwanafunzi? 348 00:14:21,640 --> 00:14:22,930 Super rahisi, kama vile. 349 00:14:22,930 --> 00:14:25,730 New syntax, lakini wazo rahisi. 350 00:14:25,730 --> 00:14:29,239 >> Wewe tu index katika safu, kama tulivyofanya wiki iliyopita na hii. 351 00:14:29,239 --> 00:14:31,030 Na nini wazi kipande mpya ya syntax? 352 00:14:31,030 --> 00:14:32,590 353 00:14:32,590 --> 00:14:35,880 Tu., Ambayo ina maana ya "kwenda ndani muundo na kupata shamba iitwayo 354 00:14:35,880 --> 00:14:39,030 jina, kupata shamba iitwayo nyumba, kupata shamba iitwayo mwanafunzi. " 355 00:14:39,030 --> 00:14:41,940 >> Hivyo katika P Set Tatu, kama wewe ni bado kazi hiyo, 356 00:14:41,940 --> 00:14:44,020 na folks wengi bado ni, kutambua kwamba kama wewe 357 00:14:44,020 --> 00:14:46,130 kuanza kutumia vitu kama g rects na g ovals 358 00:14:46,130 --> 00:14:50,201 na mambo mengine ambayo hawaonekani kuja kutoka Wiki Zero, One, au mbili, 359 00:14:50,201 --> 00:14:52,950 kutambua kwamba hiyo ni kwa sababu Stanford alitangaza baadhi ya aina mpya data. 360 00:14:52,950 --> 00:14:56,160 >> Na hakika, hiyo ni nini hasa sisi itabidi kufanya, kama vile, katika P Set Nne, wakati 361 00:14:56,160 --> 00:14:59,880 sisi kuanza kukabiliana na mambo kama picha, bitmaps, na zaidi. 362 00:14:59,880 --> 00:15:02,882 Hivyo hiyo ni teaser na mfano wa akili kwa nini kuja. 363 00:15:02,882 --> 00:15:04,590 Sasa, mimi procrastinated kidogo asubuhi hii. 364 00:15:04,590 --> 00:15:09,560 Mimi nilikuwa aina ya curious kuona nini Karatasi ya Microsoft kweli 365 00:15:09,560 --> 00:15:10,310 inaonekana kama leo. 366 00:15:10,310 --> 00:15:15,200 Na zinageuka mtu mwaka 2006 kweli alikwenda karibu just 367 00:15:15,200 --> 00:15:19,210 doa huo kupiga picha katika hali halisi kile kinachoonekana kama kwamba siku hizi. 368 00:15:19,210 --> 00:15:21,380 shamba ni sasa kidogo iliyojitokeza. 369 00:15:21,380 --> 00:15:24,850 >> Hivyo akizungumza sasa wa picha, hebu kuleta nyuma Daven hapa 370 00:15:24,850 --> 00:15:26,890 juu ya screen na Nicholas, na tu kuwakumbusha 371 00:15:26,890 --> 00:15:30,540 kwamba kama wewe Ningependa kujiunga na sisi kwa chakula cha mchana Ijumaa hii, kichwa na kawaida URL yetu 372 00:15:30,540 --> 00:15:31,440 hapa. 373 00:15:31,440 --> 00:15:33,530 >> Hivyo ambapo gani sisi kuondoka mbali juu ya Jumatatu? 374 00:15:33,530 --> 00:15:35,140 Sisi ilianzisha tatizo hili, haki? 375 00:15:35,140 --> 00:15:37,610 Hii ilikuwa inaonekana sahihi utekelezaji wa wabadilishane, 376 00:15:37,610 --> 00:15:40,460 ambapo wewe kuchukua ints mbili, mtu mmoja aitwaye, na mtu mmoja aitwaye b, 377 00:15:40,460 --> 00:15:44,130 wabadilishane yao, kama alivyofanya Laura hapa juu ya hatua kwa maziwa na maji, 378 00:15:44,130 --> 00:15:46,820 kwa kutumia muda variable, au kikombe tupu, 379 00:15:46,820 --> 00:15:50,540 ili tuweze kuweka b katika na katika b bila kufanya fujo ya mambo. 380 00:15:50,540 --> 00:15:51,560 Sisi kutumika kutofautiana. 381 00:15:51,560 --> 00:15:52,870 Ni wito temp. 382 00:15:52,870 --> 00:15:55,520 >> Lakini kile ambacho kilikuwa msingi tatizo na kanuni hii juu ya Jumatatu? 383 00:15:55,520 --> 00:15:57,700 384 00:15:57,700 --> 00:15:58,870 Na tatizo hapa ni nini? 385 00:15:58,870 --> 00:16:00,106 386 00:16:00,106 --> 00:16:00,605 Yeah. 387 00:16:00,605 --> 00:16:01,970 >> Watazamaji: Ni inachukua hadi nafasi zaidi. 388 00:16:01,970 --> 00:16:04,719 >> DAVID J. Malan: Inachukua hadi zaidi nafasi, kwa sababu mimi nina kutumia variable, 389 00:16:04,719 --> 00:16:05,400 na kwamba ni sawa. 390 00:16:05,400 --> 00:16:07,300 Hiyo ni kweli, lakini mimi nina kwenda kusema kwamba ni sawa. 391 00:16:07,300 --> 00:16:10,030 Ni bits 32 tu katika grand mpango wa mambo, hivyo si kubwa mpango huo. 392 00:16:10,030 --> 00:16:10,655 Mawazo mengine? 393 00:16:10,655 --> 00:16:12,572 Watazamaji: Ni tu swaps vigezo ndani ya nchi. 394 00:16:12,572 --> 00:16:13,571 DAVID J. Malan: Hasa. 395 00:16:13,571 --> 00:16:15,090 Ni tu swaps vigezo ndani ya nchi. 396 00:16:15,090 --> 00:16:18,173 Kwa sababu wakati wowote wewe piga function-- wakati nilikuwa trays kutoka Annenberg 397 00:16:18,173 --> 00:16:19,840 mara ya mwisho, una kuu juu ya chini. 398 00:16:19,840 --> 00:16:23,560 Haraka kama wewe piga kazi kuitwa wabadilishane, wabadilishane haina kupata x na y, 399 00:16:23,560 --> 00:16:24,400 awali maadili. 400 00:16:24,400 --> 00:16:26,392 Je wabadilishane kupata, hatukufanya kudai? 401 00:16:26,392 --> 00:16:27,100 Watazamaji: Nakala. 402 00:16:27,100 --> 00:16:28,090 DAVID J. Malan: Hivyo nakala yao. 403 00:16:28,090 --> 00:16:31,120 Hivyo anapata moja na mbili, kama wewe kukumbuka mfano kutoka wakati wa mwisho, 404 00:16:31,120 --> 00:16:34,730 lakini nakala ya moja na mbili kwamba ni mafanikio swapped. 405 00:16:34,730 --> 00:16:38,550 Lakini kwa bahati mbaya katika mwisho, maadili hayo bado ni sawa. 406 00:16:38,550 --> 00:16:41,880 Ili tuweze kuona hii na yetu rafiki mpya, hopefully GDB, 407 00:16:41,880 --> 00:16:45,180 kwamba wewe au TFS na Ca ya kuwa na wamekuwa kuongoza wewe kuelekea kama ifuatavyo. 408 00:16:45,180 --> 00:16:51,210 >> Hivyo hakuna kukumbuka wabadilishane inaonekana like-- hebu kufungua Haya inaonekana kama hii. 409 00:16:51,210 --> 00:16:54,160 Sisi initialized x kwa moja, y miwili. 410 00:16:54,160 --> 00:16:55,620 Rundo la magazeti f ya. 411 00:16:55,620 --> 00:16:58,080 Lakini basi, kitufe cha kupiga simu hapa ilikuwa wabadilishane, ambayo 412 00:16:58,080 --> 00:17:00,260 ni hasa code sisi tu kuona wakati iliyopita. 413 00:17:00,260 --> 00:17:03,180 Ambayo ni sahihi kwa mara ya kwanza mtazamo, lakini functionally, 414 00:17:03,180 --> 00:17:06,800 mpango huu hana kazi, kwa sababu haina kudumu wabadilishane x na y. 415 00:17:06,800 --> 00:17:10,190 >> Basi hebu angalia hii, joto haraka up hapa na GDB, ./noswap. 416 00:17:10,190 --> 00:17:11,867 417 00:17:11,867 --> 00:17:15,200 rundo la habari mno kwamba Mimi itabidi kujikwamua na Kudhibiti L kwa sasa. 418 00:17:15,200 --> 00:17:17,516 Na sasa, mimi nina kwenda kwenda mbele na kukimbia nayo. 419 00:17:17,516 --> 00:17:19,349 Na kwa bahati mbaya, kwamba sio kwamba muhimu. 420 00:17:19,349 --> 00:17:22,355 Ni mbio mpango ndani ya hii programu inayoitwa GDB, HatiJava, 421 00:17:22,355 --> 00:17:23,730 lakini hakuwa na napenda poke kuzunguka. 422 00:17:23,730 --> 00:17:26,229 >> Hivyo ni jinsi gani mimi kwa kweli pause utekelezaji ndani ya mpango huu? 423 00:17:26,229 --> 00:17:27,410 424 00:17:27,410 --> 00:17:28,329 Hivyo mapumziko. 425 00:17:28,329 --> 00:17:32,340 Na mimi naweza kuvunja juu ya yoyote line ya simu, moja, 10, 15. 426 00:17:32,340 --> 00:17:35,530 Lakini siwezi pia kuvunja mfano kwa kusema mapumziko kuu. 427 00:17:35,530 --> 00:17:38,980 Na kwamba ni kwenda kuweka mapumziko uhakika, inaonekana katika mstari 16 katika kuu. 428 00:17:38,980 --> 00:17:40,050 Na ambapo ni mstari 16? 429 00:17:40,050 --> 00:17:42,960 Hebu kwenda hadi code na kwenda hadi noswap. 430 00:17:42,960 --> 00:17:46,930 Na hakika, line 16 ni sana kwanza katika mpango. 431 00:17:46,930 --> 00:17:52,130 >> Hivyo sasa, kama mimi kwenda mbele na aina kukimbia wakati huu, kuingia, ni paused. 432 00:17:52,130 --> 00:17:53,080 Basi hebu poke kuzunguka. 433 00:17:53,080 --> 00:17:55,716 Magazeti x-- kwa nini ni x sifuri? 434 00:17:55,716 --> 00:17:56,705 435 00:17:56,705 --> 00:17:57,830 Na kupuuza ishara ya dola. 436 00:17:57,830 --> 00:17:59,725 Hiyo tu kwa fancier matumizi ya mpango huo. 437 00:17:59,725 --> 00:18:00,780 438 00:18:00,780 --> 00:18:03,140 Kwa nini ni x sifuri wakati huu? 439 00:18:03,140 --> 00:18:03,640 Yeah. 440 00:18:03,640 --> 00:18:07,061 >> Watazamaji: Ni paused haki kabla ya mstari 16, si kweli juu ya mstari 16. 441 00:18:07,061 --> 00:18:08,060 DAVID J. Malan: Hasa. 442 00:18:08,060 --> 00:18:11,630 GDB, by default, ina paused utekelezaji tu kabla ya mstari 16. 443 00:18:11,630 --> 00:18:14,820 Hivyo ina haitekelezwi, ambayo ina maana x ni ya baadhi ya thamani haijulikani. 444 00:18:14,820 --> 00:18:17,150 Na sisi got bahati kwamba ni kitu safi kama sifuri. 445 00:18:17,150 --> 00:18:20,310 Hivyo sasa kama mimi aina ya pili, sasa ni kunyongwa 16. 446 00:18:20,310 --> 00:18:22,000 Ni kusubiri kwa ajili yangu na nitafanya 17. 447 00:18:22,000 --> 00:18:23,400 Hebu kwenda mbele na magazeti x. 448 00:18:23,400 --> 00:18:24,094 Ni moja. 449 00:18:24,094 --> 00:18:25,260 Hebu kwenda mbele na magazeti y. 450 00:18:25,260 --> 00:18:26,176 Nifanye kuona sasa? 451 00:18:26,176 --> 00:18:27,660 452 00:18:27,660 --> 00:18:28,560 >> Watazamaji: [inaudible] 453 00:18:28,560 --> 00:18:29,165 >> DAVID J. Malan: sauti kidogo. 454 00:18:29,165 --> 00:18:30,040 >> Watazamaji: [inaudible] 455 00:18:30,040 --> 00:18:30,537 456 00:18:30,537 --> 00:18:32,120 DAVID J. Malan: Si kabisa makubaliano. 457 00:18:32,120 --> 00:18:34,760 Hivyo ndiyo, sisi kuona baadhi ya thamani ya takataka. 458 00:18:34,760 --> 00:18:37,862 Sasa, y ni 134514064 huko. 459 00:18:37,862 --> 00:18:39,320 Naam, ni baadhi tu ya thamani ya takataka. 460 00:18:39,320 --> 00:18:41,350 Mpango wangu anatumia RAM kwa malengo tofauti. 461 00:18:41,350 --> 00:18:42,350 Kuna kazi nyingine. 462 00:18:42,350 --> 00:18:44,040 Watu wengine aliandika ndani ya kompyuta yangu. 463 00:18:44,040 --> 00:18:46,789 Hivyo bits wale wamekuwa kutumika kwa ajili ya maadili mengine, na kile Mimi nina kuona 464 00:18:46,789 --> 00:18:49,470 ni mabaki ya baadhi matumizi kabla ya kuwa kumbukumbu. 465 00:18:49,470 --> 00:18:53,350 >> Hivyo hakuna mpango mkubwa, kwa sababu kama hivi karibuni kama mimi aina ya pili na kisha magazeti y, 466 00:18:53,350 --> 00:18:55,640 ni initialized kwa thamani kwamba mimi nataka. 467 00:18:55,640 --> 00:18:57,400 Hivyo sasa, hebu kwenda mbele kasi kidogo. 468 00:18:57,400 --> 00:18:58,540 N kwa ajili ya pili. 469 00:18:58,540 --> 00:18:59,570 Hebu kufanya hivyo tena. 470 00:18:59,570 --> 00:19:00,530 Hebu kufanya hivyo tena. 471 00:19:00,530 --> 00:19:02,404 Lakini mimi si unataka hit hapa, kwa sababu kama mimi 472 00:19:02,404 --> 00:19:05,110 wanataka kuona nini kinaendelea ndani ya ya wabadilishane, nini amri? 473 00:19:05,110 --> 00:19:05,520 >> Watazamaji: hatua. 474 00:19:05,520 --> 00:19:06,436 >> DAVID J. Malan: hatua. 475 00:19:06,436 --> 00:19:09,800 Hivyo hii hatua yangu ndani ya kazi, badala ya juu yake. 476 00:19:09,800 --> 00:19:12,270 Na sasa, ni kidogo cryptic uaminifu, lakini hii ni 477 00:19:12,270 --> 00:19:14,581 kuniambia mimi nina katika line 33 sasa. 478 00:19:14,581 --> 00:19:15,580 Na hebu kufanya hii tena. 479 00:19:15,580 --> 00:19:16,080 Print temp. 480 00:19:16,080 --> 00:19:17,129 481 00:19:17,129 --> 00:19:20,170 Takataka thamani, hasi wakati huu, lakini hiyo ni bado thamani ya takataka. 482 00:19:20,170 --> 00:19:22,810 Basi hebu kufanya ijayo, magazeti temp. 483 00:19:22,810 --> 00:19:27,130 Ni initialized kwa 1, ambayo Ilikuwa thamani ya x, aka. 484 00:19:27,130 --> 00:19:29,110 >> Sasa, ambapo ni a wetu na X kuja kutoka? 485 00:19:29,110 --> 00:19:32,510 Naam, taarifa katika kuu, sisi kuitwa maadili haya x na y. 486 00:19:32,510 --> 00:19:34,740 Sisi basi kupita yao wabadilishane kama ifuatavyo. 487 00:19:34,740 --> 00:19:37,010 X alikuja kwanza, comma y. 488 00:19:37,010 --> 00:19:40,020 Na kisha, wabadilishane inaweza kuwaita x na y. 489 00:19:40,020 --> 00:19:42,630 Lakini kwa uwazi, ni kuwaita na b. 490 00:19:42,630 --> 00:19:45,970 Lakini a na b ni sasa kwenda kuwa nakala za x na y, kwa mtiririko huo. 491 00:19:45,970 --> 00:19:50,660 >> Hivyo kama mimi kurejea GDB, temp sasa ni moja na sasa ni moja. 492 00:19:50,660 --> 00:19:56,130 Lakini kama mimi kufanya ijayo na sasa kufanya magazeti a, a tayari wakiongozwa juu. 493 00:19:56,130 --> 00:20:00,030 maziwa amekwisha miminia wa zamani kioo juisi ya machungwa, au kinyume chake. 494 00:20:00,030 --> 00:20:04,750 >> Na kama mimi kufanya ijayo tena, na sasa kama mimi magazeti nje kama sanity hundi, 495 00:20:04,750 --> 00:20:07,687 a ni bado mbili, lakini b ni sasa moja. 496 00:20:07,687 --> 00:20:08,770 Kwa kweli, bado kuna. 497 00:20:08,770 --> 00:20:10,670 Mimi sijali nini temp ni. 498 00:20:10,670 --> 00:20:16,850 Lakini kwa haraka kama mimi sasa aina, hebu sema, kuendelea kwenda nyuma, sasa mimi nina mwishoni mwa 499 00:20:16,850 --> 00:20:17,480 mpango. 500 00:20:17,480 --> 00:20:20,730 Na kwa bahati mbaya, x ni bado moja na y ni bado mbili. 501 00:20:20,730 --> 00:20:22,272 >> Hivyo kile alikuwa matumizi ya GDB huko? 502 00:20:22,272 --> 00:20:23,980 Ni hakuwa na msaada kwangu kurekebisha tatizo per se, 503 00:20:23,980 --> 00:20:26,265 lakini hopefully kusaidia mimi kuelewa ni kwa kutambua 504 00:20:26,265 --> 00:20:30,000 kwamba ndiyo, mantiki yangu ni ya haki, lakini code yangu si hatimaye kuwa 505 00:20:30,000 --> 00:20:31,450 athari ya kudumu. 506 00:20:31,450 --> 00:20:34,570 Hivyo hiyo ni tatizo sisi ni kwenda sasa kutatua leo. 507 00:20:34,570 --> 00:20:37,870 >> Lakini hebu kupata huko kwa njia ya hii. 508 00:20:37,870 --> 00:20:39,230 String ni uongo. 509 00:20:39,230 --> 00:20:41,860 Yake, pia, si aina data kwamba ipo katika C. Ni 510 00:20:41,860 --> 00:20:44,750 imekuwa kisawe kwa baadhi muda kwa ajili ya kitu kingine, 511 00:20:44,750 --> 00:20:47,300 na tunaweza yanaonyesha kwamba kama ifuatavyo. 512 00:20:47,300 --> 00:20:53,282 >> Hebu kwenda mbele na kufungua mpango aitwaye kulinganisha-0. 513 00:20:53,282 --> 00:20:56,240 Na badala ya aina hii moja nje, tutaweza kuanza kutembea kwa njia ya code 514 00:20:56,240 --> 00:20:58,040 Mimi tayari aliandika, lakini ni tu mistari michache. 515 00:20:58,040 --> 00:20:59,570 Hivyo hii ni kulinganisha-0. 516 00:20:59,570 --> 00:21:02,380 Na jambo la kwanza mimi nina kufanya ni kupata mstari wa maandishi. 517 00:21:02,380 --> 00:21:05,610 >> Lakini taarifa ya nini mimi nina kufanya kwa mara ya kwanza. 518 00:21:05,610 --> 00:21:07,910 Nini ni tofauti kwa uwazi juu ya line 21? 519 00:21:07,910 --> 00:21:10,020 520 00:21:10,020 --> 00:21:11,402 Kwa kweli, kusubiri dakika. 521 00:21:11,402 --> 00:21:12,110 Hii ni nakala mbili. 522 00:21:12,110 --> 00:21:13,568 Hilo wala siyo hata mpango wa haki. 523 00:21:13,568 --> 00:21:14,780 Haki zote, spoiler tahadhari. 524 00:21:14,780 --> 00:21:16,890 Haki zote, hivyo kamwe akili kwamba. 525 00:21:16,890 --> 00:21:18,520 Hiyo ni jibu la swali siku zijazo. 526 00:21:18,520 --> 00:21:21,450 >> Hapa ni kulinganisha-0, na mimi nina kuhusu kupata mstari wa maandishi. 527 00:21:21,450 --> 00:21:22,435 Programu ya rahisi sana. 528 00:21:22,435 --> 00:21:23,560 Hivyo hii ni moja kwa moja. 529 00:21:23,560 --> 00:21:28,070 Hii ni kama wiki moja, Wiki Barua mambo wakati huu. kamba s = GetString. 530 00:21:28,070 --> 00:21:29,700 Sasa, mimi kusema tena hapa chini. 531 00:21:29,700 --> 00:21:31,830 kamba t = GetString. 532 00:21:31,830 --> 00:21:35,300 Na kisha, jambo la mwisho katika hii mpango, kama jina lake anapendekeza, 533 00:21:35,300 --> 00:21:37,090 ni mimi nina kwenda kujaribu kulinganisha yao. 534 00:21:37,090 --> 00:21:40,709 >> Hivyo kama s, kamba ya kwanza, sawa na t =, basi mimi nina 535 00:21:40,709 --> 00:21:42,250 kwenda kusema wewe aina kitu kimoja. 536 00:21:42,250 --> 00:21:44,291 Kingine, mimi nina kwenda kusema unapoandika mambo mbalimbali. 537 00:21:44,291 --> 00:21:45,880 Basi hebu kukusanya na kukimbia mpango huu. 538 00:21:45,880 --> 00:21:48,481 Hivyo kufanya kulinganisha sifuri. 539 00:21:48,481 --> 00:21:48,980 Inaonekana nzuri. 540 00:21:48,980 --> 00:21:50,490 Hakuna makosa mkusanyiko. 541 00:21:50,490 --> 00:21:52,386 >> Hebu kwenda mbele sasa na aina ./compare-0. 542 00:21:52,386 --> 00:21:55,230 543 00:21:55,230 --> 00:21:59,220 Hebu kwenda mbele na kusema kitu : Daven na kitu: Rob. 544 00:21:59,220 --> 00:22:00,450 Na mimi aina ya mambo mbalimbali. 545 00:22:00,450 --> 00:22:01,250 Hadi sasa, hivyo nzuri. 546 00:22:01,250 --> 00:22:02,680 Programu inaonekana kuwa sahihi. 547 00:22:02,680 --> 00:22:03,880 >> Lakini hebu kukimbia tena. 548 00:22:03,880 --> 00:22:05,800 Sema kitu: Gabe. 549 00:22:05,800 --> 00:22:07,140 Sema kitu: Gabe. 550 00:22:07,140 --> 00:22:08,520 551 00:22:08,520 --> 00:22:09,020 Wote haki. 552 00:22:09,020 --> 00:22:10,851 Labda mimi hit nafasi bar au kitu funky. 553 00:22:10,851 --> 00:22:11,600 Hebu kufanya hivyo tena. 554 00:22:11,600 --> 00:22:13,020 Hivyo Zamyla. 555 00:22:13,020 --> 00:22:13,970 556 00:22:13,970 --> 00:22:14,470 Zamyla. 557 00:22:14,470 --> 00:22:15,740 558 00:22:15,740 --> 00:22:17,330 Mambo mbalimbali. 559 00:22:17,330 --> 00:22:19,430 Hivyo ni nini kinaendelea? 560 00:22:19,430 --> 00:22:23,200 >> Hivyo tuna mistari hizi mbili za code, GetString kuitwa mara mbili. 561 00:22:23,200 --> 00:22:25,760 Na kisha, mimi nina tu kujaribu kulinganisha s na t. 562 00:22:25,760 --> 00:22:28,370 Lakini nini kweli basi kinachoendelea? 563 00:22:28,370 --> 00:22:31,180 Naam, handwriting yangu kuhusu kuwaueni mfano huu kwa kiasi fulani. 564 00:22:31,180 --> 00:22:34,630 Na hebu kweli kutupa hii up juu ya hapa, kama vile. 565 00:22:34,630 --> 00:22:37,390 566 00:22:37,390 --> 00:22:45,712 >> Hivyo tuna line kama kamba s = GetString. 567 00:22:45,712 --> 00:22:48,295 Hivyo kwamba ni tu kwanza kuvutia line kutoka mpango huo. 568 00:22:48,295 --> 00:22:49,920 569 00:22:49,920 --> 00:22:52,974 Lakini nini wakati huu wote imekuwa kinachoendelea chini ya Hood? 570 00:22:52,974 --> 00:22:55,890 Naam, juu ya mkono wa kushoto upande ni kamba, ambayo ni baadhi ya aina ya kutofautiana, 571 00:22:55,890 --> 00:22:56,785 na ni kuitwa s. 572 00:22:56,785 --> 00:23:00,019 Hivyo Mimi najua kuwa hii ni kwa kutumia kumbukumbu, au RAM, katika kompyuta yangu kwa namna fulani. 573 00:23:00,019 --> 00:23:02,060 Hivyo nina kwenda kwa abstractly kuteka kwamba kama mraba. 574 00:23:02,060 --> 00:23:04,820 32 bits, ni zamu nje, lakini zaidi juu ya kwamba katika siku zijazo. 575 00:23:04,820 --> 00:23:06,410 Na kisha, nini kinaendelea juu ya hapa? 576 00:23:06,410 --> 00:23:08,700 >> Naam, GetString ni wazi anapata kamba kutoka kwa mtumiaji. 577 00:23:08,700 --> 00:23:11,360 Na GetString got Zamyla au Gabe au Daven. 578 00:23:11,360 --> 00:23:14,640 Basi hebu kuchagua kwanza kati ya hizo, ambayo ilikuwa Daven. 579 00:23:14,640 --> 00:23:19,174 Hivyo kwa ufanisi, nini GetString got mimi katika kesi hiyo ya kwanza ilikuwa D-v-e-n. 580 00:23:19,174 --> 00:23:22,690 581 00:23:22,690 --> 00:23:25,045 Na kisha, nini mwingine alifanya ni nipe siri? 582 00:23:25,045 --> 00:23:25,920 Watazamaji: [inaudible] 583 00:23:25,920 --> 00:23:28,720 DAVID J. Malan: Yeah, / 0 au null tabia. 584 00:23:28,720 --> 00:23:30,550 Hivyo ni ufanisi alinipa kamba. 585 00:23:30,550 --> 00:23:34,550 Lakini sisi tayari kujua kutoka uliopita inaonekana kwamba string ni tu safu 586 00:23:34,550 --> 00:23:37,895 ya wahusika, na ni terminated na hii sentinel tabia maalum, / 0. 587 00:23:37,895 --> 00:23:39,220 588 00:23:39,220 --> 00:23:42,310 >> Lakini kama hii ni kweli na hii ni mraba, 589 00:23:42,310 --> 00:23:44,160 hii ni wazi Mstatili kubwa sana. 590 00:23:44,160 --> 00:23:46,830 Na hakika, hii ni, Mimi kudai, bits 32 tu. 591 00:23:46,830 --> 00:23:49,500 Na hii ni wazi zaidi ya 32 bits, kwa sababu hii pengine ni 592 00:23:49,500 --> 00:23:51,583 nane pamoja na nane pamoja na nane pamoja na nane pamoja na nane, 593 00:23:51,583 --> 00:23:53,320 kwa sababu tu ya ka katika ASCII. 594 00:23:53,320 --> 00:23:57,030 Jinsi heck ni sisi kwenda na kifafa Daven katika hili sanduku kidogo hapa? 595 00:23:57,030 --> 00:23:59,880 >> Naam, ni nini GetString kweli kufanya? 596 00:23:59,880 --> 00:24:03,680 Naam, gridi ya taifa hii hapa inawakilisha kumbukumbu ya kompyuta yangu au RAM. 597 00:24:03,680 --> 00:24:07,564 Basi hebu kiholela kusema kwamba kama kila moja ya haya inawakilisha Byte, 598 00:24:07,564 --> 00:24:09,730 basi tunaweza kufikiri ya kila Byte kama kuwa mitaani, 599 00:24:09,730 --> 00:24:13,830 kama 33 Oxford Street, au 34 Oxford Street, au 35 Oxford Street. 600 00:24:13,830 --> 00:24:16,700 >> Hivyo tu kama nyumba na anwani na majengo na anwani, 601 00:24:16,700 --> 00:24:19,810 hivyo kufanya ka ya mtu binafsi ya kumbukumbu na anwani au namba 602 00:24:19,810 --> 00:24:21,042 kwamba kipekee kutambua yao. 603 00:24:21,042 --> 00:24:22,000 Sasa, hii ni holela. 604 00:24:22,000 --> 00:24:25,370 Lakini kushika ni rahisi, mimi nina kwenda kwa kutumia hexadecimal tu kwa mkataba huo, 605 00:24:25,370 --> 00:24:28,200 lakini 0x ina maana chochote kuliko "hii ni hexadecimal." 606 00:24:28,200 --> 00:24:31,030 na mimi nina kwenda kudai kwamba "D" mwisho hadi saa Byte One katika kumbukumbu. 607 00:24:31,030 --> 00:24:34,210 >> I got kitu kingine kinachoendelea katika kumbukumbu, hivyo Daven got doa kwanza 608 00:24:34,210 --> 00:24:35,509 katika Byte One. 609 00:24:35,509 --> 00:24:36,800 Hii basi, ni kwenda kuwa 0x2. 610 00:24:36,800 --> 00:24:37,831 611 00:24:37,831 --> 00:24:38,705 Hii ni kwenda 0x3. 612 00:24:38,705 --> 00:24:39,840 613 00:24:39,840 --> 00:24:41,800 Hii ni kwenda kuwa 0x4. 614 00:24:41,800 --> 00:24:43,025 Hii ni kwenda 0x5. 615 00:24:43,025 --> 00:24:44,025 Hii ni kwenda kuwa 0x6. 616 00:24:44,025 --> 00:24:45,560 617 00:24:45,560 --> 00:24:48,290 >> Lakini mara moja kuanza kufikiri kuhusu nini matendo ya kompyuta 618 00:24:48,290 --> 00:24:50,710 chini ya Hood, unaweza kuanza kudai 619 00:24:50,710 --> 00:24:54,960 jinsi gani, baadhi ya miaka iliyopita, ingekuwa kutekelezwa C yenyewe. 620 00:24:54,960 --> 00:24:58,360 GetString pengine ni nini returning-- kwa sababu 621 00:24:58,360 --> 00:25:00,946 anahisi kama si kurudi Daven, per se, 622 00:25:00,946 --> 00:25:03,320 kwa sababu yeye hakika si kwenda fit katika hii box-- kidogo 623 00:25:03,320 --> 00:25:05,090 hivyo kile ni GetString pengine kurudi? 624 00:25:05,090 --> 00:25:07,958 625 00:25:07,958 --> 00:25:08,920 >> Watazamaji: [inaudible] 626 00:25:08,920 --> 00:25:10,540 >> DAVID J. Malan: eneo la Daven. 627 00:25:10,540 --> 00:25:12,770 Na imekuwa ni kufanya hivyo tangu wiki moja. 628 00:25:12,770 --> 00:25:16,150 Nini GetString ni kweli kurudi ni si kamba, per se. 629 00:25:16,150 --> 00:25:17,780 Hiyo ni moja ya nyeupe kidogo uongo. 630 00:25:17,780 --> 00:25:22,520 Ni kurudi pepe ya kamba katika kumbukumbu, anwani ya kipekee. 631 00:25:22,520 --> 00:25:24,820 Daven anaishi saa 33 Oxford Street. 632 00:25:24,820 --> 00:25:29,310 Lakini zaidi kwa ufupi, Gavin anaishi katika 0x1, anwani Idadi Mmoja. 633 00:25:29,310 --> 00:25:32,280 >> Basi nini anapata kuweka katika hii sanduku kidogo basi, kuwa wazi, 634 00:25:32,280 --> 00:25:35,930 ni tu pepe ya kamba hiyo. 635 00:25:35,930 --> 00:25:38,110 Hivyo muda wote huu, hii ina kinachoendelea. 636 00:25:38,110 --> 00:25:41,650 Lakini nini hii mwanga katika sasa ni kwamba kama kila s ina 637 00:25:41,650 --> 00:25:44,710 Idadi ya ndani yake, ambaye ni kuacha wewe, programu, 638 00:25:44,710 --> 00:25:47,970 kutoka kuweka idadi yoyote katika yoyote kutofautiana na kuruka tu 639 00:25:47,970 --> 00:25:49,080 kwa kuwa chunk ya kumbukumbu? 640 00:25:49,080 --> 00:25:51,320 Na hakika, tutaweza kuona hiyo ni tishio wakati ujao. 641 00:25:51,320 --> 00:25:53,500 >> Lakini kwa sasa, hii anahisi halitoshi. 642 00:25:53,500 --> 00:25:55,630 Kama mimi kusema, kupata yangu kamba, wewe nipe Daven. 643 00:25:55,630 --> 00:25:57,230 Lakini wewe si kweli nipe Daven. 644 00:25:57,230 --> 00:25:59,310 Wote nipe ni Daven ya mahali. 645 00:25:59,310 --> 00:26:04,310 Je, mimi kisha kujua kwa uhakika ambapo Daven huanza na ends-- 646 00:26:04,310 --> 00:26:07,140 hadithi ya kupata weird-- ambapo Daven huanza na kuishia, 647 00:26:07,140 --> 00:26:10,435 na kisha, karibu kamba katika kumbukumbu kuanza? 648 00:26:10,435 --> 00:26:11,520 649 00:26:11,520 --> 00:26:13,620 >> Naam, kama wewe ni kuwapatia me mwanzo wa Daven, 650 00:26:13,620 --> 00:26:17,230 kimsingi, jinsi gani mimi kujua ambapo mwisho wa jina lake ni? 651 00:26:17,230 --> 00:26:20,550 Hiyo maalum null tabia, ambayo ni muhimu zaidi sasa 652 00:26:20,550 --> 00:26:23,040 kama masharti chini ya kofia ni tu kutambuliwa 653 00:26:23,040 --> 00:26:25,820 kipekee na makazi yao katika kumbukumbu. 654 00:26:25,820 --> 00:26:28,130 Hivyo muda wote huu, hiyo ni nini imekuwa kinachoendelea. 655 00:26:28,130 --> 00:26:32,470 >> Hivyo wakati sisi kuangalia sasa katika code hapa, kueleza 656 00:26:32,470 --> 00:26:35,790 kama wewe ungekuwa mdudu katika line 26. 657 00:26:35,790 --> 00:26:39,560 Kwa nini ni Zamyla na Zamyla tofauti? 658 00:26:39,560 --> 00:26:41,330 Kwa nini ni Gabe na Gabe tofauti? 659 00:26:41,330 --> 00:26:42,154 Yeah, katika nyuma. 660 00:26:42,154 --> 00:26:43,390 >> Watazamaji: Wana anwani tofauti. 661 00:26:43,390 --> 00:26:45,931 >> DAVID J. Malan: Tu kwa sababu wana anwani tofauti. 662 00:26:45,931 --> 00:26:48,820 Kwa sababu wakati wewe piga GetString tena, ambayo mimi itabidi kufanya haraka hapa, 663 00:26:48,820 --> 00:26:52,870 kama hii ni mstari wa pili, kamba t, kama mimi katika mpango huo, 664 00:26:52,870 --> 00:26:55,030 sawa na mwingine wito kwa GetString. 665 00:26:55,030 --> 00:26:56,370 666 00:26:56,370 --> 00:26:58,670 wakati mwingine mimi wito GetString, mimi nina kwenda 667 00:26:58,670 --> 00:27:00,190 kupata chunk tofauti ya kumbukumbu. 668 00:27:00,190 --> 00:27:02,220 >> GetString ni kuruhusiwa kuuliza uendeshaji 669 00:27:02,220 --> 00:27:03,800 mfumo kwa ajili ya kumbukumbu zaidi na zaidi. 670 00:27:03,800 --> 00:27:07,894 Ni si kwenda kutumia tena huo ka sita kila wakati. 671 00:27:07,894 --> 00:27:09,810 Ni kwenda kupata mpya chunk ya kumbukumbu, ambayo 672 00:27:09,810 --> 00:27:12,780 ina maana t ni kwenda kupata baadhi thamani mengine zaidi ya hapa. 673 00:27:12,780 --> 00:27:15,380 >> Hivyo wakati mimi kufanya s ni sawa na = t, wewe si kulinganisha 674 00:27:15,380 --> 00:27:17,880 D dhidi ya huu na dhidi ya huu na V dhidi ya hii. 675 00:27:17,880 --> 00:27:19,588 Wewe ni kulinganisha hii dhidi ya hii, ambayo 676 00:27:19,588 --> 00:27:24,020 kusema ukweli ni pretty useful-- useless-- ni pretty haina maana, kwa sababu ambao kwa kweli 677 00:27:24,020 --> 00:27:25,830 anayejali ambapo masharti ni katika kumbukumbu? 678 00:27:25,830 --> 00:27:26,850 >> Na hakika, sisi si. 679 00:27:26,850 --> 00:27:28,980 Na sisi siyo kwenda kuanza hasa kujali. 680 00:27:28,980 --> 00:27:34,180 Tu kwa kiasi kwamba mende yanaweza kutokea na vitisho vya usalama yanaweza kutokea mapenzi 681 00:27:34,180 --> 00:27:36,100 sisi kweli kuanza huduma kuhusu hili. 682 00:27:36,100 --> 00:27:37,230 Basi hebu kurekebisha tatizo hili. 683 00:27:37,230 --> 00:27:39,650 Zamu nje, wewe kurekebisha super tu. 684 00:27:39,650 --> 00:27:42,600 >> Na hebu kweli, kabla ya mimi yanaonyesha kwamba tena, gani 685 00:27:42,600 --> 00:27:47,170 nini kama katika CS50 darasani, na wewe alikuwa na kutekeleza 686 00:27:47,170 --> 00:27:48,600 kulinganisha dhidi ya masharti mawili. 687 00:27:48,600 --> 00:27:51,440 You wazi hawezi tu kutumia s ni sawa na = t. 688 00:27:51,440 --> 00:27:54,090 Lakini tu mantiki, jinsi ingekuwa wewe kulinganisha kamba hii 689 00:27:54,090 --> 00:27:56,370 dhidi ya kamba hii kwa kutumia C kanuni? 690 00:27:56,370 --> 00:27:56,880 Yeah. 691 00:27:56,880 --> 00:27:58,780 >> Watazamaji: Tu kufanya kwa kitanzi [inaudible] 692 00:27:58,780 --> 00:28:00,670 693 00:28:00,670 --> 00:28:01,670 DAVID J. Malan: Perfect. 694 00:28:01,670 --> 00:28:02,900 Watazamaji: [inaudible] 695 00:28:02,900 --> 00:28:03,310 DAVID J. Malan: Yeah. 696 00:28:03,310 --> 00:28:05,390 Tu ya matumizi ya kwa kitanzi au a kitanzi wakati au chochote. 697 00:28:05,390 --> 00:28:08,710 Lakini tu kuomba wazo msingi kwamba kama hii ni chunk ya kumbukumbu au safu 698 00:28:08,710 --> 00:28:11,590 na hii ni, iterate juu ya wote wawili kwa wakati mmoja. 699 00:28:11,590 --> 00:28:12,960 Na tu kulinganisha barua. 700 00:28:12,960 --> 00:28:14,260 >> Na nimepata kuwa kidogo makini, kwa sababu wewe 701 00:28:14,260 --> 00:28:16,247 hawataki kidole moja kwenda nyuma ya nyingine 702 00:28:16,247 --> 00:28:18,080 kwa sababu kamba moja ni muda mrefu zaidi ya wengine. 703 00:28:18,080 --> 00:28:21,380 Hivyo wewe ni kwenda unataka kuangalia kwa hii thamani maalum mwishoni, null. 704 00:28:21,380 --> 00:28:24,017 Lakini kwa kweli ni, katika mwisho, kama rahisi kama hiyo. 705 00:28:24,017 --> 00:28:26,100 Na kusema ukweli, hatuna haja ya reinvent gurudumu hiyo. 706 00:28:26,100 --> 00:28:27,960 Hapa ni Version Barua. 707 00:28:27,960 --> 00:28:32,910 Na kile Mimi nina kwenda kusema hapa ni kwamba badala ya kulinganisha s ni sawa na = t, 708 00:28:32,910 --> 00:28:38,964 Mimi nina badala kwenda kusema, kama kamba kulinganisha s comma t sawa na = 0. 709 00:28:38,964 --> 00:28:40,130 Sasa, ni nini string kulinganisha? 710 00:28:40,130 --> 00:28:43,046 >> Ni zinageuka, ni kazi ambayo kuja na C, ambao lengo katika maisha 711 00:28:43,046 --> 00:28:44,650 ni kulinganisha masharti mawili. 712 00:28:44,650 --> 00:28:48,300 Na koroga kulinganisha, kama sisi kusoma wake mtu au nyaraka ukurasa au CS50 713 00:28:48,300 --> 00:28:50,630 kumbukumbu, itakuwa tu kukuambia kwamba koroga 714 00:28:50,630 --> 00:28:55,730 kulinganisha anarudi ama hasi idadi au idadi chanya au sifuri, 715 00:28:55,730 --> 00:28:57,660 ambapo zero maana wao ni sawa. 716 00:28:57,660 --> 00:28:58,570 >> Hivyo tu dhana tu. 717 00:28:58,570 --> 00:29:00,390 Nini kinaweza maana kama kuchochea anarudi kulinganisha 718 00:29:00,390 --> 00:29:02,110 thamani hasi au chanya thamani? 719 00:29:02,110 --> 00:29:02,785 720 00:29:02,785 --> 00:29:04,285 Watazamaji: Kubwa kuliko au chini ya. 721 00:29:04,285 --> 00:29:05,570 DAVID J. Malan: Yeah, kubwa zaidi kuliko au chini ya. 722 00:29:05,570 --> 00:29:08,640 Hivyo kama wewe alitaka kutatua nzima rundo ya masharti katika dictionary-- 723 00:29:08,640 --> 00:29:12,975 kama sisi hatimaye chini road-- kazi kamili kwa kutumia uwezekano, 724 00:29:12,975 --> 00:29:15,850 kwa sababu ni kwenda kufanya hivyo kulinganisha ya masharti kwa ajili yenu, na kuwaambia 725 00:29:15,850 --> 00:29:20,060 wewe gani huja kabla ya b, au gani b kuja kabla ya alphabetically. 726 00:29:20,060 --> 00:29:21,490 Tunaweza kufanya hasa kwamba. 727 00:29:21,490 --> 00:29:23,620 >> Na ilani mimi mtu mwingine kitu katika mfano huu. 728 00:29:23,620 --> 00:29:26,870 Nini kingine imebadilika juu up katika kazi hii kuu? 729 00:29:26,870 --> 00:29:28,500 730 00:29:28,500 --> 00:29:29,350 Char *. 731 00:29:29,350 --> 00:29:31,150 Na hii ni kwamba nyingine nyeupe uongo. 732 00:29:31,150 --> 00:29:33,750 Muda wote huu, wakati wewe wameweza wamekuwa kuandika kamba, 733 00:29:33,750 --> 00:29:38,350 tumekuwa siri rewriting kamba kama * Char ili Clang kweli 734 00:29:38,350 --> 00:29:39,270 anaelewa wewe. 735 00:29:39,270 --> 00:29:42,450 >> Kwa maneno mengine, katika CS50.h na kama tutaweza hatimaye kuona, 736 00:29:42,450 --> 00:29:45,950 sisi alifanya kamba kisawe kuitwa hiyo ni kitu kimoja kama * Char. 737 00:29:45,950 --> 00:29:49,910 Na kwa sasa, kujua tu kwamba *, Katika hali hii, angalau, 738 00:29:49,910 --> 00:29:51,286 ina maana mahali. 739 00:29:51,286 --> 00:29:52,210 >> anwani ya nini? 740 00:29:52,210 --> 00:29:56,390 Naam, ukweli kwamba mimi alisema * Char, na si int au kuelea * *, 741 00:29:56,390 --> 00:30:00,820 ina maana kwamba * Char ni pepe ya char. 742 00:30:00,820 --> 00:30:06,770 Hivyo hii sanduku kidogo hapa, aka kamba, ni kweli ya aina * Char, 743 00:30:06,770 --> 00:30:10,490 ambayo ni tu njia dhana ya kusema, katika sanduku hii kwenda ya mahali. 744 00:30:10,490 --> 00:30:12,430 Na je anwani kwamba rejea? 745 00:30:12,430 --> 00:30:13,780 Inavyoonekana, char. 746 00:30:13,780 --> 00:30:16,410 >> Lakini tunaweza kabisa na int * na mambo mengine. 747 00:30:16,410 --> 00:30:20,790 Lakini kwa sasa, * Char ni kweli zaidi moja kwa moja na moja ya riba. 748 00:30:20,790 --> 00:30:23,310 Hivyo tatizo hili ni kwenda kupanda, ingawa, tena. 749 00:30:23,310 --> 00:30:24,830 >> Tuseme mimi kufungua mpango huu. 750 00:30:24,830 --> 00:30:27,670 Hebu angalia kama sasa tunaweza kutabiri nini mbaya na kanuni hii. 751 00:30:27,670 --> 00:30:31,140 Hivyo katika mpango huu, nakala-0, mimi nina kwenda mbele na tena kuwaita 752 00:30:31,140 --> 00:30:34,190 GetString na kuhifadhi thamani katika s. 753 00:30:34,190 --> 00:30:38,800 >> Na kisha, kwa nini mimi kufanya hili, tu kama mawaidha kutoka wiki iliyopita? 754 00:30:38,800 --> 00:30:40,960 Sisi alifanya kusema kwamba GetString wakati mwingine anarudi null. 755 00:30:40,960 --> 00:30:42,793 Ina maana gani kama GetString anarudi null? 756 00:30:42,793 --> 00:30:45,040 757 00:30:45,040 --> 00:30:46,034 Kitu potoka. 758 00:30:46,034 --> 00:30:48,950 Ni pengine ina maana string ni pia kubwa, nje ya kompyuta ya kumbukumbu. 759 00:30:48,950 --> 00:30:51,724 Ni hutokea super, super, super mara chache, lakini inaweza kutokea. 760 00:30:51,724 --> 00:30:53,890 Tunataka kuangalia kwa ajili yake, na kwamba wote sisi ni kufanya. 761 00:30:53,890 --> 00:30:57,910 >> Kwa sababu tutaweza kuona sasa, kama huna kuanza kuangalia huongeza kwa ajili ya mambo 762 00:30:57,910 --> 00:31:00,870 kama null, waweza kweli kuanza kwenda 763 00:31:00,870 --> 00:31:03,106 kwa anwani katika kumbukumbu kwamba ni batili. 764 00:31:03,106 --> 00:31:05,980 Na wewe ni kwenda kuanza inducing zaidi na zaidi segmentation makosa. 765 00:31:05,980 --> 00:31:08,360 Au katika Mac au PC, tu kusababisha kompyuta hutegemea 766 00:31:08,360 --> 00:31:10,340 au mpango wa kufungia, uwezekano. 767 00:31:10,340 --> 00:31:14,930 >> Hivyo sasa, mimi kudai katika nakala-0.c, kwamba mimi naenda nakala masharti hayo kwa njia 768 00:31:14,930 --> 00:31:15,685 ya mstari 28. 769 00:31:15,685 --> 00:31:16,850 770 00:31:16,850 --> 00:31:18,750 Na kisha, mimi nina kwenda kudai chini 771 00:31:18,750 --> 00:31:21,430 hapa kwamba mimi nina kwenda kubadili mmoja wao. 772 00:31:21,430 --> 00:31:22,330 >> Hivyo taarifa hii. 773 00:31:22,330 --> 00:31:24,370 Mimi nina wito rafiki yetu ya zamani strlen. 774 00:31:24,370 --> 00:31:28,960 Na tu kueleza katika lugha ya Kiingereza nini mstari huu 34 ni kufanya? 775 00:31:28,960 --> 00:31:32,480 Je t bracket 0 kuwakilisha upande wa kushoto. 776 00:31:32,480 --> 00:31:32,980 Yeah. 777 00:31:32,980 --> 00:31:34,339 >> Watazamaji: tabia ya Kwanza ya t? 778 00:31:34,339 --> 00:31:35,880 DAVID J. Malan: tabia ya Kwanza ya t. 779 00:31:35,880 --> 00:31:36,379 Hiyo ni. 780 00:31:36,379 --> 00:31:40,024 Tabia ya kwanza ya t, nataka hawawajui version uppercase 781 00:31:40,024 --> 00:31:41,190 ya tabia ya kwanza katika t. 782 00:31:41,190 --> 00:31:43,200 Hivyo hii ni pamoja na kuyafanyia barua ya kwanza. 783 00:31:43,200 --> 00:31:46,340 Na kisha, jambo la mwisho sana mimi kufanya katika mpango huu ni mimi kudai hapa 784 00:31:46,340 --> 00:31:50,340 awali, s, na hapa ni nakala, t. 785 00:31:50,340 --> 00:31:54,610 >> Lakini kulingana na hadithi sisi tu aliiambia kuhusu nini kweli ni masharti, 786 00:31:54,610 --> 00:31:57,520 ni nini line 28 kweli kufanya, na kile ni 787 00:31:57,520 --> 00:31:59,405 mdudu kusababisha kwenda kuwa juu ya screen? 788 00:31:59,405 --> 00:32:01,300 789 00:32:01,300 --> 00:32:03,500 >> Hivyo kwanza, swali la kwanza, 28. 790 00:32:03,500 --> 00:32:09,040 Je, ni kamba t = s kweli kufanya? 791 00:32:09,040 --> 00:32:16,430 Kama tuna juu ya mkono wa kushoto upande hapa kamba t = s; 792 00:32:16,430 --> 00:32:19,400 kwamba anatoa mimi sanduku moja hapa na sanduku moja hapa. 793 00:32:19,400 --> 00:32:25,530 Na kudhani anwani hii ni 0x, hebu sema, 50 wakati huu, kiholela. 794 00:32:25,530 --> 00:32:28,847 Je kamba t = s kufanya chini ya Hood? 795 00:32:28,847 --> 00:32:30,340 >> Watazamaji: [inaudible] 796 00:32:30,340 --> 00:32:34,100 >> DAVID J. Malan: Ni maduka kumbukumbu kushughulikia huko, ili 0x50 huenda huko. 797 00:32:34,100 --> 00:32:37,980 Hivyo kama sasa, mimi kwenda kwanza tabia katika t na uppercase yake, 798 00:32:37,980 --> 00:32:39,535 nini mimi kufanya kwa ufanisi kwa s? 799 00:32:39,535 --> 00:32:41,300 800 00:32:41,300 --> 00:32:43,450 Mimi nina kweli kufanya kitu kimoja, sawa? 801 00:32:43,450 --> 00:32:47,680 Kwa sababu kama ya mitaani 0x50-- na ya haki, mimi hawana chumba mengi juu ya bodi hapa, 802 00:32:47,680 --> 00:32:51,750 lakini kudhani kwamba hii ni 0x50 hapa chini, mahali fulani katika kumbukumbu ya kompyuta yangu. 803 00:32:51,750 --> 00:32:55,825 >> Na mimi, kwa mfano, Gabe Herufi za chini katika hapa, kama hii. 804 00:32:55,825 --> 00:32:57,120 805 00:32:57,120 --> 00:33:01,980 Nami nimesema t bracket 0 anapata mtaji. 806 00:33:01,980 --> 00:33:04,860 Naam, t bracket 0 ni barua ya kwanza katika t. 807 00:33:04,860 --> 00:33:07,840 Hivyo g kidogo ni kwenda kuwa kubwa G. Lakini tatizo 808 00:33:07,840 --> 00:33:09,410 ni, je, s pia uhakika na? 809 00:33:09,410 --> 00:33:10,300 >> Watazamaji: moja. 810 00:33:10,300 --> 00:33:11,841 >> DAVID J. Malan: kitu hicho hicho halisi. 811 00:33:11,841 --> 00:33:16,342 Hivyo maelezo rahisi labda, hata kama syntax ni kidogo weird. 812 00:33:16,342 --> 00:33:17,050 Basi hebu kufanya hili. 813 00:33:17,050 --> 00:33:20,210 Tengeneza nakala-0 na kisha ./copy-0. 814 00:33:20,210 --> 00:33:21,820 815 00:33:21,820 --> 00:33:24,110 Sema kitu: Gabe. 816 00:33:24,110 --> 00:33:26,760 Na kwa bahati mbaya, wote wawili wa yao sasa imekuwa mtaji, 817 00:33:26,760 --> 00:33:29,500 lakini kwa kuwa msingi sababu kwamba sisi ni tu 818 00:33:29,500 --> 00:33:32,350 sasa kukabiliana na anwani. 819 00:33:32,350 --> 00:33:36,470 >> Hivyo ni jinsi gani sisi kuanza address-- no pun intended-- 820 00:33:36,470 --> 00:33:39,270 jinsi gani sisi kuanza kushughulikia tatizo hili hasa? 821 00:33:39,270 --> 00:33:44,400 Naam, katika copy1.c, mambo yanakwenda kupata kidogo ngumu zaidi. 822 00:33:44,400 --> 00:33:49,310 Lakini napenda kudai conceptually rahisi ufumbuzi. 823 00:33:49,310 --> 00:33:50,852 >> Kwa bidii ili kupata katika mtazamo wa kwanza. 824 00:33:50,852 --> 00:33:53,560 Si kwenda kuwa rahisi kwa mara ya kwanza wakati unapoandika nje, pengine, 825 00:33:53,560 --> 00:33:57,440 lakini kama tatizo ni kwamba tu kufanya t = s tu 826 00:33:57,440 --> 00:33:59,694 nakala ya mitaani, nini, tena kama naweza kuchukua juu ya wewe, 827 00:33:59,694 --> 00:34:02,110 ni kwenda kuwa suluhisho kwa kweli kuiga kamba? 828 00:34:02,110 --> 00:34:04,906 829 00:34:04,906 --> 00:34:06,770 >> Watazamaji: Sisi itabidi pengine kutumia kitanzi tena. 830 00:34:06,770 --> 00:34:06,890 >> DAVID J. Malan: Yeah. 831 00:34:06,890 --> 00:34:08,390 Hivyo sisi ni kwenda haja ya kitanzi tena. 832 00:34:08,390 --> 00:34:11,800 Na kwa sababu kama tunataka nakala kamba s katika string mwingine, 833 00:34:11,800 --> 00:34:14,120 sisi pengine wanataka kufanya hivyo tabia kwa tabia. 834 00:34:14,120 --> 00:34:17,199 Lakini tatizo ni, kama hii ni awali s, 835 00:34:17,199 --> 00:34:22,159 sasa tunahitaji kuanza kupanga kugawa kumbukumbu kwa ajili ya t. 836 00:34:22,159 --> 00:34:24,320 >> Kwa maneno mengine, hebu redraw mara ya mwisho hii moja. 837 00:34:24,320 --> 00:34:28,659 Kama hii ni kamba s = GetString. 838 00:34:28,659 --> 00:34:30,956 839 00:34:30,956 --> 00:34:32,455 Na hebu kuweka hii up hapa, kama vile. 840 00:34:32,455 --> 00:34:36,639 841 00:34:36,639 --> 00:34:37,420 Hii ni GetString. 842 00:34:37,420 --> 00:34:39,070 843 00:34:39,070 --> 00:34:43,860 Na kisha, picha kwa ajili ya kitu kama kwamba ni kwenda kuwa kama kabla, 844 00:34:43,860 --> 00:34:44,360 g-b-e- / 0. 845 00:34:44,360 --> 00:34:47,294 846 00:34:47,294 --> 00:34:48,960 Kwamba inaonekana kitu kidogo kama hii. 847 00:34:48,960 --> 00:34:53,650 Na s hiyo, sisi wito huu 0x50, na kwamba kinaendelea kuwa 51, 52. 848 00:34:53,650 --> 00:34:54,409 >> Hivyo hii ni 0x50. 849 00:34:54,409 --> 00:34:55,679 850 00:34:55,679 --> 00:34:59,690 Na kisha, mimi kufanya string t. 851 00:34:59,690 --> 00:35:02,450 Katika kumbukumbu, hiyo ni kwenda tu kwa nipe mraba kidogo kama hii. 852 00:35:02,450 --> 00:35:04,080 Basi nini hatua muhimu sasa? 853 00:35:04,080 --> 00:35:09,870 Kama mimi nataka nakala s katika t, nini tupu gani sisi haja ya kujaza katika hapa? 854 00:35:09,870 --> 00:35:12,050 Au je, sisi haja ya kufanya katika ngazi ya juu? 855 00:35:12,050 --> 00:35:14,101 856 00:35:14,101 --> 00:35:14,600 Yeah? 857 00:35:14,600 --> 00:35:16,200 858 00:35:16,200 --> 00:35:17,020 Mtu? 859 00:35:17,020 --> 00:35:17,690 Yeah. 860 00:35:17,690 --> 00:35:19,214 >> Watazamaji: Tunahitaji [inaudible]. 861 00:35:19,214 --> 00:35:21,380 DAVID J. Malan: Yeah, sisi haja ya kujaza tupu hii. 862 00:35:21,380 --> 00:35:24,340 Siwezi nakala na kisha capitalize jina Gabe ya 863 00:35:24,340 --> 00:35:28,120 mpaka mimi kuuliza mfumo wa uendeshaji kwa chunk nyingine ya kumbukumbu 864 00:35:28,120 --> 00:35:30,640 kwamba angalau kama kubwa kama awali. 865 00:35:30,640 --> 00:35:32,130 Hivyo kwamba zinatuacha na swali. 866 00:35:32,130 --> 00:35:36,080 >> Je, mimi kuuliza mfumo wa uendeshaji si tu kwa ajili ya rahisi pointer-- kidogo 867 00:35:36,080 --> 00:35:38,530 kama hii inaitwa, ya mitaani, pointer-- si 868 00:35:38,530 --> 00:35:40,980 kwa rahisi sanduku kidogo kama hii inayoitwa kamba? 869 00:35:40,980 --> 00:35:44,200 Je, mimi kuuliza uendeshaji mfumo kwa chunk kubwa ya kumbukumbu? 870 00:35:44,200 --> 00:35:48,430 Hivi sasa, nimekuwa tu waliopata kuwa nyuma moja kwa moja kwa wito GetString. 871 00:35:48,430 --> 00:35:50,740 Hivyo ni jinsi ni GetString hata kupata kumbukumbu yake? 872 00:35:50,740 --> 00:35:53,430 >> Naam, ni zamu nje kwamba kuna kazi nyingine hii hapa 873 00:35:53,430 --> 00:35:55,160 kwamba tutaweza sasa kuanza kutumia. 874 00:35:55,160 --> 00:35:59,780 Sasa, hii inaonekana njia zaidi cryptic than-- na mimi ni mmoja tu ambaye anaweza kuona it-- 875 00:35:59,780 --> 00:36:03,150 mstari huu inaonekana njia zaidi cryptic kisha ni lazima katika mtazamo wa kwanza. 876 00:36:03,150 --> 00:36:04,650 Lakini hebu tease ni mbali. 877 00:36:04,650 --> 00:36:07,950 >> Kwa upande wa mkono wa kushoto, nina char * t. 878 00:36:07,950 --> 00:36:13,280 Hivyo katika Kiingereza, hebu kuanza kuunda hukumu sahihi katika jargon ya kiufundi. 879 00:36:13,280 --> 00:36:19,757 Hivyo hii ni kugawa variable ya aina * Char kuitwa t. 880 00:36:19,757 --> 00:36:21,090 Sasa, je, hiyo kweli maana? 881 00:36:21,090 --> 00:36:23,881 >> Naam, hiyo ina maana, je, Mimi naenda kuweka katika variable hii inaitwa t? 882 00:36:23,881 --> 00:36:24,780 883 00:36:24,780 --> 00:36:26,402 pepe ya char. 884 00:36:26,402 --> 00:36:28,360 Hivyo hiyo ni rahisi, zaidi ya kuridhisha njia 885 00:36:28,360 --> 00:36:29,930 ya kuelezea upande wa mkono wa kushoto. 886 00:36:29,930 --> 00:36:32,890 Hivyo kwamba inajenga sanduku hili hapa tu. 887 00:36:32,890 --> 00:36:34,760 Hivyo upande wa kulia, labda, ni kwenda 888 00:36:34,760 --> 00:36:37,170 kutenga kuwa kubwa chunk ya kumbukumbu jinsi gani? 889 00:36:37,170 --> 00:36:38,340 Basi hebu tease hii mbali. 890 00:36:38,340 --> 00:36:41,131 >> Ni balaa katika mtazamo wa kwanza, lakini nini kinaendelea ndani ya hapa? 891 00:36:41,131 --> 00:36:43,740 Kwanza, kuna malloc, ambayo ni inaonekana rafiki yetu mpya, 892 00:36:43,740 --> 00:36:45,450 "Kumbukumbu kutenga." 893 00:36:45,450 --> 00:36:49,560 Hivyo hii ni hoja kuwa alipita ndani yake, hivyo ni hoja pretty kubwa. 894 00:36:49,560 --> 00:36:50,970 Basi hebu tease hii mbali. 895 00:36:50,970 --> 00:36:53,410 >> strlen ya s, bila shaka, inawakilisha the-- 896 00:36:53,410 --> 00:36:54,142 897 00:36:54,142 --> 00:36:55,600 Watazamaji: idadi ya wahusika. 898 00:36:55,600 --> 00:36:56,710 DAVID J. Malan: Tu idadi ya wahusika katika s. 899 00:36:56,710 --> 00:36:59,040 Hivyo urefu wa s, kamba ya awali. 900 00:36:59,040 --> 00:37:00,350 Hivyo G-b-e. 901 00:37:00,350 --> 00:37:02,320 Hivyo ni pengine nne katika kesi hii. 902 00:37:02,320 --> 00:37:05,485 Kwa nini mimi kufanya 1 baada ya wito strlen ya s? 903 00:37:05,485 --> 00:37:06,360 Watazamaji: [inaudible] 904 00:37:06,360 --> 00:37:07,590 DAVID J. Malan: Kwa kuwa maalum null tabia. 905 00:37:07,590 --> 00:37:11,260 Kama unaniuliza nini urefu wa Jina Gabe ya, Mimi kwenda kusema minne. 906 00:37:11,260 --> 00:37:14,480 Chini ya Hood, ingawa, mimi haja kwamba Byte tano for null tabia. 907 00:37:14,480 --> 00:37:16,100 Hivyo ndiyo sababu mimi nina kufanya 1. 908 00:37:16,100 --> 00:37:21,730 >> Sasa tu katika kesi wewe ni mbio hii programu katika kompyuta nyingine kuliko, kusema, 909 00:37:21,730 --> 00:37:24,610 CS50 appliance, ambapo ukubwa wa char 910 00:37:24,610 --> 00:37:26,350 inaweza kuwa tofauti kutoka computer-- yangu mwenyewe 911 00:37:26,350 --> 00:37:30,590 zinageuka kuwa siwezi kuwaita hii operator sizeof, tu kuuliza kompyuta, 912 00:37:30,590 --> 00:37:32,870 nini ni ukubwa wa Char kwenye kompyuta hii? 913 00:37:32,870 --> 00:37:37,400 >> Na kwa kuzidisha tano katika hii mfano na ukubwa wa Char, ambayo 914 00:37:37,400 --> 00:37:40,440 juu ya kompyuta nyingi mapenzi tu kuwa moja, malloc 915 00:37:40,440 --> 00:37:44,830 ni kwenda kutenga kwa ajili yangu hii kubwa chunk ya kumbukumbu juu ya hapa juu ya haki. 916 00:37:44,830 --> 00:37:47,140 Na itakuja kwa return-- ni function-- hivyo ni 917 00:37:47,140 --> 00:37:48,265 kwenda na kurudi kwangu nini? 918 00:37:48,265 --> 00:37:50,914 919 00:37:50,914 --> 00:37:51,830 Watazamaji: anwani? 920 00:37:51,830 --> 00:37:53,709 DAVID J. Malan: anwani ya nini? 921 00:37:53,709 --> 00:37:55,250 Watazamaji: Bila kumbukumbu ni zilizotengwa? 922 00:37:55,250 --> 00:37:56,450 DAVID J. Malan: Bila kumbukumbu ni zilizotengwa. 923 00:37:56,450 --> 00:37:59,189 Kwa hiyo mimi hawana wazo, kusema ukweli, ambapo hii ni kwenda kuishia. 924 00:37:59,189 --> 00:38:01,480 Mimi nina kwenda kupendekeza kwamba ni kwenda kuishia katika 0x88. 925 00:38:01,480 --> 00:38:02,770 926 00:38:02,770 --> 00:38:06,009 Kabisa holela, lakini mahali fulani zaidi ya 0x50, 927 00:38:06,009 --> 00:38:08,800 kwa sababu mfumo wa uendeshaji, nini Windows na Mac OS kufanya kwa ajili yangu, ni 928 00:38:08,800 --> 00:38:11,230 kuhakikisha kwamba ni kutoa mimi chunks mbalimbali ya RAM. 929 00:38:11,230 --> 00:38:14,210 >> Hivyo hii ni thamani ambapo hii chunk ya kumbukumbu inaweza kuishia. 930 00:38:14,210 --> 00:38:16,060 Hivyo hii ni nini mwisho juu katika hapa, 0x88. 931 00:38:16,060 --> 00:38:17,480 932 00:38:17,480 --> 00:38:21,570 Hivyo sasa wazi, siwezi kuelewa kwamba hii si sawa na kama hii, 933 00:38:21,570 --> 00:38:23,960 kwa sababu wao ni akizungumzia katika chunks mbalimbali ya kumbukumbu. 934 00:38:23,960 --> 00:38:29,980 Hivyo kama mimi sasa kweli wanataka nakala hii katika, hebu kufanya ufumbuzi wako mapendekezo. 935 00:38:29,980 --> 00:38:36,870 >> Hebu tu kwenda, kujenga kwa kitanzi, na kufanya t bracket i anapata s bracket i. 936 00:38:36,870 --> 00:38:39,760 Kwa sababu sasa naweza kutumia hii safu-kama nukuu, 937 00:38:39,760 --> 00:38:43,390 kwa sababu hata kama malloc sana generically kutenga mimi kumbukumbu, 938 00:38:43,390 --> 00:38:45,290 kumbukumbu ni ka tu contiguous. 939 00:38:45,290 --> 00:38:47,240 Byte, Byte, Byte, nyuma kwa nyuma kwa nyuma. 940 00:38:47,240 --> 00:38:50,030 >> Naweza hakika kama programu kutibu kama safu, ambayo 941 00:38:50,030 --> 00:38:55,090 ina maana naweza kutumia hii hatimaye ukoo nukuu ya baadhi tu ya mabano mraba. 942 00:38:55,090 --> 00:38:56,462 943 00:38:56,462 --> 00:39:00,020 >> Hivyo basi mimi pause huko, kwa sababu hii ni mengi wote kwa mara moja, hata 944 00:39:00,020 --> 00:39:03,530 ingawa wazo msingi kwa kurejea ni kamba kwamba, muda wote huu, 945 00:39:03,530 --> 00:39:05,550 ni si data mpya aina per se. 946 00:39:05,550 --> 00:39:10,150 Ni tu kinachojulikana pointer, anwani ya tabia, 947 00:39:10,150 --> 00:39:12,650 ambayo ina maana tu ni idadi kwamba kwa mkataba wa binadamu 948 00:39:12,650 --> 00:39:15,350 sisi huwa na kuandika kama 0x kitu. 949 00:39:15,350 --> 00:39:18,590 >> Lakini ni tu ya simu, kama 33 Oxford Street, 950 00:39:18,590 --> 00:39:20,530 ambayo hufanyika kuwa CS jengo la mahali. 951 00:39:20,530 --> 00:39:22,000 952 00:39:22,000 --> 00:39:23,545 Maswali yoyote juu ya maelezo haya? 953 00:39:23,545 --> 00:39:24,790 954 00:39:24,790 --> 00:39:25,289 Yeah? 955 00:39:25,289 --> 00:39:28,530 >> Watazamaji: Kwa nini sisi kuangalia kwa t sawa na null? 956 00:39:28,530 --> 00:39:30,740 >> DAVID J. Malan: Kwa nini sisi kuangalia kwa t sawa na null? 957 00:39:30,740 --> 00:39:33,250 Kama sisi kusoma documentation-- question-- kubwa kwa malloc, 958 00:39:33,250 --> 00:39:37,020 ni kwenda kusema katika magazeti faini, wakati mwingine malloc ili kurudi null, 959 00:39:37,020 --> 00:39:38,080 tu kama GetString. 960 00:39:38,080 --> 00:39:41,820 Na hakika, GetString anarudi null kama, kwa upande wake, malloc anarudi null, 961 00:39:41,820 --> 00:39:43,130 kwa sababu GetString anatumia malloc. 962 00:39:43,130 --> 00:39:46,400 >> Na kwamba kinaweza kutokea ikiwa OS, Mac OS, Windows, chochote, ni tu 963 00:39:46,400 --> 00:39:48,130 nje ya kumbukumbu kwa ajili yenu. 964 00:39:48,130 --> 00:39:49,820 Hivyo kwamba ni nini kilichotokea huko. 965 00:39:49,820 --> 00:39:52,910 >> Na napenda yatangaza jambo moja nyingine kwamba ili tu pigo akili yako 966 00:39:52,910 --> 00:39:55,100 au kabisa kuwa mbali pia juu ya line. 967 00:39:55,100 --> 00:39:59,770 Lakini ngoja kuvuta up sawa kwa kitanzi kwa kuiga, 968 00:39:59,770 --> 00:40:05,480 ambayo wakati iliyopita, kukumbuka mara huu. t bracket i anapata s bracket i. 969 00:40:05,480 --> 00:40:06,740 >> Nice na user-kirafiki. 970 00:40:06,740 --> 00:40:09,330 Anahisi kama Wiki Barua tena. 971 00:40:09,330 --> 00:40:14,920 Lakini toleo hili kweli unaweza kuwa kuandikwa upya kama hii, ambayo inaonekana cryptic. 972 00:40:14,920 --> 00:40:18,280 Ni mbinu ya kuitwa pointer hesabu, anwani hesabu. 973 00:40:18,280 --> 00:40:19,600 Lakini kwa nini gani kazi hii? 974 00:40:19,600 --> 00:40:22,220 >> Sasa annoyingly, waandishi wa C aliamua kutumia 975 00:40:22,220 --> 00:40:25,070 * Ishara kwa malengo tofauti. 976 00:40:25,070 --> 00:40:29,020 Tumeona ni kutumika mara moja tayari, * Char, ambayo ina maana ya "nipe variable 977 00:40:29,020 --> 00:40:31,210 ambayo inaenda vyenye pepe ya char. " 978 00:40:31,210 --> 00:40:33,990 Hivyo * Char katika mazingira maana yake ni "nipe variable." 979 00:40:33,990 --> 00:40:40,050 >> Kwa bahati mbaya, kama wewe kutumia * bila neno mbele yake, kama Char, 980 00:40:40,050 --> 00:40:41,905 ni sasa inaitwa dereference operator. 981 00:40:41,905 --> 00:40:43,530 Na tutaweza kuona zaidi ya hii kabla ya muda mrefu. 982 00:40:43,530 --> 00:40:44,930 Lakini ni tu ina maana ya "kwenda huko." 983 00:40:44,930 --> 00:40:49,070 Ni kama kusema, kama mtu mitupu yangu juu ya kipande cha karatasi "33 Oxford Street," 984 00:40:49,070 --> 00:40:53,830 kama mimi kufanya "* 33 Oxford Street," hiyo ina maana "Kwenda chini ya barabara ya jengo CS." 985 00:40:53,830 --> 00:40:57,220 >> Hivyo * tu ina maana kwenda huko kama hakuna neno katika mbele yake. 986 00:40:57,220 --> 00:40:59,100 Kwa hiyo kile ni t, kuwa wazi? 987 00:40:59,100 --> 00:41:03,250 t ni pepe ya chunk ya kumbukumbu ambayo ilitolewa nyuma yangu. 988 00:41:03,250 --> 00:41:06,650 s ni anwani ya nini, kuwa wazi, katika mfano tumekuwa kujadili, 989 00:41:06,650 --> 00:41:07,500 ya lowercase Gabe? 990 00:41:07,500 --> 00:41:08,990 991 00:41:08,990 --> 00:41:10,005 s ni mahali of-- 992 00:41:10,005 --> 00:41:11,585 993 00:41:11,585 --> 00:41:12,460 Watazamaji: kamba. 994 00:41:12,460 --> 00:41:14,126 DAVID J. Malan: Of Gabe ya jina ya awali. 995 00:41:14,126 --> 00:41:16,660 Hivyo ni pepe ya chunk hii ya kumbukumbu. 996 00:41:16,660 --> 00:41:22,220 Hivyo kama mimi kusema t + i-- i, angalia, ni tu rafiki yetu ya zamani. 997 00:41:22,220 --> 00:41:24,770 Ni tu index variable hiyo iterating kutoka sifuri juu ya up 998 00:41:24,770 --> 00:41:26,960 kwa urefu wa kamba s. 999 00:41:26,960 --> 00:41:30,367 Hivyo ni kwenda kuwa sifuri, basi moja, kisha mbili, kisha tatu, kisha nne. 1000 00:41:30,367 --> 00:41:33,200 Basi hebu kukusanyika hizi mpya Puzzle vipande Scratch-kama, kama wewe, 1001 00:41:33,200 --> 00:41:36,140 hata ingawa, tena, syntax ni mbali zaidi kuliko arcane Scratch. 1002 00:41:36,140 --> 00:41:39,522 Hivyo t ni anwani + i ni kwenda nipe 1003 00:41:39,522 --> 00:41:42,480 idadi, kwa sababu haya yote ni namba kwamba sisi tumekuwa kuchora kama hex. 1004 00:41:42,480 --> 00:41:43,560 Lakini wao ni idadi tu. 1005 00:41:43,560 --> 00:41:49,960 >> Hivyo kama pepe ya t sisi alisema mara 0x88, nini 0x88 pamoja na sifuri. 1006 00:41:49,960 --> 00:41:51,564 1007 00:41:51,564 --> 00:41:53,980 Hata kama wewe ni si vizuri na hex bado, kuchukua nadhani. 1008 00:41:53,980 --> 00:41:54,410 >> Watazamaji: ya awali. 1009 00:41:54,410 --> 00:41:55,850 >> DAVID J. Malan: Bado 0x88. 1010 00:41:55,850 --> 00:41:58,910 Kwa hiyo ni nini * 0x88 maana yake nini? 1011 00:41:58,910 --> 00:42:02,670 Ni maana yake, "kwenda huko" ambayo ina maana ya kwa ufanisi, "kuweka kidole yako hapa." 1012 00:42:02,670 --> 00:42:06,930 Na sasa juu ya upande wa kulia wa msemo huu, * na kisha katika parens, 1013 00:42:06,930 --> 00:42:11,586 s + i maana s, ambayo ni kushughulikia hadi hapa ya g kidogo. 1014 00:42:11,586 --> 00:42:16,220 s + 0 ni, bila shaka, s, s chochote ni. 1015 00:42:16,220 --> 00:42:21,230 >> Hivyo sasa, ni * s, ambayo tu kama * 33 Oxford Street ina maana kwenda mahali 1016 00:42:21,230 --> 00:42:22,010 s. 1017 00:42:22,010 --> 00:42:24,170 Hivyo hapa ni kidole hii, mkono wa kulia. 1018 00:42:24,170 --> 00:42:26,050 Basi nini mimi kwenda nakala katika nini? 1019 00:42:26,050 --> 00:42:30,260 kitu juu ya haki, ambayo ni Gabe, g kidogo hapa, katika hapa. 1020 00:42:30,260 --> 00:42:32,750 >> Na hivyo athari za kuwa iteration kwanza ya kitanzi, 1021 00:42:32,750 --> 00:42:36,200 kama wewe mapendekezo, ingawa inaonekana mambo ngumu zaidi kuliko kitu chochote 1022 00:42:36,200 --> 00:42:42,110 tumeona kabla, ni tu kusema kwenda hapa na nakala ya kwamba tabia hapa. 1023 00:42:42,110 --> 00:42:44,700 Ni kutoa ramani kwa sehemu zote. 1024 00:42:44,700 --> 00:42:46,130 >> Na tutaweza kuona mbali zaidi ya hili. 1025 00:42:46,130 --> 00:42:50,600 Lakini kwa sasa, matumaini ni tu kwa kuanzisha baadhi ya mawazo haya ya msingi. 1026 00:42:50,600 --> 00:42:53,550 Na hakika, hebu tuangalie moja mpango wa mwisho hapa, 1027 00:42:53,550 --> 00:42:57,480 na kisha claymation ahadi, ambayo itafanya kila kitu sawa. 1028 00:42:57,480 --> 00:42:57,980 Wote haki. 1029 00:42:57,980 --> 00:43:01,680 Hivyo basi mimi kufungua huko sisi kwenda up--. 1030 00:43:01,680 --> 00:43:02,850 1031 00:43:02,850 --> 00:43:05,440 Hivyo basi me-- tutaweza kurudi kwa picha hii kabla ya muda mrefu. 1032 00:43:05,440 --> 00:43:08,360 Hebu kufungua mfano hii ya mwisho hapa. 1033 00:43:08,360 --> 00:43:09,440 1034 00:43:09,440 --> 00:43:12,710 >> Hivyo hapa ni super, super mpango kwamba accomplishes 1035 00:43:12,710 --> 00:43:15,050 kitu katika maisha kwamba hana yafuatayo. 1036 00:43:15,050 --> 00:43:18,740 Ni kwanza anatangaza vigezo mbili, x na y, ambayo si namba wakati huu, 1037 00:43:18,740 --> 00:43:19,240 per se. 1038 00:43:19,240 --> 00:43:20,448 Wao ni si integers, per se. 1039 00:43:20,448 --> 00:43:22,899 Wao ni inaonekana int *. 1040 00:43:22,899 --> 00:43:25,690 Hivyo tu mtu yeyote, ni nini maana kama aina yako data, variable yako, 1041 00:43:25,690 --> 00:43:26,860 ni ya aina int * nyota? 1042 00:43:26,860 --> 00:43:30,240 Hiyo ni pepe ya int. 1043 00:43:30,240 --> 00:43:31,990 >> Hivyo nimekuwa na wazo ambapo ni bado. 1044 00:43:31,990 --> 00:43:35,150 Ni tu ina maana "kuweka, hatimaye, pepe ya int hapa. " 1045 00:43:35,150 --> 00:43:38,340 0x50, 0x88, popote ni katika kumbukumbu, pepe kwenda huko. 1046 00:43:38,340 --> 00:43:40,200 Na kwamba ni nini y ni kwenda kuwa, kama vile. 1047 00:43:40,200 --> 00:43:44,920 >> Kama mimi sasa kusema x = malloc (sizeof (int)), hii ni njia dhana ya kusema, 1048 00:43:44,920 --> 00:43:49,000 hey mfumo wa uendeshaji, kupitia malloc, nipe kumbukumbu ya kutosha kwa ukubwa 1049 00:43:49,000 --> 00:43:52,370 ya int, ambayo pengine ni kwenda kuwa bits 32 au ka nne. 1050 00:43:52,370 --> 00:43:53,680 >> Kwa hiyo ni nini malloc kurudi? 1051 00:43:53,680 --> 00:43:55,250 Malloc anarudi ya mahali. 1052 00:43:55,250 --> 00:43:57,020 Hivyo nini kinaendelea kupata kuhifadhiwa katika x? 1053 00:43:57,020 --> 00:44:00,600 anwani ya chunk ya kumbukumbu, ka nne, kwamba malloc 1054 00:44:00,600 --> 00:44:03,360 tu kupatikana kwa ajili yangu kwa kuuliza mfumo wa uendeshaji. 1055 00:44:03,360 --> 00:44:08,240 >> Sasa wakati huo huo, line nne hapa, * x = 42. 1056 00:44:08,240 --> 00:44:09,990 Tu kuwa wazi, nini kinaendelea chini huko? 1057 00:44:09,990 --> 00:44:11,530 Kwa upande wa mkono wa kushoto, * x. 1058 00:44:11,530 --> 00:44:13,610 hiyo ni kama * 33 Oxford Street. 1059 00:44:13,610 --> 00:44:15,523 Hivyo * x nini maana ya? 1060 00:44:15,523 --> 00:44:16,450 >> Watazamaji: Nenda. 1061 00:44:16,450 --> 00:44:17,908 >> DAVID J. Malan: Nenda kwa anwani hiyo. 1062 00:44:17,908 --> 00:44:20,466 Popote kwamba chunk ya kumbukumbu ni, kwenda kwa hilo. 1063 00:44:20,466 --> 00:44:21,979 Na kuweka nini kuna, ni wazi? 1064 00:44:21,979 --> 00:44:22,520 Watazamaji: 42. 1065 00:44:22,520 --> 00:44:23,580 DAVID J. Malan: 42. 1066 00:44:23,580 --> 00:44:25,650 Haki wote, * y, wazo moja. 1067 00:44:25,650 --> 00:44:26,860 Kwenda mahali katika y. 1068 00:44:26,860 --> 00:44:31,740 Weka namba 13 huko, lakini ni y wakati gani? 1069 00:44:31,740 --> 00:44:33,172 1070 00:44:33,172 --> 00:44:34,630 Watazamaji: Hakuna kumbukumbu kwa ajili ya y. 1071 00:44:34,630 --> 00:44:35,710 DAVID J. Malan: Kuna hakuna kumbukumbu kwa ajili ya y. 1072 00:44:35,710 --> 00:44:38,215 Hivyo nini y pengine zina, kama tumekuwa kusema? 1073 00:44:38,215 --> 00:44:38,520 >> Watazamaji: takataka. 1074 00:44:38,520 --> 00:44:39,480 >> DAVID J. Malan: Baadhi ya thamani ya takataka. 1075 00:44:39,480 --> 00:44:41,320 Sasa, thamani ya takataka ni bado idadi. 1076 00:44:41,320 --> 00:44:43,160 Ni bado unaweza kuwa na makosa kwa mahali. 1077 00:44:43,160 --> 00:44:45,160 Ni kana kwamba mtu scribbled kitu chini, 1078 00:44:45,160 --> 00:44:48,002 na mimi vibaya kama maana jengo baadhi chini ya mitaani. 1079 00:44:48,002 --> 00:44:50,460 Na kama wewe tu kujaribu kwenda katika baadhi ya jengo huna mwenyewe, 1080 00:44:50,460 --> 00:44:53,710 au baadhi chunk ya kumbukumbu una si imekuwa aliyopewa, mambo mabaya yanaweza kutokea. 1081 00:44:53,710 --> 00:44:57,740 Kompyuta inaweza ajali, au nyingine tabia undetermined inaweza kutokea. 1082 00:44:57,740 --> 00:45:01,310 >> Hivyo intro, basi, kwa Binky ni hii. 1083 00:45:01,310 --> 00:45:04,290 Mimi bado kumbuka, 20 baadhi ya miaka isiyo ya kawaida baadaye, 1084 00:45:04,290 --> 00:45:07,200 ambapo mimi nilikuwa wakati mimi hatimaye kueleweka kuyatumia. 1085 00:45:07,200 --> 00:45:09,520 >> Ambayo ni kusema, kama wewe kuondoka hapa katika dakika ya tatu 1086 00:45:09,520 --> 00:45:12,170 na nadhani hawana kuelewa kuyatumia, kutambua 1087 00:45:12,170 --> 00:45:14,410 Nami nimelikumbuka kwa ajili ya 20 miaka kwa sababu baadhi ya mambo 1088 00:45:14,410 --> 00:45:17,140 wakati na kwa nini ni hatimaye kuzamishwa katika, kukaa na mafundisho yangu 1089 00:45:17,140 --> 00:45:19,501 wenzake, Nishat Mehta katika nyuma ya Eliot Dining Hall. 1090 00:45:19,501 --> 00:45:21,250 Sasa, nimekuwa ikumbukwe hii kwa sababu hii ilikuwa 1091 00:45:21,250 --> 00:45:23,920 moja ya mada I, katika Hasa, Jihadi pamoja na. 1092 00:45:23,920 --> 00:45:26,470 Na kisha, hatimaye clicked, kama Mimi kuthubutu kusema mengi ya mada 1093 00:45:26,470 --> 00:45:27,460 hatimaye mapenzi. 1094 00:45:27,460 --> 00:45:32,590 Na sasa, kwa kufanya kujisikia wote furaha na wote zaidi kushawishi, 1095 00:45:32,590 --> 00:45:35,360 hebu tuangalie mwisho katika yetu dakika ya mwisho tatu hapa katika Binky, 1096 00:45:35,360 --> 00:45:37,675 kutoka kwa rafiki yetu, Nick Parlante kutoka Stanford. 1097 00:45:37,675 --> 00:45:38,910 1098 00:45:38,910 --> 00:45:41,580 >> [VIDEO avspelning] 1099 00:45:41,580 --> 00:45:42,750 >> -Hey, Binky. 1100 00:45:42,750 --> 00:45:43,500 Kuamka! 1101 00:45:43,500 --> 00:45:45,960 Ni wakati kwa pointer na furaha. 1102 00:45:45,960 --> 00:45:47,012 >> -Nini Hiyo? 1103 00:45:47,012 --> 00:45:48,723 Kujifunza kuhusu kuyatumia? 1104 00:45:48,723 --> 00:45:50,580 Oh, goody! 1105 00:45:50,580 --> 00:45:53,563 >> -Naam, Kwa kuanza, mimi nadhani sisi ni kwenda haja kuyatumia wanandoa. 1106 00:45:53,563 --> 00:45:54,390 >> -OK. 1107 00:45:54,390 --> 00:45:57,930 Kanuni hii kutenga kuyatumia mbili, ambayo inaweza kumweka kwa integers. 1108 00:45:57,930 --> 00:45:58,430 -OK. 1109 00:45:58,430 --> 00:46:02,140 Naam, naona kuyatumia mbili, lakini wao hawaonekani kuwa akizungumzia chochote. 1110 00:46:02,140 --> 00:46:02,980 >> -Kwamba Ni haki. 1111 00:46:02,980 --> 00:46:05,100 Awali, kuyatumia hawana uhakika na kitu chochote. 1112 00:46:05,100 --> 00:46:08,030 mambo wao kumweka kwa walioitwa pointees, na kuweka yao juu ya 1113 00:46:08,030 --> 00:46:09,370 hatua tofauti. 1114 00:46:09,370 --> 00:46:10,220 >> -Oh, Haki, haki. 1115 00:46:10,220 --> 00:46:10,950 Nilijua kwamba. 1116 00:46:10,950 --> 00:46:12,385 pointees ni tofauti. 1117 00:46:12,385 --> 00:46:14,315 Eri, hivyo ni jinsi gani kutenga pointee? 1118 00:46:14,315 --> 00:46:15,340 1119 00:46:15,340 --> 00:46:15,960 >> -OK. 1120 00:46:15,960 --> 00:46:18,970 Naam, kanuni hii kutenga mpya integer pointee, 1121 00:46:18,970 --> 00:46:20,950 na seti sehemu hii x kwa uhakika na hilo. 1122 00:46:20,950 --> 00:46:22,050 1123 00:46:22,050 --> 00:46:23,230 >> -Hey, Kwamba inaonekana bora. 1124 00:46:23,230 --> 00:46:25,060 Hivyo kufanya hivyo kufanya kitu fulani. 1125 00:46:25,060 --> 00:46:25,990 >> -OK. 1126 00:46:25,990 --> 00:46:30,455 Mimi itabidi dereference pointer x kwa kuhifadhi namba 42 katika pointee yake. 1127 00:46:30,455 --> 00:46:32,830 Kwa hila hii, mimi itabidi haja yangu Uchawi Wand ya Dereferencing. 1128 00:46:32,830 --> 00:46:34,130 1129 00:46:34,130 --> 00:46:36,080 >> -Wako Magic Wand ya Dereferencing? 1130 00:46:36,080 --> 00:46:37,357 1131 00:46:37,357 --> 00:46:38,190 That-- kwamba ni kubwa. 1132 00:46:38,190 --> 00:46:39,340 1133 00:46:39,340 --> 00:46:41,080 >> -Hii Ni nini code inaonekana kama. 1134 00:46:41,080 --> 00:46:44,110 Mimi itabidi kuanzisha idadi, na [POP] 1135 00:46:44,110 --> 00:46:44,700 >> -Hey, Kuangalia. 1136 00:46:44,700 --> 00:46:46,140 Kuna unaendelea. 1137 00:46:46,140 --> 00:46:50,980 >> -Basi Kufanya dereference juu ya x ifuatavyo arrow kupata pointee yake. 1138 00:46:50,980 --> 00:46:53,160 Katika kesi hiyo, duka 42 huko. 1139 00:46:53,160 --> 00:46:57,710 Hey kujaribu kutumia kwa kuhifadhi idadi 13 kupitia pointer nyingine, y. 1140 00:46:57,710 --> 00:46:58,760 >> -OK. 1141 00:46:58,760 --> 00:47:03,270 Mimi itabidi kwenda juu hapa y, na kupata namba 13 kuweka up. 1142 00:47:03,270 --> 00:47:07,930 Na kisha, kuchukua Wand ya Dereferencing na tu [BUZZ] 1143 00:47:07,930 --> 00:47:08,960 >> -Oh! 1144 00:47:08,960 --> 00:47:09,500 >> -Oh, Hey! 1145 00:47:09,500 --> 00:47:11,090 Kwamba hakuwa na kazi. 1146 00:47:11,090 --> 00:47:15,630 Sema, Binky, sidhani dereferencing y ni wazo nzuri, kwa sababu unajua, 1147 00:47:15,630 --> 00:47:17,850 kuanzisha pointee ni hatua tofauti. 1148 00:47:17,850 --> 00:47:20,450 Na sidhani sisi milele alifanya hivyo. 1149 00:47:20,450 --> 00:47:21,480 >> -Good Uhakika. 1150 00:47:21,480 --> 00:47:21,980 -Yeah. 1151 00:47:21,980 --> 00:47:25,680 Sisi zilizotengwa pointer y, lakini sisi kamwe kuweka kwa uhakika na pointee. 1152 00:47:25,680 --> 00:47:27,190 1153 00:47:27,190 --> 00:47:28,616 >> -Very Mwangalifu. 1154 00:47:28,616 --> 00:47:30,240 -Hey, Wewe ni kuangalia nzuri huko, Binky. 1155 00:47:30,240 --> 00:47:33,400 Je, unaweza kurekebisha hivyo kwamba pointi y kwa pointee sawa kama x? 1156 00:47:33,400 --> 00:47:34,000 >> -Sure. 1157 00:47:34,000 --> 00:47:36,780 Mimi itabidi kutumia yangu uchawi Wand Pointer ya Assignment. 1158 00:47:36,780 --> 00:47:38,740 >> -Je Kwamba kwenda kuwa tatizo kama kabla? 1159 00:47:38,740 --> 00:47:39,240 -Hakuna. 1160 00:47:39,240 --> 00:47:40,660 Hii haina kugusa pointees. 1161 00:47:40,660 --> 00:47:44,450 Ni tu mabadiliko pointer moja kwa uhakika na kitu kimoja kama mwingine. 1162 00:47:44,450 --> 00:47:45,450 >> -Oh, Naona. 1163 00:47:45,450 --> 00:47:48,200 Sasa y pointi kwenye sehemu moja kama x. 1164 00:47:48,200 --> 00:47:48,910 Hivyo kusubiri. 1165 00:47:48,910 --> 00:47:49,950 Sasa, y ni fasta. 1166 00:47:49,950 --> 00:47:51,120 Ina pointee. 1167 00:47:51,120 --> 00:47:54,510 Hivyo unaweza kujaribu Wand ya Dereferencing tena kwa kutuma 13 juu. 1168 00:47:54,510 --> 00:47:56,510 >> -Uh, OK. 1169 00:47:56,510 --> 00:47:58,160 Hapa unaendelea. [POP] 1170 00:47:58,160 --> 00:47:59,340 >> -Hey, Kuangalia kwamba. 1171 00:47:59,340 --> 00:48:00,750 Sasa dereferencing kazi juu y. 1172 00:48:00,750 --> 00:48:04,991 Na kwa sababu kuyatumia wanashiriki kwamba pointee moja, wao wote kuona 13. 1173 00:48:04,991 --> 00:48:05,490 -Yeah. 1174 00:48:05,490 --> 00:48:06,870 Kushiriki, chochote. 1175 00:48:06,870 --> 00:48:08,820 Hivyo ni sisi kwenda kubadili maeneo sasa? 1176 00:48:08,820 --> 00:48:09,440 >> Oh, kuangalia. 1177 00:48:09,440 --> 00:48:10,830 Sisi ni nje ya muda. 1178 00:48:10,830 --> 00:48:11,570 >> -But-- 1179 00:48:11,570 --> 00:48:13,530 >> -Tu kumbuka tatu sheria pointer. 1180 00:48:13,530 --> 00:48:16,560 Idadi Mmoja, muundo wa msingi ni kwamba una pointer, 1181 00:48:16,560 --> 00:48:18,680 na inaelekeza juu ya pointee. 1182 00:48:18,680 --> 00:48:20,640 Lakini pointer na pointee ni tofauti, 1183 00:48:20,640 --> 00:48:22,610 na makosa ya kawaida ni kuanzisha pointer, 1184 00:48:22,610 --> 00:48:25,000 lakini kusahau kuwapa pointee. 1185 00:48:25,000 --> 00:48:28,170 >> Idadi Barua, pointer dereferencing kuanza saa pointer 1186 00:48:28,170 --> 00:48:31,050 na ifuatavyo mshale wake juu ya kupata pointee yake. 1187 00:48:31,050 --> 00:48:33,400 Kama sisi wote kujua, hii tu kazi kama kuna 1188 00:48:33,400 --> 00:48:36,270 pointee, ambayo aina ya anapata nyuma ya namba moja ya utawala. 1189 00:48:36,270 --> 00:48:39,000 >> Idadi ya Tatu, pointer zoezi inachukua pointer moja 1190 00:48:39,000 --> 00:48:42,320 na mabadiliko hayo kwa uhakika na pointee sawa kama pointer mwingine. 1191 00:48:42,320 --> 00:48:44,160 Kwa hiyo baada ya kazi, kuyatumia mbili 1192 00:48:44,160 --> 00:48:45,910 uhakika na pointee sawa. 1193 00:48:45,910 --> 00:48:47,990 Wakati mwingine, kwamba wito kugawana. 1194 00:48:47,990 --> 00:48:49,740 Na kwamba ni yote kuna hiyo, kwa kweli. 1195 00:48:49,740 --> 00:48:50,277 Bye-bye sasa. 1196 00:48:50,277 --> 00:48:51,110 [END video avspelning] 1197 00:48:51,110 --> 00:48:52,568 DAVID J. Malan: Hiyo ni kwa CS50. 1198 00:48:52,568 --> 00:48:55,110 Tutaona wewe wiki ijayo. 1199 00:48:55,110 --> 00:48:56,064