1 00:00:00,000 --> 00:00:04,875 2 00:00:04,875 --> 00:00:05,750 ANDI PENG: Lahat ng karapatan. 3 00:00:05,750 --> 00:00:08,240 Maligayang pagdating sa apat na linggo ng section. 4 00:00:08,240 --> 00:00:10,280 Ito ay isang magandang araw dito sa New Haven 5 00:00:10,280 --> 00:00:14,370 kaya talagang sa tingin ko ang mga kalat-kalat pagkalat ng mga bata na 6 00:00:14,370 --> 00:00:17,530 sumali sa akin seksyon ngayon, salamat. 7 00:00:17,530 --> 00:00:21,517 >> Kaya mabilis, bago lang kami magsisimula, ang agenda para sa araw na ito. 8 00:00:21,517 --> 00:00:23,600 Kami ay pagpunta sa pumunta sa paglipas ng mga maikling announcements. 9 00:00:23,600 --> 00:00:26,224 Kami ay may isang talagang wacky schedule paparating na sa susunod na dalawang linggo 10 00:00:26,224 --> 00:00:28,010 o kaya kaya kami ay pagpunta sa pumunta sa paglipas na. 11 00:00:28,010 --> 00:00:30,410 Pangalawa, alam ko paboritong topic-- lahat 12 00:00:30,410 --> 00:00:33,572 Ako ba na ito ay natunaw ang iyong isip sa panahon ng panayam, huwag mag-alala, 13 00:00:33,572 --> 00:00:34,780 Ako pa rin ang uri ng hindi makakuha ng ito. 14 00:00:34,780 --> 00:00:35,444 Ayos lang. 15 00:00:35,444 --> 00:00:36,110 Iyon ay isang biro. 16 00:00:36,110 --> 00:00:37,450 Ko talagang gawin makakuha ng ito. 17 00:00:37,450 --> 00:00:40,234 Ngunit ako ay siguraduhin na ang ka guys kumuha ito, masyadong. 18 00:00:40,234 --> 00:00:42,400 Kaya kami ay pagpunta sa gastusin ng isang tunay, tunay mabuti halaga 19 00:00:42,400 --> 00:00:44,020 ng mga oras ng pakikipag-usap tungkol sa pointer ngayon. 20 00:00:44,020 --> 00:00:47,012 Tulad ng iyong nakikita, kendi talk ay napakalaking ngayon. 21 00:00:47,012 --> 00:00:49,220 Kami ay talagang pagpunta sa panatilihin na- oo, na karapatan. 22 00:00:49,220 --> 00:00:49,890 Panatilihin ang pagkuha ng kendi. 23 00:00:49,890 --> 00:00:51,556 Pupunta ako upang pumasa ito sa paligid ngayon. 24 00:00:51,556 --> 00:00:55,150 25 00:00:55,150 --> 00:00:56,510 Huwag mag-alala. 26 00:00:56,510 --> 00:00:59,570 Kami ay pagpunta sa talagang subukan upang panatilihin ang asukal sa dugo ng mga tao 27 00:00:59,570 --> 00:01:04,390 up dahil utak na pagpunta sa paso ilang oxygen ngayon dahil payo 28 00:01:04,390 --> 00:01:05,652 ay talagang, talagang mahirap. 29 00:01:05,652 --> 00:01:08,360 Pagkatapos kami ay pagpunta sa makipag-usap tungkol memory management kung aling uri ng ay 30 00:01:08,360 --> 00:01:09,487 sa parehong kaharian. 31 00:01:09,487 --> 00:01:11,570 At kami ay pagpunta upang ilipat sa sa pag-redirect at file 32 00:01:11,570 --> 00:01:15,297 I / O kung saan ay lamang syntax, nice mga bagay na dapat naming makipag-usap tungkol sa. 33 00:01:15,297 --> 00:01:17,130 At pagkatapos ay sa wakas, ako pagpunta sa sandaling muli subukan 34 00:01:17,130 --> 00:01:19,070 na umalis tulad ng 10, 15 minuto para pset4. 35 00:01:19,070 --> 00:01:21,820 Iyan ay dahil sa ilang araw kaya kami pagpunta sa talagang uri ng magbibigay sa iyo ng 36 00:01:21,820 --> 00:01:24,850 ilang kapaki-pakinabang na mga pahiwatig kung kayo na kayong makapagsimula sa na. 37 00:01:24,850 --> 00:01:26,141 Cool. 38 00:01:26,141 --> 00:01:26,640 SIGE. 39 00:01:26,640 --> 00:01:30,710 Kaya ang ilang mga anunsyo para sa mga paparating na linggo. 40 00:01:30,710 --> 00:01:31,805 Grading. 41 00:01:31,805 --> 00:01:33,930 Hindi ko talaga alam kung sa sa puntong ito kung ilan sa inyo 42 00:01:33,930 --> 00:01:37,180 guys ay sa tunay na aking section-- mo OK doon? 43 00:01:37,180 --> 00:01:38,020 SIGE. 44 00:01:38,020 --> 00:01:40,150 Ngunit, para sa mga mo na sa aking seksyon, 45 00:01:40,150 --> 00:01:42,180 lamang ng ilang mga komento sa grading. 46 00:01:42,180 --> 00:01:44,899 >> Una, talagang magandang trabaho ng pagkomento. 47 00:01:44,899 --> 00:01:47,940 Yaong mo na hindi puna, ikaw kung sino ka dahil ikaw ay malamang na 48 00:01:47,940 --> 00:01:50,610 nakuha ang ilang mga puntos style dinged sa linggong ito. 49 00:01:50,610 --> 00:01:53,920 Siguraduhin lamang na sa lahat ng iyong mga programa magdagdag ng isang pares ng mga komento. 50 00:01:53,920 --> 00:01:56,960 Talagang, estilo ay talagang madaling makakuha ng tamang punto bilang isang saklaw. 51 00:01:56,960 --> 00:01:58,710 Kaya para sa amin, kailangan lang gumawa siguraduhin na ikaw ay mabait 52 00:01:58,710 --> 00:02:03,770 ng pagdaragdag ng isang maikling paglalarawan sa lahat ang iyong mga programa tungkol sa kung ano ang iyong ginagawa. 53 00:02:03,770 --> 00:02:09,190 >> Secondly-- ito ay isang malaking isyu para sa isang pulutong ng mga TAS ito nakaraang week-- 54 00:02:09,190 --> 00:02:12,020 kaya siguraduhin na ikaw ay mag-upload sa tamang folder na may tama 55 00:02:12,020 --> 00:02:13,370 pinangalanan programs. 56 00:02:13,370 --> 00:02:16,820 At ang dahilan kung bakit hinihiling namin para sa ay dahil tayo, sa kurso ng pagmamarka, 57 00:02:16,820 --> 00:02:20,820 talagang magpatakbo ng isang script sa iyong code na awtomatikong nagda-download 58 00:02:20,820 --> 00:02:24,780 ang lahat ng iyong psets, ay tumatakbo pagsusuri kawastuhan sa lahat ng mga ito, 59 00:02:24,780 --> 00:02:27,550 at pagkatapos ay in-upload ang iyong mga marka direkta sa markahan. 60 00:02:27,550 --> 00:02:32,140 Gayunpaman, sa anumang punto, kung ikaw pinangalanan ang iyong programa ng hindi tama, 61 00:02:32,140 --> 00:02:34,510 ito screws up ang buong program para sa lahat. 62 00:02:34,510 --> 00:02:37,280 >> At ito, lehitimong, ito maganda ang script 63 00:02:37,280 --> 00:02:40,260 na namin ang nakasulat na gumagana ang lahat ng ito para sa amin, ganap 64 00:02:40,260 --> 00:02:43,070 nag-crash kung wala kang tama ang pangalan ng iyong programa. 65 00:02:43,070 --> 00:02:46,020 Kaya i-upload lang sa tamang folder, may pangalan na ito nang tama, 66 00:02:46,020 --> 00:02:47,372 at pagkatapos ay buhay ay mabuti. 67 00:02:47,372 --> 00:02:49,080 Nakukuha ko ang iyong psets likod sa inyo guys mas maaga 68 00:02:49,080 --> 00:02:51,110 dahil nakukuha ko sa kanila grade mabilis. 69 00:02:51,110 --> 00:02:52,461 Oo. 70 00:02:52,461 --> 00:02:52,960 SIGE. 71 00:02:52,960 --> 00:02:57,870 At din namin ang pagpunta sa makipag-usap about-- Yale ay talagang isang, talagang 72 00:02:57,870 --> 00:02:59,950 wacky schedule sa mga susunod na dalawang linggo. 73 00:02:59,950 --> 00:03:02,460 Kaya sa mga ka guys sa Harvard, ito ay hindi nalalapat. 74 00:03:02,460 --> 00:03:05,585 Ngunit para sa amin kaibig-ibig na bata sa Yale kami bagay na tinatawag na tag-lagas ng break Paumanhin, 75 00:03:05,585 --> 00:03:08,430 Harvard-- kung saan mayroon kaming limang araw off ng paaralan. 76 00:03:08,430 --> 00:03:12,270 At habang ito ay kaibig-ibig, ito uri ng messes up ang aming pset ritmo 77 00:03:12,270 --> 00:03:14,104 dahil psets ay dahil Huwebes, Biyernes. 78 00:03:14,104 --> 00:03:16,020 At kaya kung hindi kami dito Huwebes, Biyernes, kami ay 79 00:03:16,020 --> 00:03:18,640 Hindi maaaring magkaroon ng trabaho para sa inyo guys dahil sa Huwebes, Biyernes. 80 00:03:18,640 --> 00:03:23,832 >> Kaya kung ano ang namin ang pagpunta sa gawin is-- hindi namin tulad ng 99% sigurado na ito ay kung ano ang nangyayari, 81 00:03:23,832 --> 00:03:25,540 maaaring may mga ilang baguhin ngunit sa tingin ko ay 82 00:03:25,540 --> 00:03:28,460 subtle-- ay namin ang pagpunta sa have-- sa linggong ito ay normal. 83 00:03:28,460 --> 00:03:32,130 Kaya na namin ang aming seksyon sa Martes na sinundan ng mga oras ng opisina 84 00:03:32,130 --> 00:03:35,190 sa buong natitirang bahagi ng linggo at pagkatapos pset4 ay dahil sa Biyernes. 85 00:03:35,190 --> 00:03:38,180 Pagkatapos, bilang lahat ng alam mo guys, tulad ng Ipinaalala ko sa inyo guys noong nakaraang linggo, 86 00:03:38,180 --> 00:03:41,700 na namin ang aming pagsusulit 0 pagdating up sa Miyerkules. 87 00:03:41,700 --> 00:03:44,400 >> At ito, ang pagiging isang mag-aaral sa sarili ko, Alam ko na ang ilang mga ng sa iyo 88 00:03:44,400 --> 00:03:49,110 guys ay aktwal na nagtatrabaho sa pset5 ang dalawang araw bago ang iyong pagsusulit. 89 00:03:49,110 --> 00:03:51,110 Kaya kung ano ang namin ang pagpunta sa maaaring humantong sa paggawa ay, 90 00:03:51,110 --> 00:03:54,840 na Lunes ng gabi, kami ay pagpunta upang aktwal na, 5:30-07:00, 91 00:03:54,840 --> 00:03:59,970 magkaroon ng isang maikling pagsusuri session sa mga paksa sakop. 92 00:03:59,970 --> 00:04:02,040 Hindi malinaw kung ito ay isang repasuhin ang session o isang Q & A. 93 00:04:02,040 --> 00:04:04,650 Ito ay ilang mga uri ng review form na kung saan kami ay sumasakop 94 00:04:04,650 --> 00:04:06,640 ang ilang mga paksa na may kaugnayan para sa iyo guys. 95 00:04:06,640 --> 00:04:09,886 >> At pagkatapos ay Lunes at Martes ng gabi ng linggo na 8:00-11:00, 96 00:04:09,886 --> 00:04:11,260 kami ay pagpunta sa may oras ng opisina. 97 00:04:11,260 --> 00:04:14,500 Oras mga opisina ay pinaka malamang ay higit pa sa kapapasok pa lamang, 98 00:04:14,500 --> 00:04:17,564 tanungin TAS iyong mga katanungan tungkol sa anumang mga konsepto ikaw ay naguguluhan tungkol sa, 99 00:04:17,564 --> 00:04:20,480 at ang mga ito uri ng pumunta sa paglipas ng sa iyo at konsepto review para sa mga pagsusulit. 100 00:04:20,480 --> 00:04:22,920 Pagsusulit 0, kung gusto mo ng Monday, section Miyerkules, 101 00:04:22,920 --> 00:04:26,480 ay Miyerkules ng panahon class-- sa Miyerkules sa panahon ng klase. 102 00:04:26,480 --> 00:04:29,530 At pagkatapos ay kung gusto mo ng Martes, Huwebes seksyon, 103 00:04:29,530 --> 00:04:32,577 ay panahon ng klase sa Huwebes din. 104 00:04:32,577 --> 00:04:34,410 Talagang hindi mo maaaring piliin ang kung saan ang isa sa iyo pumunta sa. 105 00:04:34,410 --> 00:04:35,640 Kung ikaw ay isang Lunes, Miyerkules, kailangan mong pumunta sa Miyerkules. 106 00:04:35,640 --> 00:04:38,056 Kung ikaw ay sa Martes, Huwebes kailangan mong pumunta sa Huwebes. 107 00:04:38,056 --> 00:04:42,277 Ngunit pagkatapos ng gabing iyon, amin lovely staff, ay 108 00:04:42,277 --> 00:04:45,360 magkaroon ng isang higanteng pagsusulit pagmamarka partido sa na kung saan kami makakuha ng iyong mga marka ng pabalik sa iyo 109 00:04:45,360 --> 00:04:46,190 na gabi. 110 00:04:46,190 --> 00:04:46,900 Anong oras? 111 00:04:46,900 --> 00:04:51,190 Hindi malinaw, na nakakaalam, ngunit ito ay bumalik sa iyo sa loob ng 24 na oras 112 00:04:51,190 --> 00:04:53,700 upang ikaw guys sana magkaroon ng ilang puna sa pamamagitan ng Biyernes. 113 00:04:53,700 --> 00:04:55,870 >> At pagkatapos kami ay may isang talagang wacky linggo. 114 00:04:55,870 --> 00:05:00,330 Kaya pset5 ay isa sa mga pinakamahirap psets ng taon. 115 00:05:00,330 --> 00:05:03,370 Kaya paumanhin guys. 116 00:05:03,370 --> 00:05:06,520 Ano kami ay pagpunta sa subukan upang gawin ay kami ay pagpunta sa may 117 00:05:06,520 --> 00:05:08,380 ilang mga aktwal na suporta na weekend. 118 00:05:08,380 --> 00:05:12,970 Dahil, tulad ng maaari mong makita ang isang lalaki, ang pset ay dahil bago fall break. 119 00:05:12,970 --> 00:05:16,760 Wala kaming suporta para sa ka guys sa panahon ng taglagas pahinga 120 00:05:16,760 --> 00:05:18,897 at iba talaga namin uri ng nais na phrase na ito bilang, 121 00:05:18,897 --> 00:05:21,230 sabihin makakuha ng ito sa paglipas ng, Magtulungan tunay, talagang mahirap ipaalam 122 00:05:21,230 --> 00:05:25,380 mga susunod na dalawang linggo, kumuha ng pagsusulit na ito at magdagdag ng mga dalawang psets tapos na 123 00:05:25,380 --> 00:05:29,650 at pagkatapos ay ka guys ay may isang magandang nagpapatahimik pitong araw na walang pag-iisip tungkol CS. 124 00:05:29,650 --> 00:05:33,750 >> Kaya sa order para sa na mangyayari, kami ay marahil 125 00:05:33,750 --> 00:05:36,870 pagpunta sa ilipat ang aking mga seksyon sa Linggo ng hapon. 126 00:05:36,870 --> 00:05:39,070 Ito ay kinukunan kaya walang alalahanin kung hindi ka maaaring dumating. 127 00:05:39,070 --> 00:05:41,595 Ngunit ang mga online paggawa ng pelikula ay maging doon at naa-access 128 00:05:41,595 --> 00:05:47,630 upang ikaw guys kung Linggo, Lunes, Martes, sa trabaho sa pset5. 129 00:05:47,630 --> 00:05:50,205 At pagkatapos ito ay mahulog masira at walang CS at pagkatapos ay 130 00:05:50,205 --> 00:05:51,830 dumating kami sa likod at sa kanyang likod sa giling. 131 00:05:51,830 --> 00:05:54,926 >> Ngunit ito ay magiging isang kaibig-ibig na linggo para sa pagkahulog pahinga 132 00:05:54,926 --> 00:05:58,050 at kami ay talagang nais na gumawa ng mga ito bilang stress libre para sa lahat hangga't maaari na 133 00:05:58,050 --> 00:06:02,620 ay kung bakit namin inilipat ang pset na dahil bago fall break na sa halip na matapos. 134 00:06:02,620 --> 00:06:07,601 Dahil it's-- ibig sabihin ko, ako uri ng pakiramdam tulad nito pagkatalo sa layunin ng pagkakaroon ng 135 00:06:07,601 --> 00:06:10,850 ang deadline matapos mahulog pahinga kung may walang suporta anyways sa panahon ng taglagas break. 136 00:06:10,850 --> 00:06:14,670 Kaya ito ay rather-- tingin ko mas gugustuhin naming tumutok sa mga ito ngayon. 137 00:06:14,670 --> 00:06:16,950 Kahit sino ay may mga katanungan tungkol na schedule? 138 00:06:16,950 --> 00:06:17,830 Anumang bagay na nakalilito? 139 00:06:17,830 --> 00:06:18,330 Oo. 140 00:06:18,330 --> 00:06:20,944 >> Madla: Mayroon pa rin namin isang panayam sa ika-21? 141 00:06:20,944 --> 00:06:21,610 ANDI PENG: Oo. 142 00:06:21,610 --> 00:06:26,421 Kaya sa ika-21, may ay magiging isang panayam na live mula sa Harvard. 143 00:06:26,421 --> 00:06:29,170 Hindi ko alam kung David ay paggawa ng pelikula ito o kung talagang siya ay lecturing, 144 00:06:29,170 --> 00:06:32,430 ngunit ito ay pagpunta sa maging magagamit online para sa iyo guys upang access. 145 00:06:32,430 --> 00:06:35,510 Kaya't tiyakin na magkatay ng isang lamang hour out saanman sa pagkahulog pahinga 146 00:06:35,510 --> 00:06:39,375 kaya ka guys ay maaaring abutin hanggang sa na lecture. 147 00:06:39,375 --> 00:06:39,875 Oo? 148 00:06:39,875 --> 00:06:40,300 >> Madla: Oo. 149 00:06:40,300 --> 00:06:40,422 Sorry. 150 00:06:40,422 --> 00:06:41,280 Nakatanggap ako dito isang couple-- 151 00:06:41,280 --> 00:06:41,640 >> ANDI PENG: Huwag mag-alala. 152 00:06:41,640 --> 00:06:42,556 Dito, tumagal ng ilang kendi. 153 00:06:42,556 --> 00:06:45,350 154 00:06:45,350 --> 00:06:47,800 >> Madla: Hey, nahuli ko na. 155 00:06:47,800 --> 00:06:53,869 Kaya lang sa paglalagom, hindi bukas ngunit ang Miyerkules pagkatapos na, kami ay may isang pagsusulit. 156 00:06:53,869 --> 00:06:54,660 ANDI PENG: Tama. 157 00:06:54,660 --> 00:06:59,207 Madla: At ito ay pagpunta sa be-- kung ano ang format ng pagsusulit? 158 00:06:59,207 --> 00:06:59,790 ANDI PENG: Oh. 159 00:06:59,790 --> 00:07:03,870 Kaya makikita namin magpadala ng isang email na sumasaklaw sa lahat na mas malalalim na. 160 00:07:03,870 --> 00:07:06,590 Ngunit, mahalagang, ay sumasakop lamang ito mga pangunahing paksa na sakop 161 00:07:06,590 --> 00:07:09,042 sa unang kalahati ng semestre. 162 00:07:09,042 --> 00:07:12,250 Magkakaroon kami review session at katanungan at sagot kaya walang mga alalahanin tungkol sa na. 163 00:07:12,250 --> 00:07:14,107 Ngunit kami ay makikita na ang pagpunta sa na masyadong. 164 00:07:14,107 --> 00:07:16,940 Madla: Ito ba ay magiging, namin dalhin ang aming mga computer at code there-- 165 00:07:16,940 --> 00:07:17,140 ANDI PENG: No. 166 00:07:17,140 --> 00:07:20,130 Ito ay magiging iyo guys pagsulat at pagsagot sa mga tanong sa pamamagitan ng kamay. 167 00:07:20,130 --> 00:07:21,160 >> Madla: Oh. 168 00:07:21,160 --> 00:07:23,160 >> ANDI PENG: Kaya bibigyan namin out na kasanayan at bagay-bagay 169 00:07:23,160 --> 00:07:26,420 kaya ka guys ay maaaring gusto mong marahil pumunta sa likod at sa pagsulat na muli ng Mario sa pamamagitan ng kamay lamang 170 00:07:26,420 --> 00:07:28,100 upang tiyakin na ikaw ay may isang lalaki ng ideya kung paano upang gawin iyon. 171 00:07:28,100 --> 00:07:29,933 Dahil kung minsan kapag sumulat ka sa pamamagitan ng kamay mo 172 00:07:29,933 --> 00:07:32,656 kalimutan semicolons at bagay-bagay at iyon ang ganap na hindi maayos. 173 00:07:32,656 --> 00:07:34,156 Madla: Hindi ba na maging [hindi marinig]? 174 00:07:34,156 --> 00:07:38,290 Tulad ng, ikaw ay nakakakuha ng isang tuldok-kuwit sa your-- 175 00:07:38,290 --> 00:07:40,270 >> ANDI PENG: Oo at hindi. 176 00:07:40,270 --> 00:07:43,170 Susubukan naming makipag-usap sa mga mas malalalim tungkol sa kung paano ang mga pagsusulit layout ay 177 00:07:43,170 --> 00:07:44,550 at kung paano namin pagpunta sa grado. 178 00:07:44,550 --> 00:07:47,425 Ngunit mahalagang, lamang malaman na ang pangkalahatang format ay magiging iyo 179 00:07:47,425 --> 00:07:49,930 guys mag-interpret code-- pagsagot sa mga pangunahing mga katanungan. 180 00:07:49,930 --> 00:07:51,370 Kung tatanungin ko kayo, kung ano ang isang library? 181 00:07:51,370 --> 00:07:53,450 Ikaw guys dapat malaman kung ano ang isang library ang ginagawa at isulat na pababa. 182 00:07:53,450 --> 00:07:56,283 O maaari kong sabihin, magsulat ng isang programa na Kopya Hello World sa screen. 183 00:07:56,283 --> 00:08:01,140 Ikaw guys ay sumulat, int pangunahing void printf hello world semicolon. 184 00:08:01,140 --> 00:08:01,908 Oo. 185 00:08:01,908 --> 00:08:04,398 >> Madla: Kaya ito ay hindi pagpunta na kahit saan [hindi marinig] 186 00:08:04,398 --> 00:08:05,900 antas ng kahirapan ng problema set? 187 00:08:05,900 --> 00:08:06,170 >> ANDI PENG: No. 188 00:08:06,170 --> 00:08:06,380 Hindi. 189 00:08:06,380 --> 00:08:07,046 Won't-- namin oo. 190 00:08:07,046 --> 00:08:10,030 Isulat ang kabuuan ng laro ng 15 sa 20 minuto, pumunta. 191 00:08:10,030 --> 00:08:12,120 Hindi, ito ay hindi na. 192 00:08:12,120 --> 00:08:12,801 Hindi. 193 00:08:12,801 --> 00:08:13,342 Madla: OK. 194 00:08:13,342 --> 00:08:15,326 Kaya na ay Miyerkules. 195 00:08:15,326 --> 00:08:19,017 Sa panahon na linggo din namin nagtakda ng mga pinakamahirap na problema? 196 00:08:19,017 --> 00:08:19,600 ANDI PENG: No. 197 00:08:19,600 --> 00:08:22,970 Kaya itakda ang problema na ito dahil ang araw bago fall break. 198 00:08:22,970 --> 00:08:25,690 Ang schedule-- sa email ay talagang magpadala out 199 00:08:25,690 --> 00:08:27,232 20 minuto ang nakalipas tungkol sa lahat ng ito. 200 00:08:27,232 --> 00:08:28,689 Kaya mo guys lamang na suriin ang iyong mga email. 201 00:08:28,689 --> 00:08:29,430 Makikita ito ay doon. 202 00:08:29,430 --> 00:08:30,060 Oo. 203 00:08:30,060 --> 00:08:31,701 Huwag mag-alala. 204 00:08:31,701 --> 00:08:32,200 Cool. 205 00:08:32,200 --> 00:08:34,900 206 00:08:34,900 --> 00:08:38,900 >> Anumang mga pangkalahatang mga katanungan tungkol sa anunsyo, pagmamarka, mga pagsusulit, 207 00:08:38,900 --> 00:08:41,659 bago namin sumisid pakanan papunta payo na kung saan ay ubusin 208 00:08:41,659 --> 00:08:45,060 sa karamihan ng aming mga oras section ngayon? 209 00:08:45,060 --> 00:08:47,030 Cool. 210 00:08:47,030 --> 00:08:47,530 Lahat tama. 211 00:08:47,530 --> 00:08:50,905 Panoorin ang lahat Kaya ginawa mo guys ito lovely-- Hindi ko alam kung ano ang kanilang tawag dito. 212 00:08:50,905 --> 00:08:53,490 Ang bagay na kung saan ang claymation hinipan up sarili dahil sa ito 213 00:08:53,490 --> 00:08:54,820 hindi gamitin ang isang pointer ng tama. 214 00:08:54,820 --> 00:08:57,629 Well, ang iyong programa ay pagpunta sa marahil sumabog ang sarili nito kung ikaw ay 215 00:08:57,629 --> 00:08:59,170 huwag gumamit ng mga payo tama rin. 216 00:08:59,170 --> 00:09:01,250 Kaya kami ay pagpunta sa gumawa Siguraduhin na hindi mangyayari. 217 00:09:01,250 --> 00:09:04,810 >> Ngayon kami ay pagpunta sa gawin ang ilang mga masasayang pointer. 218 00:09:04,810 --> 00:09:08,970 Pupunta ako sa pumunta sa paglipas ng mga bagay-bagay bilang maayos bilang tingin ko 219 00:09:08,970 --> 00:09:10,790 ay posible sa isang maliit na frame ng oras. 220 00:09:10,790 --> 00:09:14,592 Ngunit mayroon lamang kaya magkano upang masakop na ko talagang gusto mong lalaki, 221 00:09:14,592 --> 00:09:17,300 kung hindi mo maintindihan ang isang bagay, upang hindi lamang hayaan mo akong panatilihin ang pagpunta. 222 00:09:17,300 --> 00:09:18,580 Dahil kung hindi mo gusto maunawaan ang isang bagay, 223 00:09:18,580 --> 00:09:21,329 ikaw ay malamang na hindi pagpunta sa maunawaan kahit ano sinasabi ko matapos na. 224 00:09:21,329 --> 00:09:23,310 Kaya mangyaring ihinto sa akin at humingi ng isang katanungan. 225 00:09:23,310 --> 00:09:25,380 Dahil ito ang lahat ng uri ng snowballs magkasama. 226 00:09:25,380 --> 00:09:27,800 Tulad ng, mga payo humantong sa memory lead sa iba pang mga bagay. 227 00:09:27,800 --> 00:09:31,710 At kaya kung hindi mo maintindihan ang mga payo, huminto sa akin at kami na malaman ito 228 00:09:31,710 --> 00:09:35,070 at buhay ay maging fine. 229 00:09:35,070 --> 00:09:35,680 >> Cool. 230 00:09:35,680 --> 00:09:39,050 Kaya kung gaano karaming ng ka guys sa panayam, kapag nabanggit payo David, 231 00:09:39,050 --> 00:09:42,050 iyong talino uri ng naka sa maging halaya-O? 232 00:09:42,050 --> 00:09:42,550 Oo. 233 00:09:42,550 --> 00:09:44,190 Good. 234 00:09:44,190 --> 00:09:46,900 Kami ay pagpunta sa subukan upang de-maging halaya-O iyong talino ngayon. 235 00:09:46,900 --> 00:09:50,300 Kami ay pagpunta sa talagang sistematikong pumunta sa pamamagitan ng kung ano ang eksaktong isang pointer ay, 236 00:09:50,300 --> 00:09:52,530 ano ang ginagawa nito, at kung paano namin ginagamit ang mga ito. 237 00:09:52,530 --> 00:09:56,620 >> Kaya lahat pointers-- kaya normal na may mga variable 238 00:09:56,620 --> 00:10:00,920 hindi namin ginagamit sa coding, tulad ng variable tulad ng integer o mga string 239 00:10:00,920 --> 00:10:04,790 o sa kamay, ang mga ito ay ang lahat ng mahalagang ang halaga na itinalaga sa kanila 240 00:10:04,790 --> 00:10:06,870 pati na rin ng isang address tumuturo sa halagang iyon. 241 00:10:06,870 --> 00:10:08,895 Kaya ako ng pagpunta sa gumuhit ito sa ngayon. 242 00:10:08,895 --> 00:10:14,270 243 00:10:14,270 --> 00:10:16,140 Mayroon kaming halos walang tisa ngunit iyan ay OK. 244 00:10:16,140 --> 00:10:25,550 >> Kaya halimbawa, normal ang paraan na kami 245 00:10:25,550 --> 00:10:30,860 ay gumagamit ng mga variable ay lumikha namin ang mga pangalan ng variable ng uri int, sabihin 246 00:10:30,860 --> 00:10:31,360 sabihin lang. 247 00:10:31,360 --> 00:10:37,360 Kaya dito namin nakuha ng int x at hindi namin Sinisimulan na int sa 50. 248 00:10:37,360 --> 00:10:42,390 Kaya dito sa block na ito ng memory sa aming mga computer na naka-imbak namin ang isang bilang ng mga 50. 249 00:10:42,390 --> 00:10:46,170 Kaya kung saan payo dumating sa paglalaro ay na ang iyong computer itself-- gusto, dito, 250 00:10:46,170 --> 00:10:48,880 pisikal na sa hard drive sa RAM ng aking computer-- 251 00:10:48,880 --> 00:10:51,147 ito lamang ay may isang tiyak na halaga ng memory. 252 00:10:51,147 --> 00:10:53,980 Hindi ka na panatilihin ang pag-iimbak ng mga bagay-bagay sa itaas ng mga bagay-bagay sa itaas ng mga bagay-bagay 253 00:10:53,980 --> 00:10:54,990 at magkaroon ng mga ito lahat. 254 00:10:54,990 --> 00:10:59,570 >> Kaya ang paraan na aming magilas mag-ukol memory para makapag-imbak ng kung ano ang gusto namin 255 00:10:59,570 --> 00:11:03,150 at pag-access sa mga ito, ay sa pamamagitan ng pagkakaroon ng mga payo. 256 00:11:03,150 --> 00:11:06,210 Kaya isipin sa iyong memory space, right. 257 00:11:06,210 --> 00:11:10,420 Kung ito ang RAM ng iyong computer, ikaw ay may mga maliit na piraso 258 00:11:10,420 --> 00:11:14,540 o mga bloke o bytes ng memorya sa which-- ang mga ito ay maliit lamang 259 00:11:14,540 --> 00:11:18,120 bloke na ay inilalaan sa labas ang hard drive o RAM ng iyong computer, 260 00:11:18,120 --> 00:11:21,950 at sa loob ng bawat isa sa mga bloke maaari mong itabi ang iba't ibang mga bagay. 261 00:11:21,950 --> 00:11:26,990 Kaya halimbawa, isa array sa halimbawang ito 262 00:11:26,990 --> 00:11:29,984 dito ay isa byte na kung saan ay na binubuo ng walong bits. 263 00:11:29,984 --> 00:11:32,900 Ang numero nagbabago depende sa operating system ng iyong computer. 264 00:11:32,900 --> 00:11:35,942 Halimbawa, kung ilan sa inyo ay may narinig ng 32-bit kumpara sa 64-bit operating 265 00:11:35,942 --> 00:11:36,441 sistema? 266 00:11:36,441 --> 00:11:37,070 Mismong. 267 00:11:37,070 --> 00:11:38,860 >> Kaya lahat ng iyan ay sinasabi ay na ang mga na memorya 268 00:11:38,860 --> 00:11:42,420 na ang paraan na ang iyong computer namamahala ng memory ay naiiba. 269 00:11:42,420 --> 00:11:45,370 Aling ang dahilan kung bakit ito ay talagang Mahalaga na maunawaan 270 00:11:45,370 --> 00:11:49,450 bakit memory mismo mga function sa halip kaysa bigyang-pansin ang mga numero. 271 00:11:49,450 --> 00:11:52,400 Kaya hindi namin talagang pakialam kung paano malaki ang array na ito 272 00:11:52,400 --> 00:11:55,710 ay, kailangan lang na pag-aalaga tungkol kung paano malaki ang kailangan namin isang int upang maging, 273 00:11:55,710 --> 00:11:58,350 kung paano malaki do kailangan namin ng isang string upang maging, kung paano malaki ay isang pointer? 274 00:11:58,350 --> 00:12:00,630 275 00:12:00,630 --> 00:12:01,130 SIGE. 276 00:12:01,130 --> 00:12:03,690 Kaya ito ay magiging isang pulutong ng mabigat, siksik na impormasyon. 277 00:12:03,690 --> 00:12:07,005 Pupunta ako upang bigyan ka guys isang ilang comic relief sandali dito. 278 00:12:07,005 --> 00:12:09,130 Ikaw guys dapat ma lahat upang maunawaan na ito ngayon. 279 00:12:09,130 --> 00:12:12,550 Dahil alam namin na payo ay mga address, 280 00:12:12,550 --> 00:12:14,480 at ang mga ito ay naiiba mula sa mga variable. 281 00:12:14,480 --> 00:12:14,980 SIGE. 282 00:12:14,980 --> 00:12:15,610 Cool. 283 00:12:15,610 --> 00:12:17,065 CS jokes ay ang pinakamahusay na, oo? 284 00:12:17,065 --> 00:12:19,800 285 00:12:19,800 --> 00:12:23,450 >> Kaya ang paraan na kami ay pumunta tungkol sa paglikha ng isang pointer 286 00:12:23,450 --> 00:12:25,750 ay isang napaka-tukoy na uri ng syntax. 287 00:12:25,750 --> 00:12:27,870 Tulad ng sa paglikha ng anumang uri ng variable, ito ay 288 00:12:27,870 --> 00:12:30,240 pagpunta sa isang tiyak na syntax na ginagamit namin upang lumikha ng ito. 289 00:12:30,240 --> 00:12:34,830 Kaya kapag deklarasyon anumang pointer, isang pointer lamang essentially-- 290 00:12:34,830 --> 00:12:37,040 Sa tingin ko ang mga mahahalagang bahagi ng payo ay 291 00:12:37,040 --> 00:12:41,650 na kung saan ang isang variable ay pareho ang halaga at isang address, 292 00:12:41,650 --> 00:12:44,100 isang pointer ay isang address. 293 00:12:44,100 --> 00:12:45,740 Ang halaga nito ay isang address. 294 00:12:45,740 --> 00:12:48,120 Kaya ito ay isang address na naka-imbak sa ibang address. 295 00:12:48,120 --> 00:12:49,120 Kung na gumagawa ng anumang mga kahulugan. 296 00:12:49,120 --> 00:12:52,390 Kami ay pumunta sa paglipas ng ito nang mas detalyado, ngunit iyan ay ang generic na form 297 00:12:52,390 --> 00:12:54,370 ng why-- ng kung paano ang isang printer ay naka-imbak. 298 00:12:54,370 --> 00:12:58,900 >> Kaya ang paraan na ikaw ay lumikha ng isang pointer ay sa pamamagitan ng paggawa ng anumang uri ng data 299 00:12:58,900 --> 00:13:02,840 na ang pointer ay pagpunta upang maging sanggunian at then-- 300 00:13:02,840 --> 00:13:05,324 may star-- at pagkatapos ay ang pangalan ng pointer. 301 00:13:05,324 --> 00:13:07,240 Kaya dito, kung gusto naming upang lumikha ng isang pointer na 302 00:13:07,240 --> 00:13:11,640 tulis patungo sa isang integer, at kami pinaghahanap ang pangalan ng pointer na x, 303 00:13:11,640 --> 00:13:13,880 Gusto naming gawin int star x. 304 00:13:13,880 --> 00:13:14,380 Oo? 305 00:13:14,380 --> 00:13:16,680 >> Madla: At kaya kung ang sumusunod na linya sa iyo 306 00:13:16,680 --> 00:13:20,045 gawin int x, ay ang int star x ipahiwatig ang lokasyon ng mga x 307 00:13:20,045 --> 00:13:21,170 ka na pagtukoy pagkatapos? 308 00:13:21,170 --> 00:13:22,000 >> ANDI PENG: Talagang mahusay na tanong. 309 00:13:22,000 --> 00:13:23,860 Susubukan naming pumunta sa paglipas na ito sa isang pares slide mamaya. 310 00:13:23,860 --> 00:13:24,920 Oo. 311 00:13:24,920 --> 00:13:27,610 At pagkatapos ay parehong bagay sa pansamantalang trabaho at parehong kamay bagay. 312 00:13:27,610 --> 00:13:29,950 Basta alam na sa puntong ito lumikha kami ng isang pointer, 313 00:13:29,950 --> 00:13:32,470 hindi pa namin na talagang i-set ito sa pantay na kahit ano pa. 314 00:13:32,470 --> 00:13:34,110 Hindi namin talagang isinangguni dito. 315 00:13:34,110 --> 00:13:36,087 Ang parehong bagay dito kapag lumikha ka ng isang variable, 316 00:13:36,087 --> 00:13:39,420 nalikha mo na ang pangalan ng variable, hindi mo pa talagang i-set ang halaga sa mga ito. 317 00:13:39,420 --> 00:13:41,410 Parehong bagay dito. 318 00:13:41,410 --> 00:13:42,110 >> SIGE. 319 00:13:42,110 --> 00:13:44,670 Kaya paano namin-set ng mga halaga sa mga payo? 320 00:13:44,670 --> 00:13:47,190 Ito ay sa pamamagitan ng sanggunian at dereferencing. 321 00:13:47,190 --> 00:13:52,260 Kaya ang paraan na maaari naming isangguni isang varia-- isang pointer, sa kakanyahan 322 00:13:52,260 --> 00:13:56,630 bumalik kami ng address sa memory ng kung saan ang isang variable ay naka-imbak. 323 00:13:56,630 --> 00:14:02,550 Kaya kung ako ay isang pointer-- makikita ko gumuhit ito sa sandaling makuha namin sa susunod na slide, 324 00:14:02,550 --> 00:14:05,760 ngunit lamang malaman na, mahalagang, ang at- mga ampersand 325 00:14:05,760 --> 00:14:10,240 at ang variable-- lahat na ay ay sabihin sa iyo ang address 326 00:14:10,240 --> 00:14:11,780 ng kung saan ang isang bagay ay naka-imbak. 327 00:14:11,780 --> 00:14:15,730 At dereferencing ay ang kabaligtaran ng mga iyon, na kung saan ay lamang ang star. 328 00:14:15,730 --> 00:14:18,950 Ang bituin ay nagbibigay lamang sa iyo ang aktwal data na naka-imbak sa address na iyon. 329 00:14:18,950 --> 00:14:21,090 >> Kaya isa ay nagbibigay sa iyo ang address naka-imbak sa isang address, 330 00:14:21,090 --> 00:14:23,945 ang iba pang nagbibigay sa iyo ng tunay na mga halaga na naka-imbak sa address. 331 00:14:23,945 --> 00:14:25,820 Kaya silang dalawa ay bigyan iyo ng iba't ibang mga bagay. 332 00:14:25,820 --> 00:14:27,755 333 00:14:27,755 --> 00:14:29,880 Muli, ang mga slide ay lahat ng mga online kaya walang mga alalahanin 334 00:14:29,880 --> 00:14:33,200 kung hindi maaaring kopyahin mo guys down na ito sa oras. 335 00:14:33,200 --> 00:14:36,330 >> Kaya sabihin tumagal ng isang pagtingin sa halimbawang ito dito. 336 00:14:36,330 --> 00:14:40,530 Kaya Mayroon namin ang isang higanteng memory array dito, tama? 337 00:14:40,530 --> 00:14:42,920 Saan kami na lang na mga bloke ng memorya, o bytes ng memorya, 338 00:14:42,920 --> 00:14:45,060 kung saan maaari naming tindahan ng iba't ibang mga bagay. 339 00:14:45,060 --> 00:14:47,310 Sabihin lang sabihin ang mga ito ay ang address puntos sa memory. 340 00:14:47,310 --> 00:14:51,350 Kaya anumang oras mayroon kang - makita ang 0x, lahat ng iyon ay nagsasabi sa iyo ay na ang 341 00:14:51,350 --> 00:14:52,930 iyan ay isang hexadecimal numero. 342 00:14:52,930 --> 00:14:56,310 Bilang ka guys alam ng lahat, mga numero maaaring batay sa iba't ibang mga naka-base. 343 00:14:56,310 --> 00:14:58,770 Base 10 ay kung paano namin karaniwang bigyang-kahulugan ang mga numero. 344 00:14:58,770 --> 00:15:00,550 Mayroon din ng base 2, na kung saan ay binary. 345 00:15:00,550 --> 00:15:03,366 At sa kasong ito, hexadecimal ay base 16. 346 00:15:03,366 --> 00:15:06,240 Ito lamang ay isang iba't ibang mga paraan ng sinasabi mula sa zero sa 10-- o zero sa siyam 347 00:15:06,240 --> 00:15:10,904 at pagkatapos din A, B, C, D, E, F. Sumasangguni Gayundin magkakaibang numero. 348 00:15:10,904 --> 00:15:12,570 Dumaan si David na ito sa panayam sa madaling sabi. 349 00:15:12,570 --> 00:15:14,280 Kung ikaw guys ay nalilito, Google lamang ito. 350 00:15:14,280 --> 00:15:17,370 Mayroon talagang mga madaling paraan upang malaman ang kung ano ang isang hexadecimal digit ay. 351 00:15:17,370 --> 00:15:19,510 Ang lahat ng iyon ay talagang may-katuturang ngayon ay para sa iyo 352 00:15:19,510 --> 00:15:24,170 guys na malaman na ang isang hexadecimal digit sa C 353 00:15:24,170 --> 00:15:27,090 Sinasabi you-- na karaniwang ay nagsasabi sa iyo na ito ay isang pointer. 354 00:15:27,090 --> 00:15:29,150 O iyon ang isang address. 355 00:15:29,150 --> 00:15:33,310 >> Kaya sa halimbawa dito, int x ay katumbas ng 5. 356 00:15:33,310 --> 00:15:36,350 Kami ay ang paglikha ng isang integer-- Paumanhin, isang variable ng uri 357 00:15:36,350 --> 00:15:39,090 integer at kami ay Sinisimulan ito sa 5. 358 00:15:39,090 --> 00:15:47,040 Kaya dito sa aming memory board, maaari naming makita na x ay ang address ng 0x0 359 00:15:47,040 --> 00:15:50,550 at ang halaga na na sa iyo naka-imbak sa loob ng mga ito ay 5. 360 00:15:50,550 --> 00:15:52,370 Na dapat magkaroon ng kahulugan sa lahat ng tao, di ba? 361 00:15:52,370 --> 00:15:53,030 SIGE. 362 00:15:53,030 --> 00:15:56,520 >> At pagkatapos ay kung ano ang aming nagawa sa pangalawang linya ng code 363 00:15:56,520 --> 00:16:00,290 ay na ginawa namin isang pointer ng uri int. 364 00:16:00,290 --> 00:16:02,750 Ano Iyan ang int star pointer ay ginagawa. 365 00:16:02,750 --> 00:16:07,320 At iyon ay katumbas na ang ampersand x ay nagbibigay sa iyo ng address ng isang bagay. 366 00:16:07,320 --> 00:16:12,120 Kaya ang address ng x sa halimbawang ito ay 0x0. 367 00:16:12,120 --> 00:16:15,630 At kaya address na pagiging naka-imbak sa na pointer. 368 00:16:15,630 --> 00:16:17,360 Ba na magkaroon ng kahulugan sa lahat ng tao? 369 00:16:17,360 --> 00:16:19,965 >> Kaya sa tingin ng this-- tingin ng pointers-- dito 370 00:16:19,965 --> 00:16:24,780 sa Yale kami ay may isang PO box sistema kung saan ang bawat mag-aaral ay may isang mailing 371 00:16:24,780 --> 00:16:26,960 address kung saan maaari kang pumunta sa silong ng LW 372 00:16:26,960 --> 00:16:30,492 at maaari kang pumunta lamang at grab ano man ang kailangan mo mula sa address na iyon. 373 00:16:30,492 --> 00:16:32,450 Ang parehong bagay ang nangyayari dito sa isang computer. 374 00:16:32,450 --> 00:16:36,770 Mayroon kang mga bytes ng memorya na Maaari kang mag-imbak ng impormasyon sa, 375 00:16:36,770 --> 00:16:39,529 ngunit upang malaman kung aling mga mga piraso ng impormasyon 376 00:16:39,529 --> 00:16:42,570 match up ng kung ano ang iyong sinusubukan na hanapin at kung saan, kailangan mo ng isang pointer na 377 00:16:42,570 --> 00:16:43,740 ay nagsasabi sa iyo kung paano pumunta doon. 378 00:16:43,740 --> 00:16:47,270 >> Kaya halimbawa, para sa akin, ang aking PO box, Mayroon akong isang tiyak na limang digit na numero. 379 00:16:47,270 --> 00:16:48,400 Iyon ang aking address. 380 00:16:48,400 --> 00:16:51,880 Kaya ko pisikal na pumunta sa memory, Maaari ko bang tingnan ang address, 381 00:16:51,880 --> 00:16:54,507 Maaari ba akong pumunta sa na PO box at i-access sa loob ng data. 382 00:16:54,507 --> 00:16:57,090 Ba na magkaroon ng kahulugan sa lahat ng tao Ang iyong computer ay mahalagang 383 00:16:57,090 --> 00:16:59,000 ginagawa ang eksaktong parehong bagay. 384 00:16:59,000 --> 00:17:02,750 >> Kaya lahat ng pointer ay ginagawa ay na lamang ito ay ang paglikha ng isang memory 385 00:17:02,750 --> 00:17:06,099 at ang data nito memory ay talagang ang address ng iba pa. 386 00:17:06,099 --> 00:17:08,210 Pagkatapos ay maaari kang pumunta at hanapin iyon. 387 00:17:08,210 --> 00:17:09,060 Ang bawat mabuti? 388 00:17:09,060 --> 00:17:10,720 Ang bawat mabuting kasama ko sa ngayon? 389 00:17:10,720 --> 00:17:11,360 SIGE. 390 00:17:11,360 --> 00:17:11,859 Cool. 391 00:17:11,859 --> 00:17:14,311 392 00:17:14,311 --> 00:17:14,810 Lahat tama. 393 00:17:14,810 --> 00:17:19,160 Kaya halos ang parehong bagay tulad ng dati. 394 00:17:19,160 --> 00:17:23,849 Kaya kami, una, isang variable tinatawag na x kung saan case-- 395 00:17:23,849 --> 00:17:27,700 Pupunta ako upang baguhin ang halaga na ito sa 5. 396 00:17:27,700 --> 00:17:31,820 Sabihin lang sabihin ang address ng mga ito sa memory ay 0x0. 397 00:17:31,820 --> 00:17:33,070 00. 398 00:17:33,070 --> 00:17:33,570 Great. 399 00:17:33,570 --> 00:17:35,320 >> Kaya nga, sa aming ikalawang linya ng code, hindi namin 400 00:17:35,320 --> 00:17:41,210 pagpunta upang lumikha ng isang pointer tinatawag ptr pointer. 401 00:17:41,210 --> 00:17:45,760 At ang address ng na, sabihin lamang sabihin na ang 0x01 sa memorya. 402 00:17:45,760 --> 00:17:48,280 At ang aming talagang nais na store-- ang ampersand 403 00:17:48,280 --> 00:17:50,620 x ay nagbibigay sa iyo ng address ng kung ano ang x ay. 404 00:17:50,620 --> 00:17:53,990 At ang address ng x ay 0x00. 405 00:17:53,990 --> 00:17:57,300 Kaya ito pointer ngayon ang tunay na may address 406 00:17:57,300 --> 00:18:00,210 naka-imbak na rin ang kanyang halaga ng kung ano ang x ay. 407 00:18:00,210 --> 00:18:01,700 Ang bawat kasama ko sa ngayon? 408 00:18:01,700 --> 00:18:02,320 Cool. 409 00:18:02,320 --> 00:18:04,670 >> At pagkatapos ay, ang paraan na Gusto naming kopyahin na, 410 00:18:04,670 --> 00:18:09,650 ay kung kami ay magpahayag at magpasimula isa pang bloke ng memorya ng uri int. 411 00:18:09,650 --> 00:18:10,150 Right? 412 00:18:10,150 --> 00:18:11,130 Ito ay magiging isang int. 413 00:18:11,130 --> 00:18:14,130 Ito ay tinatawag na kopya. 414 00:18:14,130 --> 00:18:17,120 At ikaw ay pagpunta sa get-- kaya ang star pointer ay nagbibigay sa iyo 415 00:18:17,120 --> 00:18:19,080 ang aktwal na data mula sa address na iyon. 416 00:18:19,080 --> 00:18:22,490 Ampersand ay nagbibigay sa iyo ang address, ang bituin ay nagbibigay sa iyo ng data. 417 00:18:22,490 --> 00:18:24,630 Kung kaya't ang data sa pointer. 418 00:18:24,630 --> 00:18:29,420 Pointer ito ay tumuturo sa 5. 419 00:18:29,420 --> 00:18:33,140 At kaya ang function na ito here-- ang star pointer-- 420 00:18:33,140 --> 00:18:39,740 napupunta, makakakuha anuman ang nasa block na ito at mga tindahan ng mga ito dito. 421 00:18:39,740 --> 00:18:41,730 Ang bawat malinaw sa kung paano na nangyari? 422 00:18:41,730 --> 00:18:45,490 >> Kaya ang dalawang mga operator right there-- mga ampersand at ang star-- 423 00:18:45,490 --> 00:18:48,250 lamang gawin ang iba't ibang mga bagay-bagay kapag ginamit sa mga payo. 424 00:18:48,250 --> 00:18:50,837 Makakakuha ka ng isa sa mga address, isa makakakuha ka ng mga aktwal na halaga. 425 00:18:50,837 --> 00:18:53,670 Kaya't tiyakin na kapag ikaw guys ay coding na hindi mo lituhin ang dalawa 426 00:18:53,670 --> 00:18:55,650 dahil ang mga ito ng malaking-malaki naiiba. 427 00:18:55,650 --> 00:18:58,880 Narito kami ay may isang magandang halimbawa ng isang 0x01. 428 00:18:58,880 --> 00:19:01,207 Iyan ay isang tunay na ganda maliit na bilang na matandaan. 429 00:19:01,207 --> 00:19:03,040 Sa iyong aktwal na computer ikaw ay pagpunta sa may 430 00:19:03,040 --> 00:19:06,740 isang higanteng asno numero na ay isang bagay na iyan ay hindi maganda, hindi kaaya-aya. 431 00:19:06,740 --> 00:19:08,280 Ito ay pagpunta sa ilang mga halaga ng basura. 432 00:19:08,280 --> 00:19:10,920 At kaya ito ay pagpunta sa talagang, talagang gumulo sa iyong mga programa. 433 00:19:10,920 --> 00:19:12,670 Ito ay napakahalaga ngayon na kami ay may 434 00:19:12,670 --> 00:19:16,150 ang mga batayan down para why-- gusto, ano ang pisikal na nangyayari kapag 435 00:19:16,150 --> 00:19:18,270 ikaw ay nagpapatakbo ng mga bloke ng code. 436 00:19:18,270 --> 00:19:19,120 Everyone-- oo? 437 00:19:19,120 --> 00:19:21,425 >> Madla: Kaya katumbas int x int kopya? 438 00:19:21,425 --> 00:19:24,650 439 00:19:24,650 --> 00:19:34,970 >> ANDI PENG: Hindi dahil, sa kasong ito, int x-- ang halaga ng x-- katumbas ng 5, di ba? 440 00:19:34,970 --> 00:19:40,546 At pagkatapos int copy katumbas ng 5. 441 00:19:40,546 --> 00:19:43,420 Kaya kung ikaw ay upang equate ang mga ito sa bawat isa dahil ang mga ito ay integer, 442 00:19:43,420 --> 00:19:46,379 yes, ang mga ito ay suriin sa totoo. 443 00:19:46,379 --> 00:19:49,670 Ngunit kung sila ay mga string sa memory, tulad ng ang isa na ginawa ni David sa panahon halimbawa, 444 00:19:49,670 --> 00:19:51,670 na iba dahil sila ay tumutukoy 445 00:19:51,670 --> 00:19:54,920 ang mga address ng mga lugar sa memory at sila equate sa false. 446 00:19:54,920 --> 00:20:00,070 >> Kaya dito ay ito ay totoo dahil ikaw ay direktang paghahambing values-- integers-- 447 00:20:00,070 --> 00:20:02,240 ngunit sa iba ikaw sanggunihan points. 448 00:20:02,240 --> 00:20:05,290 Dahil ang isang string ay sa isang array, at all-- namin makipag-usap tungkol sa mga ito later-- 449 00:20:05,290 --> 00:20:09,940 ngunit array ay mahalagang lamang ng isang pointer sa isang bungkos ng mga karakter sa memorya. 450 00:20:09,940 --> 00:20:11,610 Kaya ang mga ay medyo naiiba. 451 00:20:11,610 --> 00:20:14,642 Ngunit sa kasong ito, oo, maaari mong gawin na. 452 00:20:14,642 --> 00:20:17,354 >> Madla: Maaari mong ipaliwanag ang address ng kopya? 453 00:20:17,354 --> 00:20:18,020 ANDI PENG: Oo. 454 00:20:18,020 --> 00:20:20,030 Kaya na just-- ko ay hindi punan ang halaga 455 00:20:20,030 --> 00:20:23,022 ngunit ito ay ang ilang mga random na lang ng iba pang mga halaga ng basura na hindi namin pag-aalaga tungkol. 456 00:20:23,022 --> 00:20:25,730 Dahil sa sandaling simulan mo ang program nauunawaan mo na hindi namin talagang 457 00:20:25,730 --> 00:20:28,150 talagang pakialam kung ano ang aktwal na mga address ay, 458 00:20:28,150 --> 00:20:30,470 kailangan lang nating malaman kung ano ang sa mga address. 459 00:20:30,470 --> 00:20:31,608 Oo. 460 00:20:31,608 --> 00:20:36,034 >> Madla: Ang bituin sa tabi ng int sa pangalawang linya, na iba than-- 461 00:20:36,034 --> 00:20:36,700 ANDI PENG: Oo. 462 00:20:36,700 --> 00:20:39,015 Madla: -ang dereferencing at sanggunihan star? 463 00:20:39,015 --> 00:20:39,681 ANDI PENG: Oo. 464 00:20:39,681 --> 00:20:43,180 Kaya ang mga may-akda ng C-- sinumang nagpasya na isulat ang wika ng C-- 465 00:20:43,180 --> 00:20:44,200 ay hindi masyadong smart. 466 00:20:44,200 --> 00:20:46,830 Sila ay hindi masyadong matalino sa sinusubukan upang malaman kung bakit dapat nating gawin ito. 467 00:20:46,830 --> 00:20:49,413 Kung ito ay sa akin, gagawin ko talaga gamitin ang dalawang magkaibang mga character. 468 00:20:49,413 --> 00:20:52,100 Subalit sila ay nagpasya na gamitin ang parehong isa. 469 00:20:52,100 --> 00:20:56,607 >> Kaya ang star pagkatapos ng isang int, na nagsasabi sa ang computer 470 00:20:56,607 --> 00:20:58,190 na ikaw ay tungkol sa upang lumikha ng isang pointer. 471 00:20:58,190 --> 00:21:00,820 Ngunit kung ikaw ay sinusubukan upang dereference something-- sa ibang salita, 472 00:21:00,820 --> 00:21:03,780 pumunta sa address at hilahin ang mga data mula somewhere-- 473 00:21:03,780 --> 00:21:05,070 ang bituin ay ginagamit naiiba. 474 00:21:05,070 --> 00:21:08,750 Kaya mo guys maging maingat tungkol lamang Hindi panggugulo up ang dalawang gamit. 475 00:21:08,750 --> 00:21:09,870 Cool. 476 00:21:09,870 --> 00:21:10,605 Oo? 477 00:21:10,605 --> 00:21:14,680 >> Madla: Kaya lang ulitin sa tiyakin na ako following-- 478 00:21:14,680 --> 00:21:16,252 >> ANDI PENG: Ganap fine. 479 00:21:16,252 --> 00:21:20,491 >> Madla: --In kaliwang bahagi ng na slide, gawin namin ang isang bagay na alam natin. 480 00:21:20,491 --> 00:21:23,124 Ipinapahayag namin ang isang integer [Hindi marinig] na katumbas ng 5. 481 00:21:23,124 --> 00:21:23,790 ANDI PENG: Oo. 482 00:21:23,790 --> 00:21:24,456 Madla: Karapatan. 483 00:21:24,456 --> 00:21:28,960 At pagkatapos kami ay may isang int star na bagay at na nagsasabi na, OK, uri ng tulad namin 484 00:21:28,960 --> 00:21:31,235 ipinahayag ng isang integer, ngayon kami ay deklarasyon ng isang pointer. 485 00:21:31,235 --> 00:21:32,110 ANDI PENG: Tama. 486 00:21:32,110 --> 00:21:32,410 Tamang. 487 00:21:32,410 --> 00:21:32,710 >> Madla: Right? 488 00:21:32,710 --> 00:21:33,870 At ang aming mga pointer ay ptr. 489 00:21:33,870 --> 00:21:34,080 >> ANDI PENG: Yep. 490 00:21:34,080 --> 00:21:35,460 Ang pangalan ng pointer ay ptr. 491 00:21:35,460 --> 00:21:35,959 Pointer. 492 00:21:35,959 --> 00:21:39,000 Madla: At pagkatapos na ito katumbas nx na lang nagsasabi C 493 00:21:39,000 --> 00:21:44,667 na ito ay nais na ma-access ang halaga sa integer x-- ang halaga na integer x 494 00:21:44,667 --> 00:21:45,800 ay itinalaga. 495 00:21:45,800 --> 00:21:49,050 >> ANDI PENG: Mag-ingat dahil ampersand x talaga 496 00:21:49,050 --> 00:21:53,120 Sinasabi you-- ang computer na kayo nais upang hilahin ang address ng kung ano ang x ay. 497 00:21:53,120 --> 00:21:56,350 Kaya ampersand nagbibigay sa iyo ng address, star nagbibigay sa iyo ng ang halaga. 498 00:21:56,350 --> 00:21:58,255 >> Madla: Kaya gusto namin ang address. 499 00:21:58,255 --> 00:22:02,075 Ipagpalagay natin na x ay at-- 500 00:22:02,075 --> 00:22:03,950 ANDI PENG: Kami ay talagang malaman kung ano ang x ay, di ba? 501 00:22:03,950 --> 00:22:06,790 Dahil alam namin na x was-- Ako paggawa ng ito up ngunit sabihin lamang sabihin, 502 00:22:06,790 --> 00:22:08,760 nagkataon, ito ay 0x00. 503 00:22:08,760 --> 00:22:09,590 Right? 504 00:22:09,590 --> 00:22:14,120 Upang malaman namin ang mga address na ito ay 0x00, at kaya kapag pumunta kami at ampersand x, 505 00:22:14,120 --> 00:22:17,050 alam namin na na dapat suriin upang 0x00. 506 00:22:17,050 --> 00:22:20,810 Alin ang kung bakit namin na naka-imbak na bilang ang halaga ng aming pointer. 507 00:22:20,810 --> 00:22:21,924 Ba na magkaroon ng kahulugan? 508 00:22:21,924 --> 00:22:22,832 >> Madla: Oo. 509 00:22:22,832 --> 00:22:28,057 At copy papunta sa dereference ptr-- 510 00:22:28,057 --> 00:22:28,765 ANDI PENG: Kanan. 511 00:22:28,765 --> 00:22:30,473 Madla: --which ay isang pointer na kami 512 00:22:30,473 --> 00:22:35,220 ipinahayag na sinasabi sa atin ng address ng integer x. 513 00:22:35,220 --> 00:22:36,160 >> ANDI PENG: Oo. 514 00:22:36,160 --> 00:22:39,272 >> Madla: At sa ganitong isang kaso, star ptr ay 515 00:22:39,272 --> 00:22:41,256 katumbas ng halaga ng x kung saan ay katumbas ng 5. 516 00:22:41,256 --> 00:22:42,744 >> ANDI PENG: Tama. 517 00:22:42,744 --> 00:22:44,728 >> Madla: Cool. 518 00:22:44,728 --> 00:22:49,382 At iyon ay isang simpleng paraan upang makakuha ng na o ay na ang tanging way-- 519 00:22:49,382 --> 00:22:51,840 ANDI PENG: So sa ngayon ito ay hindi mukhang tunay lohikal na para sa amin 520 00:22:51,840 --> 00:22:54,690 gastusin sa lahat ng oras na ito ang paggawa ng ito sobrang komplikadong bagay kapag 521 00:22:54,690 --> 00:22:57,606 lahat ng aming nagawa ay lumikha lamang ng dalawang integers na may halaga ng 5, di ba? 522 00:22:57,606 --> 00:22:58,900 Hindi ito magkaroon ng kahulugan. 523 00:22:58,900 --> 00:23:03,060 Ngunit sa sandaling kami ay pumunta sa paglipas ng memory laang-gugulin at- bibigyan namin ng 524 00:23:03,060 --> 00:23:06,067 pumunta sa kung bakit ito ay maaaring magaling at kapaki-pakinabang sa susunod. 525 00:23:06,067 --> 00:23:09,150 Tiwala sa akin kapag sinasabi ko ang ginagawa namin hindi lamang lumikha ng mga arbitrary function para sa iyo 526 00:23:09,150 --> 00:23:11,340 guys upang matuto dahil hindi namin sinusubukan sa gulo sa iyo. 527 00:23:11,340 --> 00:23:14,550 May aktwal na gumagamit ng para sa lahat ng mga mga bagay-bagay at kami ay makipag-usap tungkol sa kanila. 528 00:23:14,550 --> 00:23:14,950 >> Madla: Kahanga-hanga. 529 00:23:14,950 --> 00:23:15,350 >> ANDI PENG: Oo. 530 00:23:15,350 --> 00:23:16,150 >> Madla: [hindi marinig]. 531 00:23:16,150 --> 00:23:16,450 >> ANDI PENG: Magandang katanungan. 532 00:23:16,450 --> 00:23:17,510 >> Madla: [hindi marinig]. 533 00:23:17,510 --> 00:23:18,000 >> ANDI PENG: Ito ay hindi. 534 00:23:18,000 --> 00:23:18,666 Ito ay talagang hindi. 535 00:23:18,666 --> 00:23:21,050 Madla: --two variable na din pantay [hindi marinig]. 536 00:23:21,050 --> 00:23:22,400 SIGE. 537 00:23:22,400 --> 00:23:23,070 >> ANDI PENG: Oo. 538 00:23:23,070 --> 00:23:23,570 SIGE. 539 00:23:23,570 --> 00:23:25,249 Bago ako magpatuloy, ay malinaw sa lahat? 540 00:23:25,249 --> 00:23:26,790 Alam ko Taylor, nakuha mo sa isang bit late. 541 00:23:26,790 --> 00:23:27,490 Ito ay OK. 542 00:23:27,490 --> 00:23:28,100 Ito ay online. 543 00:23:28,100 --> 00:23:30,600 Makikita panoorin ang unang 20 minuto at ikaw ay ang lahat ng mabuti. 544 00:23:30,600 --> 00:23:31,190 SIGE. 545 00:23:31,190 --> 00:23:31,690 Cool. 546 00:23:31,690 --> 00:23:35,597 547 00:23:35,597 --> 00:23:37,140 >> Lahat tama. 548 00:23:37,140 --> 00:23:41,270 Kaya ito ay mahalagang uri ng isang mga katulad na bagay na lang namin ginawa. 549 00:23:41,270 --> 00:23:43,100 Ito ay lamang sa isang graphical form. 550 00:23:43,100 --> 00:23:47,070 Kung kayo ay upang subaybayan kung ano ang nangyari lamang, int x ay katumbas ng 5, 551 00:23:47,070 --> 00:23:52,159 lahat ng aming nagawa sa puntong ito ay lumikha ng isang variable na pinangalanan x uri ng int. 552 00:23:52,159 --> 00:23:54,200 Kami ay pagpunta sa tindahan ng halaga ng 5 sa loob ng mga ito. 553 00:23:54,200 --> 00:23:57,366 Walang pointer dahil kami ay hindi talaga pa lumilikha ng isang pointer, di ba? 554 00:23:57,366 --> 00:24:00,302 At pagkatapos ay sa susunod na line, int star pointer, 555 00:24:00,302 --> 00:24:02,760 na kung saan kami ay talagang pisikal na paglikha ng pointer 556 00:24:02,760 --> 00:24:05,010 at kami ay-set na pantay-pantay sa, o sanggunihan 557 00:24:05,010 --> 00:24:07,250 ang pointer, upang ampersand x. 558 00:24:07,250 --> 00:24:10,002 Alin ang kung saan saan man sa memory na ito nangyari na. 559 00:24:10,002 --> 00:24:12,210 Hindi ko talaga mag-abala paggawa ng up ang halaga ng oras na ito. 560 00:24:12,210 --> 00:24:14,900 Ngunit sa kasong ito, sa puntong iyon ikaw ay magiging katumbas iyon. 561 00:24:14,900 --> 00:24:18,060 >> At pagkatapos ay down doon, ang star pointer ay ang dereferencing. 562 00:24:18,060 --> 00:24:20,310 Iyon ay kung saan hindi namin paghila ng impormasyon. 563 00:24:20,310 --> 00:24:24,170 Kaya na halaga sa x ay talagang magiging katumbas ng 35. 564 00:24:24,170 --> 00:24:30,390 Kaya sa puntong ito, na namin ng mahalagang reinitialized lamang x sa 35 565 00:24:30,390 --> 00:24:32,320 nang hindi aktwal na pagpindot x. 566 00:24:32,320 --> 00:24:34,560 Sa pamamagitan lamang ng pointer noon ay tumuturo sa x, 567 00:24:34,560 --> 00:24:36,910 maaari naming talagang baguhin kung ano ang x ay. 568 00:24:36,910 --> 00:24:38,420 Pupunta ako sa gumuhit ito out pati na rin. 569 00:24:38,420 --> 00:24:52,200 >> Kaya dito na nilikha namin ang ilang mga random address dito. 570 00:24:52,200 --> 00:24:54,734 Sabihin lang sabihin 0x00 muli. 571 00:24:54,734 --> 00:24:56,150 Sabihin lang sabihin iyon ang address. 572 00:24:56,150 --> 00:25:00,830 At ginawa namin ang isang integer na may pangalang x at ang halaga na itinalaga kong ito ay 5. 573 00:25:00,830 --> 00:25:03,840 Sa pangalawang linya, int pointer-- kaya ngayon na namin 574 00:25:03,840 --> 00:25:07,820 Nakakuha ito ikalawang bagay dito na tinatawag na isang pointer-- 575 00:25:07,820 --> 00:25:14,310 at kami ay pagpunta to-- sabihin lamang sabihin ito ay ang ilang iba pang mga random memory address. 576 00:25:14,310 --> 00:25:18,460 >> Kaya kami ay pagpunta sa set na ito katumbas ng kahit na ano na iyon. 577 00:25:18,460 --> 00:25:21,540 578 00:25:21,540 --> 00:25:25,880 At ito pointer ay pagpunta sa point patungo sa halaga ng x 579 00:25:25,880 --> 00:25:30,090 At pagkatapos ay, kung babaguhin namin the-- kung gagawin natin ang star pointer, 580 00:25:30,090 --> 00:25:32,800 na pagpunta sa mga halaga ng aming pointer. 581 00:25:32,800 --> 00:25:36,979 Sa kasong ito, ito ay pagpunta upang subaybayan ito palaso sa ibabaw sa ang halaga na ito ng x 582 00:25:36,979 --> 00:25:38,395 at ito ay pagpunta upang baguhin ito sa 35. 583 00:25:38,395 --> 00:25:41,400 584 00:25:41,400 --> 00:25:44,760 Mabisa, binago namin lamang x nang hindi pagpindot x. 585 00:25:44,760 --> 00:25:48,970 Sa pamamagitan lamang ng sanggunihan mga payo, maaari naming pumunta at baguhin ang halaga ng x. 586 00:25:48,970 --> 00:25:50,050 Ba na magkaroon ng kahulugan? 587 00:25:50,050 --> 00:25:55,200 >> Kaya sa ganitong paraan, maaari naming aktwal na palitan ang pangalan at rechange at muling italaga ang halaga 588 00:25:55,200 --> 00:25:57,750 sa mga bagay na hindi namin ginawa tunay na gumawa ng ating sarili. 589 00:25:57,750 --> 00:26:00,925 Ba na magkaroon ng kahulugan sa lahat ng tao? 590 00:26:00,925 --> 00:26:01,425 Cool. 591 00:26:01,425 --> 00:26:04,450 592 00:26:04,450 --> 00:26:05,310 SIGE. 593 00:26:05,310 --> 00:26:08,210 Kaya complex graphic dito. 594 00:26:08,210 --> 00:26:09,360 Pumunta linya sa pamamagitan ng linya. 595 00:26:09,360 --> 00:26:12,055 Mahalaga, gawin lamang ang eksaktong parehong bagay na ako lang ang ginawa. 596 00:26:12,055 --> 00:26:15,977 597 00:26:15,977 --> 00:26:17,810 Bago ako magpatuloy, ako talagang gusto mong gumawa na lang 598 00:26:17,810 --> 00:26:19,370 sigurado lahat ay talagang malinaw sa mga ito. 599 00:26:19,370 --> 00:26:26,260 Kaya hanggang dito, ang mga code na kami ay int isang katumbas ng 3, b ay katumbas ng 4, c ay katumbas ng 5. 600 00:26:26,260 --> 00:26:33,130 Kaya lumikha kami ng tatlong integer pinangalanan a, b at c na katumbas ng 3, 4 at 5. 601 00:26:33,130 --> 00:26:38,460 At pagkatapos ay namin ang paglikha ng tatlong mga payo sa puntong iyon sa bawat isa sa mga variable. 602 00:26:38,460 --> 00:26:41,760 >> At ngayon kami ay pagpunta upang pumunta sa ibabaw ng mahalagang 603 00:26:41,760 --> 00:26:44,240 kung ano ang mangyayari kapag gumana sa iyo sa kanila. 604 00:26:44,240 --> 00:26:45,490 Kaya gumuhit ng mga ito out. 605 00:26:45,490 --> 00:26:48,156 Kumuha ng isang sheet ng paper-- hindi ako alam kung ikaw guys lahat ay may papel, 606 00:26:48,156 --> 00:26:50,930 ngunit sa mga mo na hindi, siguro humiram mula sa mga mo na gawin. 607 00:26:50,930 --> 00:26:53,580 Dalhin mga sheet ng papel at pumunta linya sa pamamagitan ng linya. 608 00:26:53,580 --> 00:26:59,390 At sa bawat operasyon na ginawa mo, Gusto ko sa iyo guys upang aktwal na isulat ang 609 00:26:59,390 --> 00:27:00,800 ano ang a, b at c sa puntong ito. 610 00:27:00,800 --> 00:27:03,550 At ano ang mga address, kung ano ang mga ang mga payo na tumuturo sa a, b at c 611 00:27:03,550 --> 00:27:04,410 sa puntong ito? 612 00:27:04,410 --> 00:27:07,150 >> At pagkatapos ay inaasahan namin na ito ay mga uri ng hakbang sa iyo guys 613 00:27:07,150 --> 00:27:08,900 sa pamamagitan ng kung paano mag-isip tungkol sa mga payo. 614 00:27:08,900 --> 00:27:10,650 Hindi namin pagpunta upang pumunta sa pamamagitan ng lahat ng mga ito. 615 00:27:10,650 --> 00:27:13,450 Siguro kukunin ko na bigyan five-- mo tulad ng, tatlong minuto. 616 00:27:13,450 --> 00:27:14,660 Magsimula sa ilang mga unang. 617 00:27:14,660 --> 00:28:10,410 618 00:28:10,410 --> 00:28:10,959 Oh. 619 00:28:10,959 --> 00:28:11,459 Oops. 620 00:28:11,459 --> 00:28:20,940 621 00:28:20,940 --> 00:28:26,950 >> Madla: Sa pangalawang linya, bakit ay hindi ang star [hindi marinig] variable? 622 00:28:26,950 --> 00:28:29,410 >> ANDI PENG: Alalahanin in operator, sa unang linggo, 623 00:28:29,410 --> 00:28:31,730 usapan natin ang tungkol sa kung paano kung gagawin mo plus katumbas, 624 00:28:31,730 --> 00:28:35,320 na nangangahulugan lamang ng isang katumbas ng isang plus c. 625 00:28:35,320 --> 00:28:39,370 Sa ganitong case-- kaya ito ay isa pang paraan na kung saan ang mga bituin ay maaaring gamitin. 626 00:28:39,370 --> 00:28:42,040 Sa karagdagan sa mga sanggunian ng at isinasaysay ang mga payo, 627 00:28:42,040 --> 00:28:44,440 tandaan na ito rin ay nangangahulugan ng pagdami. 628 00:28:44,440 --> 00:28:46,575 Kaya sa kasong ito, ito Gusto lang maging isang katumbas ng isang beses c. 629 00:28:46,575 --> 00:28:48,450 Iyan na lamang ang bilang ng iba't ibang paraan ng pagsulat na. 630 00:28:48,450 --> 00:28:49,776 >> Madla: a ay katumbas ng isang oras c. 631 00:28:49,776 --> 00:28:50,442 ANDI PENG: Oo. 632 00:28:50,442 --> 00:30:43,488 633 00:30:43,488 --> 00:30:47,130 >> Madla: Ano ang ibig sabihin kung ito ang sabi ng isang ampersand sulat? 634 00:30:47,130 --> 00:30:50,900 >> ANDI PENG: Ampersand paraan ikaw ay pagpunta sa na- ikaw 635 00:30:50,900 --> 00:30:54,760 pagpunta sa mga lugar na ang pointer ay pagturo at kumukuha ang address. 636 00:30:54,760 --> 00:31:01,270 Kaya ampersand nagbibigay sa iyo ang address, star nagbibigay sa iyo ang mga aktwal na halaga doon. 637 00:31:01,270 --> 00:31:03,090 >> Madla: Sigurado namin pagbuo sa linya sa pamamagitan ng linya? 638 00:31:03,090 --> 00:31:04,881 >> ANDI PENG: Kayo ay pagbuo sa linya sa pamamagitan ng linya. 639 00:31:04,881 --> 00:31:07,260 Kaya pumunta lamang sa isang linya sa isang oras at then-- mo 640 00:31:07,260 --> 00:31:08,470 Hindi mo na kailangang mag-alala tungkol sa Tinatapos ang buong bagay. 641 00:31:08,470 --> 00:31:10,428 Subukan nating makuha sa pamamagitan ng Hayaan marahil dalawa, tatlong linya 642 00:31:10,428 --> 00:31:12,445 at pagkatapos ay gagamitin namin tipon at tapusin ito. 643 00:31:12,445 --> 00:31:15,530 644 00:31:15,530 --> 00:31:17,470 >> Ito ay lubos na OK kung ikaw guys ay mawawala. 645 00:31:17,470 --> 00:31:19,334 Ito ay isang tunay na mahirap na konsepto. 646 00:31:19,334 --> 00:31:22,500 Kung ikaw guys ay nag-aalala na ang klase napupunta tulad nito tulad Sinasabi ni David, 647 00:31:22,500 --> 00:31:23,190 ito ay hindi. 648 00:31:23,190 --> 00:31:25,949 Kami ay pag-abot sa pangkonseptong peak ng kahirapan 649 00:31:25,949 --> 00:31:27,740 at pagkatapos ito ay pagpunta sa maging pababa kiling. 650 00:31:27,740 --> 00:31:29,110 Kaya ka guys ay halos doon. 651 00:31:29,110 --> 00:31:31,080 Mayroon kaming maraming ng kendi upang makakuha ng ka guys sa pamamagitan ng mga umbok. 652 00:31:31,080 --> 00:31:32,940 Sa tingin ko medyo marami matapos mahulog masira kami ay magiging sa ibabaw ng umbok 653 00:31:32,940 --> 00:31:34,220 at buhay ay maging muli fine. 654 00:31:34,220 --> 00:31:36,580 Kaya huwag mag-alala sa lahat. 655 00:31:36,580 --> 00:32:30,732 656 00:32:30,732 --> 00:32:31,232 Lahat tama. 657 00:32:31,232 --> 00:32:33,650 Bibigyan kita ng isang lalaki 20 segundo pa upang tapusin. 658 00:32:33,650 --> 00:33:12,560 659 00:33:12,560 --> 00:33:13,330 SIGE. 660 00:33:13,330 --> 00:33:13,830 Lahat tama. 661 00:33:13,830 --> 00:33:16,370 Tingnan natin ang isang ulos sa ito. 662 00:33:16,370 --> 00:33:19,430 Bilang mo guys bigyan ako ng mga sagot, Tingin lang ako sa pagpunta sa uri ng mga ito sa. 663 00:33:19,430 --> 00:33:22,140 At sana Maaari we-- ko? 664 00:33:22,140 --> 00:33:23,317 Ako ang tunay na hindi maaaring i-type ito. 665 00:33:23,317 --> 00:33:24,400 Kukunin ko gumuhit ito sa board. 666 00:33:24,400 --> 00:33:31,420 667 00:33:31,420 --> 00:33:35,900 >> Kaya dito sa unang linya kami ay may isang katumbas b star c. 668 00:33:35,900 --> 00:33:38,060 Gayundin Elliot nagdala up ng isang tunay, tunay mabuti point. 669 00:33:38,060 --> 00:33:42,500 Dahil nakalimutan ko na bukod sa ang dalawang paraan na maaari naming gamitin ang mga simbolo ng bituin, 670 00:33:42,500 --> 00:33:43,750 may tunay na isang ikatlong paraan. 671 00:33:43,750 --> 00:33:44,990 Pagpaparami. 672 00:33:44,990 --> 00:33:51,380 At kaya lang hindi makakuha ng nalilito dahil na ay ang unang paraan ng paggamit ng isang bituin. 673 00:33:51,380 --> 00:33:54,470 Ito ay nagsasabi sa lamang ang computer na ako tungkol sa upang lumikha ng isang pointer. 674 00:33:54,470 --> 00:34:00,600 >> Ang ikalawang paraan sa pamamagitan ng paggawa star ng iyong pointer, 675 00:34:00,600 --> 00:34:04,320 na nagsasabi ng pointer na gusto mo upang ma-access ang data sa na pointer. 676 00:34:04,320 --> 00:34:06,710 At pagkatapos ay, of course, may simple lang pagpaparami 677 00:34:06,710 --> 00:34:09,564 pagitan ng dalawang numero na nagsasabi sa iyo na gusto kong i-multiply ng dalawang. 678 00:34:09,564 --> 00:34:11,730 Kaya mayroong isang pulutong ng mga paraan maaari naming gamitin ang simbolong star. 679 00:34:11,730 --> 00:34:13,830 Huwag makakuha ng nalilito. 680 00:34:13,830 --> 00:34:16,991 Tiyakin na ikaw guys maunawaan lamang kung ano mismo ang lahat ng tatlong ng mga ito 681 00:34:16,991 --> 00:34:18,630 ginagawa. 682 00:34:18,630 --> 00:34:22,920 >> Kaya sa unang linya, isang katumbas na beses b c. 683 00:34:22,920 --> 00:34:26,850 Kaya sabihin pumunta sa pamamagitan ng kung ano ang ay isang, ano b, ano c? 684 00:34:26,850 --> 00:34:32,600 At ano ang pointer ng isang, ang pointer sa b, at ang pointer sa c? 685 00:34:32,600 --> 00:34:34,050 Ano ang mga lahat pinapantayan? 686 00:34:34,050 --> 00:34:34,600 SIGE. 687 00:34:34,600 --> 00:34:38,650 >> Kaya simulan namin off sa isang katumbas ng 3, b ay katumbas ng 4, at c ay katumbas ng 5, di ba? 688 00:34:38,650 --> 00:34:42,230 Kaya matapos na unang linya, maaari tao sabihin sa akin kung ano ang isang ay? 689 00:34:42,230 --> 00:34:42,730 Oo. 690 00:34:42,730 --> 00:34:44,229 Huwag mag-atubiling upang mag-shout out ng mga sagot lamang. 691 00:34:44,229 --> 00:34:44,929 20. 692 00:34:44,929 --> 00:34:45,550 Good. 693 00:34:45,550 --> 00:34:46,410 Ano b? 694 00:34:46,410 --> 00:34:47,777 >> Madla: 4. 695 00:34:47,777 --> 00:34:48,610 ANDI PENG: Ano ang c? 696 00:34:48,610 --> 00:34:49,659 Madla: 5. 697 00:34:49,659 --> 00:34:50,770 ANDI PENG: Yay. 698 00:34:50,770 --> 00:34:51,639 Good. 699 00:34:51,639 --> 00:34:55,707 Ano pa, pb, at pc? 700 00:34:55,707 --> 00:34:58,564 >> Madla: 000,001 at 002? 701 00:34:58,564 --> 00:34:59,230 ANDI PENG: Oo. 702 00:34:59,230 --> 00:35:02,390 Kaya ang uri ng isang kahanga-hangang gawa tanong ngunit hindi talaga dahil dito ako 703 00:35:02,390 --> 00:35:04,760 Drew ang aktwal na alaala. 704 00:35:04,760 --> 00:35:08,520 Ngunit dahil, para sa isang halimbawa, ay hindi kami talaga alam kung ano ang mga numero ay, 705 00:35:08,520 --> 00:35:10,326 maaari naming lamang sabihin ampersand. 706 00:35:10,326 --> 00:35:12,200 Hindi ko kahit na malaman kung ako ay maaaring maglabas ng isang ampersand. 707 00:35:12,200 --> 00:35:18,022 Ito ay like-- paano mo gawin ito? 708 00:35:18,022 --> 00:35:19,790 >> Madla: Tulad ng pagguhit ng isang walong. 709 00:35:19,790 --> 00:35:20,870 >> ANDI PENG: Tulad ng isang walong. 710 00:35:20,870 --> 00:35:21,580 Tulad niyan. 711 00:35:21,580 --> 00:35:22,080 SIGE. 712 00:35:22,080 --> 00:35:23,446 Madla: Bingo. 713 00:35:23,446 --> 00:35:25,350 >> ANDI PENG: pagpatay ito. 714 00:35:25,350 --> 00:35:28,202 Kaya ampersand a, maaari mo lamang gawin iyon. 715 00:35:28,202 --> 00:35:30,410 Dahil hindi namin talagang aalaga kung ano ang halaga ng na 716 00:35:30,410 --> 00:35:32,880 ay, at ito ay ang ilang mga pang halaga asno anyways, 717 00:35:32,880 --> 00:35:35,220 aming ginagamit lamang giong sabihin ampersand a. 718 00:35:35,220 --> 00:35:37,024 At kung ano pb? 719 00:35:37,024 --> 00:35:37,940 Madla: [hindi marinig]. 720 00:35:37,940 --> 00:35:38,606 ANDI PENG: Oo. 721 00:35:38,606 --> 00:35:42,490 722 00:35:42,490 --> 00:35:43,500 Cool. 723 00:35:43,500 --> 00:35:44,010 Lahat tama. 724 00:35:44,010 --> 00:35:44,770 Easy unang linya. 725 00:35:44,770 --> 00:35:45,270 Nakuha namin ito. 726 00:35:45,270 --> 00:35:46,330 Payo ay madali. 727 00:35:46,330 --> 00:35:47,450 Ito ay OK. 728 00:35:47,450 --> 00:35:48,740 >> Ikalawang linya. 729 00:35:48,740 --> 00:35:52,400 At kaya star katumbas ay pareho bagay tulad ng sinasabi ng isang katumbas ng isang beses c. 730 00:35:52,400 --> 00:35:54,730 Ito lamang ay isang mas madaling paraan ng pagsulat. 731 00:35:54,730 --> 00:35:57,170 Kaya kami ay hindi sinusubukan upang gumawa ng isang punto o kahit ano dito. 732 00:35:57,170 --> 00:36:00,600 So tapos na ang unang linya. 733 00:36:00,600 --> 00:36:05,144 Ano ang isang sa pangalawang linya pagkatapos gawin mo ang isang katumbas ng isang beses c? 734 00:36:05,144 --> 00:36:05,777 >> Madla: 100? 735 00:36:05,777 --> 00:36:06,610 ANDI PENG: Ito ay 100. 736 00:36:06,610 --> 00:36:07,795 Good. 737 00:36:07,795 --> 00:36:08,864 Paano ang tungkol sa b? 738 00:36:08,864 --> 00:36:10,256 >> Madla: [hindi marinig]. 739 00:36:10,256 --> 00:36:11,335 >> ANDI PENG: Paano ang tungkol sa c? 740 00:36:11,335 --> 00:36:12,490 >> Madla: [hindi marinig]. 741 00:36:12,490 --> 00:36:14,530 >> ANDI PENG: At kung paano tungkol sa mga payo? 742 00:36:14,530 --> 00:36:15,800 Sigurado they-- pareho, di ba? 743 00:36:15,800 --> 00:36:20,640 744 00:36:20,640 --> 00:36:21,940 SIGE. 745 00:36:21,940 --> 00:36:23,820 Ngayon ikatlong linya. 746 00:36:23,820 --> 00:36:26,400 747 00:36:26,400 --> 00:36:27,350 Little trickier. 748 00:36:27,350 --> 00:36:29,760 b ay katumbas ng star pa. 749 00:36:29,760 --> 00:36:34,189 Maaari isang tao sabihin sa akin, una, kung ano ang ginagawa star pa pantay-pantay? 750 00:36:34,189 --> 00:36:36,159 >> Madla: Ito ay ang halaga na naka-imbak sa isang. 751 00:36:36,159 --> 00:36:36,950 ANDI PENG: Eksakto. 752 00:36:36,950 --> 00:36:38,070 At ano ang halaga na naka-imbak sa isang? 753 00:36:38,070 --> 00:36:38,860 >> Madla: 100. 754 00:36:38,860 --> 00:36:39,660 >> ANDI PENG: OK. 755 00:36:39,660 --> 00:36:43,462 Kaya kung ano ang nais ng isang ay matapos Isinasagawa na ang linya ng code? 756 00:36:43,462 --> 00:36:44,760 >> Madla: [hindi marinig]. 757 00:36:44,760 --> 00:36:45,870 >> ANDI PENG: Ano ang tungkol b? 758 00:36:45,870 --> 00:36:46,780 >> Madla: 100. 759 00:36:46,780 --> 00:36:47,620 >> ANDI PENG: Oo. 760 00:36:47,620 --> 00:36:49,995 At pagkatapos ang lahat ng iba pa ay medyo marami ang hindi nagbabago, di ba? 761 00:36:49,995 --> 00:36:51,239 Dahil hindi namin ginawa hawakan ito. 762 00:36:51,239 --> 00:36:55,370 763 00:36:55,370 --> 00:36:57,010 Cool. 764 00:36:57,010 --> 00:36:58,390 Ika-apat na linya. 765 00:36:58,390 --> 00:37:00,390 Bahagyang mas mahirap unawain. 766 00:37:00,390 --> 00:37:06,910 Kaya pc-- muli, pc ay ang pointer na itinuturo sa c-- katumbas pa. 767 00:37:06,910 --> 00:37:11,520 768 00:37:11,520 --> 00:37:12,360 Ano ang isang? 769 00:37:12,360 --> 00:37:14,525 >> Madla: 100. 770 00:37:14,525 --> 00:37:15,400 ANDI PENG: Ano b? 771 00:37:15,400 --> 00:37:17,920 Madla: 100. 772 00:37:17,920 --> 00:37:18,862 ANDI PENG: Ano ang c? 773 00:37:18,862 --> 00:37:19,993 Madla: 5. 774 00:37:19,993 --> 00:37:20,867 ANDI PENG: Ano pa? 775 00:37:20,867 --> 00:37:22,775 Madla: ampersand a. 776 00:37:22,775 --> 00:37:23,730 ANDI PENG: pb? 777 00:37:23,730 --> 00:37:26,010 Madla: Ampersand b. 778 00:37:26,010 --> 00:37:27,730 ANDI PENG: At nakakalito, kung ano ang pc ngayon? 779 00:37:27,730 --> 00:37:28,410 Madla: ampersand a. 780 00:37:28,410 --> 00:37:29,034 ANDI PENG: Yay. 781 00:37:29,034 --> 00:37:31,790 Woo hoo. 782 00:37:31,790 --> 00:37:32,500 Ikaw guys makita? 783 00:37:32,500 --> 00:37:33,282 Ito ang lahat ng karapatan. 784 00:37:33,282 --> 00:37:33,990 Ito ay hindi masyadong masama. 785 00:37:33,990 --> 00:37:38,730 Mayroon kaming higit pang mga kendi na kung ito ay hindi lahat karapatan, ngunit sa tingin ko ito ang lahat ng karapatan. 786 00:37:38,730 --> 00:37:41,900 At kami ay pagpunta sa pumunta sa ibabaw ng isa lang mas bago namin pindutin ang mas mahirap na iyan. 787 00:37:41,900 --> 00:37:43,710 Ang mga sagot ay may up ako dito. 788 00:37:43,710 --> 00:37:47,050 >> Totoo, alam na ito ay tulad ng math at sa puntong ito. 789 00:37:47,050 --> 00:37:53,240 Kapag mayroon ka ng mga simpleng equation tulad ng isang plus b, isang beses c, na madaling gawin. 790 00:37:53,240 --> 00:37:56,390 At kapag sinimulan mo ang pagpapalawak sa ito, pumunta lamang pagkakasunud-sunod ng mga operasyon. 791 00:37:56,390 --> 00:37:57,830 Parehong bagay tulad ng dati. 792 00:37:57,830 --> 00:38:00,030 >> Subaybayan kung ang iyong star ay nasa harap ng isang bagay. 793 00:38:00,030 --> 00:38:01,640 Iyon ay nagsasabi sa iyo ang halaga. 794 00:38:01,640 --> 00:38:04,640 Kung mayroon kang isang at bago isang bagay, ito ay nagsasabi sa iyo ang address. 795 00:38:04,640 --> 00:38:07,860 At dapat kang magtalaga ng alinman sa payo o halaga. 796 00:38:07,860 --> 00:38:11,260 Kaya sabihin pumunta sa paglipas ng ito huling isang tunay na mabilis. 797 00:38:11,260 --> 00:38:12,520 Hindi ito huling isa, sorry. 798 00:38:12,520 --> 00:38:13,340 Sa totoo lang, ikaw guys ay maaaring kunin. 799 00:38:13,340 --> 00:38:16,006 Aling isa ang gagawin mo guys nais na pumunta higit sa labas ng natitirang tatlong 800 00:38:16,006 --> 00:38:17,449 na kami? 801 00:38:17,449 --> 00:38:20,490 Hindi sa tingin ko maaari naming lamang gawin iyon dahil hindi namin lamang tumalon sa linya. 802 00:38:20,490 --> 00:38:21,000 SIGE. 803 00:38:21,000 --> 00:38:25,700 Hindi ka guys magkaroon ng isang pagpipilian, ito lamang ay ang third sa huling isa. 804 00:38:25,700 --> 00:38:29,228 >> Star pc katumbas beses b c. 805 00:38:29,228 --> 00:38:30,144 >> Madla: Star pb? 806 00:38:30,144 --> 00:38:32,117 >> Madla: Star pb. 807 00:38:32,117 --> 00:38:32,825 ANDI PENG: Sorry? 808 00:38:32,825 --> 00:38:33,599 Madla: Star pb. 809 00:38:33,599 --> 00:38:34,390 ANDI PENG: Star pb. 810 00:38:34,390 --> 00:38:35,100 Oh, ang aking masama. 811 00:38:35,100 --> 00:38:38,647 Star pb katumbas beses b c. 812 00:38:38,647 --> 00:38:40,230 Pupunta ako upang bigyan ka ng isang lalaki 10 segundo. 813 00:38:40,230 --> 00:38:41,140 Just mabilis mag-isip. 814 00:38:41,140 --> 00:38:43,450 Ito ay na kami ay may kaya Sa ngayon, kung ano ang mangyayari pagkatapos naming 815 00:38:43,450 --> 00:38:46,770 execute na ikalimang linya doon? 816 00:38:46,770 --> 00:38:54,030 817 00:38:54,030 --> 00:38:55,980 SIGE. 818 00:38:55,980 --> 00:38:58,720 Ano ang isang? 819 00:38:58,720 --> 00:38:59,560 >> Madla: 100. 820 00:38:59,560 --> 00:39:02,470 >> ANDI PENG: 100. 821 00:39:02,470 --> 00:39:03,610 Ano b ngayon? 822 00:39:03,610 --> 00:39:04,330 >> Madla: 500. 823 00:39:04,330 --> 00:39:05,250 >> ANDI PENG: Good. 824 00:39:05,250 --> 00:39:08,570 Isang tao na gusto ba na ipaliwanag sa akin kung bakit ito ay 500? 825 00:39:08,570 --> 00:39:10,540 Masama ang pakiramdam ko tulad namin talagang kailanman baliw b. 826 00:39:10,540 --> 00:39:13,950 Paano nakarating ang pamahalaan namin na baguhin ang halaga ng b walang hawakan b? 827 00:39:13,950 --> 00:39:15,090 Oo? 828 00:39:15,090 --> 00:39:18,239 >> Madla: Dahil star pb ay nangangahulugan na ang halaga sa pb-- 829 00:39:18,239 --> 00:39:19,030 ANDI PENG: Eksakto. 830 00:39:19,030 --> 00:39:19,790 Madla: --which ay b. 831 00:39:19,790 --> 00:39:20,581 ANDI PENG: Eksakto. 832 00:39:20,581 --> 00:39:26,880 Kaya dito sa aming diagram, ang aming pointer pb ay aktwal na tumuturo sa karapatang ito 833 00:39:26,880 --> 00:39:28,690 dito, kung saan ay ang aktwal na pisikal na b. 834 00:39:28,690 --> 00:39:31,340 At kaya kung ikaw ay pumunta at gawin mo star pb, na ang 835 00:39:31,340 --> 00:39:36,080 sumusunod ang iyong mga arrow ng iyong pointer at pisikal na pagbabago sa halaga ng b. 836 00:39:36,080 --> 00:39:39,532 Kaya na ang dahilan kung bakit namin b binago sa 500 nang hindi aktwal na pagpindot b. 837 00:39:39,532 --> 00:39:42,490 At pagkatapos lahat ng iba pa ay nananatiling pareho dahil hindi namin ginawa hawakan iyon. 838 00:39:42,490 --> 00:39:47,060 839 00:39:47,060 --> 00:39:48,530 Iyan ay b. 840 00:39:48,530 --> 00:39:49,420 Cool. 841 00:39:49,420 --> 00:39:50,485 At then-- 842 00:39:50,485 --> 00:39:51,910 >> Madla: Mayroon akong lamang ng isang katanungan. 843 00:39:51,910 --> 00:39:52,730 >> ANDI PENG: Oo? 844 00:39:52,730 --> 00:39:56,000 >> Madla: Dahil we've-- may hindi na ampersand c, 845 00:39:56,000 --> 00:39:59,620 na ang ibig sabihin ampersand isang nagre-redirect sa mga parehong bagay ngayon? 846 00:39:59,620 --> 00:40:00,520 >> ANDI PENG: Yep. 847 00:40:00,520 --> 00:40:01,582 So-- 848 00:40:01,582 --> 00:40:03,540 Madla: Kaya ang mga arrow uri ng lamang gumagalaw at- 849 00:40:03,540 --> 00:40:04,030 ANDI PENG: So essentially-- 850 00:40:04,030 --> 00:40:05,405 Madla: --now hindi namin access-- 851 00:40:05,405 --> 00:40:08,387 ANDI PENG: --when namin dereference c on-- panday ko. 852 00:40:08,387 --> 00:40:08,970 Ano iyon? 853 00:40:08,970 --> 00:40:09,560 Ang ikatlong linya? 854 00:40:09,560 --> 00:40:10,060 Fourth. 855 00:40:10,060 --> 00:40:11,490 Ika-apat na linya. 856 00:40:11,490 --> 00:40:14,910 Lahat ng aming ginawa ay, mahalagang, baguhin ang arrow 857 00:40:14,910 --> 00:40:16,680 at ito ay may tulis patungo sa isang halip. 858 00:40:16,680 --> 00:40:19,480 >> Madla: Kaya hindi namin ma-access c anymore. 859 00:40:19,480 --> 00:40:22,520 >> ANDI PENG: Kung ikaw ay nagkaroon na ito eksaktong number, maaari mong ma-access ito. 860 00:40:22,520 --> 00:40:23,260 Pero hindi. 861 00:40:23,260 --> 00:40:25,680 Hindi namin magkaroon ng isang pointer pagturo patungo c anymore. 862 00:40:25,680 --> 00:40:27,430 Sa tingin ko kung nais mong upang muling i-access ito, ikaw 863 00:40:27,430 --> 00:40:30,390 ay lumikha ng isa pang pointer na muling nakatutok sa c 864 00:40:30,390 --> 00:40:32,856 o dereferenced ito at itinuturo sa likod. 865 00:40:32,856 --> 00:40:35,730 So, hindi, tulad ng sa ngayon, ang tatlong mga payo, wala sa kanila ang point c. 866 00:40:35,730 --> 00:40:38,800 867 00:40:38,800 --> 00:40:40,110 >> Ang bawat mabuti? 868 00:40:40,110 --> 00:40:41,440 Sagot ay online. 869 00:40:41,440 --> 00:40:45,210 Huwag mag-atubiling, pagkatapos ng seksyon, pumunta sa sa huling dalawang at pagsubok sa inyong sarili. 870 00:40:45,210 --> 00:40:47,840 Parehong concepts, tulad ng isang maliit na bit trickier. 871 00:40:47,840 --> 00:40:51,860 Sundan lamang sa pamamagitan ng lohika ng bakit ang mga bagay ay iba't ibang mga bagay. 872 00:40:51,860 --> 00:40:54,530 At hint, payo ay isang paksa na gustung-gusto namin 873 00:40:54,530 --> 00:40:58,780 upang masakop sa quizzes dahil ang mga ito conceptually lubhang mahirap. 874 00:40:58,780 --> 00:41:01,360 Kaya Gusto ko iminumungkahi na iyong suriin ang lahat ng guys ang chart na ito 875 00:41:01,360 --> 00:41:05,916 o slash katulad na konsepto sa ito bago ang iyong pagsusulit sa susunod na linggo. 876 00:41:05,916 --> 00:41:06,864 >> Madla: Mawalang galang na. 877 00:41:06,864 --> 00:41:07,530 >> ANDI PENG: Oo? 878 00:41:07,530 --> 00:41:09,708 Madla: [hindi marinig] final one-- [hindi marinig]. 879 00:41:09,708 --> 00:41:12,710 880 00:41:12,710 --> 00:41:15,770 >> ANDI PENG: 50,000? 881 00:41:15,770 --> 00:41:17,850 Gusto ko kailangan upang sundin ang mga ito pabalik down. 882 00:41:17,850 --> 00:41:22,530 Ngunit somewhere-- tingin ko ang mga linya bago, nilikha mo ang giant c halaga. 883 00:41:22,530 --> 00:41:26,250 c ay katumbas ng mga ito higanteng bagay na kung saan ay 100 beses na 500. 884 00:41:26,250 --> 00:41:27,006 Hindi. 885 00:41:27,006 --> 00:41:28,000 >> Madla: [hindi marinig]. 886 00:41:28,000 --> 00:41:28,625 >> ANDI PENG Oo. 887 00:41:28,625 --> 00:41:30,620 100 beses na 100 na kung saan ay 10,000. 888 00:41:30,620 --> 00:41:32,020 Alin ang 10,000. 889 00:41:32,020 --> 00:41:35,410 Kaya bumalik down doon ikaw ay multiply b at c. 890 00:41:35,410 --> 00:41:43,165 Kaya ang pointer na tumuturo sa b-- na kung saan ay ang halaga ng 500-- beses a-- 891 00:41:43,165 --> 00:41:44,480 >> Madla: [hindi marinig]. 892 00:41:44,480 --> 00:41:45,730 ANDI PENG: Maaari na ang mali. 893 00:41:45,730 --> 00:41:49,514 Madla: Hindi, hindi, ito ay hindi. [Hindi marinig] pointer sa c ay tumuturo na ngayon sa a-- 894 00:41:49,514 --> 00:41:50,180 ANDI PENG: Oo. 895 00:41:50,180 --> 00:41:50,840 Siya ay karapatan. 896 00:41:50,840 --> 00:41:56,477 >> Madla: --it ay sa kanyang sa isang equals isang times-- ito ay ang halaga ng mga c. 897 00:41:56,477 --> 00:41:59,560 ANDI PENG: Maaari mong sabihin na ang isang maliit na bit louder kaya lahat ng tao ay maaaring marinig mo? 898 00:41:59,560 --> 00:42:04,879 Madla: Kaya pointer sa c points ngayon sa kung ano ang pointer ng isang ginamit upang ituro 899 00:42:04,879 --> 00:42:09,460 to-- at does-- pa rin ngunit itinuturo ng mga ito ang parehong bagay kung saan ay ang isang, di ba? 900 00:42:09,460 --> 00:42:12,925 Ang halaga ng isang, gayunpaman ito ay nai-bagong tinukoy. 901 00:42:12,925 --> 00:42:17,875 At sa simula ng na ikaw ay sinasabi ng isang dati ay 100 beses 902 00:42:17,875 --> 00:42:21,340 ang halaga sa b kung saan ay 500. 903 00:42:21,340 --> 00:42:24,305 At kaya na subalit marami na. 904 00:42:24,305 --> 00:42:24,805 50,000. 905 00:42:24,805 --> 00:42:32,860 Sila ka reassigning na sa kung ano ang memory space sa c is-- ang pointer sa c 906 00:42:32,860 --> 00:42:34,510 ay tumuturo sa kung saan ay isang. 907 00:42:34,510 --> 00:42:38,460 Kaya ikaw ay muling pagtutukoy ng isang upang maging 50,000. 908 00:42:38,460 --> 00:42:40,210 ANDI PENG: Maaaring siya magturo ng seksyon para sa akin. 909 00:42:40,210 --> 00:42:41,260 Susunod na oras na ito ay ang lahat ng iyo. 910 00:42:41,260 --> 00:42:41,440 Narito. 911 00:42:41,440 --> 00:42:42,564 Narito ang higit pang mga kendi para sa na. 912 00:42:42,564 --> 00:42:45,790 Karapat-dapat ka na kendi para sa na. 913 00:42:45,790 --> 00:42:47,260 >> Madla: ako halos nahuli na. 914 00:42:47,260 --> 00:42:47,660 >> ANDI PENG: Malapit ka nang nahuli na. 915 00:42:47,660 --> 00:42:48,450 Ayos lang iyan. 916 00:42:48,450 --> 00:42:48,950 Oo. 917 00:42:48,950 --> 00:42:50,033 Ngunit siya ay akmang-akma. 918 00:42:50,033 --> 00:42:54,469 Kaya kung ano ang kailangan mong gawin ay na- tingin ko namin 919 00:42:54,469 --> 00:42:56,510 kailangang sundin ang mga katunayan na ang mga payo ay ngayon 920 00:42:56,510 --> 00:42:57,880 tumuturo sa iba't ibang mga halaga. 921 00:42:57,880 --> 00:43:01,785 Kaya ang value-- Paumanhin, ang pointer ng c repointed sa a. 922 00:43:01,785 --> 00:43:04,390 At upang ang Paglipat sa lahat ng aming mga numero. 923 00:43:04,390 --> 00:43:08,930 At iyon ang dahilan kung bakit, kapag na-access mo ang stored value doon, ito ay naiiba. 924 00:43:08,930 --> 00:43:10,490 Ba na magkaroon ng kahulugan? 925 00:43:10,490 --> 00:43:11,380 SIGE. 926 00:43:11,380 --> 00:43:12,820 Cool. 927 00:43:12,820 --> 00:43:16,635 Ang bawat mabuti, bago ako lumipat sa? 928 00:43:16,635 --> 00:43:25,332 >> Madla: ba the-- kapag kayo ay pagpunta down ang mga hilera sa kaliwang haligi, 929 00:43:25,332 --> 00:43:30,494 ay ang unang hilera makakaapekto sa pangalawang hilera at pagkatapos ay ang second-- tulad, ito ay all-- 930 00:43:30,494 --> 00:43:31,160 ANDI PENG: Oo. 931 00:43:31,160 --> 00:43:37,610 Kaya isipin ito code kung saan ako lang type sa isang katumbas b ulit c, isang bituin ay katumbas ng c. 932 00:43:37,610 --> 00:43:40,290 Isipin lamang na hindi ko na bumangga lang ang code na ito 933 00:43:40,290 --> 00:43:42,710 at hindi ko i-print out kung ano lahat ng mga bagay ay. 934 00:43:42,710 --> 00:43:46,200 Kung ako ay lamang na i-print ang unang bagay sa itaas, ito ay magiging dito. 935 00:43:46,200 --> 00:43:48,510 Kung matapos kong tumakbo ang lahat ng mga linya ng code, 936 00:43:48,510 --> 00:43:51,160 kung ano ang mga halagang ito ay dapat na sa katapusan ay na. 937 00:43:51,160 --> 00:43:53,290 >> Kaya ako ang tunay na nakasulat sa isang program dito. 938 00:43:53,290 --> 00:43:55,840 Hindi ko pa tapos ang lahat ng ang pagpaparami. 939 00:43:55,840 --> 00:43:58,310 Ngunit lamang isipin. 940 00:43:58,310 --> 00:44:00,370 Kaya dito ko na lang ay isang programa na tinatawag na mga payo. 941 00:44:00,370 --> 00:44:04,190 Pupunta ako upang mag-zoom in kung guys-- ka OK. 942 00:44:04,190 --> 00:44:07,580 Kaya ako ay lumikha ng mga variable a, b, at c. 943 00:44:07,580 --> 00:44:09,640 Na-set ko sila pantay-pantay sa 3, 4, at 5 at na ako 944 00:44:09,640 --> 00:44:11,770 nilikha ang kanilang mga kaukulang payo. 945 00:44:11,770 --> 00:44:14,550 At pagkatapos dito ako lamang ang pagpunta upang i-print out kung ano na. 946 00:44:14,550 --> 00:44:15,833 Kaya hayaan mo akong tumakbo na. 947 00:44:15,833 --> 00:44:21,520 948 00:44:21,520 --> 00:44:24,750 >> Gusto mo ba guys see-- crap. 949 00:44:24,750 --> 00:44:28,150 Huwag mo guys makita kung paano ang isang, b at c ay ang mga halaga 950 00:44:28,150 --> 00:44:33,530 ngunit ang kanilang mga payo ay ito higanteng halaga ng basura na hindi namin pag-aalaga tungkol sa? 951 00:44:33,530 --> 00:44:36,690 Kaya kung ako ay upang aktwal na plug sa lahat ng pagpaparami 952 00:44:36,690 --> 00:44:39,770 at pagkatapos ay muling i-print ang lahat ng ito, ito execute out 953 00:44:39,770 --> 00:44:44,509 sa kung ano na ang nasa ibaba. 954 00:44:44,509 --> 00:44:47,300 Kaya kung nais mong guys na maglaro sa paligid sa aktwal na pisikal na coding, 955 00:44:47,300 --> 00:44:49,000 ka guys ay maaaring lamang plug ang lahat ng mga nasa. 956 00:44:49,000 --> 00:44:52,860 Ang code ay online at pagkatapos ang iyong mga halaga ay dapat mag-print sa na pagkatapos. 957 00:44:52,860 --> 00:44:56,170 >> At pagkatapos ay makikita mo kung paano ang pointer addresses ay may tunay na inilipat. 958 00:44:56,170 --> 00:44:59,190 Kaya makikita mo kung paano ang address ng c talagang nagiging 959 00:44:59,190 --> 00:45:00,920 sa pantay anuman ang address ng isang ay. 960 00:45:00,920 --> 00:45:04,140 At ang mga ito ay tumugma sa anumang na ang mga malalaking numero ay. 961 00:45:04,140 --> 00:45:06,530 Magandang tanong. 962 00:45:06,530 --> 00:45:07,550 Ang bawat lahat ng karapatan? 963 00:45:07,550 --> 00:45:10,300 Isang huling tawag para sa mga katanungan. 964 00:45:10,300 --> 00:45:11,590 SIGE. 965 00:45:11,590 --> 00:45:12,090 Lahat tama. 966 00:45:12,090 --> 00:45:15,940 Kaya maghanda upang magkaroon ng iyong isip matangay ng isang bahagyang bit higit pa. 967 00:45:15,940 --> 00:45:18,000 Ang mga array ay talagang lamang payo. 968 00:45:18,000 --> 00:45:19,010 Iyon lang ang mga ito. 969 00:45:19,010 --> 00:45:20,410 At tandaan, kung ano ang mga string? 970 00:45:20,410 --> 00:45:21,630 Sila rin ay array. 971 00:45:21,630 --> 00:45:23,110 Kaya kung ano talaga ang mga string? 972 00:45:23,110 --> 00:45:27,100 Sila ay tulad ng mga payo sa mga simula ng isang pansamantalang trabaho ng higit na karakter. 973 00:45:27,100 --> 00:45:29,970 >> Kaya lamang konsepto na simulan na bumuo sa ibabaw ng bawat isa. 974 00:45:29,970 --> 00:45:32,030 Kaya na why-- mo tandaan sa panayam, David, 975 00:45:32,030 --> 00:45:34,990 kapag siya ay nagkaroon ng paghahambing na ng int string mom 976 00:45:34,990 --> 00:45:37,640 ay isang bagay at pagkatapos ay isa pang string mom at ikaw 977 00:45:37,640 --> 00:45:41,240 subukan upang equate ang dalawa sa bawat isa, bigyan ka nila ng iba't ibang mga halaga. 978 00:45:41,240 --> 00:45:44,370 Ito ay dahil ang mga string kanilang sarili ay hindi na halaga. 979 00:45:44,370 --> 00:45:48,860 Lahat ng mga ito ay mga memory address char-- ang mga ito ay mga array ng mga karakter at mga array 980 00:45:48,860 --> 00:45:50,050 ay lamang payo. 981 00:45:50,050 --> 00:45:54,022 >> Kaya, sa kakanyahan, kapag Si David ay comparing-- 982 00:45:54,022 --> 00:45:55,355 ay ito ang OK kung burahin ko ang lahat ng mga ito? 983 00:45:55,355 --> 00:46:02,320 984 00:46:02,320 --> 00:46:09,750 Kaya sa panayam ng si David nagkaroon mom katumbas ng ay katumbas mom, 985 00:46:09,750 --> 00:46:11,630 sa amin na parang ang mga parehong bagay. 986 00:46:11,630 --> 00:46:12,317 Right? 987 00:46:12,317 --> 00:46:15,150 Ngunit, sa computer sa ilalim ng hood, kung ano ang tunay na nangyayari 988 00:46:15,150 --> 00:46:18,380 ay na ang string na ito, lahat na ay isang array. 989 00:46:18,380 --> 00:46:21,420 990 00:46:21,420 --> 00:46:25,390 Sa pamamagitan ng isang ampersand-- o, paumanhin, may null terminator sa dulo. 991 00:46:25,390 --> 00:46:28,311 992 00:46:28,311 --> 00:46:28,810 Right? 993 00:46:28,810 --> 00:46:29,940 Backslash 0. 994 00:46:29,940 --> 00:46:32,900 Maling backslash. 995 00:46:32,900 --> 00:46:35,960 >> Kaya lahat were-- nila ang lahat mga dalawang string were-- 996 00:46:35,960 --> 00:46:40,360 ay ang dami ng mga nakadapa laki na may ang mga titik ng mom and mom. 997 00:46:40,360 --> 00:46:44,780 Ngunit ano ang mga array ay talagang ay lamang payo sa isang tiyak na lugar sa memory 998 00:46:44,780 --> 00:46:47,140 na nagsasabi sa iyo upang simulan ang iyong array. 999 00:46:47,140 --> 00:46:52,370 Kaya sa kasong ito, ang lahat ng mga ito ay ay lamang ng ilang mga halaga ng basura, 1000 00:46:52,370 --> 00:46:54,230 ilang mga random na pointer. 1001 00:46:54,230 --> 00:46:56,330 At lahat ng ito ay ay sa ilang ibang mga halaga ng basura. 1002 00:46:56,330 --> 00:46:59,830 Sabihin natin 0x200 lamang. 1003 00:46:59,830 --> 00:47:02,410 >> At kaya kapag sinusubukan mong pantay-pantay ang mga ito ng dalawang sa bawat isa, 1004 00:47:02,410 --> 00:47:06,130 suriin nilang false dahil ang addresses-- ang mga payo 1005 00:47:06,130 --> 00:47:08,390 na sila were-- ay naiiba. 1006 00:47:08,390 --> 00:47:11,400 Sapagkat ito ay naiiba kung ikaw ay sinusubukan upang ihambing ang aktwal na integer. 1007 00:47:11,400 --> 00:47:15,820 Tulad ng kung nais na compare-- sa huling example-- int isang b, 1008 00:47:15,820 --> 00:47:17,640 sila suriin sa tunay na tulad ng sinabi Elliot 1009 00:47:17,640 --> 00:47:19,431 sapagkat sila ay integer na naka-imbak 1010 00:47:19,431 --> 00:47:21,320 at ikaw ay pinahahalagahan lamang ang mga halaga. 1011 00:47:21,320 --> 00:47:25,090 Dito, dahil string ay array at ang lahat ng array ay mga payo, 1012 00:47:25,090 --> 00:47:28,080 na ang dahilan kung bakit sila ay hindi pantay-pantay sa bawat isa. 1013 00:47:28,080 --> 00:47:31,210 >> Kaya uri ng nakalilito, graphic na. 1014 00:47:31,210 --> 00:47:32,450 Ngunit isipin sabihin lang. 1015 00:47:32,450 --> 00:47:38,110 Na namin lumikha ng isang hanay ng mga laki 3 na may index mula 0 hanggang 2-- 0, 1016 00:47:38,110 --> 00:47:41,530 1, 2 sa mga halaga ng 1, 2, at 3 naka-imbak sa mga ito. 1017 00:47:41,530 --> 00:47:43,820 Ang lahat ng mga array ay talagang does-- dito, sabihin lamang 1018 00:47:43,820 --> 00:47:46,720 sabihin Lumilikha ako ng pointer sa na array na 1019 00:47:46,720 --> 00:47:50,810 pag-access sa ang halaga sa unang index ng array. 1020 00:47:50,810 --> 00:47:52,890 Kaya dito ay ito ay 0. 1021 00:47:52,890 --> 00:47:53,390 Right? 1022 00:47:53,390 --> 00:47:56,820 Ba ang lahat maunawaan kung paano na sinusuri unang linya? 1023 00:47:56,820 --> 00:47:57,420 Great. 1024 00:47:57,420 --> 00:48:00,800 >> At kaya kung nais mo upang magpasimula ang karagdagang halaga pagkatapos na, 1025 00:48:00,800 --> 00:48:04,390 lahat ng aming ginagawa ay reassigning. 1026 00:48:04,390 --> 00:48:08,810 Kaya 0, 1, 2, 1. 1027 00:48:08,810 --> 00:48:12,770 Kaya ito pointer na minsan tumuturo sa dito, ang lahat ng aming ginagawa 1028 00:48:12,770 --> 00:48:15,540 ay lumipat ito pababa. 1029 00:48:15,540 --> 00:48:16,970 Iyon ay kung ano ang plus 1 ay ginagawa. 1030 00:48:16,970 --> 00:48:18,500 At pagkatapos ay maaari naming ilagay ang 2 doon. 1031 00:48:18,500 --> 00:48:23,250 Kung gusto naming ilagay ang 3 sa isa pagkatapos, kami ay burahin ang pointer, 1032 00:48:23,250 --> 00:48:25,170 ilagay 3 sa doon. 1033 00:48:25,170 --> 00:48:26,420 Ba na magkaroon ng kahulugan sa lahat? 1034 00:48:26,420 --> 00:48:26,920 Oo. 1035 00:48:26,920 --> 00:48:28,086 Mayroon ka ba ng isang katanungan? 1036 00:48:28,086 --> 00:48:30,711 Madla: Ito ay [hindi marinig] may isang tanong, kukunin ko na ito sinasabi pa rin. 1037 00:48:30,711 --> 00:48:35,496 Hindi sa tingin ko ito ay talagang isang tanong but-- sa Ingles, array 1038 00:48:35,496 --> 00:48:37,448 ay katumbas ng 1 katuturan. 1039 00:48:37,448 --> 00:48:39,888 Humihingi kami ng gusto, OK, ang unang bagay. 1040 00:48:39,888 --> 00:48:44,280 Subalit ang bagay ay 0 index [Hindi marinig] ang array ay katumbas ng 0 1041 00:48:44,280 --> 00:48:48,024 upang ipahiwatig ang unang puwesto. 1042 00:48:48,024 --> 00:48:48,690 ANDI PENG: Oo. 1043 00:48:48,690 --> 00:48:53,740 Kaya talagang ginagawa ko dito ay Hindi ko ma-access ang unang index. 1044 00:48:53,740 --> 00:48:57,930 Lahat ako ay doing-- kaya una sa lahat, sabihin sa akin kung ano ang ibig star array gawin? 1045 00:48:57,930 --> 00:48:59,480 Ano ang ginagawa ng isang bituin bago ang isang pointer gawin? 1046 00:48:59,480 --> 00:49:00,855 >> Madla: Ito ay nagpapahiwatig ng isang pointer. 1047 00:49:00,855 --> 00:49:02,910 Na ka na ng deklarasyon ng isang pointer. 1048 00:49:02,910 --> 00:49:04,380 De-- Ito 1049 00:49:04,380 --> 00:49:07,520 >> ANDI PENG: Ito dereferences na paraan ito napupunta at talagang makakakuha ng mga halaga. 1050 00:49:07,520 --> 00:49:08,020 Right? 1051 00:49:08,020 --> 00:49:13,030 Kaya sa kasong ito, nais mong makakuha ng ang halaga dito at i-set na sa 1. 1052 00:49:13,030 --> 00:49:13,800 Oo? 1053 00:49:13,800 --> 00:49:17,050 Kaya hindi ako actually-- hindi ako talagang pakialam tungkol sa index ng mga ito, 1054 00:49:17,050 --> 00:49:21,406 lahat ako ginagawa lamang iterating pababa sa pamamagitan ng paglipat ng aking pointer down ang array. 1055 00:49:21,406 --> 00:49:23,280 At pagkatapos ay ako sa huli kung itigil ito, right? 1056 00:49:23,280 --> 00:49:26,750 At ang paraan na itigil ko ay kapag pindutin ko, sa kaso 1057 00:49:26,750 --> 00:49:28,750 ng isang string, ang isang null terminator. 1058 00:49:28,750 --> 00:49:32,710 Alam ko, oh, kung pinindot ko ang isang back-- kung makikita ko backslash 0, alam ko ako tapos na may ganitong 1059 00:49:32,710 --> 00:49:35,270 at alam ko na maaari ko na lang itigil iterating sa pamamagitan ng. 1060 00:49:35,270 --> 00:49:36,200 Talagang mahusay na tanong. 1061 00:49:36,200 --> 00:49:40,210 >> At kami ay talagang kailangan pumunta mas malayo malalalim na ito sa susunod na linggo 1062 00:49:40,210 --> 00:49:43,990 dahil ang mga piraso na pupuntahan magdawit ng isang pulutong ng paggamit ng mga payo. 1063 00:49:43,990 --> 00:49:48,459 Ngunit lamang malaman na sa ngayon, ito lamang ay isang iba't ibang mga more-- 1064 00:49:48,459 --> 00:49:51,250 ito lamang ay isang iba't ibang mga paraan para sa ang computer na magsulat, mahalagang, 1065 00:49:51,250 --> 00:49:52,470 kung ano ang namin ang paggawa. 1066 00:49:52,470 --> 00:49:54,900 Tulad ng sinabi ni David sa magbigay ng panayam, ang mga paraan na aming 1067 00:49:54,900 --> 00:50:01,720 ma-access ang isang array ay lamang sa pamamagitan ng paggawa array 0, bracket 0, kung kami lamang 1068 00:50:01,720 --> 00:50:04,050 Nais na i-access ang unang halaga. 1069 00:50:04,050 --> 00:50:10,280 >> Ang lahat ng mga computer ay ginagawa sa pamamagitan ng pagpapaandar na sa na at iterating mismo. 1070 00:50:10,280 --> 00:50:13,580 Kaya tinatawag namin itong syntactic asukal na kung saan ay lamang 1071 00:50:13,580 --> 00:50:18,420 isang magarbong paraan ng sinasabi ng mga user friendly paraan ng pag-alam sa amin kung paano sa programa. 1072 00:50:18,420 --> 00:50:21,560 Ngunit ang computer sa ilalim, kung ano ang ginagawa, 1073 00:50:21,560 --> 00:50:23,997 ito ay talagang lamang ng pagkakaroon isang pointer na pag-aayos. 1074 00:50:23,997 --> 00:50:26,330 Ngunit ang paraan na isulat namin ito, dahil ito ay mas madali para sa amin 1075 00:50:26,330 --> 00:50:30,240 mag-isip tungkol sa mga bagay sa mga tuntunin ng kahon at kung paano ilipat down boxes, 1076 00:50:30,240 --> 00:50:32,190 ay sa pamamagitan ng pagkakaroon ng mga bracket. 1077 00:50:32,190 --> 00:50:36,394 Paumanhin, iyan ay tunay, talagang hindi maganda but-- oo. 1078 00:50:36,394 --> 00:50:38,310 Madla: Kaya kung paano mong paghambingin ang dalawang mga string 1079 00:50:38,310 --> 00:50:40,560 upang makita kung ang mga ito ay pantay-pantay sa bawat isa? 1080 00:50:40,560 --> 00:50:42,690 >> ANDI PENG: Kaya sumulat si David ang program na ito sa panayam 1081 00:50:42,690 --> 00:50:45,274 kaya lang ako pagpunta sa pumunta higit sa mabilis at madaling sabi. 1082 00:50:45,274 --> 00:50:47,440 Ang paraan na nais mong gawin na ay na gusto mo talagang 1083 00:50:47,440 --> 00:50:51,300 kailangan upang pumunta at ihambing ang mga addresses-- o ang mga halaga 1084 00:50:51,300 --> 00:50:52,810 makuha mula sa mga payo. 1085 00:50:52,810 --> 00:50:55,140 Kaya tandaan, kung paano ito gawin makakuha ng mga halaga dito? 1086 00:50:55,140 --> 00:50:56,825 Wala akong pakialam tungkol sa mga address dito. 1087 00:50:56,825 --> 00:50:58,950 Paano ko talagang makakuha ng mga halaga ng anumang meron dito? 1088 00:50:58,950 --> 00:50:59,470 >> Madla: [hindi marinig]. 1089 00:50:59,470 --> 00:51:00,261 >> ANDI PENG: Eksakto. 1090 00:51:00,261 --> 00:51:05,090 Kaya ikaw ay ihambing ang star dito kumpara sa star dito. 1091 00:51:05,090 --> 00:51:06,150 Ay ang mga pantay-pantay. 1092 00:51:06,150 --> 00:51:07,690 At pagkatapos mong bumaba. 1093 00:51:07,690 --> 00:51:09,530 Sigurado ang star dito at ang star dito pantay-pantay? 1094 00:51:09,530 --> 00:51:10,030 SIGE. 1095 00:51:10,030 --> 00:51:10,283 Ang mga ito ay pantay-pantay. 1096 00:51:10,283 --> 00:51:12,866 At mo lamang panatilihin ang pagpunta down hanggang sa ikaw ay pindutin ang end ng pareho. 1097 00:51:12,866 --> 00:51:16,190 At kung ang lahat ng mga ito ay pantay-pantay, at pagkatapos ay alam mo ang iyong string ay pantay. 1098 00:51:16,190 --> 00:51:18,130 At C talaga ay isang function na nakasulat na tinatawag na 1099 00:51:18,130 --> 00:51:20,713 String Comp saan talagang lamang ginagawa na para sa iyo kaya wala ka ' 1100 00:51:20,713 --> 00:51:22,140 kailangang isulat ito sa iyong sarili. 1101 00:51:22,140 --> 00:51:23,274 Oo? 1102 00:51:23,274 --> 00:51:26,970 >> Madla: Sa tingin ko sa lecture ay kapag ang mga namin ihambing. 1103 00:51:26,970 --> 00:51:29,520 Hindi namin talagang kailangan ng isang counter tulad ng pay, tama? 1104 00:51:29,520 --> 00:51:34,310 >> ANDI PENG: Hindi mo dahil hindi namin talagang pakialam 1105 00:51:34,310 --> 00:51:36,250 kung gaano karaming mga kahon namin iterated sa pamamagitan ng. 1106 00:51:36,250 --> 00:51:39,580 Lahat ng pag-aalaga namin na kami ay pagpunta sa panatilihin ang pagpunta hanggang alam ko na huminto. 1107 00:51:39,580 --> 00:51:41,990 At alam mo upang itigil kapag mayroong ilang mga uri ng mga pahiwatig 1108 00:51:41,990 --> 00:51:45,310 na ikaw ay nasa isang null terminator. 1109 00:51:45,310 --> 00:51:45,930 Oo. 1110 00:51:45,930 --> 00:51:47,154 So-- 1111 00:51:47,154 --> 00:51:48,070 Madla: [hindi marinig]. 1112 00:51:48,070 --> 00:51:48,736 ANDI PENG: Oo. 1113 00:51:48,736 --> 00:51:51,950 Kaya sa kaso ng paghahambing string, hindi ko talaga 1114 00:51:51,950 --> 00:51:54,207 aalaga kung gaano karaming mga titik are-- kailangan ko upang ihambing 1115 00:51:54,207 --> 00:51:56,540 kung sila ay totoo o hindi kung ang mga ito ay pantay-pantay sa bawat isa. 1116 00:51:56,540 --> 00:51:58,914 Wala akong pakialam kung gaano karaming mga titik ay sa bawat isa sa kanila, di ba? 1117 00:51:58,914 --> 00:52:01,130 Lamang ako pag-aalaga na ito tumutugma sa mga ito at ang isa 1118 00:52:01,130 --> 00:52:05,311 matapos tugma at ang isa matapos tumutugma sa lahat ng mga paraan up hanggang sa katapusan. 1119 00:52:05,311 --> 00:52:05,810 Right? 1120 00:52:05,810 --> 00:52:07,000 Ba na magkaroon ng kahulugan? 1121 00:52:07,000 --> 00:52:10,166 >> Kaya hindi ko talagang pakialam kung gaano karaming mga titik, Pag-aalaga ko lamang na ang lahat ng mga titik 1122 00:52:10,166 --> 00:52:11,050 match. 1123 00:52:11,050 --> 00:52:12,910 Oo. 1124 00:52:12,910 --> 00:52:13,920 SIGE. 1125 00:52:13,920 --> 00:52:16,840 Maaari ko bang ilipat sa mula sa mga ito? 1126 00:52:16,840 --> 00:52:18,489 Great. 1127 00:52:18,489 --> 00:52:21,280 Nagpapatakbo ka namin ng isang maliit na short sa time kaya ako pagpunta upang payagan lamang sa iyo 1128 00:52:21,280 --> 00:52:23,670 guys sa madaling sabi hitsura at ito. 1129 00:52:23,670 --> 00:52:26,430 Patakbuhin ang mga ito sa iyong ID kung ka guys ay hindi karaniwan. 1130 00:52:26,430 --> 00:52:30,030 At ka guys ay maaaring makita kung ano ang ito ay pag-print out. 1131 00:52:30,030 --> 00:52:30,640 SIGE. 1132 00:52:30,640 --> 00:52:34,990 >> Kaya ang isang bagay na kailangan din namin pindutin sa isang bit ay ang ideya ng pointer aritmetika. 1133 00:52:34,990 --> 00:52:38,180 Kung saan, ang lahat ng mga ito ay, ay sa halip ng pag-aayos 1134 00:52:38,180 --> 00:52:42,610 ang mga halaga ng kung ano ang naka-imbak na sa address ng iyong pointer, 1135 00:52:42,610 --> 00:52:45,030 ito lang ang tunay na pagbabago ang mismong address. 1136 00:52:45,030 --> 00:52:49,420 Kaya't kung ikaw bilang Nais ng tao upang ayusin ang iyong pointer mano-mano, 1137 00:52:49,420 --> 00:52:52,700 ang paraan na gusto mong gawin na lamang gawin n beses ang laki ng pointer. 1138 00:52:52,700 --> 00:52:53,240 Right? 1139 00:52:53,240 --> 00:52:54,810 >> Kaya sa isang int. 1140 00:52:54,810 --> 00:52:58,580 Isang int kung ilang bytes sa memory ay isang int? 1141 00:52:58,580 --> 00:52:59,640 Ito ay apat na, tama? 1142 00:52:59,640 --> 00:53:03,520 Kaya kung alam ko na mayroon akong isang array ng lahat ints at gusto ko ito upang tumuro sa isa 1143 00:53:03,520 --> 00:53:08,470 pagkatapos, gusto ko alam ko na lang ay ang ilipat ang aking pointer down na apat na bytes, di ba? 1144 00:53:08,470 --> 00:53:12,440 At kaya n beses ang laki ng pointer bytes 1145 00:53:12,440 --> 00:53:15,890 ay gayunpaman maraming bytes ikaw lamang pagpunta sa ilipat ang iyong pointer hiwalay ayon. 1146 00:53:15,890 --> 00:53:20,350 >> Kaya halimbawa, kung kami ay may isang hanay ng mga ints, ang unang isa, sabihin lamang sabihin, 1147 00:53:20,350 --> 00:53:22,280 ay naka-imbak bilang 0x00. 1148 00:53:22,280 --> 00:53:26,150 Alam mo sa susunod na isa ay magiging sa 0x04 dahil na apat na bytes mamaya. 1149 00:53:26,150 --> 00:53:31,030 At ang isa pagkatapos na pupuntahan maging 0x08 at iba pa at iba pa. 1150 00:53:31,030 --> 00:53:33,830 At kaya, guys, tingnan. 1151 00:53:33,830 --> 00:53:36,640 >> Lahat ng iyong ginagawa dito ay na mayroon kang isang pointer y 1152 00:53:36,640 --> 00:53:43,700 at magdadagdag ka na sa iyong memory upang maaari mong ilipat pababa 1153 00:53:43,700 --> 00:53:45,559 ang mga bloke ng memory inilalaan. 1154 00:53:45,559 --> 00:53:46,850 Uri ng isang mas mataas na konsepto na antas. 1155 00:53:46,850 --> 00:53:48,820 Ikaw guys ay hindi kailangan malaman para sa linggong ito, 1156 00:53:48,820 --> 00:53:51,290 ngunit na ang lahat ng ito ay ginagawa doon. 1157 00:53:51,290 --> 00:53:55,190 1158 00:53:55,190 --> 00:53:55,900 SIGE. 1159 00:53:55,900 --> 00:53:56,710 >> Isa pang oras joke. 1160 00:53:56,710 --> 00:54:01,360 1161 00:54:01,360 --> 00:54:02,780 Dalawang string maglakad papunta sa isang bar. 1162 00:54:02,780 --> 00:54:05,713 One nagsasabing, Gusto ko ng rum at Coke halaga ng basura. 1163 00:54:05,713 --> 00:54:08,796 Ang iba pang mga nagsasabing, magkakaroon ka upang humingi ng paumanhin ang aking mga kaibigan, siya ay hindi null tinapos. 1164 00:54:08,796 --> 00:54:10,390 Ikaw guys kumuha ito. 1165 00:54:10,390 --> 00:54:10,890 Sorry. 1166 00:54:10,890 --> 00:54:13,490 Ito ay kung paano panatilihin ang aking sarili pagpunta kapag Prep ako para sa section 1167 00:54:13,490 --> 00:54:15,650 ay kong ipasok ang isang pares joke slide. 1168 00:54:15,650 --> 00:54:16,150 Anyways. 1169 00:54:16,150 --> 00:54:21,460 1170 00:54:21,460 --> 00:54:21,960 SIGE. 1171 00:54:21,960 --> 00:54:24,290 Bago ako lumipat on-- kaya, mahalagang, na namin 1172 00:54:24,290 --> 00:54:30,600 sakop ang lahat ng haka-haka mga isyu na may kaugnayan sa mga payo. 1173 00:54:30,600 --> 00:54:34,090 At pagkatapos kami ay pagpunta sa talk-- paglipat higit pa, makipag-usap tungkol sa kung bakit na mahalaga 1174 00:54:34,090 --> 00:54:37,810 at kung paano magkasya sa ideya ng pamamahala ng memory. 1175 00:54:37,810 --> 00:54:39,810 Ngunit bago ko ilipat sa, kahit sino ay may mga katanungan 1176 00:54:39,810 --> 00:54:43,880 tungkol sa paggamit pointer, kung ano ang nangyayari kapag ikaw ay lumilikha ng mga payo, 1177 00:54:43,880 --> 00:54:47,540 kung paano ang mga sanggunian sa bawat isa, kung paano sila ay dereferencing? 1178 00:54:47,540 --> 00:54:51,760 Ang anumang mga katanungan tungkol sa na bago ako lumipat sa? 1179 00:54:51,760 --> 00:54:53,060 SIGE. 1180 00:54:53,060 --> 00:54:54,770 Great. 1181 00:54:54,770 --> 00:54:58,170 >> Kaya ito ay magbibigay sa amin sa ito mas malaki mas mataas na konsepto na antas 1182 00:54:58,170 --> 00:55:00,310 ng pamamahala ng memory bilang isang buo. 1183 00:55:00,310 --> 00:55:02,720 Kaya, mahalagang, sa ang iyong computer, may 1184 00:55:02,720 --> 00:55:06,300 dalawang pangunahing uri ng memory o mga rehiyon kung saan ang memorya ay naka-imbak. 1185 00:55:06,300 --> 00:55:10,210 Mayroon kang dito kung ano ang tinatawag magbunton at mayroon kang down dito 1186 00:55:10,210 --> 00:55:11,550 ano ang tinatawag na stack. 1187 00:55:11,550 --> 00:55:13,966 At kami ay pagpunta sa makipag-usap tungkol sa stack unang dahil ito ay 1188 00:55:13,966 --> 00:55:16,910 ang isa pang finagley na kayo kung ang uri ng conceptually 1189 00:55:16,910 --> 00:55:18,570 maunawaan kung ano ang nangyayari sa. 1190 00:55:18,570 --> 00:55:23,930 >> Kaya ang lahat ng stack is-- tingin ng ito bilang isang pisikal na stack ng memory 1191 00:55:23,930 --> 00:55:28,880 kung saan ikaw ay may isang bloke ng memorya na magtabi para sa iyong mga programa 1192 00:55:28,880 --> 00:55:30,180 habang tumatakbo ito. 1193 00:55:30,180 --> 00:55:34,480 At ito ay kung saan, mahalagang, ang lahat ng mga ng iyong lokal na mga variable ay naka-imbak. 1194 00:55:34,480 --> 00:55:38,300 Kaya ito ay isang naka-zoom lang sa larawan ng na stack. 1195 00:55:38,300 --> 00:55:41,060 Ang stack down doon, ako lang mag-zoom in pa ng kaunti. 1196 00:55:41,060 --> 00:55:46,170 >> Kaya, mahalagang, sa isang stack mayroon kang ng grupo ng mga function sa iyong programa. 1197 00:55:46,170 --> 00:55:48,250 Kaya sabihin pumunta lang pabalik sa week dalawang halimbawa 1198 00:55:48,250 --> 00:55:51,450 na kung saan kami ay nagkaroon ng aming pangunahing function pati na rin ang isang kubo function 1199 00:55:51,450 --> 00:55:56,410 kung saan namin sinubukan upang lumikha ng isang function na cubed-- na kinuha ng mga parameter ng input, 1200 00:55:56,410 --> 00:55:59,110 nakakubo kanila at bumalik mga ito pabalik sa main. 1201 00:55:59,110 --> 00:56:02,459 Kaya ang paraan na iyan ay naka-imbak sa memory ay na mayroon ka sa iyong pangunahing pag-andar 1202 00:56:02,459 --> 00:56:03,250 dito sa ibaba. 1203 00:56:03,250 --> 00:56:06,630 At pagkatapos ay sa bawat karagdagang pag-andar na tawag mo at idagdag sa itaas ng na, 1204 00:56:06,630 --> 00:56:07,960 ang memorya lamang stack sa itaas. 1205 00:56:07,960 --> 00:56:10,190 Isipin ito bilang isang pisikal na stack. 1206 00:56:10,190 --> 00:56:13,570 >> At kaya mayroon ka ng lahat ng mga ka main variable sa iyong pangunahing pag-andar, 1207 00:56:13,570 --> 00:56:15,260 lahat ng bagay na nangyayari sa dito, naka-imbak. 1208 00:56:15,260 --> 00:56:17,440 At pagkatapos ay kapag ikaw ay tinatawag kubo, ito ay pumunta at ito 1209 00:56:17,440 --> 00:56:20,810 lumilikha ng mga kopya ng lahat ng mga mga parameter at mga tindahan na ito sa kanila 1210 00:56:20,810 --> 00:56:23,010 sa itaas sa isang iba't ibang mga lugar. 1211 00:56:23,010 --> 00:56:24,280 At kaya bakit namin pag-aalaga? 1212 00:56:24,280 --> 00:56:29,220 Ang dahilan sa pag-aalaga namin na hindi namin maaari lamang gamitin ang mga parameter here-- ang mga variable 1213 00:56:29,220 --> 00:56:33,080 here-- at baguhin natin ang mga ito, inaasahan nating kanila na ring nagbago dito, di ba? 1214 00:56:33,080 --> 00:56:35,910 >> Ang ideya ay na ang mga ito ay nai-save sa iba't ibang lugar sa memory 1215 00:56:35,910 --> 00:56:40,540 nang sa gayon, kapag ina-access mo iba't ibang pag-andar, kung ano sa tingin mo ang nangyayari 1216 00:56:40,540 --> 00:56:45,520 ay hindi aktwal na nangyayari dahil ang memory bits ay hindi interconnected. 1217 00:56:45,520 --> 00:56:50,530 At kaya tanong na talaga mahalaga para sa amin na uri ng maunawaan 1218 00:56:50,530 --> 00:56:54,100 ay, kung ano kung, kapag kami ay tumatakbo isang programa, ang laki ng isang function 1219 00:56:54,100 --> 00:56:57,159 stack frame-- kaya pisikal, kung paano maraming memory ang mayroon upang bigyan ito ng tayo? 1220 00:56:57,159 --> 00:56:59,950 Siguro ito ay isang higanteng function kaya namin kailangang magbigay ng mga ito na maraming memory. 1221 00:56:59,950 --> 00:57:02,230 Ngunit kung ito ay mas maliit gusto namin kailangan ng isang maliit na maliit na maliit na bit. 1222 00:57:02,230 --> 00:57:05,980 >> Kaya ang ideya ay na kapag kami ay tumatakbo isang programa sa laki ng na function 1223 00:57:05,980 --> 00:57:09,100 ay nakasalalay sa kung gaano karaming variable at ang uri ng variable 1224 00:57:09,100 --> 00:57:10,940 na nais naming bigyan ang mga ito. 1225 00:57:10,940 --> 00:57:13,910 Ngunit paano kung ang bilang ng mga variables-- at ang kanilang mga sukat, 1226 00:57:13,910 --> 00:57:16,140 na tinutukoy hindi sa pamamagitan ng sa iyo ang mga encoder ngunit 1227 00:57:16,140 --> 00:57:20,580 ay tinutukoy sa pamamagitan ng aktwal na user ng iyong programa. 1228 00:57:20,580 --> 00:57:24,240 Kaya kung nais kong lumikha ng isang function na kinuha string mula sa gumagamit, 1229 00:57:24,240 --> 00:57:27,630 ngunit hindi ko talaga alam kung paano malaki mga string ay, mahirap para sa akin 1230 00:57:27,630 --> 00:57:30,220 mag-ukol ng mga tiyak na kinakailangan na halaga ng memory. 1231 00:57:30,220 --> 00:57:30,920 Right? 1232 00:57:30,920 --> 00:57:35,234 >> Dahil kung ito function-- kung input sa user na ito ng isang higanteng string, 1233 00:57:35,234 --> 00:57:37,650 ito ay pagpunta upang lumikha ng isang error ng kung ano ang tinatawag mahalagang 1234 00:57:37,650 --> 00:57:42,190 stack overflow kung saan ka pumunta sa ibayo ng hanggahan ng memory na mayroon ka. 1235 00:57:42,190 --> 00:57:44,250 At kaya pagkatapos ay kung ano ang gagawin namin? 1236 00:57:44,250 --> 00:57:47,290 Kung hindi lamang namin ay maaaring lumikha ng mga ito higanteng stack na maaaring i-save ang lahat ng bagay, 1237 00:57:47,290 --> 00:57:50,260 ano ang gagawin namin upang malutas ang problema? 1238 00:57:50,260 --> 00:57:54,364 >> Kaya kami ay pagpunta sa ilipat sa at makipag-usap tungkol sa ikalawang uri ng memory 1239 00:57:54,364 --> 00:57:56,780 at pagkatapos ay maaari naming makipag-usap tungkol sa kung paano maaari naming gamitin ang dalawang magkasama 1240 00:57:56,780 --> 00:57:58,550 upang malutas ang tanong na iyon. 1241 00:57:58,550 --> 00:58:01,024 Kaya ngayon kami ay pagpunta sa ilipat up sa ibang bahagi ng memorya 1242 00:58:01,024 --> 00:58:01,690 sa aming mga computer. 1243 00:58:01,690 --> 00:58:03,215 Iyan ay tinatawag ang magbunton. 1244 00:58:03,215 --> 00:58:07,150 Kaya lahat ng magbunton ay ay isang pool ng mga magagamit na memorya na 1245 00:58:07,150 --> 00:58:08,690 maaaring dynamic na inilalaan. 1246 00:58:08,690 --> 00:58:12,420 Kaya na maaaring baguhin habang ang iyong programa ay tumatakbo. 1247 00:58:12,420 --> 00:58:15,160 >> At kaya isang rehiyon ng hindi nagamit na memory na maaari 1248 00:58:15,160 --> 00:58:18,200 maging allowed-- na maaaring maging inilaang gamit ang function 1249 00:58:18,200 --> 00:58:20,490 tinatawag malloc, o memory laang-gugulin. 1250 00:58:20,490 --> 00:58:23,110 Kaya, mahalagang, kapag ikaw ay nagpapatakbo ng isang programa, 1251 00:58:23,110 --> 00:58:29,560 maaari mong dynamic na lumikha ng memorya mula sa magbunton at gamitin na ang lahat dito sa ibaba. 1252 00:58:29,560 --> 00:58:34,280 At kaya pagkatapos, ang lahat ng iyong mga pag-andar dito ay maaaring ma-access ang magbunton. 1253 00:58:34,280 --> 00:58:37,960 >> At kaya malloc, ideya na ito na si David uri ng mabilis, madaling sabi glossed higit 1254 00:58:37,960 --> 00:58:41,570 sa panayam, ay lamang ng isang paraan para sa iyo na kontrolin ang iyong memorya. 1255 00:58:41,570 --> 00:58:45,470 Tulad ng, kapag na ikaw lamang ang paglikha stack function, kapag handa ka na lang 1256 00:58:45,470 --> 00:58:48,290 pagkakaroon ng iyong pangunahing pag-andar sa iyong mga random function, 1257 00:58:48,290 --> 00:58:52,270 sa tingin mo ng mga ito bilang mga bata na lang tumakbo ang layo kapag kayo ay tapos na sa mga ito. 1258 00:58:52,270 --> 00:58:53,690 Sila ay ganap na hindi maayos na bata. 1259 00:58:53,690 --> 00:58:55,515 Lumikha ka ng mga ito, ikaw turuan ang mga ito sa isang bagay, 1260 00:58:55,515 --> 00:58:57,640 at pagkatapos ay kung nais mong ma-access ang mga ito muli ang mga ito 1261 00:58:57,640 --> 00:58:59,850 hindi doon dahil ang iyong memory lamang tumakbo ang layo. 1262 00:58:59,850 --> 00:59:04,140 >> Ngunit malloc, o magbunton, ay isang paraan ng pagkakaroon ng mas mahusay na mga bata, na kung saan ang 1263 00:59:04,140 --> 00:59:07,090 maaari mong uri ng lumikha kanila, magtalaga ng mga ito na mga halaga, 1264 00:59:07,090 --> 00:59:11,080 gamitin them-- na tunog talagang bad-- gamitin ang mga ito subalit ang iyong nais, 1265 00:59:11,080 --> 00:59:14,002 ngunit pagkatapos na ma-control ang mga ito at pagkatapos ay magbakante ng memorya 1266 00:59:14,002 --> 00:59:14,960 kapag kailangan mo ang mga ito. 1267 00:59:14,960 --> 00:59:18,085 Kaya nga, kapag tapos ka na sa iyong function, ang mga bata ay bumalik sa iyo 1268 00:59:18,085 --> 00:59:20,290 at ikaw pa rin ang data na iyon doon. 1269 00:59:20,290 --> 00:59:25,690 >> Kaya ang paraan na aming malloc, o lumikha, memorya ay sa pamamagitan ng walang bisa function star 1270 00:59:25,690 --> 00:59:26,790 size malloc sa bytes. 1271 00:59:26,790 --> 00:59:29,730 Kaya ito lamang ang prototype para sa kung bakit namin iyon. 1272 00:59:29,730 --> 00:59:35,800 Kaya ang isang halimbawa ay lumikha kami ng isang pointer ng uri int equals int star pointer-- 1273 00:59:35,800 --> 00:59:38,120 size malloc ng int. 1274 00:59:38,120 --> 00:59:41,734 Kaya ang dahilan kung bakit ginagawa namin ang laki ng at hindi lamang isang number-- 1275 00:59:41,734 --> 00:59:43,650 dahil alam namin ang lahat na isang int ay apat na bytes, 1276 00:59:43,650 --> 00:59:48,310 right-- ngunit isang int ay lamang ng apat bytes sa mga tiyak na mga operating system. 1277 00:59:48,310 --> 00:59:50,410 >> Ang mga ideya para sa amin bilang mga programmers ay na tayo 1278 00:59:50,410 --> 00:59:53,160 nais upang lumikha ng code na maaari tumakbo sa lahat ng mga computer, hindi lamang 1279 00:59:53,160 --> 00:59:54,860 ang aming simpleng mga computer. 1280 00:59:54,860 --> 00:59:58,350 At kaya na kung bakit gusto namin na gamitin laki ng at hindi lamang ang bilang apat. 1281 00:59:58,350 --> 00:59:59,970 Ba na magkaroon ng kahulugan sa lahat ng tao? 1282 00:59:59,970 --> 01:00:03,930 Kaya laki of-- ang lahat ng ito ay isang C function o operator na 1283 01:00:03,930 --> 01:00:09,350 ay nagsasabi sa iyo kung gaano karaming mga byte ng memorya ay isang tiyak na uri ng variable tumagal ng hanggang. 1284 01:00:09,350 --> 01:00:11,150 Kaya sa kasong ito, ang laki ng isang int ay apat. 1285 01:00:11,150 --> 01:00:12,090 Apat bytes. 1286 01:00:12,090 --> 01:00:15,490 At malloc ay pagpunta sa magbakante up apat na bytes sa iyong magbunton, 1287 01:00:15,490 --> 01:00:18,790 pagkatapos ay maaari mong pagkatapos ay gamitin sa iyong pangunahing function na upang makapag-imbak ng memory. 1288 01:00:18,790 --> 01:00:22,460 1289 01:00:22,460 --> 01:00:24,860 Malinaw sa na sa ngayon ay sa lahat? 1290 01:00:24,860 --> 01:00:25,918 Oo? 1291 01:00:25,918 --> 01:00:28,122 >> Madla: Ako malinaw ngunit na lamang sa loob ng clear-- 1292 01:00:28,122 --> 01:00:28,705 ANDI PENG: OK. 1293 01:00:28,705 --> 01:00:29,246 Ganap fine. 1294 01:00:29,246 --> 01:00:32,176 Madla: --size ng ay [hindi marinig] Maaari talagang [hindi marinig] 1295 01:00:32,176 --> 01:00:34,384 at ito ay talagang gawin ang bagay na gusto namin ito sa. 1296 01:00:34,384 --> 01:00:35,380 Ito ay hindi ilang pseudocode. 1297 01:00:35,380 --> 01:00:35,878 >> ANDI PENG: No. 1298 01:00:35,878 --> 01:00:36,874 >> Madla: Ito ay tulad ng isang tunay na thing-- 1299 01:00:36,874 --> 01:00:37,372 >> ANDI PENG: Ito ay tunay na code. 1300 01:00:37,372 --> 01:00:38,455 >> Madla: Maaari --we gamitin ito. 1301 01:00:38,455 --> 01:00:39,862 Ito ay aktwal na. 1302 01:00:39,862 --> 01:00:40,418 Cool. 1303 01:00:40,418 --> 01:00:41,751 ANDI PENG: Sukat ng lumapit sa C. 1304 01:00:41,751 --> 01:00:43,475 Madla: Na ginagawang mas masaya ang aking buhay. 1305 01:00:43,475 --> 01:00:45,550 ANDI PENG: Oo. 1306 01:00:45,550 --> 01:00:48,610 Kaya't kung ikaw ay isang tamad programmer tulad ko uri ng am kung minsan, 1307 01:00:48,610 --> 01:00:50,402 Hindi ko gusto ang pagsasaulo ano ang laki ng isang int 1308 01:00:50,402 --> 01:00:52,734 ay, hindi ko gusto ang pagsasaulo sa laki ng isang float ay. 1309 01:00:52,734 --> 01:00:55,160 Laki ng lamang ay nagsasabi sa iyo kung ano ang ito ay at na ang isang pulutong mas madali. 1310 01:00:55,160 --> 01:00:59,880 1311 01:00:59,880 --> 01:01:00,440 >> Lahat tama. 1312 01:01:00,440 --> 01:01:02,160 Kaya isang mahalagang bagay na ang lahat ng gusto mong guys 1313 01:01:02,160 --> 01:01:04,620 na dapat tandaan kapag ikaw ay gamit malloc ay na palagi kang 1314 01:01:04,620 --> 01:01:06,400 kung suriin upang makita kung ito ay null. 1315 01:01:06,400 --> 01:01:08,630 Kaya tulad ng sinabi ko, bumalik sa na ang larawan ng magbunton. 1316 01:01:08,630 --> 01:01:11,390 Magbunton ay lamang higanteng ito stack ng memorya na nakuha mo na. 1317 01:01:11,390 --> 01:01:16,740 At gusto mong magagawang gumawa chunks ng memorya mula sa mga ito at gamitin ito, i-right? 1318 01:01:16,740 --> 01:01:19,750 >> Ngunit ano kung ikaw ay walang higit pang memory sa na magbunton? 1319 01:01:19,750 --> 01:01:23,650 Paano kung na ako na ginamit ko ang lahat ng mga ito at subukan kong malloc higit pa? 1320 01:01:23,650 --> 01:01:24,864 Iyon ay hindi umiiral. 1321 01:01:24,864 --> 01:01:26,780 Well, na kung bakit ikaw ay pagpunta upang makakuha ng isang error. 1322 01:01:26,780 --> 01:01:29,220 Ikaw ay pagpunta sa seg fault. Ikaw ay pagpunta na magkaroon ng isang segmentation fault kung saan mo 1323 01:01:29,220 --> 01:01:30,940 subukan upang ma-access ang mga bagay na wala doon. 1324 01:01:30,940 --> 01:01:33,180 At upang ang mga paraan namin sa na iyon at ang paraan na aming 1325 01:01:33,180 --> 01:01:36,120 maiwasan ang mga iyon ay na-check namin upang makita kung null ang pointer ni. 1326 01:01:36,120 --> 01:01:41,650 >> Kaya kung ako ay sa malloc isang bagay at ako ay walang higit pang memory, 1327 01:01:41,650 --> 01:01:45,501 na-print ng isang error dahil ang pointer ibabalik sa iyo ay lamang null. 1328 01:01:45,501 --> 01:01:47,750 At upang ang mga paraan namin sa this-- ito ay lamang ng mahusay na disenyo, 1329 01:01:47,750 --> 01:01:52,140 kabisaduhin lang this-- ay na ang anumang mga oras na subukan mong malloc anumang bagay, 1330 01:01:52,140 --> 01:01:55,300 ikaw ay pagpunta sa kailangan upang suriin upang makita kung ito ay null. 1331 01:01:55,300 --> 01:01:58,257 Dahil sa tuwing sinusubukan mong makakuha ng memorya mula sa magbunton, 1332 01:01:58,257 --> 01:02:00,340 palagi kang may upang gumawa ng mga Siguraduhin na mayroon kang memory. 1333 01:02:00,340 --> 01:02:01,350 Iyan na ang lahat ng ito ay. 1334 01:02:01,350 --> 01:02:04,980 >> Kaya medyo marami ang mga tatlong linya ng code, kabisaduhin. 1335 01:02:04,980 --> 01:02:06,830 Sa bawat oras na malloc, gumawa ng mapa ang mga ito sa. 1336 01:02:06,830 --> 01:02:08,190 Ikaw ay pagpunta sa kailangan ang mga ito. 1337 01:02:08,190 --> 01:02:10,540 Dahil garantiya ko sa iyo, kami ay pagpunta upang subukan mo sa isang kaso at ang iyong computer 1338 01:02:10,540 --> 01:02:13,498 ay pagpunta sa sumabog dahil ikaw ay pagpunta sa subukan na access memory na 1339 01:02:13,498 --> 01:02:16,680 hindi doon at ang mga bagay ay pagpunta sa crash at ito ay hindi magiging mabuti. 1340 01:02:16,680 --> 01:02:19,290 Kaya mag-drill lamang na sa iyong utak. 1341 01:02:19,290 --> 01:02:21,370 Malloc, null. 1342 01:02:21,370 --> 01:02:22,360 Good. 1343 01:02:22,360 --> 01:02:22,860 Lahat tama. 1344 01:02:22,860 --> 01:02:26,280 1345 01:02:26,280 --> 01:02:28,340 >> Pagkatapos ito ay nagbubunga ng tanong ng kung ano ang mangyayari 1346 01:02:28,340 --> 01:02:30,550 pagkatapos kami ay tapos na gamit na memory. 1347 01:02:30,550 --> 01:02:32,390 Dahil ang buong ideya ng pagkakaroon ng malloc ay 1348 01:02:32,390 --> 01:02:36,460 na taglay namin ang kimpal na maaari naming gawin memory mula sa at pagkatapos ay maaari naming gamitin ito. 1349 01:02:36,460 --> 01:02:37,220 Right? 1350 01:02:37,220 --> 01:02:40,550 At pagkatapos ay kung ano ang mayroon kaming matandaan ay na, pagkatapos namin ay tapos na sa mga ito, 1351 01:02:40,550 --> 01:02:41,900 pagkatapos ay maaari naming magbakante ito. 1352 01:02:41,900 --> 01:02:42,400 Bumitaw. 1353 01:02:42,400 --> 01:02:43,979 Maaari naming ipaalam ito pumunta. 1354 01:02:43,979 --> 01:02:47,020 O kung hindi ka din ng pagpunta sa tumagas memory at mas masamang bagay ang mangyayari. 1355 01:02:47,020 --> 01:02:49,010 >> Mahalaga, kapag ka ng pagpindot memory, 1356 01:02:49,010 --> 01:02:51,800 masamang bagay ang mangyayari kung ikaw huwag gawin nang tama bagay. 1357 01:02:51,800 --> 01:02:55,150 Kaya kailangan mong suriin upang makita, una, kung mayroon kang mga magagamit na memorya. 1358 01:02:55,150 --> 01:02:58,700 At pagkatapos ay pagkatapos tapos ka na, gusto mong libreng ito at pahintulutan ang iyong operating system 1359 01:02:58,700 --> 01:03:00,690 upang bawiin ito. 1360 01:03:00,690 --> 01:03:04,870 Kaya ang paraan namin na lamang na function, walang bisa libre, at ang pointer 1361 01:03:04,870 --> 01:03:06,370 sa na magbunton ng memory. 1362 01:03:06,370 --> 01:03:08,680 >> Kaya ang mga halimbawa ay libre pointer. 1363 01:03:08,680 --> 01:03:11,580 Ito ay medyo madali, simple, hindi mo nais na kalimutan ito. 1364 01:03:11,580 --> 01:03:14,687 Kaya suriin upang makita kung ito ay null, libre. 1365 01:03:14,687 --> 01:03:15,270 Ang bawat mabuti? 1366 01:03:15,270 --> 01:03:22,660 1367 01:03:22,660 --> 01:03:27,325 Kaya muli, code na iyong guys Maaari uri ng mabilis na kumuha ng isang sulyap sa. 1368 01:03:27,325 --> 01:03:34,964 1369 01:03:34,964 --> 01:03:37,880 Alam ko ito ay isang pulutong ng mga bagong syntax at ito ay ang lahat ng karapatan kung ikaw ay tulad ng, ah, 1370 01:03:37,880 --> 01:03:38,963 kung ano ang ibig sabihin na muli? 1371 01:03:38,963 --> 01:03:40,250 Huwag mag-alala. 1372 01:03:40,250 --> 01:03:46,785 Ang lahat ng ito ay sinadya upang maging ay pagpapakita ng isang aksyon, kung paano ang lahat ng mga bagay na ito 1373 01:03:46,785 --> 01:03:47,660 ay maaaring gamitin nang magkasama. 1374 01:03:47,660 --> 01:03:52,190 1375 01:03:52,190 --> 01:03:54,190 Kaya na ay magkasama tulad ng isang grupo ng nakaraan 1376 01:03:54,190 --> 01:03:56,532 slides nagpunta kami lamang sa pamamagitan ng sa isang programa. 1377 01:03:56,532 --> 01:03:58,240 Madla: Sa isang paraan na maaari naming actually-- 1378 01:03:58,240 --> 01:03:59,570 ANDI PENG: Sa isang paraan na maaari naming tunay na paggamit. 1379 01:03:59,570 --> 01:04:02,379 Ikaw ay maaaring gumawa ng mapa na sa iyong ID, maaari mong patakbuhin ito at ito ay gumagana. 1380 01:04:02,379 --> 01:04:02,920 Madla: OK. 1381 01:04:02,920 --> 01:04:04,140 Kaya na ang mga tunay na? 1382 01:04:04,140 --> 01:04:05,580 >> ANDI PENG: Iyan ay tunay. 1383 01:04:05,580 --> 01:04:06,430 Oo. 1384 01:04:06,430 --> 01:04:08,690 Subukan ko na gawin ito upang ang font ay naiiba sa gayon 1385 01:04:08,690 --> 01:04:11,770 na kapag nagta-type ako real code ang font ay code font 1386 01:04:11,770 --> 01:04:15,471 at na ang aking note code ay naiiba, ngunit Hindi ko alam kung na talagang gumagana. 1387 01:04:15,471 --> 01:04:16,012 Madla: No. 1388 01:04:16,012 --> 01:04:17,190 Sa tingin ko-- 1389 01:04:17,190 --> 01:04:18,213 >> ANDI PENG: OK. 1390 01:04:18,213 --> 01:04:20,578 >> Madla: --sometimes [Hindi marinig] at ako 1391 01:04:20,578 --> 01:04:23,416 tulad ng, na ay talagang maganda kung ito ay talagang isang kapaki-pakinabang na bagay 1392 01:04:23,416 --> 01:04:24,812 ngunit pagkatapos ito ay hindi isang magagamit na bagay. 1393 01:04:24,812 --> 01:04:26,270 Gusto ko na ito ay isang kapaki-pakinabang na bagay. 1394 01:04:26,270 --> 01:04:27,010 >> ANDI PENG: OK. 1395 01:04:27,010 --> 01:04:27,510 Oo. 1396 01:04:27,510 --> 01:04:28,430 Kukunin ko pumasa na kasama. 1397 01:04:28,430 --> 01:04:33,266 Maging tulad ng, David, ang mga bata ay talagang malungkot kapag ikaw ay sumulat ng mga pekeng code. 1398 01:04:33,266 --> 01:04:34,240 Lahat tama. 1399 01:04:34,240 --> 01:04:34,740 Oo? 1400 01:04:34,740 --> 01:04:37,686 >> Madla: Kaya ang ptr dito ay hindi tunay na isang pointer, 1401 01:04:37,686 --> 01:04:41,130 ito ay isang bloke ng memory? 1402 01:04:41,130 --> 01:04:45,130 >> ANDI PENG: So sinasabi mo ang unang linya o ang isa rito? 1403 01:04:45,130 --> 01:04:48,170 Ikaw ba ay pakikipag-usap tungkol sa isang ito dito? 1404 01:04:48,170 --> 01:04:50,910 >> Madla: ptr ay iba't ibang bagay in-- 1405 01:04:50,910 --> 01:04:53,230 >> ANDI PENG: Well, kaya hanggang dito ano ako doing-- talaga, 1406 01:04:53,230 --> 01:04:54,660 hayaan pumunta lamang sa pamamagitan dito. 1407 01:04:54,660 --> 01:04:57,120 Ang ganitong uri ng relasyon sa mabuti ang lahat ng mga concepts. 1408 01:04:57,120 --> 01:05:01,840 Kaya dito mayroon kaming int star ptr. 1409 01:05:01,840 --> 01:05:04,160 Kaya int pointer, na kung saan ang talaga namin ang paglikha 1410 01:05:04,160 --> 01:05:06,550 isang pointer na tumuturo sa isang integer. 1411 01:05:06,550 --> 01:05:08,230 Well, ito ay pagpunta upang tumuro sa isang integer. 1412 01:05:08,230 --> 01:05:12,135 At kami ay pagpunta sa malloc, o bigyan ito, inilaan ng sapat na memorya 1413 01:05:12,135 --> 01:05:13,200 sa tindahan ng isang integer. 1414 01:05:13,200 --> 01:05:14,910 Kaya apat na bytes sa kasong ito. 1415 01:05:14,910 --> 01:05:18,024 >> At pagkatapos ay kung na katumbas null-- equals katumbas null-- kami ay pagpunta sa i-print. 1416 01:05:18,024 --> 01:05:20,440 Oh, mayroon kang isang error dahil nasa labas ka ng memory, tama? 1417 01:05:20,440 --> 01:05:22,814 Kung hindi man ang pagbabalik ng isa, na lamang ay nagsasabi sa iyong mga programa 1418 01:05:22,814 --> 01:05:24,170 na nakuha mo na ang isang error. 1419 01:05:24,170 --> 01:05:26,850 At pagkatapos ay kung gagawin mo Mayroon na memory, ito ay 1420 01:05:26,850 --> 01:05:33,230 pagpunta sa mga tindahan ng kahit anong makuha Binibigyan ka ng int sa lokasyon 1421 01:05:33,230 --> 01:05:35,460 at itakda ito bilang ang halaga ng pointer. 1422 01:05:35,460 --> 01:05:38,500 Kaya ito ay tunay na pagpunta sa pisikal na burahin ang halaga na ito 1423 01:05:38,500 --> 01:05:41,702 at ilagay ang kahit anong makakuha int nagbabalik. 1424 01:05:41,702 --> 01:05:43,910 At pagkatapos ang iyong pagpunta sa print kahit anong ipinasok nila. 1425 01:05:43,910 --> 01:05:46,080 >> Madla: At na magiging sa magbunton? 1426 01:05:46,080 --> 01:05:47,060 >> ANDI PENG: Iyon ang nangyayari upang maging sa magbunton. 1427 01:05:47,060 --> 01:05:48,768 >> Madla: At upang ang ay maa-access. 1428 01:05:48,768 --> 01:05:51,220 ANDI PENG: Eksakto. 1429 01:05:51,220 --> 01:05:52,600 Nice. 1430 01:05:52,600 --> 01:05:53,756 Good. 1431 01:05:53,756 --> 01:05:59,289 >> Madla: Kaya kapag magbakante namin ptr na ito huling hakbang, ay pagbabakante namin ang pointer 1432 01:05:59,289 --> 01:06:00,724 o kami ay pagbabakante ang block? 1433 01:06:00,724 --> 01:06:01,390 ANDI PENG: Oo. 1434 01:06:01,390 --> 01:06:05,570 Kaya kami ay pagbabakante ang pointer-- well, pagbabakante ang bloke ng memorya. 1435 01:06:05,570 --> 01:06:08,780 Kaya ang tanging paraan na maaari naming kahit na access ang memorya ay sa pamamagitan ng pagkakaroon ng pointer. 1436 01:06:08,780 --> 01:06:10,730 Kung hindi ka magkaroon ng mga pointer, ikaw ay tulad ng, oh, hindi ko alam kung saan ito, 1437 01:06:10,730 --> 01:06:11,290 right? 1438 01:06:11,290 --> 01:06:13,956 Kaya kung magbakante mo ito, hindi mo talaga pagbabakante na ang buong block. 1439 01:06:13,956 --> 01:06:16,500 Pagkatapos alam ng iyong computer, oh, may walang magagamit ang meron dito, 1440 01:06:16,500 --> 01:06:19,396 Maaari ko bang ilagay lamang ng basura mga halaga bumalik sa mga ito muli. 1441 01:06:19,396 --> 01:06:21,590 >> Madla: Kaya integer ang umiiral sa mga iyon? 1442 01:06:21,590 --> 01:06:23,481 >> ANDI PENG: Huwag umiiral integers? 1443 01:06:23,481 --> 01:06:23,980 Sorry. 1444 01:06:23,980 --> 01:06:25,271 Maaari mong rephrase iyong katanungan? 1445 01:06:25,271 --> 01:06:28,330 Madla: nilalayong ko, pagkatapos palayain mo ang pointer, ang integer na iyong nakuha, 1446 01:06:28,330 --> 01:06:29,990 Makikita pa rin ang umiiral na? 1447 01:06:29,990 --> 01:06:31,360 >> ANDI PENG: Hindi, ito ay hindi. 1448 01:06:31,360 --> 01:06:34,070 1449 01:06:34,070 --> 01:06:37,550 O hindi bababa sa makikita ito umiiral sa iyong memory bago ang iyong computer 1450 01:06:37,550 --> 01:06:40,231 anuman sa mga ito, ngunit mayroong walang paraan para sa iyo upang makakuha ng na. 1451 01:06:40,231 --> 01:06:41,480 Dahil ikaw napalaya ang pointer. 1452 01:06:41,480 --> 01:06:43,150 Hindi mo alam kung saan ito ay ngayon. 1453 01:06:43,150 --> 01:06:43,650 Oo. 1454 01:06:43,650 --> 01:06:46,500 1455 01:06:46,500 --> 01:06:48,560 >> Pupunta ako sa move on dito. 1456 01:06:48,560 --> 01:06:49,060 Phew. 1457 01:06:49,060 --> 01:06:53,012 Kaya hindi namin sa pamamagitan ng isang pulutong ng mga haka-haka paghihirap ng memory management 1458 01:06:53,012 --> 01:06:54,720 at lamang kami ay pagpunta sa mahalagang gastusin 1459 01:06:54,720 --> 01:06:57,090 5, 10 minuto ang pagpunta higit sa syntax ng mga bagay na 1460 01:06:57,090 --> 01:07:03,240 ay magiging kapaki-pakinabang at kapaki-pakinabang para sa iyo guys, ngunit wala masyadong conceptually out doon. 1461 01:07:03,240 --> 01:07:03,740 SIGE. 1462 01:07:03,740 --> 01:07:06,930 >> Kaya kami ay ganap na pagbabago gears dito. 1463 01:07:06,930 --> 01:07:09,360 Memory management, mahirap. Payo, mahirap. Oo. 1464 01:07:09,360 --> 01:07:10,530 Ito ay talagang, talagang mahirap. 1465 01:07:10,530 --> 01:07:11,270 Ganap fine. 1466 01:07:11,270 --> 01:07:13,800 Iyon ang dahilan kung bakit ang iyong mga piraso ay magiging talagang mahirap. 1467 01:07:13,800 --> 01:07:17,740 Ngunit kung ikaw ay pumunta at gawin ang mga bagay na hindi namin 1468 01:07:17,740 --> 01:07:19,860 dapat na gawin, gumawa bang bagay na ito ay null, 1469 01:07:19,860 --> 01:07:21,830 siguraduhin na suriin kung ang mga bagay ay null, siguraduhin na libreng memorya, 1470 01:07:21,830 --> 01:07:23,910 tiyakin bagay ay hindi pagtulo, makikita mo ang magandang. 1471 01:07:23,910 --> 01:07:25,761 Ikaw ay naka-set. 1472 01:07:25,761 --> 01:07:26,260 Lahat tama. 1473 01:07:26,260 --> 01:07:30,870 Kaya kami ay pagpunta upang ilipat ito ganap na bagong konsepto ng pag-redirect. 1474 01:07:30,870 --> 01:07:33,201 At kaya bago ngayon, ang pangunahing paraan na kami 1475 01:07:33,201 --> 01:07:35,700 ay nakikipag-ugnayan sa aming programa ay sa pamamagitan ng standard input 1476 01:07:35,700 --> 01:07:36,533 at standard output. 1477 01:07:36,533 --> 01:07:37,040 Right? 1478 01:07:37,040 --> 01:07:39,230 Kami bilang mga user input mga bagay-bagay at ang computer 1479 01:07:39,230 --> 01:07:42,090 spits ito pabalik sa amin sa terminal. 1480 01:07:42,090 --> 01:07:44,770 >> Ngunit may mga iba pang paraan para sa amin upang makipag-ugnayan 1481 01:07:44,770 --> 01:07:47,810 sa mga computer gamit ang aming mga programa na hindi sa akin lamang 1482 01:07:47,810 --> 01:07:50,245 pisikal na pag-type ng mga bagay-bagay sa ako kapag ako ay na-prompt. 1483 01:07:50,245 --> 01:07:52,620 At ang paraan namin na sa pamamagitan ng mga mas malaki kaysa carrot 1484 01:07:52,620 --> 01:07:53,453 at ang simbolong pipe. 1485 01:07:53,453 --> 01:07:55,970 1486 01:07:55,970 --> 01:07:58,630 Kaya maaari rin naming basahin at sumulat sa mga file gamit na. 1487 01:07:58,630 --> 01:08:03,230 >> Kaya ang paraan na ginagawa namin ito ay ang mas malaki kaysa carrot, lahat ng iyon ay ginagawa 1488 01:08:03,230 --> 01:08:07,410 ay ang pagsulat ano man ang iyong file ay sa isang hiwalay na file. 1489 01:08:07,410 --> 01:08:11,870 Kaya halimbawa, kung ako nais na tumakbo hello world 1490 01:08:11,870 --> 01:08:14,330 at nais ko ang output sa i-save sa isa pang file 1491 01:08:14,330 --> 01:08:17,359 at hindi lamang naka-print out sa akin, ako Maaari lamang gawin mas malaki kaysa carrot, 1492 01:08:17,359 --> 01:08:18,410 output.txt. 1493 01:08:18,410 --> 01:08:22,609 Kaya lahat na ginagawa ay ang pagkuha aking hello.world program, 1494 01:08:22,609 --> 01:08:26,359 at anuman ang output ay, ito ay pag-save sa isang file na tinatawag na output.txt. 1495 01:08:26,359 --> 01:08:29,850 Kaya ang paraan na ginawa ni David ang Csv na may mga pangalan ng mga mag-aaral, 1496 01:08:29,850 --> 01:08:32,310 ito ay ang parehong na maaaring gawin sa iyo guys. 1497 01:08:32,310 --> 01:08:35,137 >> At kung ano ang lalo kapaki-pakinabang dito ay ang mas higit na 1498 01:08:35,137 --> 01:08:38,220 than-- ang dalawang mas malaki kaysa carrot palatandaan na maaari mong idagdag sa isang output 1499 01:08:38,220 --> 01:08:40,795 file, na nangangahulugan na ikaw ay Maaari lamang idagdag sa itaas ng mga ito. 1500 01:08:40,795 --> 01:08:43,420 Maaari mo lamang panatilihin ang pagdaragdag sa output.txt ng bawat karagdagang bagay 1501 01:08:43,420 --> 01:08:44,490 na ginagawa mo. 1502 01:08:44,490 --> 01:08:48,010 O, kung nagsimula ka sa pagkuha sa mas maraming komplikadong mga programa, ang dalawang mas malaki 1503 01:08:48,010 --> 01:08:50,939 kaysa carrot, na lamang ng mga kopya ang mga mensahe ng error. 1504 01:08:50,939 --> 01:08:53,340 Kaya sabihin nating mayroon kang isang higanteng halaga ng mga mensahe ng error 1505 01:08:53,340 --> 01:08:54,810 at gusto mong basahin sa pamamagitan ng lahat ng mga ito at sa iyo 1506 01:08:54,810 --> 01:08:56,450 hindi mo nais na mag-scroll sa pamamagitan ng iyong terminal, 1507 01:08:56,450 --> 01:08:58,651 Maaari mong aktwal na gawin lamang mas malaki kaysa sa output.txt 1508 01:08:58,651 --> 01:09:00,359 at ito ay pagpunta upang i-save ang lahat ng iyong mga error 1509 01:09:00,359 --> 01:09:02,900 sa isang file na tinatawag na output.txt na maaari kang pumunta sa at basahin. 1510 01:09:02,900 --> 01:09:04,622 Madla: Saan naka-save na ang text file? 1511 01:09:04,622 --> 01:09:07,330 ANDI PENG: Ito ay nai-save sa parehong directory na ang iyong programa ay. 1512 01:09:07,330 --> 01:09:09,830 Kaya bumalik ka na lang at maghanap ng mga ito. 1513 01:09:09,830 --> 01:09:11,930 At ganoon rin namin maaaring gawin para sa pag-input ay 1514 01:09:11,930 --> 01:09:14,300 maaari naming talagang gawin ang mga nilalaman ng ilang mga file 1515 01:09:14,300 --> 01:09:16,380 at maaari naming input na sa aming programa. 1516 01:09:16,380 --> 01:09:19,930 Kaya sa halip na sa pagkakaroon na gawin ang utos line argumento ng kung saan ikaw ay pisikal na 1517 01:09:19,930 --> 01:09:21,680 kailangang mag-type ng mga bagay ng lahat ng oras, ikaw 1518 01:09:21,680 --> 01:09:27,890 maaaring aktwal na magkaroon lamang ng isang file na tinatawag na input.txt na inilalagay lamang ang lahat ng ito sa loob. 1519 01:09:27,890 --> 01:09:31,970 >> At pagkatapos pipe ay espesyal na cool dahil maaari itong tumagal ang output ng isang programa 1520 01:09:31,970 --> 01:09:34,170 at gamitin ito bilang ang input ng isa pang programa. 1521 01:09:34,170 --> 01:09:38,430 Kaya halimbawa, sa iyong guys 'Vigenere, doon ay ang linya ng code na kayo 1522 01:09:38,430 --> 01:09:42,010 guys ay tumatakbo na siguro marahil ay hindi talaga alam kung ano ito ay doing-- 1523 01:09:42,010 --> 01:09:46,910 ito ./generate 1000 pipe ./42. 1524 01:09:46,910 --> 01:09:47,510 Right? 1525 01:09:47,510 --> 01:09:51,100 >> Kaya lahat na ginagawa, kung kami lamang kumuha ng isang pagtingin sa ito hakbang-hakbang, 1526 01:09:51,100 --> 01:09:55,870 ang ./generate, na nangangahulugan na ako tumatakbo ang aking mga programa makabuo. 1527 01:09:55,870 --> 01:09:58,850 Iyon ay ang pagkuha sa 1,000 sa kanyang input. 1528 01:09:58,850 --> 01:10:03,330 Kaya gusto ko upang makabuo ng 1,000 random numero at ako pagpunta sa pipe na- 1529 01:10:03,330 --> 01:10:07,790 o ako pagpunta sa gamitin na- output bilang input para sa aking mga programa na tinatawag na find. 1530 01:10:07,790 --> 01:10:12,110 At ako pagpunta sa subukan upang mahanap ang 42 sa labas ng ang mga numero na nabuo mula sa mga 1,000 1531 01:10:12,110 --> 01:10:13,130 numero. 1532 01:10:13,130 --> 01:10:15,410 Ba na linya ng code gumagawa kahulugan sa lahat ng ibang tao? 1533 01:10:15,410 --> 01:10:17,820 >> Kaya sa ganitong paraan namin ay nagse-save ang ating mga sarili ng isang tonelada ng mga hakbang. 1534 01:10:17,820 --> 01:10:21,880 Wala kaming upang tumakbo bumuo, i-save ang file at pagkatapos ay ilagay ito sa find. 1535 01:10:21,880 --> 01:10:23,800 Maaari lang namin na gawin ang lahat ng ito sa isang linya. 1536 01:10:23,800 --> 01:10:28,080 Kaya kahit anong bumuo ay outputting, gumawa ng mapa na ito ng tama bumalik sa upang mahanap. 1537 01:10:28,080 --> 01:10:28,580 Oo? 1538 01:10:28,580 --> 01:10:32,484 >> Madla: At sa mga tuntunin ng utos argumento line, ay na- na 1539 01:10:32,484 --> 01:10:33,948 tatlong linya ng command argumento? 1540 01:10:33,948 --> 01:10:38,340 Ito ay bubuo, find-- no, four-- bumuo, 1000, hanapin at 42? 1541 01:10:38,340 --> 01:10:39,134 O kaya ay the-- 1542 01:10:39,134 --> 01:10:42,050 ANDI PENG: Kaya ang pipe ay hindi tunay mabibilang bilang isang argument command line 1543 01:10:42,050 --> 01:10:44,590 dahil ang tagatala o ang alam terminal na pipe, 1544 01:10:44,590 --> 01:10:48,590 oh, alam ko na ako dapat tumingin bago ang pipe dahil iyon ang aking output 1545 01:10:48,590 --> 01:10:51,220 at dapat kong alagaan ang pipe dahil iyon ang aking input. 1546 01:10:51,220 --> 01:10:54,520 Kaya ito alam na- ang ./generate at 1000, 1547 01:10:54,520 --> 01:10:57,390 mga dalawang utos pagkatapos arguments lamang para sa unang program. 1548 01:10:57,390 --> 01:11:01,760 At pagkatapos ay ang ./find 42 dalawang utos argumento line para sa ikalawang programa. 1549 01:11:01,760 --> 01:11:02,980 Oo. 1550 01:11:02,980 --> 01:11:06,150 Ang bawat mabuting sa mga ito? 1551 01:11:06,150 --> 01:11:10,610 >> Kaya lang tunay na mabilis, ano ang gagawin mga tatlong linya ng code? 1552 01:11:10,610 --> 01:11:11,606 Medyo simple. 1553 01:11:11,606 --> 01:11:13,605 Kahit sino gusto mong sabihin sa akin ano ang ginagawa ng unang linya? 1554 01:11:13,605 --> 01:11:18,201 1555 01:11:18,201 --> 01:11:19,117 Madla: [hindi marinig]. 1556 01:11:19,117 --> 01:11:23,540 1557 01:11:23,540 --> 01:11:26,534 >> ANDI PENG: Isipin ito bilang just-- ano ang ginagawa ng mas malaki kaysa carrot gawin? 1558 01:11:26,534 --> 01:11:29,299 >> Madla: Ito ay naglalagay ng isang bagay sa susunod na linya. 1559 01:11:29,299 --> 01:11:31,090 ANDI PENG: Kaya kung ano ang ang kabaligtaran ng mga iyon? 1560 01:11:31,090 --> 01:11:33,514 Madla: Ito ay inilalagay sa mga susunod na bagay sa unang bagay. 1561 01:11:33,514 --> 01:11:34,180 ANDI PENG: Oo. 1562 01:11:34,180 --> 01:11:37,550 Kaya lahat na ginagawa ay ikaw pagpapatakbo ng isang programa .hello-- 1563 01:11:37,550 --> 01:11:40,010 ikaw ay nagpapatakbo ng isang programa na may pangalang hello. 1564 01:11:40,010 --> 01:11:42,960 Ikaw ay pagpunta upang bigyan ito ng isang input na tinatawag input.txt. 1565 01:11:42,960 --> 01:11:43,460 Right? 1566 01:11:43,460 --> 01:11:46,250 Dahil sa tingin ng mga ito bilang lamang pisikal na pagpunta sa hello. 1567 01:11:46,250 --> 01:11:50,632 At pagkatapos ikaw ay pagpunta upang i-save ang output sa isang file na tinatawag na output.txt. 1568 01:11:50,632 --> 01:11:51,715 Paano ang tungkol sa ikalawang line? 1569 01:11:51,715 --> 01:11:54,164 Nais mo bang sabihin sa akin kung ano ikalawang linya ang ginagawa? 1570 01:11:54,164 --> 01:11:55,080 Madla: [hindi marinig]. 1571 01:11:55,080 --> 01:12:00,522 1572 01:12:00,522 --> 01:12:01,230 ANDI PENG: Sorry. 1573 01:12:01,230 --> 01:12:03,560 Sabihin na muli. 1574 01:12:03,560 --> 01:12:04,060 Elliot. 1575 01:12:04,060 --> 01:12:06,560 >> Madla: Kaya inilalagay ito ng isang listahan ng mga numero sa find. 1576 01:12:06,560 --> 01:12:07,540 >> ANDI PENG: Oo. 1577 01:12:07,540 --> 01:12:10,790 Kaya mahanap, tandaan, sa Upang patakbuhin mahanap mo 1578 01:12:10,790 --> 01:12:13,209 kailangan mong malaman kung saan kayo ay naghahanap. 1579 01:12:13,209 --> 01:12:15,500 At kaya ang lahat na ito ay ginagawa dito ay na ito ay nagbibigay sa iyo ng 1580 01:12:15,500 --> 01:12:18,720 isang pre itinalaga set ng numero, pagkatapos ay hanapin ang nangyayari 1581 01:12:18,720 --> 01:12:21,680 upang maghanap ng mga para sa bilang ng mga 42. 1582 01:12:21,680 --> 01:12:23,620 At pagkatapos ay 15. 1583 01:12:23,620 --> 01:12:25,870 Tandaan, ikaw ang bumangga guys ito kapag ikaw nasubok ang iyong code. 1584 01:12:25,870 --> 01:12:27,590 Ngayon mo maunawaan kung ano ito ay ginagawa? 1585 01:12:27,590 --> 01:12:31,069 1586 01:12:31,069 --> 01:12:33,520 >> Madla: Ito ay ang paglalagay sa ang hanay ng mga tagubilin 1587 01:12:33,520 --> 01:12:38,860 na [hindi marinig] sa pamamagitan ng isang tatlong sa pamamagitan ng tatlong upang makakuha the-- upang manalo ang laro. 1588 01:12:38,860 --> 01:12:39,560 >> ANDI PENG: Oo. 1589 01:12:39,560 --> 01:12:41,480 >> Madla: input Ito ang mga mga tagubilin sa programa. 1590 01:12:41,480 --> 01:12:42,438 >> ANDI PENG: Medyo marami. 1591 01:12:42,438 --> 01:12:47,840 Kaya ang tilde CS50. / Pset3 / 3x3, ang lahat na ay ginagawa ay na lumikha kami ng isang text 1592 01:12:47,840 --> 01:12:50,700 file na may lahat ng mga mga pamagat na handa para sa iyo guys. 1593 01:12:50,700 --> 01:12:56,020 At kaya para sa iyong mga laro upang i-play, just-- mo ilagay lang namin na sa inyong programa. 1594 01:12:56,020 --> 01:12:58,230 Kaya ay nilikha namin ito board at pagkatapos ay ipinapadala namin 1595 01:12:58,230 --> 01:13:02,890 paglagay na board sa inyong programa na tumakbo ito at lumikha ng isang tile ng tatlong 1596 01:13:02,890 --> 01:13:03,390 sa pamamagitan ng tatlong. 1597 01:13:03,390 --> 01:13:04,730 Iyan na ang lahat na ito ay ginagawa. 1598 01:13:04,730 --> 01:13:07,331 >> At kaya may tunay na magic nangyayari sa likod ng mga eksena 1599 01:13:07,331 --> 01:13:09,330 na iyong guys ay hindi program na aming program. 1600 01:13:09,330 --> 01:13:13,120 Ngunit ngayon ang iyong guys maintindihan kung bakit ginawa namin na kaya lahat ng mabuti. 1601 01:13:13,120 --> 01:13:15,750 Lahat tama. 1602 01:13:15,750 --> 01:13:22,200 >> Kaya habang redirection ay isang napaka kapaki-pakinabang, C ay may isang pangkalahatang mekanismo 1603 01:13:22,200 --> 01:13:25,030 para sa pagbabasa at pagsusulat file ng kanyang sarili. 1604 01:13:25,030 --> 01:13:26,780 Walang conceptually mahirap dito kaya hindi ako 1605 01:13:26,780 --> 01:13:28,330 lamang ang pagpunta sa pumunta sa pamamagitan ng tunay, tunay mabilis. 1606 01:13:28,330 --> 01:13:30,621 Lahat ng ito ay ilang pagsasaulo at siguraduhin mo guys 1607 01:13:30,621 --> 01:13:32,680 ay syntactically ito gamit nang tama. 1608 01:13:32,680 --> 01:13:35,640 Ang paraan na nais naming gawin iyon ay lumikha ng isang reference sa file, 1609 01:13:35,640 --> 01:13:38,473 Gusto naming buksan ang file, at pagkatapos namin ay gawin ang lahat ng pagbabasa at pagsusulat 1610 01:13:38,473 --> 01:13:39,929 at pagkatapos isara ang file. 1611 01:13:39,929 --> 01:13:41,720 Kapag bagay ka guys nais na panatilihin sa isip ay 1612 01:13:41,720 --> 01:13:47,360 na habang ginagawa ito, dahil ay pagsasara at pagbubukas ng mga file namin, 1613 01:13:47,360 --> 01:13:51,230 sa lahat ng mga utos ay kasama sa standard-- ang standard I / O 1614 01:13:51,230 --> 01:13:51,730 library. 1615 01:13:51,730 --> 01:13:54,410 Kaya't tiyakin na tuwing ikaw ay paggawa na ito na iyong included-- 1616 01:13:54,410 --> 01:13:59,020 # included-- standard I / O dot h. 1617 01:13:59,020 --> 01:14:01,691 >> Kaya real mabilis. 1618 01:14:01,691 --> 01:14:03,940 Hakbang isa, nais mong lumikha ng isang reference sa file na iyon. 1619 01:14:03,940 --> 01:14:07,670 At ngayon na kami tapos mga payo, ikaw ay maaaring sabihin sa akin guys kung ano na ang linya ng code 1620 01:14:07,670 --> 01:14:08,630 ay ginagawa. 1621 01:14:08,630 --> 01:14:10,250 Right? 1622 01:14:10,250 --> 01:14:15,397 Lahat na ito ay ginagawa ay ang paglikha ng isang pointer pinangalanang file ng uri ng file. 1623 01:14:15,397 --> 01:14:17,980 Dahil alam mo na ito ay pagpunta sa punto sa isang file at ikaw ay 1624 01:14:17,980 --> 01:14:20,460 pagpunta upang buksan ang file. 1625 01:14:20,460 --> 01:14:23,320 Pagkatapos ay ikaw ay f open-- lahat ito ay hindi ay buksan ang file. 1626 01:14:23,320 --> 01:14:24,560 >> Ito ang pangalan ng file. 1627 01:14:24,560 --> 01:14:26,060 At may tatlong bagay na maaari mong gawin. 1628 01:14:26,060 --> 01:14:28,195 Maaari kang magbasa, magsulat o ikakabit. 1629 01:14:28,195 --> 01:14:30,320 Karamihan sa pangkalahatan, ikaw guys ay pagbabasa o pagsusulat 1630 01:14:30,320 --> 01:14:33,195 dahil ikaw ay alinman magiging inputting ng isang file o outputting isa. 1631 01:14:33,195 --> 01:14:36,500 Kaya medyo marami r at w ay ang dalawang mga bagay na iyong pagpunta sa gumagamit pinaka. 1632 01:14:36,500 --> 01:14:41,722 >> Kaya sa kasong ito, ang lahat ng aking nagawa ay lumikha ng isang pointer sa isang file na tinatawag na file. 1633 01:14:41,722 --> 01:14:47,900 Ako pagbubukas nito at ako reading-- Ako pagbubukas na ito ng file na tinatawag file.txt 1634 01:14:47,900 --> 01:14:49,020 at ako sa pagbabasa nito. 1635 01:14:49,020 --> 01:14:51,730 Iyon lang ako ng paggawa sa puntong ito. 1636 01:14:51,730 --> 01:14:55,270 At pagkatapos ay ang mga ito ay ang mga function na lamang sa na kung saan maaari mong basahin ang iba't ibang mga bagay 1637 01:14:55,270 --> 01:14:57,750 o magsulat ng iba't ibang mga bagay o lumaktaw sa iba't ibang lugar 1638 01:14:57,750 --> 01:14:59,420 kung saan nais mong tingnan. 1639 01:14:59,420 --> 01:15:01,200 Lahat ng mga ito ay naka-online. 1640 01:15:01,200 --> 01:15:02,960 Lahat ng mga ito ay maaari mo lamang Google. 1641 01:15:02,960 --> 01:15:04,280 Hindi na kailangang kabisaduhin ang mga ito. 1642 01:15:04,280 --> 01:15:07,160 Ang mga ito ay lamang doon, disposable para sa iyong paggamit 1643 01:15:07,160 --> 01:15:09,360 kung nais mong maaaring gamitin ang mga ito. 1644 01:15:09,360 --> 01:15:13,210 >> Kaya kung nais kong basahin lamang sa isang character sa isang pagkakataon, 1645 01:15:13,210 --> 01:15:15,360 Gusto kong gawin file fgetc. 1646 01:15:15,360 --> 01:15:18,850 O kung gusto ko na basahin sa isang linya ng text sa isang panahon, ang gusto kong gawin fgets. 1647 01:15:18,850 --> 01:15:19,840 At iba pa. 1648 01:15:19,840 --> 01:15:23,640 Lahat ng mga ito lamang gawin ng iba't ibang Maaaring gamitin ng mga bagay-bagay sa iyo guys. 1649 01:15:23,640 --> 01:15:25,920 >> At pagkatapos ay sa wakas, pagkatapos ng Ako tapos na sa pagbabasa o pagsusulat, 1650 01:15:25,920 --> 01:15:27,770 Lamang ako ng pagpunta sa fclose file na iyon. 1651 01:15:27,770 --> 01:15:31,760 At tandaan, ito ay isa ng mga, tandaan, mangyaring 1652 01:15:31,760 --> 01:15:34,220 gawin ito o iba ang iyong file ay hindi pumapasok sa trabaho. 1653 01:15:34,220 --> 01:15:36,130 Laging buksan ang isang file bago pagbabasa o pagbabasa, 1654 01:15:36,130 --> 01:15:38,310 kailangan mong palaging isara ito kung bubuksan mo ito. 1655 01:15:38,310 --> 01:15:40,210 Parehong bagay sa memory, tama? 1656 01:15:40,210 --> 01:15:42,390 Ikaw ay may na laging dalhin memory at libre ito. 1657 01:15:42,390 --> 01:15:45,200 Narito mayroon kang laging buksan ang isang maghain bago subukan na basahin ito 1658 01:15:45,200 --> 01:15:47,360 at lagi mo kung isara ito matapos buksan mo ito. 1659 01:15:47,360 --> 01:15:50,650 1660 01:15:50,650 --> 01:15:52,190 >> Kaya ito ay online din. 1661 01:15:52,190 --> 01:15:55,590 Pupunta ako sa hamunin mo guys sa uri ng magsulat ng isang programa na kopya 1662 01:15:55,590 --> 01:15:57,080 hello.world sa isang file. 1663 01:15:57,080 --> 01:15:58,280 Ito ay talagang simple. 1664 01:15:58,280 --> 01:16:00,854 Ito mahalagang lamang nagsasangkot ang ilang linya ng code 1665 01:16:00,854 --> 01:16:02,270 na na lang nakasulat na dati. 1666 01:16:02,270 --> 01:16:04,311 Ikaw ay pagpunta sa ilagay ang mga ito sama-sama at magsulat na. 1667 01:16:04,311 --> 01:16:06,630 1668 01:16:06,630 --> 01:16:10,950 >> Kaya ang ilang mahalagang mga bagay upang tandaan habang ikaw guys na sinusubukan mong gamitin ito. 1669 01:16:10,950 --> 01:16:14,410 Kung ito ang lahat ng lubhang kapaki-pakinabang para sa iyong pset sa linggong ito, 1670 01:16:14,410 --> 01:16:18,000 ay na fopen lumilikha ng isang file pointer. 1671 01:16:18,000 --> 01:16:19,500 Ito ay hindi tunay na ang mga pisikal na file. 1672 01:16:19,500 --> 01:16:22,260 Lahat ng ito ay tumuturo sa mga file na nais mong buksan. 1673 01:16:22,260 --> 01:16:26,070 At ikaw ay totoo, kahit kailan gumagamit ka ng alinman sa iba pang mga pag-andar 1674 01:16:26,070 --> 01:16:30,130 tulad fread o fwrite o fgetc o fgets, ay 1675 01:16:30,130 --> 01:16:33,380 na lamang ka sa pagpasa sa paligid na ito pointer sa lahat ng mga pag-andar. 1676 01:16:33,380 --> 01:16:36,510 Kaya ikaw ay hindi aktwal na pagkuha na maghain at gamitin ito para sa iyong mga pag-andar, 1677 01:16:36,510 --> 01:16:39,540 ikaw ay dinadala lamang ang pointer at inilagay ito sa mga pag-andar 1678 01:16:39,540 --> 01:16:41,620 sa gayon ay maaari mong gamitin. 1679 01:16:41,620 --> 01:16:45,360 >> At kung nakalimutan mo upang isara ang iyong file pagkatapos mong gamitin ito, 1680 01:16:45,360 --> 01:16:47,710 ang iyong programa ay pagpunta sa mahayag memory. 1681 01:16:47,710 --> 01:16:50,700 Mahalaga, ang lahat ng mga paraan na ay na masamang bagay ang mangyayari 1682 01:16:50,700 --> 01:16:52,960 at ang iyong mga programa ay hindi gumana nang maayos. 1683 01:16:52,960 --> 01:16:54,880 At iba pa ang pset in sa simula, sa palagay ko 1684 01:16:54,880 --> 01:16:59,180 may isang maikling kung saan siya explained-- Nate explained-- ano Valgrind ay. 1685 01:16:59,180 --> 01:17:02,350 Lahat ng Valgrind ay isang paraan para sa iyo upang tiyakin na hindi ka na pagtulo ng memory. 1686 01:17:02,350 --> 01:17:04,433 Kaya nais mong guys na gumawa bang pinapanood mo na ang maikling 1687 01:17:04,433 --> 01:17:08,771 dahil na nagpapaliwanag ito talagang mabuti kung ano ang mangyayari. 1688 01:17:08,771 --> 01:17:09,270 SIGE. 1689 01:17:09,270 --> 01:17:11,260 Kaya nagpunta ako sa pamamagitan ng na tunay, talagang mabilis dahil ako talaga 1690 01:17:11,260 --> 01:17:13,870 nais upang makakuha ng pakikipag-usap tungkol ang pset bago kayo umalis guys. 1691 01:17:13,870 --> 01:17:16,690 Kahit sino ay may mga katanungan conceptually? 1692 01:17:16,690 --> 01:17:20,060 Mas madalas na ang lahat ng ito ay para lamang syntax na maaari mong gamitin upang magbasa o magsulat ng mga file. 1693 01:17:20,060 --> 01:17:25,090 1694 01:17:25,090 --> 01:17:28,140 >> Sa wakas, paborito ng lahat. 1695 01:17:28,140 --> 01:17:31,760 Kami ay pagpunta sa makipag-usap tungkol sa pset ngayon. 1696 01:17:31,760 --> 01:17:35,990 Kaya, ipakita ng mga kamay, kung ilan sa ikaw guys basahin ang spec sa linggong ito? 1697 01:17:35,990 --> 01:17:36,660 Oh, na ang kalahati. 1698 01:17:36,660 --> 01:17:38,000 Mabuti yan. 1699 01:17:38,000 --> 01:17:41,430 Kaya ito ay talagang isang tunay, talagang masaya pset sa kamalayan 1700 01:17:41,430 --> 01:17:43,889 na sa tingin mo tulad ng isang detective dahil ikaw ay 1701 01:17:43,889 --> 01:17:46,930 paggawa ng lahat ng mga talagang cool na mga bagay-bagay na hindi ninyo alam na maaari mong gawin 1702 01:17:46,930 --> 01:17:49,050 ngunit ngayon ito ay talagang cool na maaari mong gawin ang mga ito. 1703 01:17:49,050 --> 01:17:52,400 At ito ay tunay na isang pulutong mas simple kaysa sa iyo guys tingin. 1704 01:17:52,400 --> 01:17:56,640 >> Kaya ang pangunahing halves ng ang program na ito ay handa ka 1705 01:17:56,640 --> 01:18:00,330 pagpunta upang i-download ang source code o code distribution nakasulat sa pamamagitan ng sa amin. 1706 01:18:00,330 --> 01:18:03,540 At ikaw ay pagpunta sa may isang folder tinatawag BMP at ng iba pang folder 1707 01:18:03,540 --> 01:18:05,550 tinatawag JPG. 1708 01:18:05,550 --> 01:18:08,370 Sa loob ng iyong BMP, ikaw ay pagpunta sa may tatlong mga programa. 1709 01:18:08,370 --> 01:18:10,400 Isa sa mga ito ay isinulat para sa iyo. 1710 01:18:10,400 --> 01:18:12,477 Kaya copy.c ay isang programa namin na nakasulat na 1711 01:18:12,477 --> 01:18:14,060 para sa inyo na kayo ay pagpunta upang i-download. 1712 01:18:14,060 --> 01:18:19,440 Ang lahat ng iyon ay ay tumagal ng input ng isang larawan at gumagawa ng isang kopya ng mga ito bilang output. 1713 01:18:19,440 --> 01:18:22,150 Iyon lang ang file na ito ay ginagawa. 1714 01:18:22,150 --> 01:18:25,260 >> Ngunit kung ano ang gusto mong gawin para sa whodunit-- kaya kung paano marami sa inyo 1715 01:18:25,260 --> 01:18:30,450 guys tandaan sa ika-limang grado o maybe-- ka younger-- siguro ikatlong grado, 1716 01:18:30,450 --> 01:18:33,945 kapag ikaw guys ay nagkaroon ng lihim na mensahe at mga nagkaroon ka na maglagay ng isang piraso ng papel sa ibabaw nito 1717 01:18:33,945 --> 01:18:35,440 upang mabasa ang mga mensahe? 1718 01:18:35,440 --> 01:18:36,000 Oo? 1719 01:18:36,000 --> 01:18:39,580 Kaya na ang lahat ng aming ginagawa maliban sa oras na ito para sa isang computer. 1720 01:18:39,580 --> 01:18:41,832 Kaya binigyan ka namin ang kaibig-ibig na imahe. 1721 01:18:41,832 --> 01:18:43,540 Mukhang hindi anumang bagay ngunit sa ilalim 1722 01:18:43,540 --> 01:18:49,660 ito ay isang palatandaan na ang pagpunta upang makatulong sa iyo sa pagsagot sa tanong na hinihiling namin sa iyo. 1723 01:18:49,660 --> 01:18:54,170 >> Mahalaga kung ano ang gusto mong gawin ay input na file, 1724 01:18:54,170 --> 01:18:56,610 mag-tweak ang ilang mga bagay sa paligid, siguro ayusin ang mga kulay, 1725 01:18:56,610 --> 01:19:00,730 maglipat ng mga bagay-bagay, kaya na kahit na ano ang mensahe ay maaaring dumating sa pamamagitan ng. 1726 01:19:00,730 --> 01:19:03,740 Kaya sa loob may mga nakatagong pixels at impormasyon 1727 01:19:03,740 --> 01:19:07,140 na kung sumulat ka nang tama ang iyong code ay pagpunta upang mabasa at sabihin sa iyo 1728 01:19:07,140 --> 01:19:08,500 kung ano ang palatandaan ay. 1729 01:19:08,500 --> 01:19:12,480 At kaya ang ilang mga kapaki-pakinabang na mga pahiwatig sa kung paano Gusto mong pumunta tungkol sa papalapit na ito. 1730 01:19:12,480 --> 01:19:15,180 >> Gusto mo talagang maging pamilyar ang iyong sarili sa file ko / O 1731 01:19:15,180 --> 01:19:18,760 dahil kami ay pagbabasa mula sa file at pagsusulat sa mga file. 1732 01:19:18,760 --> 01:19:19,260 Right? 1733 01:19:19,260 --> 01:19:21,430 At kaya sa tuwing ginagawa namin na iyon, na nagsasangkot 1734 01:19:21,430 --> 01:19:25,170 maghain I / O. Ikaw ay kung pamilyar ka 1735 01:19:25,170 --> 01:19:27,450 sa, paano mo buksan up ng mga larawan ng mga file? 1736 01:19:27,450 --> 01:19:29,960 Paano mo magsulat sa mga file ng mga litrato? 1737 01:19:29,960 --> 01:19:31,640 Paano mo gawin ang lahat ng mga bagay? 1738 01:19:31,640 --> 01:19:33,660 Iyon ay magiging talagang kapaki-pakinabang. 1739 01:19:33,660 --> 01:19:36,190 >> Pangalawa, kung paano ka pagpunta sa magagawang baguhin 1740 01:19:36,190 --> 01:19:38,140 ang mga kulay na i-clear up ang larawang ito? 1741 01:19:38,140 --> 01:19:43,660 Marahil ito ay pagpunta sa magdawit pagsasaayos ng iyong mga pixels o ang iyong mga halaga ng RGB 1742 01:19:43,660 --> 01:19:45,390 saanman sa may, mahalagang. 1743 01:19:45,390 --> 01:19:47,800 Walang karapatan na paraan ng paglutas ng mga ito hangga't kayo 1744 01:19:47,800 --> 01:19:52,560 can-- hangga't maaari mong uri ng ayusin ang mga pixels sa gumawa ito 1745 01:19:52,560 --> 01:19:54,640 hitsura ng isang bagay na mahalaga sa iyo. 1746 01:19:54,640 --> 01:19:56,207 Iyon lang ang pinapahalagahan namin tungkol sa pati na rin. 1747 01:19:56,207 --> 01:19:57,540 Kaya mayroong maraming mga paraan upang gawin ito. 1748 01:19:57,540 --> 01:20:00,039 I-play ang tingin lamang sa mga ito hanggang makakakuha ka ng isang bagay na gumagana. 1749 01:20:00,039 --> 01:20:02,900 At gusto mong maging talagang mamangha kung ilang linya ng code 1750 01:20:02,900 --> 01:20:04,510 kailangan mo na talagang gawin ito. 1751 01:20:04,510 --> 01:20:08,700 Pakikipag-usap ako tulad ng tatlong mga linya ng pagiging code 1752 01:20:08,700 --> 01:20:11,310 na kailangan mong isulat upang gawin ito. 1753 01:20:11,310 --> 01:20:15,470 Kaya kung nakita mo ang iyong sarili pagsulat ng 40, 30 linya ng code, 1754 01:20:15,470 --> 01:20:16,960 marahil ang iyong ginagawa ito mali. 1755 01:20:16,960 --> 01:20:19,390 Ang kailangan mo lang gawin ay ang uri ng mga play sa paligid na may kulay 1756 01:20:19,390 --> 01:20:22,960 at makita kung paano na gumagana out. 1757 01:20:22,960 --> 01:20:27,040 >> Kaya pagkatapos namin ang ulo sa isang bit na mahirap ng isang problema. 1758 01:20:27,040 --> 01:20:30,190 Narito kami ay baguhin ang laki na kung saan kami ay humihiling sa iyo 1759 01:20:30,190 --> 01:20:34,210 to-- kami ay nagbibigay sa iyo bilang input isang larawan at ang iyong mga pagbabago ng laki 1760 01:20:34,210 --> 01:20:36,710 ang larawan na ito sa isang bagay mas malaki o mas maliit na bagay 1761 01:20:36,710 --> 01:20:38,500 depende sa sukat bigyan ka namin. 1762 01:20:38,500 --> 01:20:41,260 Kaya tandaan sa panayam na si David mabilis 1763 01:20:41,260 --> 01:20:45,780 glanced higit kung paano impormasyon ay nakita ng iyong mga computer 1764 01:20:45,780 --> 01:20:47,590 na nangangahulugan na ito ay isang uri ng file. 1765 01:20:47,590 --> 01:20:50,530 Kaya ang isang Word file ay may mga espesyal na character sa harap ng na 1766 01:20:50,530 --> 01:20:52,040 sabihin sa iyong computer na ito ay isang Word file. 1767 01:20:52,040 --> 01:20:53,090 Parehong bagay sa isang JPEG. 1768 01:20:53,090 --> 01:20:55,131 Sa kasong ito kami ay pagpunta upang mabigyan ka ng isang JPEG file. 1769 01:20:55,131 --> 01:20:58,300 Lahat alam namin ay na JPEG file ay isang larawan, i-right? 1770 01:20:58,300 --> 01:21:01,430 Ngunit ang Tinutukoy ng computer ito sa napaka-tukoy na paraan. 1771 01:21:01,430 --> 01:21:04,070 Kaya sa simula ng anumang JPEG file, ikaw ay 1772 01:21:04,070 --> 01:21:08,210 pagpunta sa may kung ano ang tinatawag na ang bitmap header info at ang header bitmap file. 1773 01:21:08,210 --> 01:21:11,080 Lahat ng mga ito ay mga iba't ibang piraso ng data 1774 01:21:11,080 --> 01:21:14,870 na sabihin sa iyong computer, hey, makinig up, isang JPEG pagdating up 1775 01:21:14,870 --> 01:21:17,820 at ito ang mga sukat o mga katangian ng JPEG na. 1776 01:21:17,820 --> 01:21:21,280 >> Kaya mo guys talagang gusto mong malaman kung ano ang impormasyon ay naka-imbak sa loob 1777 01:21:21,280 --> 01:21:23,560 ng mga header at ano ang laki ng mga ito. 1778 01:21:23,560 --> 01:21:25,640 Dahil kapag ikaw ay nagpapatakbo ng sa pamamagitan ng iyong programa, 1779 01:21:25,640 --> 01:21:27,370 ikaw ay pagpunta sa nais na laktawan sa paglipas ng halagang iyon. 1780 01:21:27,370 --> 01:21:27,940 Right? 1781 01:21:27,940 --> 01:21:29,910 Dahil hindi mo pag-aalaga tungkol sa pagbabago ng mga header, 1782 01:21:29,910 --> 01:21:31,493 pinapahalagahan mo ang pagbabago kung ano ang pagkatapos. 1783 01:21:31,493 --> 01:21:32,450 Right? 1784 01:21:32,450 --> 01:21:36,040 Kaya gumawa alam sigurado ka guys kung paano malaki ang mga bagay ay. 1785 01:21:36,040 --> 01:21:39,065 >> Pangalawa, bago ka magsimula sinusubukan na baguhin ang laki ng iyong mga imahe, 1786 01:21:39,065 --> 01:21:41,940 marahil ikaw ay pagpunta sa nais na i-save ang mga sukat ng orihinal. 1787 01:21:41,940 --> 01:21:42,520 Right? 1788 01:21:42,520 --> 01:21:45,550 Dahil kung sinasabi ko sa inyo ang larawang ito ay 100 pixels by 100 pixels, 1789 01:21:45,550 --> 01:21:47,630 at gusto ko sa iyo na gumawa ng ito ng apat na beses na mas malaki, 1790 01:21:47,630 --> 01:21:50,460 alam mo na mayroon ka na multiply ang mga sukat sa pamamagitan ng apat. 1791 01:21:50,460 --> 01:21:54,960 Kaya nga ang nais mo ng isang output file 400 by 400 pixels, halimbawa. 1792 01:21:54,960 --> 01:21:58,300 Kaya ito ay talagang kapaki-pakinabang para sa iyo guys sa i-save ang mga sukat ng orihinal. 1793 01:21:58,300 --> 01:22:00,780 At pagkatapos ay pagkatapos, matapos tapos ka na sa pagbabago ng laki, 1794 01:22:00,780 --> 01:22:06,270 maari kang magsulat ng bagong header sa mga bagong sukat matapos pagpapalit ng sukat. 1795 01:22:06,270 --> 01:22:10,750 >> At ang paraan na ikaw ay pisikal na ay maaaring lumikha ng sa mga malalaking pixels 1796 01:22:10,750 --> 01:22:13,380 ay na maaari mong isulat bagong RGB-- tandaan, RGB, 1797 01:22:13,380 --> 01:22:17,784 lahat na nakatayo para sa ay pula, berde, at blue-- pixels sa isang out file. 1798 01:22:17,784 --> 01:22:20,200 At ikaw ay pagpunta sa nais na may iba't-ibang halaga ng kung ano ang 1799 01:22:20,200 --> 01:22:21,200 ang tawag namin sa padding. 1800 01:22:21,200 --> 01:22:24,780 Lahat ng padding ay mga puwang bago at pagkatapos ng mga larawan 1801 01:22:24,780 --> 01:22:29,265 na sabihin your-- mahalagang na sabihin sa iyong mga larawan kung paano malaki ito 1802 01:22:29,265 --> 01:22:30,589 dapat ay ang pagkuha up. 1803 01:22:30,589 --> 01:22:33,630 Ito ay lubhang mahirap unawain para sa isang pulutong ng mga sa iyo kung hindi mo pa basahin ang pset spec, 1804 01:22:33,630 --> 01:22:35,410 ngunit ito ay magiging lubhang kapaki-pakinabang para sa kapag 1805 01:22:35,410 --> 01:22:36,460 tunay na ikaw ay pagbabasa sa pamamagitan ng mga ito. 1806 01:22:36,460 --> 01:22:38,126 Ikaw ay tulad ng, oh, oo, na makatuwiran. 1807 01:22:38,126 --> 01:22:39,310 Bakit ko kailangang gawin ito? 1808 01:22:39,310 --> 01:22:41,830 Saysay. 1809 01:22:41,830 --> 01:22:46,900 >> Sa wakas, ito ay marahil ang isa sa mga ang pinaka-nakakabigo programa 1810 01:22:46,900 --> 01:22:51,160 kailanman dahil lamang hindi mo maaaring sabihin sa kung ito ay gumagana o hindi. 1811 01:22:51,160 --> 01:22:54,980 Lahat ng programa na ito, mabawi, ay ginagawa na, kung maayos tumakbo, 1812 01:22:54,980 --> 01:22:59,290 ito ay dapat na ma-bigla mabawi ang 50 mga imahe na 1813 01:22:59,290 --> 01:23:01,025 ay nawala sa aming mga hard drive. 1814 01:23:01,025 --> 01:23:03,900 At upang ang mga problema sa programang ito ay na hindi mo talaga maaaring subukan ito 1815 01:23:03,900 --> 01:23:06,220 dahil alinman sa iyo mababawi ang mga ito o ikaw ay hindi. 1816 01:23:06,220 --> 01:23:09,122 At kaya mo uri ng lamang upang i-play sa paligid sa mga ito, 1817 01:23:09,122 --> 01:23:11,080 at kung ang iyong programa ay gumagana nang maayos, makikita mo ang 1818 01:23:11,080 --> 01:23:12,829 biglang makita na sa inyong direktoryo na sa iyo 1819 01:23:12,829 --> 01:23:17,400 Nakakuha ng higanteng halaga ng mga larawan na ngayon doon. 1820 01:23:17,400 --> 01:23:20,490 >> Kaya kung paano ko lapitan ang problemang ito ay, hindi namin 1821 01:23:20,490 --> 01:23:22,860 pagpunta sa iyo kung ano ang tinatawag na isang card.raw file. 1822 01:23:22,860 --> 01:23:25,020 Totoo, na ang lamang ng isang sirang file 1823 01:23:25,020 --> 01:23:28,870 kasama ang lahat ng mga larawan na naka-imbak na ikaw ay pagpunta sa kailangan upang makuha mula sa. 1824 01:23:28,870 --> 01:23:32,330 Kaya marahil ikaw ay pagpunta sa nais na ipasok ang inyong card.raw, o bukas, 1825 01:23:32,330 --> 01:23:35,510 iyong card.raw file at ikaw ay pagpunta sa nais na mamanipula 1826 01:23:35,510 --> 01:23:37,840 ito upang makapag-imbak ng mga JPEG. 1827 01:23:37,840 --> 01:23:42,830 >> Kaya nais kong magsimula sa pamamagitan ng pagsubaybay at pag-iimbak bawat indibidwal na JPEG mahanap mo ito. 1828 01:23:42,830 --> 01:23:47,180 Hindi ka pagpunta upang isa-isa ang lahat ng ng isang biglaang lumikha lamang ng lahat ng 50 mga JPEG. 1829 01:23:47,180 --> 01:23:50,190 Ikaw ay pagpunta sa nais na panatilihin subaybayan kung gaano karaming ikaw ay pagbubukas. 1830 01:23:50,190 --> 01:23:52,015 At pagkatapos ay gusto mong siguraduhin, kapag handa ka 1831 01:23:52,015 --> 01:23:54,640 pagsulat sa isang buffer-- ka guys malalaman kung ano ang sinasabi ko 1832 01:23:54,640 --> 01:23:57,806 sa sandaling mong basahin ang spec-- gusto mong tiyakin na ikaw ay gumagamit ng isang wala pang kontratang 1833 01:23:57,806 --> 01:23:59,370 char buffer. 1834 01:23:59,370 --> 01:24:01,790 >> At pagkatapos ay nais mong itanong inyong sarili ang mga tanong ng, 1835 01:24:01,790 --> 01:24:05,797 kung ilang bytes ay sa isang CF-- ay sa isang file card? 1836 01:24:05,797 --> 01:24:08,380 Iyan ay kung gaano karaming ikaw ay pagpunta sa nais na basahin sa iyong buffer. 1837 01:24:08,380 --> 01:24:11,130 Ikaw ay pagpunta sa nais na tiyakin ang dalawang align dahil pagkatapos mo 1838 01:24:11,130 --> 01:24:12,850 ay hindi magkakaroon ng random memory pagtulo out. 1839 01:24:12,850 --> 01:24:15,370 Alam mo nang eksakto kung gaano karaming bytes na kailangan mo at kung gaano karaming 1840 01:24:15,370 --> 01:24:18,270 bytes na gusto mo sa kanila na may. 1841 01:24:18,270 --> 01:24:21,510 >> At pagkatapos ay sa wakas, na nais mong gumamit ng isang function na tinatawag na sprint-- 1842 01:24:21,510 --> 01:24:26,160 print s f-- upang bumuo ng mga pasadyang file mga pangalan para sa bawat bagong JPEG na mahanap ka. 1843 01:24:26,160 --> 01:24:29,129 Kaya bilang lumikha ka at maghanap ng mga JPEG sa iyong card, 1844 01:24:29,129 --> 01:24:31,170 ikaw ay pagpunta sa nais na tindahan ng mga ito at pangalan ng mga ito. 1845 01:24:31,170 --> 01:24:31,700 Right? 1846 01:24:31,700 --> 01:24:33,700 At kaya ka ng pagpunta sa nais na gamitin ang function na 1847 01:24:33,700 --> 01:24:36,770 upang lumikha ng mga pangalan na Maaaring mag-imbak ang lahat ng iyong mga JPEG. 1848 01:24:36,770 --> 01:24:41,062 >> At sa wakas, huwag kalimutan upang isara bawat JPEG matapos tapos ka na. 1849 01:24:41,062 --> 01:24:42,770 Dahil kung ano ang iyong pagpunta sa gawin ay ikaw 1850 01:24:42,770 --> 01:24:44,728 pagpunta sa marahil ay may ilang uri ng isang loop na 1851 01:24:44,728 --> 01:24:46,470 iterates sa pamamagitan ng lahat ng iyong mga JPEG. 1852 01:24:46,470 --> 01:24:50,460 Ikaw ay pagpunta sa magsulat ng isang JPEG at palitan ang pangalan nito bilang mahanap mo ito. 1853 01:24:50,460 --> 01:24:52,870 Ngunit pagkatapos tapos ka na sa bawat solong JPEG, 1854 01:24:52,870 --> 01:24:56,630 kailangan mong isara ang mga ito upang maaari mong simulan ang paulit-lumipat sa sa susunod na larawan. 1855 01:24:56,630 --> 01:24:58,880 At kaya ng isang bagay na tunay na masaya na gusto naming gawin, 1856 01:24:58,880 --> 01:25:03,430 dahil ito ay naka-set tulad ng isang kakaibang problema kundi pati na rin ang isang weirdly nagbibigay-kasiyahan problema 1857 01:25:03,430 --> 01:25:08,380 set, ay na ang lahat ng mga larawan namin magkaroon ng para sa iyo, kung makuha mo ng maayos, 1858 01:25:08,380 --> 01:25:11,910 lahat ng mga larawan ang mga larawan ng iyong kahanga-hangang mga kawani ng pagtuturo, parehong 1859 01:25:11,910 --> 01:25:14,240 ng Harvard, sa here-- at dito sa Yale. 1860 01:25:14,240 --> 01:25:17,260 At kung ikaw mangyari upang mabawi ang lahat ng mga larawan 1861 01:25:17,260 --> 01:25:20,020 at kilalanin ang mga tauhan mga kasapi sa mga cards, 1862 01:25:20,020 --> 01:25:23,040 at kumuha ng selfies sa amin kung hanapin ka sa amin sa paligid ng campus, 1863 01:25:23,040 --> 01:25:28,270 para sa bawat larawan na isinumite mo sa amin, bibigyan namin ng magbibigay sa iyo ng isang gigabyte ng Dropbox space. 1864 01:25:28,270 --> 01:25:30,060 >> Kaya sabihin gawin ang matematika dito. 1865 01:25:30,060 --> 01:25:33,010 Kung may 50 mga larawan at 50 miyembro kawani ng pagtuturo, 1866 01:25:33,010 --> 01:25:37,160 kung mangyari sa iyo upang mahanap ang lahat ng 50 ng amin, na ang 50 gigabytes ng Dropbox, 1867 01:25:37,160 --> 01:25:39,000 talaga, makikita ang pagbibigay namin sa inyo guys. 1868 01:25:39,000 --> 01:25:42,380 Kaya ang ilang dagdag na idinagdag insentibo kung ka guys ay hindi lamang 1869 01:25:42,380 --> 01:25:44,480 pag-aalaga tungkol sa pagbawi nawala imahe. 1870 01:25:44,480 --> 01:25:46,867 May ilang mga idinagdag insentibo din. 1871 01:25:46,867 --> 01:25:47,825 Ito ay isang masaya set problema. 1872 01:25:47,825 --> 01:25:48,390 Ito ay tunay na. 1873 01:25:48,390 --> 01:25:51,980 Ito ay uri ng nakakabigo ngunit pagkatapos na ito nagiging tunay na masaya kapag nauunawaan mo, 1874 01:25:51,980 --> 01:25:54,230 Wow, ito ay gumagana at ngayon ako mayroon ng lahat ng mga larawan 1875 01:25:54,230 --> 01:25:55,604 na lang ko na nilikha sa pamamagitan ng aking sarili. 1876 01:25:55,604 --> 01:25:58,800 1877 01:25:58,800 --> 01:26:00,075 >> Anumang mga katanungan sa pset? 1878 01:26:00,075 --> 01:26:02,408 Para sa kahit sino na ang nagsimula, kung mayroon kang mga katanungan, 1879 01:26:02,408 --> 01:26:06,510 Kukunin ko dito para sa isang ilang minuto pagkatapos section kung gusto mong makipag-usap sa akin. 1880 01:26:06,510 --> 01:26:07,320 Magaling, guys. 1881 01:26:07,320 --> 01:26:10,520 Sorry, impormasyon ko dumped sa iyo guys. 1882 01:26:10,520 --> 01:26:13,670 Payo ay tunay, tunay mahirap at nakakadismaya. 1883 01:26:13,670 --> 01:26:16,187 >> At ako ay talagang natutuwa na ka guys nanatili sa akin. 1884 01:26:16,187 --> 01:26:18,020 Susubukan naming makipag-usap sa mga mas malalalim tungkol sa mga susunod na linggo 1885 01:26:18,020 --> 01:26:21,330 bilang namin simulan ang paggawa ng hash talahanayan at higit pang mga function na kasangkot ang mga ito. 1886 01:26:21,330 --> 01:26:23,821 1887 01:26:23,821 --> 01:26:24,320 Oo. 1888 01:26:24,320 --> 01:26:26,278 Kaya kung ang sinuman ay may anumang mga katanungan, kukunin ko na maging sa paligid. 1889 01:26:26,278 --> 01:26:29,330 Salamat para sa darating at kumuha ng higit pa kendi dahil mayroon pa kendi. 1890 01:26:29,330 --> 01:26:32,220 1891 01:26:32,220 --> 01:26:33,770 Cool. 1892 01:26:33,770 --> 01:26:35,765