1 00:00:00,000 --> 00:00:02,670 >> [TEMA musika] 2 00:00:02,670 --> 00:00:11,834 3 00:00:11,834 --> 00:00:13,365 >> Tagapagsalita 1: Hi, lahat. 4 00:00:13,365 --> 00:00:14,365 Maligayang pagbabalik sa seksyon. 5 00:00:14,365 --> 00:00:15,700 6 00:00:15,700 --> 00:00:18,700 Kaibig-ibig araw out-- siyang dahilan kung bakit, ako sigurado, may mga apat na lamang ng sa iyo dito 7 00:00:18,700 --> 00:00:21,180 at hindi aming karaniwang pack. 8 00:00:21,180 --> 00:00:22,670 Ako ay may sakit na ito pagtatapos ng linggo. 9 00:00:22,670 --> 00:00:24,294 Kaya ako ay walang Starburst para sa iyo guys. 10 00:00:24,294 --> 00:00:26,400 At maaari ba akong magsimula ubo katakut-takot sa buong ito. 11 00:00:26,400 --> 00:00:27,790 Kaya makisama lamang sa akin. 12 00:00:27,790 --> 00:00:30,624 Pupunta ako sa talagang subukan at makakuha ng unang sa pamamagitan ng ito, 13 00:00:30,624 --> 00:00:32,290 bagaman, bago Mayroon akong ubo pag-atake. 14 00:00:32,290 --> 00:00:33,410 15 00:00:33,410 --> 00:00:37,390 Ngunit maging madali sa akin ang lang maliit na bit-- na ang lahat ng hinihiling ko. 16 00:00:37,390 --> 00:00:39,370 17 00:00:39,370 --> 00:00:44,289 >> Kaya aming mga agenda para sa today-- lamang reminder-- ang iyong pagsusulit ay sa susunod na linggo. 18 00:00:44,289 --> 00:00:46,830 Sinabi ko mo ito noong nakaraang linggo kaya hindi mahuli-off mo ang bantay. 19 00:00:46,830 --> 00:00:47,954 Kaya ako na nagpapaalala muli sa iyo. 20 00:00:47,954 --> 00:00:49,180 Sa susunod na linggo ng iyong pagsusulit. 21 00:00:49,180 --> 00:00:52,730 Sa bahaging iyon, sa susunod na linggo ni seksyon ay magiging mas 22 00:00:52,730 --> 00:00:55,180 of-- magpapadala ako subukan at trabaho sa ilang pagsusuri. 23 00:00:55,180 --> 00:00:58,130 Kaya kung guys ng dati tumulong sa akin sa pamamagitan ng pagpapadala sa akin 24 00:00:58,130 --> 00:01:00,990 mga bagay na kayo ay kumportable sa, na ikaw ay nag-aalala tungkol sa, 25 00:01:00,990 --> 00:01:03,530 mga paksa na nais mong para sa sa akin upang masakop, na nais maging mahusay. 26 00:01:03,530 --> 00:01:05,740 Kaya ang maaari kong subukan at gumana sila sa aming seksyon sa susunod na linggo 27 00:01:05,740 --> 00:01:11,540 o magpadala sa iyo ng dagdag na materyal o prep na maaaring hindi ka makakuha ng ibang lugar. 28 00:01:11,540 --> 00:01:12,150 >> Oo! 29 00:01:12,150 --> 00:01:13,520 Higit pang mga dumarating ang mga tao! 30 00:01:13,520 --> 00:01:17,320 Akala ko, ginawa ko na hindi maayos na huling linggo, na gustong walang bumalik? 31 00:01:17,320 --> 00:01:18,065 Ako ay natakot. 32 00:01:18,065 --> 00:01:18,892 33 00:01:18,892 --> 00:01:21,100 Kaya ang iba pang mga tatlong bagay na namin ang pagpunta sa pumunta sa paglipas ng 34 00:01:21,100 --> 00:01:24,850 ang mga pag-redirect, file I / O, at pagkatapos payo at dynamic na memory. 35 00:01:24,850 --> 00:01:29,160 Ako ba na ikaw ay ang lahat ng sobrang nasasabik tungkol sa pointers-- mga paboritong paksa ng lahat, 36 00:01:29,160 --> 00:01:31,310 sobrang simple upang maunawaan. 37 00:01:31,310 --> 00:01:33,130 Ako ba mo guys lahat nakuha na, i-right? 38 00:01:33,130 --> 00:01:39,510 >> Kaya unang bagay na una, redirection-- ito ay isa lamang paraan 39 00:01:39,510 --> 00:01:42,920 upang kontrolin kung paano mo pag-input bagay sa iyong programa, 40 00:01:42,920 --> 00:01:44,606 kung paano mo ang output ng mga bagay mula sa iyong mga programa. 41 00:01:44,606 --> 00:01:46,980 Ang pangunahing paraan na guys Na-nakikipag-ugnayan sa ito 42 00:01:46,980 --> 00:01:51,650 ay sa pamamagitan lamang ng karaniwang out sa iyong screen sa pag-print dito. 43 00:01:51,650 --> 00:01:55,940 Ngunit may mga paraan upang pipe-- tulad ng nakikita namin dito 44 00:01:55,940 --> 00:01:58,980 ay isa sa aming mga words-- uri ng tubo na impormasyon 45 00:01:58,980 --> 00:02:02,850 o na data sa isang file mula sa isang file. 46 00:02:02,850 --> 00:02:05,820 Iba ito lamang ang paraan ng sa pagkuha ng mga bagay-bagay sa iyong programa 47 00:02:05,820 --> 00:02:10,681 at out sa iyong programa, sa halip na lamang sa pag-print ang mga ito sa screen na ito 48 00:02:10,681 --> 00:02:12,430 o inputting bagay mula sa command line. 49 00:02:12,430 --> 00:02:13,760 50 00:02:13,760 --> 00:02:18,030 >> Kaya una ay maliit mas malaki kaysa sa caret. 51 00:02:18,030 --> 00:02:22,085 Kaya output-- mga print lang ito ang output sa isang file sa halip ng iyong screen. 52 00:02:22,085 --> 00:02:23,620 53 00:02:23,620 --> 00:02:29,500 Kaya kung mayroon kang isang bagay na naka-print "Kamusta, mundo!" sa screen, 54 00:02:29,500 --> 00:02:32,400 kung inilagay mo ito sa halip sa output.text, na 55 00:02:32,400 --> 00:02:35,220 Lumilikha ang file na ito na tinatawag na output.text. 56 00:02:35,220 --> 00:02:38,550 At kapag binuksan mo ito, ipapakita ito sabihin ang "Kumusta, mundo!" doon. 57 00:02:38,550 --> 00:02:41,410 Maaari itong maging kapaki-pakinabang super kung mayroon kang isang tonelada ng mga error 58 00:02:41,410 --> 00:02:43,430 talaga, tulad ng nakikita natin sa isang ito. 59 00:02:43,430 --> 00:02:46,810 Kung gagawin mo ang dalawang caret, ipapakita ito i-print ang mga mensahe ng error. 60 00:02:46,810 --> 00:02:52,090 >> Kaya kung nagkakaroon ka ng problema sa kino-compile ang, ito ay may maraming mga error 61 00:02:52,090 --> 00:02:56,770 at nagsisimula ka pa nabalaho sa putik sa pagsubok upang mag-scroll sa pamamagitan ng sa iyong command line 62 00:02:56,770 --> 00:02:59,110 sa lahat ng mga ito, maaari mong i-print lamang ang mga ito sa isang file, 63 00:02:59,110 --> 00:03:02,130 buksan up na file sa gayon ay Maaari mag-scroll sa kanila mas madali. 64 00:03:02,130 --> 00:03:05,160 Ko talagang ginagamit na ng maraming kapag ako ay pag-debug 65 00:03:05,160 --> 00:03:07,970 aking 181 psets para sa pagkatuto ng machine. 66 00:03:07,970 --> 00:03:10,000 Sa gayon ay maging kapaki-pakinabang sobrang sa ibang pagkakataon. 67 00:03:10,000 --> 00:03:18,370 Ito ay kapaki-pakinabang din kung mayroon kang programa na siguro ay bumubuo ng isang library 68 00:03:18,370 --> 00:03:20,430 o pagbuo ng ilang mga hanay ng mga string, at 69 00:03:20,430 --> 00:03:22,846 kailangan upang magawang makita na ito ay bumubuo ng maayos ang mga ito. 70 00:03:22,846 --> 00:03:23,860 71 00:03:23,860 --> 00:03:25,160 Ito ang paraan upang gawin iyon. 72 00:03:25,160 --> 00:03:28,280 >> Kaya kung i-print mo ang mga ito sa isang file, mo Maaari nang mas madali suriin ang mga ito, i-right? 73 00:03:28,280 --> 00:03:30,930 Kumpara sa sinusubukang i-scroll sa pamamagitan ng iyong linya ng command. 74 00:03:30,930 --> 00:03:32,740 75 00:03:32,740 --> 00:03:35,820 At pagkatapos ay isang bagay na dapat tandaan ay na may mas mataas lamang 76 00:03:35,820 --> 00:03:40,090 sa caret, kung iyong isinusulat sa isang file na naka-exists-- 77 00:03:40,090 --> 00:03:44,990 kaya tulad ng kung pinatakbo namin ito ang unang oras, inilalagay namin ito sa output.text, 78 00:03:44,990 --> 00:03:49,970 at pagkatapos ay nagkaroon kami ng pangalawang programa na naka-print na ito bilang dalawang programa 79 00:03:49,970 --> 00:03:54,250 at ginawang isang mas malaki kaysa sa output.text, ito ay patungan that-- kaya 80 00:03:54,250 --> 00:03:56,715 patungan kung ano ang kailanman sa file na iyon upang magsimula sa. 81 00:03:56,715 --> 00:03:57,720 82 00:03:57,720 --> 00:04:00,750 >> Kaya kung nais mong ikabit ang sa isang file, tulad ng nakikita namin dito, 83 00:04:00,750 --> 00:04:04,779 gawin mo lamang ng dalawang mas malaki kaysa sa mga karatula. 84 00:04:04,779 --> 00:04:05,820 At ito ay ikabit dito. 85 00:04:05,820 --> 00:04:06,750 Hindi nito patungan ito. 86 00:04:06,750 --> 00:04:09,770 Kaya kung kailangan mo upang patakbuhin ang maramihang programa at uri ng panatilihing 87 00:04:09,770 --> 00:04:13,170 subaybayan kung ano ang lahat ng mga ito ay pagbalik sa iyo sa isang file, 88 00:04:13,170 --> 00:04:14,190 iyon ay isang paraan upang gawin ito. 89 00:04:14,190 --> 00:04:17,231 Kung hindi mo pakialam kung ano ang nasa iyong mga file at ito ay pinapayagan na ma-o-overwrite, 90 00:04:17,231 --> 00:04:19,204 maaari mong gamitin lamang ang isang solong mas mataas kaysa sa. 91 00:04:19,204 --> 00:04:20,600 Ay na magkaroon ng kahulugan sa lahat? 92 00:04:20,600 --> 00:04:23,205 93 00:04:23,205 --> 00:04:31,140 >> Madla: Tulad ng tuldok iwa kumusta mas malaki kaysa sa output tuldok teksto, tulad ng dalawang beses, 94 00:04:31,140 --> 00:04:34,030 Makikita ito ipakita lamang lamang sa output tuldok teksto ng pangalawang time-- 95 00:04:34,030 --> 00:04:34,810 >> Tagapagsalita 1: I-right. 96 00:04:34,810 --> 00:04:40,450 Kaya gagawin talaga ganap lamang patungan kung ano ang doon upang magsimula sa. 97 00:04:40,450 --> 00:04:44,260 Kung ang file na ito dito, ang output.text na 98 00:04:44,260 --> 00:04:48,230 Umiiral, isa lamang ang anumang tawagan ka na muli gamit ang isang solong mas malaki 99 00:04:48,230 --> 00:04:51,920 kaysa sa maaari mong tingin lamang ng mga ito bilang tulad ng pinalitan nito ang file. 100 00:04:51,920 --> 00:04:54,824 Tulad kapag naka-save ng Salita dokumento at mo i-save bilang, 101 00:04:54,824 --> 00:04:57,365 at panatilihin kang katulad na pangalan, at ganap itong overwrites it-- 102 00:04:57,365 --> 00:04:58,680 ito ang parehong uri ng bagay. 103 00:04:58,680 --> 00:05:00,380 104 00:05:00,380 --> 00:05:03,550 Sinuman ay may anumang mga katanungan sa lamang outputting sa file? 105 00:05:03,550 --> 00:05:05,051 106 00:05:05,051 --> 00:05:05,550 Kahanga-hanga. 107 00:05:05,550 --> 00:05:11,440 >> Kaya malinaw naman, kung baligtarin mo ang arrow ng direksyon, maaari itong gawin ng pag-input. 108 00:05:11,440 --> 00:05:13,090 109 00:05:13,090 --> 00:05:19,960 Kaya kapag nagkaroon guys tulad ng Caesar o Visioneer 110 00:05:19,960 --> 00:05:23,195 at kailangan mong i-input ang isang bagay, kayo ay nagkaroon ng isang command line argument 111 00:05:23,195 --> 00:05:24,960 na aktwal na pag-input na ito. 112 00:05:24,960 --> 00:05:27,410 Ito ay isa pang paraan upang gawin iyon. 113 00:05:27,410 --> 00:05:30,520 Kaya sa halip na naghihintay para sa isang command prompt, 114 00:05:30,520 --> 00:05:33,800 tulad ng kapag hiniling mo para sa iyong mensahe sa Caesar o Visioneer, 115 00:05:33,800 --> 00:05:36,490 kung mayroon kang isang file ng teksto na nagkaroon ng iyong mensahe, 116 00:05:36,490 --> 00:05:38,280 Maaaring i-type lang mo ito sa iyon. 117 00:05:38,280 --> 00:05:44,930 >> Kaya kung ito ay tulad ng tuldok iwa Caesar 3 mas mababa sa arrow sa pag-input ng teksto, na 118 00:05:44,930 --> 00:05:47,240 ay ang iyong mensahe, na Gusto patakbuhin lamang ang multa. 119 00:05:47,240 --> 00:05:51,310 120 00:05:51,310 --> 00:05:54,020 Kapag ang iyong Caesar programa talaga tinanong para sa input mula sa user, 121 00:05:54,020 --> 00:05:57,360 ito ay mayroon ka ito dahil iyong nai-type sa file na ito. 122 00:05:57,360 --> 00:05:58,830 Iyon ay isa lamang paraan. 123 00:05:58,830 --> 00:06:02,445 Isang reverse lang ng output-- -input lamang para sa iyong data. 124 00:06:02,445 --> 00:06:04,570 125 00:06:04,570 --> 00:06:06,680 >> At pagkatapos ay ang huli ay pipe. 126 00:06:06,680 --> 00:06:07,780 Kaya medyo cool isa ito. 127 00:06:07,780 --> 00:06:09,890 Dahil nagbibigay-daan ito sa iyo na gawin ang output ng isa 128 00:06:09,890 --> 00:06:13,695 programa at ilagay ito bilang -input sa isa pang programa. 129 00:06:13,695 --> 00:06:15,250 130 00:06:15,250 --> 00:06:18,630 Hindi ko alam kung ang alinman sa iyo -play na may maintindihan 131 00:06:18,630 --> 00:06:20,590 maaaring mayroon na CS50 nagbigay sa iyo, ngunit nais ito 132 00:06:20,590 --> 00:06:27,380 -daan sa iyo upang tumagal ng ilang sample -file, i-type ito sa iyong pag-encrypt, 133 00:06:27,380 --> 00:06:30,350 at pagkatapos ay mula doon nagta-type na sa iyong decryption 134 00:06:30,350 --> 00:06:32,470 upang tiyakin na ito naka-out ang parehong. 135 00:06:32,470 --> 00:06:34,050 Kaya ito ay uri ng tulad ng tatlong-way na loop. 136 00:06:34,050 --> 00:06:38,400 137 00:06:38,400 --> 00:06:39,423 Pumunta para dito. 138 00:06:39,423 --> 00:06:41,785 >> Madla: Kung ang isang programa ay may maramihang mga input, 139 00:06:41,785 --> 00:06:47,646 ay Mayroon bang paraan upang sabihin dito kung aling pag-input na gamitin ang text file o mga output para sa? 140 00:06:47,646 --> 00:06:49,325 >> Tagapagsalita 1: Mayroon itong maramihang mga input. 141 00:06:49,325 --> 00:06:52,190 142 00:06:52,190 --> 00:07:00,430 Anuman ang mag-file ng iyong input-- kapag humihingi ng pag-input na unang pagkakataon, 143 00:07:00,430 --> 00:07:03,240 pagpunta sa ipinapalagay, sa palagay ko, ito ay pagpunta sa pipe sa buong file. 144 00:07:03,240 --> 00:07:03,979 145 00:07:03,979 --> 00:07:07,145 Kaya kung mayroon kang maramihang mga input, ikaw ay pagpunta na mga tubo sa maramihang mga file. 146 00:07:07,145 --> 00:07:08,190 147 00:07:08,190 --> 00:07:12,390 Kaya kung hinihingi para sa mga mensahe tatlong beses sa iyong code, 148 00:07:12,390 --> 00:07:15,230 na iyong pupuntahan ay ang paglalagay ng sa tatlong iba't ibang mga file. 149 00:07:15,230 --> 00:07:15,980 At nakatutuwang ito ay nakakakuha. 150 00:07:15,980 --> 00:07:18,188 At hindi mo kailangang mag mag-alala tungkol sa na ngayon. 151 00:07:18,188 --> 00:07:19,150 Ngunit iyon ang ideya. 152 00:07:19,150 --> 00:07:20,680 153 00:07:20,680 --> 00:07:26,822 >> Kaya oo, pipe ay output lamang ng isa programa ay gumagamit ng pag-input sa isa. 154 00:07:26,822 --> 00:07:27,665 Ang bawat tao'y may magandang? 155 00:07:27,665 --> 00:07:28,565 156 00:07:28,565 --> 00:07:29,065 Ayos. 157 00:07:29,065 --> 00:07:30,170 158 00:07:30,170 --> 00:07:30,932 OK. 159 00:07:30,932 --> 00:07:32,890 Hindi mo marahil ay magkakaroon ng gawin masyadong maraming dito. 160 00:07:32,890 --> 00:07:35,670 Ngunit dapat mong maunawaan paraan na maaari mong gamitin ito. 161 00:07:35,670 --> 00:07:38,910 At mayroong ilang mga kaso na baka gusto mong gamitin ito. 162 00:07:38,910 --> 00:07:44,590 >> Kaya mag-file / O-- alam ko ko kung ano ang iyong saying-- namin ginagamit upang magbasa mula sa 163 00:07:44,590 --> 00:07:50,500 at pagsulat sa aming mga screen doon, na kung saan ay karaniwang in at karaniwang out. 164 00:07:50,500 --> 00:07:54,370 At iyon ang kung ano ang iyong guys ay paggawa ng simula ng klase dito. 165 00:07:54,370 --> 00:07:58,220 Ngunit maaari mo ring basahin at isulat ang mga file, na ang lahat ng mga file ko / O-- upang maghain input, 166 00:07:58,220 --> 00:07:59,850 output ay ang lahat ng ito ay kumakatawan sa. 167 00:07:59,850 --> 00:08:00,930 168 00:08:00,930 --> 00:08:04,360 Kaya nangangahulugan ito na isa lamang na Maaari kang mag-imbak na ngayon ang iyong data. 169 00:08:04,360 --> 00:08:08,460 >> Kapag nag-print ka lamang ito sa screen, talaga ito ay wala na, i-right? 170 00:08:08,460 --> 00:08:12,507 Sa lalong madaling gumawa ka ng "Hello mundo "at run" Hello mundo " 171 00:08:12,507 --> 00:08:14,090 ito ng mga Kopya "Hello mundo" sa screen. 172 00:08:14,090 --> 00:08:16,370 Ngunit hindi ka maaaring talagang gawin anumang bagay na may ito mula doon. 173 00:08:16,370 --> 00:08:18,950 Kung mag-imbak mo sa isang text file, pagkatapos ay biglang 174 00:08:18,950 --> 00:08:22,789 mayroon kang data na ito na pinapayagan ka upang manipulahin o ilagay ito sa isang file, 175 00:08:22,789 --> 00:08:24,080 o ilagay ito sa isang programa sa ibang pagkakataon. 176 00:08:24,080 --> 00:08:26,370 177 00:08:26,370 --> 00:08:29,290 Isa sa mga dahilan kung bakit ginagawa namin ito lamang 178 00:08:29,290 --> 00:08:31,560 bilang isang paraan upang mag-imbak ng data para sa paggamit sa ibang pagkakataon. 179 00:08:31,560 --> 00:08:34,790 180 00:08:34,790 --> 00:08:37,279 >> Mayroon akong ilang mga hakbang dito lamang sa paglalakad sa pamamagitan ng standard 181 00:08:37,279 --> 00:08:39,450 I / O. Sa hakbang isa, mo Kailangan mong lumikha ng isang reference 182 00:08:39,450 --> 00:08:43,480 sa file na kasama ang lahat cap file star file. 183 00:08:43,480 --> 00:08:45,740 Nang sa gayon ay lumilikha ng isang pointer sa isang file. 184 00:08:45,740 --> 00:08:48,080 185 00:08:48,080 --> 00:08:49,650 Kaya pagkatapos na gusto mong buksan ito. 186 00:08:49,650 --> 00:08:52,940 At sinabi mo, literal, ay katumbas ng file lamang fopen. 187 00:08:52,940 --> 00:08:57,400 At ito ay pagpunta upang magbalik ng pointer sa file na binuksan mo lamang. 188 00:08:57,400 --> 00:08:59,610 189 00:08:59,610 --> 00:09:01,460 Nakita ko ng dalawang mo guys sa oras ng opisina. 190 00:09:01,460 --> 00:09:07,400 >> Ngunit ang isa sa mga bagay ay remember-- mga payo 191 00:09:07,400 --> 00:09:10,409 Maaari ilang mga address o null, tama? 192 00:09:10,409 --> 00:09:12,700 Kung sakaling mayroon kaming isang kaso kung saan isang bagay na maaaring magbalik null, 193 00:09:12,700 --> 00:09:14,990 ano ang dapat nating gawin bago namin kailanman gamitin ito? 194 00:09:14,990 --> 00:09:16,220 195 00:09:16,220 --> 00:09:19,000 Kailangan namin upang suriin kung ito ay walang bisa o hindi, tama? 196 00:09:19,000 --> 00:09:23,600 Dahil ang ilan sa inyo ay maaaring nagkaroon ang isyu kung saan ang anumang bagay na 197 00:09:23,600 --> 00:09:26,110 ay ini-ibinalik sa breakout ay walang bisa. 198 00:09:26,110 --> 00:09:28,170 Sinubukan mong upang magsagawa ng ang ilang mga function na ito. 199 00:09:28,170 --> 00:09:29,770 At site sa iyong computer faulted. 200 00:09:29,770 --> 00:09:30,725 Mag-right? 201 00:09:30,725 --> 00:09:33,640 Taya ko ng dalawang mo Maaaring nagkaroon na isyu. 202 00:09:33,640 --> 00:09:38,890 >> Kaya sa fopen, ay fopen alinman sa magbalik ng pointer sa file, 203 00:09:38,890 --> 00:09:41,200 o kung ang isang bagay napupunta mali, ito ang nangyayari upang bumalik null. 204 00:09:41,200 --> 00:09:45,980 Kaya palagi mong kailangan upang suriin na ito ay hindi nagbalik null 205 00:09:45,980 --> 00:09:47,880 bago mo subukang gumawa ng kahit ano pa man. 206 00:09:47,880 --> 00:09:49,110 207 00:09:49,110 --> 00:09:51,974 Ito ay tulad ng isang karaniwang tularan na kayo ay pagpunta sa kailangan dito. 208 00:09:51,974 --> 00:09:54,390 Kung mayroong kailanman ng isang pagkakataon na isang bagay na maaaring bumalik null, 209 00:09:54,390 --> 00:09:56,590 suriin upang tiyakin na ito Hindi bago ka magpatuloy. 210 00:09:56,590 --> 00:09:58,911 Kung hindi man, na iyong pupuntahan upang makakuha ng magagandang mga pagkakamali site. 211 00:09:58,911 --> 00:10:00,410 At walang sinuman ang may gusto upang harapin ang mga iyon. 212 00:10:00,410 --> 00:10:03,180 213 00:10:03,180 --> 00:10:06,410 >> Kaya bilang makita namin dito, ang unang argumento lamang ang landas sa file. 214 00:10:06,410 --> 00:10:09,380 Kung file na hindi umiiral, ito ang nangyayari upang lumikha ng file na iyon. 215 00:10:09,380 --> 00:10:10,713 At ito ay magiging blangko. 216 00:10:10,713 --> 00:10:10,789 217 00:10:10,789 --> 00:10:13,080 At pagkatapos ay ang pangalawang argumento ay ang mode na gusto mo. 218 00:10:13,080 --> 00:10:14,610 Nais namin na magbasa mula sa file na ito? 219 00:10:14,610 --> 00:10:15,560 Gusto mo bang magsulat mula dito? 220 00:10:15,560 --> 00:10:16,476 Gusto mo upang isama? 221 00:10:16,476 --> 00:10:17,600 222 00:10:17,600 --> 00:10:20,670 Kaya ang tunay said-- ko lang kung ang file ay hindi umiiral 223 00:10:20,670 --> 00:10:23,400 at sinusubukan mong basahin mula sa ito, ito ay pagpunta sa magtapon ng isang error. 224 00:10:23,400 --> 00:10:26,890 Kung ang file name-- nais kung file.text Hindi pa umiiral 225 00:10:26,890 --> 00:10:29,250 at nais mong sumulat dito, ito ay lumikha 226 00:10:29,250 --> 00:10:33,110 isang blangkong file na tinatawag na file.text para sa iyo. 227 00:10:33,110 --> 00:10:36,612 At kung gusto mong isama, dapat mong gawin ang parehong bagay. 228 00:10:36,612 --> 00:10:38,081 Ay na magkaroon ng kahulugan? 229 00:10:38,081 --> 00:10:40,580 Kung sinusubukan na magbasa mula sa isang file na hindi pa umiiral, 230 00:10:40,580 --> 00:10:41,590 Makikita ito magtapon ng isang error. 231 00:10:41,590 --> 00:10:44,340 Kung hindi man, ito ay lumikha ng mga file para gawin mo kung ano ang gusto mo dito. 232 00:10:44,340 --> 00:10:45,970 233 00:10:45,970 --> 00:10:46,470 Ayos. 234 00:10:46,470 --> 00:10:47,510 235 00:10:47,510 --> 00:10:48,880 Ngayon ay maaari naming basahin mula sa file. 236 00:10:48,880 --> 00:10:52,570 At ito lamang ang uri ng pagpunta sa pamamagitan ng iba't ibang mga pag-andar 237 00:10:52,570 --> 00:10:58,980 na mayroon kami para sa file I / O. Ang kaloobang ito'y kailangan sa pset na ito linggo, 238 00:10:58,980 --> 00:11:00,505 kung natatandaan ko nang tama. 239 00:11:00,505 --> 00:11:02,880 Oo, talagang magiging kinakailangan sa pset na ito linggong ito. 240 00:11:02,880 --> 00:11:04,260 241 00:11:04,260 --> 00:11:07,010 Kaya fgetc nagbabalik sa susunod na character. 242 00:11:07,010 --> 00:11:08,350 243 00:11:08,350 --> 00:11:10,300 fgets nagbabalik lamang isang linya ng teksto. 244 00:11:10,300 --> 00:11:11,790 245 00:11:11,790 --> 00:11:14,610 Ito ay nagbalik ng anuman hanggang sa ng isang bagong linya, at ito ay masira. 246 00:11:14,610 --> 00:11:15,950 247 00:11:15,950 --> 00:11:18,700 Kaya fread bumabasa ng isang tiyak bilang ng mga byte at lugar ang mga ito 248 00:11:18,700 --> 00:11:20,700 sa isang array, na ay isang bagay na maaari mong 249 00:11:20,700 --> 00:11:25,485 nais gawin sa muling size-- Maaaring maging kapaki-pakinabang. 250 00:11:25,485 --> 00:11:26,550 251 00:11:26,550 --> 00:11:29,290 >> Gaano karaming tao ang nabasa ang pset spec, sa pamamagitan ng ang paraan? 252 00:11:29,290 --> 00:11:30,980 253 00:11:30,980 --> 00:11:32,261 OK. 254 00:11:32,261 --> 00:11:32,760 [Hindi marinig] 255 00:11:32,760 --> 00:11:35,380 256 00:11:35,380 --> 00:11:36,580 >> Tagapagsalita 1: OK. 257 00:11:36,580 --> 00:11:37,530 Lahat ng karapatan. 258 00:11:37,530 --> 00:11:41,940 Talagang basahin that-- ito ay isang masaya pset. 259 00:11:41,940 --> 00:11:51,320 Makakakuha ka ng upang mabawi ang isang tinanggal na memory card-- talagang kapana-panabik na kapag ito gumagana. 260 00:11:51,320 --> 00:11:54,100 Ngunit siguradong, simulang basahin iyon. 261 00:11:54,100 --> 00:11:56,280 Halika at mag-usap sa akin kung Mayroon pang mga tanong tungkol dito. 262 00:11:56,280 --> 00:11:59,290 >> OK, kaya bilang sinasabi ko, fread bumabasa ng isang tiyak na bilang ng mga byte. 263 00:11:59,290 --> 00:12:01,340 264 00:12:01,340 --> 00:12:03,590 Iyon ang ilang mga arbitrary na numero na iyong pupuntahan upang i-set. 265 00:12:03,590 --> 00:12:05,990 266 00:12:05,990 --> 00:12:08,260 At pagkatapos ay fseek lamang gumagalaw sa isang tiyak na posisyon. 267 00:12:08,260 --> 00:12:11,150 Kaya marahil hindi mo na mahalaga tungkol sa susunod na 10 bytes. 268 00:12:11,150 --> 00:12:12,880 Gusto mo lamang lumaktaw. 269 00:12:12,880 --> 00:12:14,030 Hindi mo na nagmamalasakit sa mga iyon. 270 00:12:14,030 --> 00:12:16,280 Gusto mong basahin simula sa byte na 11. 271 00:12:16,280 --> 00:12:18,252 Binibigyang-daan ka fseek ka upang gawin iyon. 272 00:12:18,252 --> 00:12:20,710 Kaya ito ay nagbibigay-daan sa iyo upang maging pumipili tungkol sa kung ano ang iyong binabasa. 273 00:12:20,710 --> 00:12:25,880 Dahil fgetc, fgets, at fread nabasa na mula sa isang tiyak na lugar sa file. 274 00:12:25,880 --> 00:12:27,260 275 00:12:27,260 --> 00:12:35,090 >> Ang isang paraan upang isipin ang tungkol na ito ay kung ito ay ang aming file, noong una buksan mo ito, 276 00:12:35,090 --> 00:12:41,140 mayroon kang posisyon na ito sa file na magsisimula sa umpisa. 277 00:12:41,140 --> 00:12:45,040 Sa tuwing tawagan ka fgetc, fgetf, o fread, 278 00:12:45,040 --> 00:12:48,875 ito ay pagpunta sa simulan mula sa ang posisyon ng marker. 279 00:12:48,875 --> 00:12:51,340 280 00:12:51,340 --> 00:12:55,245 Ipagpalagay natin na nais mo lamang na basahin ito tipak ng memory sa paglipas dito. 281 00:12:55,245 --> 00:12:56,300 282 00:12:56,300 --> 00:12:57,960 Hindi ka maaaring tumawag lamang. 283 00:12:57,960 --> 00:13:02,430 Mayroon kang humanap paglipas dito at pagkatapos ay basahin mula doon 284 00:13:02,430 --> 00:13:06,540 o basahin, makakakuha, o getc, depende sa kung anong gusto mo. 285 00:13:06,540 --> 00:13:09,310 Kaya humingi nagbibigay-daan lamang sa iyo upang laktawan bahagi ng memorya. 286 00:13:09,310 --> 00:13:11,590 At iyon ang lang paraan maaari mong laktawan bagay 287 00:13:11,590 --> 00:13:14,012 nang hindi sila binabasa sa iyong buffer. 288 00:13:14,012 --> 00:13:15,470 Ay na magkaroon ng kahulugan sa lahat? 289 00:13:15,470 --> 00:13:21,110 290 00:13:21,110 --> 00:13:24,780 >> Malinaw, mayroong isang maraming mga parallel here-- 291 00:13:24,780 --> 00:13:27,780 ang aming output, o pag-input na pag-redirect, nabasa at magsulat. 292 00:13:27,780 --> 00:13:31,800 Kaya fputc nagsusulat lamang na character sa file. 293 00:13:31,800 --> 00:13:33,655 nagsusulat fputs isang linya. 294 00:13:33,655 --> 00:13:35,030 295 00:13:35,030 --> 00:13:37,420 Fprintf ng mga Kopya ng format na output. 296 00:13:37,420 --> 00:13:41,190 Kaya kung mayroon kang mga tab, o espasyo, o watnat. 297 00:13:41,190 --> 00:13:44,180 At pagkatapos ay nagsusulat fwrite ilang array ng mga byte na sa isang file. 298 00:13:44,180 --> 00:13:48,860 Kaya ito ay ang parehong paraan fwrite at fread ay kahalintulad 299 00:13:48,860 --> 00:13:57,550 opposites-- fgets, fputs, at pagkatapos ay fputc at fgetc-- ng maraming 300 00:13:57,550 --> 00:14:00,710 ng nakatutuwang, mabilis na mga bagay. 301 00:14:00,710 --> 00:14:05,300 >> Lamang uri ng panatilihin ito handy-- magkakaroon ka ng iba't ibang oras 302 00:14:05,300 --> 00:14:08,680 kung saan marahil gusto mo lamang isang character sa isang pagkakataon. 303 00:14:08,680 --> 00:14:09,890 Siguro gusto mo ng buong linya. 304 00:14:09,890 --> 00:14:14,320 Gamit ang iyong pset-- diksyunaryo na kung saan ay sa loob ng dalawang psets, 305 00:14:14,320 --> 00:14:19,690 Naniniwala ako, bigyan ka namin ng isang buong diksyunaryo sa format na teksto 306 00:14:19,690 --> 00:14:22,252 na may bawat salita pinaghihiwalay ng isang linya. 307 00:14:22,252 --> 00:14:24,210 Kaya kung nais mong basahin ang sa isang salita sa isang pagkakataon, 308 00:14:24,210 --> 00:14:31,769 kung ano ang maaari mong gamitin kung binabasa mo at sila ang lahat ng mga naka-separated sa mga bagong linya, 309 00:14:31,769 --> 00:14:33,310 at gusto mo lamang ng isang salita sa isang pagkakataon? 310 00:14:33,310 --> 00:14:35,320 311 00:14:35,320 --> 00:14:36,040 >> Madla: Fgets 312 00:14:36,040 --> 00:14:36,748 >> Tagapagsalita 1: I-right. 313 00:14:36,748 --> 00:14:39,960 Fgets-- dahil na nagbabalik anumang ay nasa isang linya. 314 00:14:39,960 --> 00:14:42,750 At kung ang bawat salita ay nito sariling linya, maaari naming gamitin fgets. 315 00:14:42,750 --> 00:14:44,511 316 00:14:44,511 --> 00:14:45,010 Ayos. 317 00:14:45,010 --> 00:14:47,290 Ay na magkaroon ng kahulugan, sa lahat? 318 00:14:47,290 --> 00:14:48,020 Cool? 319 00:14:48,020 --> 00:14:50,020 Oo, kami ay pagpunta upang makapunta sa ang masayang bahagi na may mga payo 320 00:14:50,020 --> 00:14:51,728 sa lalong madaling panahon, kung saan mo makakuha ng mga na gawin ang ilang mga matematika. 321 00:14:51,728 --> 00:14:52,776 At makikita itong maging mahusay. 322 00:14:52,776 --> 00:14:55,690 323 00:14:55,690 --> 00:14:57,740 >> Huling step-- isara ang iyong file. 324 00:14:57,740 --> 00:15:01,090 Sa gayon maraming bagay dito, isa sa aming mga paradigms 325 00:15:01,090 --> 00:15:03,550 ay kung maaari itong bumalik null, lagyan ng check para sa null. 326 00:15:03,550 --> 00:15:06,160 Kung binuksan mo ang isang bagay, gusto mo ng mas mahusay na isara ito. 327 00:15:06,160 --> 00:15:10,419 OK, kaya hindi tapos ka na hanggang sa ikaw ay tapos maliban na iyong isinara ito. 328 00:15:10,419 --> 00:15:12,585 Uri ng tulad ng hindi higit sa hanggang sa taba ginang ng bansa SINGS. 329 00:15:12,585 --> 00:15:14,130 Iyon ay tulad ng pagsasara ng iyong file. 330 00:15:14,130 --> 00:15:16,860 331 00:15:16,860 --> 00:15:19,190 Tulad ng sinasabi nito dito, lang upang mag-ulit, palaging 332 00:15:19,190 --> 00:15:21,750 buksan ang iyong file bago ka pagbabasa o magsulat dito. 333 00:15:21,750 --> 00:15:24,450 At palagi itong isara kung iyong binuksan ito. 334 00:15:24,450 --> 00:15:25,460 Ang lahat ng mga karapatan? 335 00:15:25,460 --> 00:15:25,960 Ayos. 336 00:15:25,960 --> 00:15:26,835 >> Kaya narito ang isang halimbawa. 337 00:15:26,835 --> 00:15:29,250 338 00:15:29,250 --> 00:15:34,330 Kaya tiny-- Hindi ko alam kung ang maaaring makakita ng guys na nang mahusay. 339 00:15:34,330 --> 00:15:36,805 Kung lamang namin maaaring taasan ang liwanag kahit papaano. 340 00:15:36,805 --> 00:15:40,430 341 00:15:40,430 --> 00:15:45,030 Hayaan akong aktwal na gawin ito kung maaari ko. 342 00:15:45,030 --> 00:15:48,020 343 00:15:48,020 --> 00:15:51,470 OK, mo guys maaari hindi talaga makita na sa lahat, maaari mong? 344 00:15:51,470 --> 00:15:52,905 OK, kami ay pagpunta sa gawin ito, pagkatapos ay i-. 345 00:15:52,905 --> 00:16:35,094 346 00:16:35,094 --> 00:16:35,594 [Hindi marinig] 347 00:16:35,594 --> 00:16:56,670 348 00:16:56,670 --> 00:16:58,605 >> Ipinapalagay ko ito ang mas mahusay na makita. 349 00:16:58,605 --> 00:17:17,330 350 00:17:17,330 --> 00:17:19,455 Maaari sinuman makita kung saan ang aking nagpunta mouse ay ang tanong? 351 00:17:19,455 --> 00:17:22,837 Ah, may ito is-- kung ano ang pakikibaka! 352 00:17:22,837 --> 00:17:48,910 353 00:17:48,910 --> 00:17:49,520 >> OK. 354 00:17:49,520 --> 00:17:53,845 Talaga, ka guys ay dapat magkaroon ng uri ng isang ideya ng kung ano ito ay ginagawa. 355 00:17:53,845 --> 00:17:56,740 356 00:17:56,740 --> 00:17:57,600 Ito ay hindi perpekto. 357 00:17:57,600 --> 00:17:58,851 358 00:17:58,851 --> 00:18:02,425 Ngunit Mas gugustuhin kong ipaliwanag ito sa paggastos mas maraming oras sinusubukang i-format ito nang maayos. 359 00:18:02,425 --> 00:18:03,610 360 00:18:03,610 --> 00:18:07,280 Talaga, tulad ng nakikita mo rito, simulan namin sa file na nakabukas. 361 00:18:07,280 --> 00:18:09,620 At mayroon kaming ilang mga database file na tayo 362 00:18:09,620 --> 00:18:12,300 pagbubukas na nagsasabing ito ay ang aming mga mag-aaral. 363 00:18:12,300 --> 00:18:14,020 At kami ay pagpunta sa magsulat dito. 364 00:18:14,020 --> 00:18:15,060 365 00:18:15,060 --> 00:18:17,720 Kaya siyempre, bumalik null. 366 00:18:17,720 --> 00:18:19,650 Kaya mayroon kaming upang tingnan ang mga null. 367 00:18:19,650 --> 00:18:22,930 At pagkatapos ay kung hindi null, pumunta namin sa pamamagitan ng. 368 00:18:22,930 --> 00:18:25,660 At tulad ng nakikita mo, kami ay looping sa pamamagitan dito. 369 00:18:25,660 --> 00:18:26,960 May mga mag-aaral. 370 00:18:26,960 --> 00:18:30,520 Mga mag-aaral ay hash tinukoy bilang tatlong. 371 00:18:30,520 --> 00:18:34,060 At kung ano ang aming ginagawa ay hindi namin pag-print sa file, i-right? 372 00:18:34,060 --> 00:18:36,975 Kaya kung ano ang pag-print out namin sa aming mga file? 373 00:18:36,975 --> 00:18:47,040 374 00:18:47,040 --> 00:18:48,906 >> Madla: Ang mga iskor na sa array? 375 00:18:48,906 --> 00:18:49,680 >> Tagapagsalita 1: Oo. 376 00:18:49,680 --> 00:18:50,980 Ang mga marka na nasa eksaktong array--. 377 00:18:50,980 --> 00:18:53,050 Kaya binubuksan namin ito database file, na 378 00:18:53,050 --> 00:18:56,040 Ako ay ipinapalagay ay isang uri ng mga grado database. 379 00:18:56,040 --> 00:19:01,100 At lamang kami sa pag-print out ang marka ng bawat mag-aaral sa file na iyon. 380 00:19:01,100 --> 00:19:02,140 Cool? 381 00:19:02,140 --> 00:19:02,640 Mahusay. 382 00:19:02,640 --> 00:19:03,811 383 00:19:03,811 --> 00:19:04,310 Kahanga-hanga. 384 00:19:04,310 --> 00:19:05,100 OK. 385 00:19:05,100 --> 00:19:06,950 Sabihin makabalik to-- 386 00:19:06,950 --> 00:19:08,646 >> Madla: Mayroon akong isang mabilis na tanong. 387 00:19:08,646 --> 00:19:11,570 Ay ang printf wala sa para sa loop? 388 00:19:11,570 --> 00:19:12,870 Iyon lang sa kung loop? 389 00:19:12,870 --> 00:19:14,370 Tagapagsalita 1: Hindi, sa para sa loop. 390 00:19:14,370 --> 00:19:16,150 391 00:19:16,150 --> 00:19:18,810 Hindi ko makita ang aking mouse napaka na rin dito. 392 00:19:18,810 --> 00:19:21,359 Kaya ako struggling sa format na maayos. 393 00:19:21,359 --> 00:19:22,525 Dapat ay mawawala bracket na ito. 394 00:19:22,525 --> 00:19:23,610 395 00:19:23,610 --> 00:19:25,130 Dapat ito ay down na dito. 396 00:19:25,130 --> 00:19:26,605 Ito ay kung ano ang nasa iyong para sa loop. 397 00:19:26,605 --> 00:20:10,680 398 00:20:10,680 --> 00:20:11,180 Mayroon. 399 00:20:11,180 --> 00:20:12,160 Ngayon ay medyo. 400 00:20:12,160 --> 00:20:16,720 Kaya na kung paano ito dapat be-- maliban para sa huling bracket na ako sa trabaho. 401 00:20:16,720 --> 00:20:17,220 OK. 402 00:20:17,220 --> 00:20:19,491 Ay na magkaroon ng kahulugan sa lahat? 403 00:20:19,491 --> 00:20:19,990 OK. 404 00:20:19,990 --> 00:20:23,750 Kami ay pagpunta sa ilipat sa sa susunod na bagay then-- 405 00:20:23,750 --> 00:20:26,180 na kung saan, talagang, na iyong pupuntahan sa kailangan upang makita ang code. 406 00:20:26,180 --> 00:20:28,370 Kaya ako lamang ang pagpunta sa kopyahin na sa ngayon. 407 00:20:28,370 --> 00:20:31,500 408 00:20:31,500 --> 00:20:32,000 OK. 409 00:20:32,000 --> 00:20:35,110 Kaya ako pupunta upang ipakita sa iyo guys ang code na ito. 410 00:20:35,110 --> 00:20:38,240 At gusto ko sa iyo upang subukan at figure out kung ano ang dapat gawin. 411 00:20:38,240 --> 00:20:49,740 412 00:20:49,740 --> 00:20:52,480 >> Kaya ibinigay that-- tumagal ng isang minuto o kaya. 413 00:20:52,480 --> 00:20:54,440 Subukan at malaman kung ano ang nangyayari sa dito. 414 00:20:54,440 --> 00:21:58,840 415 00:21:58,840 --> 00:21:59,570 >> Ang anumang mga ideya? 416 00:21:59,570 --> 00:22:08,180 417 00:22:08,180 --> 00:22:12,470 >> Alam namin na mayroon kaming hindi bababa sa dalawang argumento sa command line, i-right? 418 00:22:12,470 --> 00:22:16,270 Ipinapalagay ko ang isa sa kung saan ay magiging na [hindi marinig] ng aming programa ay 419 00:22:16,270 --> 00:22:17,530 at pagkatapos ay sa ibang bagay. 420 00:22:17,530 --> 00:22:19,980 Dahil kung [hindi marinig] ay mas sa dalawang, sumigaw kami sa kanila. 421 00:22:19,980 --> 00:22:21,140 Mag-right? 422 00:22:21,140 --> 00:22:25,300 At mula sa paggamit, mukhang ito ay magiging isang uri ng file. 423 00:22:25,300 --> 00:22:26,260 Namin ang lahat ng sumang-ayon sa na? 424 00:22:26,260 --> 00:22:29,110 425 00:22:29,110 --> 00:22:31,570 Kaya ngayon, kung ano ang mga loop ginagawa? 426 00:22:31,570 --> 00:22:32,570 Ano ang ito sa pamamagitan ng pagpunta? 427 00:22:32,570 --> 00:22:35,000 428 00:22:35,000 --> 00:22:36,449 >> Madla: Lahat ng mga file. 429 00:22:36,449 --> 00:22:37,240 Tagapagsalita 1: Eksaktong. 430 00:22:37,240 --> 00:22:39,650 Ito ay nangyayari sa lahat ng mga mga file na hindi namin input doon. 431 00:22:39,650 --> 00:22:40,720 432 00:22:40,720 --> 00:22:46,040 Kaya para sa bawat file, ito ay pagbubukas ng ilang string doon. 433 00:22:46,040 --> 00:22:47,560 Ang ipapalabas up ito file na iyon. 434 00:22:47,560 --> 00:22:48,060 Mag-right? 435 00:22:48,060 --> 00:22:49,140 436 00:22:49,140 --> 00:22:52,380 At ito ay ang pagbabasa mula dito. 437 00:22:52,380 --> 00:22:53,420 438 00:22:53,420 --> 00:22:55,540 Siyempre, pagsusuri kung ito ay walang bisa. 439 00:22:55,540 --> 00:22:57,220 At pagkatapos ay ito sa pag-print. 440 00:22:57,220 --> 00:23:01,460 Kung ito ay walang bisa, lamang ito ng pagsasabi sa amin na hindi iyon ang isang file na umiiral na. 441 00:23:01,460 --> 00:23:04,290 Dahil tandaan, may basahin ang aming mga file ay na umiiral. 442 00:23:04,290 --> 00:23:04,810 Mag-right? 443 00:23:04,810 --> 00:23:06,870 Sa pagpapawalang at ikabit, maaari mong makalusot. 444 00:23:06,870 --> 00:23:08,970 Ngunit sa nabasa, ang aming mga file ay na umiiral. 445 00:23:08,970 --> 00:23:10,430 446 00:23:10,430 --> 00:23:13,330 >> At pagkatapos ay kung ito ay umiiral, kung ano ang ginagawa namin dito? 447 00:23:13,330 --> 00:23:14,810 448 00:23:14,810 --> 00:23:15,780 Magsimula tayo lang dito Hayaan. 449 00:23:15,780 --> 00:23:18,815 Ano ito do-- ito unang character. 450 00:23:18,815 --> 00:23:20,960 451 00:23:20,960 --> 00:23:21,790 Ano ang ibig ito gawin? 452 00:23:21,790 --> 00:23:24,100 Siya ay makakakuha ng isang character, i-right? 453 00:23:24,100 --> 00:23:25,400 Kaya kung ano ang ginagawa ay? 454 00:23:25,400 --> 00:23:26,775 Nagiging ang unang character. 455 00:23:26,775 --> 00:23:28,860 456 00:23:28,860 --> 00:23:30,200 Sinuman alam EOF? 457 00:23:30,200 --> 00:23:31,170 >> Madla: Pagtatapos ng file? 458 00:23:31,170 --> 00:23:32,680 >> Tagapagsalita 1: Katapusan ng file-- eksakto. 459 00:23:32,680 --> 00:23:35,310 Kaya ito ay pagpunta sa pumunta sa pamamagitan ng ang buong file, i-right? 460 00:23:35,310 --> 00:23:36,710 461 00:23:36,710 --> 00:23:40,780 At pagkatapos ay ito ay pagpunta upang i-update sa pamamagitan ng pagkuha ng bawat kasunod na character. 462 00:23:40,780 --> 00:23:41,565 Mag-right? 463 00:23:41,565 --> 00:23:43,636 At kung ano ang ginagawa nito? 464 00:23:43,636 --> 00:23:44,760 Madla: paglalagay na in-- 465 00:23:44,760 --> 00:23:46,741 466 00:23:46,741 --> 00:23:49,170 >> Tagapagsalita 1: Putchar print sa iyong screensaver. 467 00:23:49,170 --> 00:23:50,867 468 00:23:50,867 --> 00:23:51,950 [Hindi marinig] ang character. 469 00:23:51,950 --> 00:23:54,300 At pagkatapos ay kapag ito [hindi marinig] ito ay isara ang file. 470 00:23:54,300 --> 00:23:57,370 >> Madla: Huwag mo kailangan ng isang [? tao? ?] 471 00:23:57,370 --> 00:23:59,005 >> Tagapagsalita 1: Hindi kinakailangan. 472 00:23:59,005 --> 00:24:01,480 Ibig kong sabihin, uri ng ito ay ipinahiwatig sa ito. 473 00:24:01,480 --> 00:24:06,780 Dahil ito ay nagbabalik, bagaman, hangga't bilang na ito ay hindi mahuli ito, ikaw ay multa. 474 00:24:06,780 --> 00:24:07,940 475 00:24:07,940 --> 00:24:10,250 Ibig kong sabihin ito ay marahil magandang pagsasanay na gawin ng isang tao. 476 00:24:10,250 --> 00:24:15,755 Ngunit ang isang tao ay hindi laging kinakailangan lalo na 477 00:24:15,755 --> 00:24:17,610 kung mayroon kang isang bagay tulad ng isang balik, na 478 00:24:17,610 --> 00:24:20,640 Nangangahulugan ito na sa kasong ito kung catches ito ito, ang iyong programa pupuntahan magtapos 479 00:24:20,640 --> 00:24:21,850 at hindi ito kailanman makikita makakuha upang ito. 480 00:24:21,850 --> 00:24:23,030 481 00:24:23,030 --> 00:24:29,190 Ito ay higit pa para sa mga kaso kung saan ikaw ay hindi naman bumabalik ang isang bagay. 482 00:24:29,190 --> 00:24:31,370 Dahil kung hindi ito ay pagbabalik ng anumang bagay, 483 00:24:31,370 --> 00:24:34,430 ito ay nangangahulugan na kung ito ay totoo, ang natitirang bahagi ng ito ay tumakbo pa rin. 484 00:24:34,430 --> 00:24:36,138 At sa kasong iyon, mo gusto ng mali. 485 00:24:36,138 --> 00:24:38,240 Kung ito ay bumabalik, at Pagtatapos ng iyong programa, 486 00:24:38,240 --> 00:24:41,960 isang tao ay hindi kinakailangang lahat ang oras, depende sa konteksto. 487 00:24:41,960 --> 00:24:43,084 488 00:24:43,084 --> 00:24:44,375 Jacob, ay may tanong ka? 489 00:24:44,375 --> 00:24:46,100 Madla: Oo. 490 00:24:46,100 --> 00:24:49,300 Kaya ang ginagawa fgetc makuha ang susunod na character? 491 00:24:49,300 --> 00:24:50,734 Paano gumagana taasan ang character? 492 00:24:50,734 --> 00:24:51,400 Tagapagsalita 1: Oo. 493 00:24:51,400 --> 00:24:52,774 Kaya fgetc nakakakuha ng susunod na character. 494 00:24:52,774 --> 00:24:54,140 495 00:24:54,140 --> 00:24:56,866 Maaari mong isipin na ito tulad ng C ++ sa isang katuturan. 496 00:24:56,866 --> 00:24:58,350 >> Madla: Kaya kung ano ang EOF? 497 00:24:58,350 --> 00:25:00,877 >> Tagapagsalita 1: EOF ay pagtatapos ng file. 498 00:25:00,877 --> 00:25:03,960 Ito ay lamang ng isang marker na nagbibigay-daan sa alam mo na ikaw ay nasa dulo ng iyong file. 499 00:25:03,960 --> 00:25:06,742 Kaya ito ay pagpunta sa i-print sa iyong pamantayan out. 500 00:25:06,742 --> 00:25:08,950 At pagkatapos ay ito ay pagpunta upang isara ang file kapag tapos na ito. 501 00:25:08,950 --> 00:25:10,700 At pagkatapos ay sabihin pumunta sa sa susunod na file, i-right? 502 00:25:10,700 --> 00:25:12,660 Kaya sa pangkalahatan, kung ano ang ginagawa sa programang ito? 503 00:25:12,660 --> 00:25:15,402 504 00:25:15,402 --> 00:25:16,090 >> [Hindi marinig] 505 00:25:16,090 --> 00:25:16,900 >> Tagapagsalita 1: Oo. 506 00:25:16,900 --> 00:25:18,770 Pini-print ito lamang ang lahat doon. 507 00:25:18,770 --> 00:25:23,270 Kaya kung guys nag-ginamit CAT at pagkatapos ay ang pangalan ng ilang file-- 508 00:25:23,270 --> 00:25:26,240 Hindi ko alam kung ang alinman sa kang magkaroon ng kailanman nagawa iyon sa iyong terminal. 509 00:25:26,240 --> 00:25:29,630 Ngunit kung sakaling gamitin mo ang utos CAT-- C-A-T-- 510 00:25:29,630 --> 00:25:31,880 at pagkatapos ay anumang file mayroon kang there-- ito 511 00:25:31,880 --> 00:25:37,260 Pini-print out ito sa iyong terminal, na ay maaaring maging napaka-madaling gamitin para sa ilang mga bagay. 512 00:25:37,260 --> 00:25:38,746 Gamitin ko ito ng maraming. 513 00:25:38,746 --> 00:25:40,120 Ay na magkaroon ng kahulugan sa lahat? 514 00:25:40,120 --> 00:25:41,480 515 00:25:41,480 --> 00:25:42,100 Cool? 516 00:25:42,100 --> 00:25:46,530 >> OK upang ang iyong mga gawain now-- alinman sa pamamagitan ng sa iyong sarili o sa mga tao sa buong you-- 517 00:25:46,530 --> 00:25:54,930 ay upang magsulat lamang ng simpleng programa na lamang isulat ang "Kumusta, mundo!" 518 00:25:54,930 --> 00:25:56,255 out sa isang file. 519 00:25:56,255 --> 00:26:00,215 >> [Hindi marinig] 520 00:26:00,215 --> 00:26:56,210 521 00:26:56,210 --> 00:26:57,040 >> [Hindi marinig] 522 00:26:57,040 --> 00:26:59,248 >> Tagapagsalita 1: ako ay tulad, ginawa Gagawin ko na di-wastong na noong nakaraang linggo? 523 00:26:59,248 --> 00:27:00,201 524 00:27:00,201 --> 00:27:01,492 Hindi ko naisip ito ay na masama. 525 00:27:01,492 --> 00:27:02,479 526 00:27:02,479 --> 00:27:03,520 Nagagalak akong ikaw ay ang lahat dito. 527 00:27:03,520 --> 00:27:04,655 Ito ay talagang gumagawa ako masaya. 528 00:27:04,655 --> 00:27:07,565 529 00:27:07,565 --> 00:27:10,160 Isa akong batang babae ng Simple Pleasures. 530 00:27:10,160 --> 00:27:11,688 Kong lamang kapag dumadalo ang aking seksyon. 531 00:27:11,688 --> 00:27:13,830 532 00:27:13,830 --> 00:27:18,270 Kaya ako lang ang pagkakaroon ng ganitong pagsisimula para sa mga ka guys upang maaari naming code nang magkasama. 533 00:27:18,270 --> 00:27:22,290 Hindi ko gusto ng paglalagay ng sinuman sa ang lugar maliban kung nais mong maging. 534 00:27:22,290 --> 00:27:26,486 535 00:27:26,486 --> 00:27:30,086 >> Madla: Para sa pagsusulit, gawin mayroon kaming magsulat ng isang programa? 536 00:27:30,086 --> 00:27:33,260 >> Tagapagsalita 1: Maaaring hilingin sa iyo upang isulat ang mga simpleng mga programa sa pamamagitan ng kamay. 537 00:27:33,260 --> 00:27:35,940 538 00:27:35,940 --> 00:27:36,590 Yup. 539 00:27:36,590 --> 00:27:38,510 >> Madla: pagsusulit ay sa susunod na linggo, i-right? 540 00:27:38,510 --> 00:27:40,108 >> Tagapagsalita 1: pagsusulit ay sa susunod na Miyerkules. 541 00:27:40,108 --> 00:27:40,855 542 00:27:40,855 --> 00:27:43,730 Nangangahulugan iyon na may magagandang [? CSE?] grading partido pagkatapos, na 543 00:27:43,730 --> 00:27:50,390 ay nangangahulugan makakakuha ka ng iyong mga marka pabalik na night-- sa kung anong oras? 544 00:27:50,390 --> 00:27:50,890 Sino ang nakakaalam? 545 00:27:50,890 --> 00:27:51,973 Ngunit ito ay magiging gabi na. 546 00:27:51,973 --> 00:28:02,020 547 00:28:02,020 --> 00:28:02,855 >> Lahat ng karapatan. 548 00:28:02,855 --> 00:28:04,250 Paano gusto naming simulan ito? 549 00:28:04,250 --> 00:28:07,964 550 00:28:07,964 --> 00:28:09,630 Bibigyan kita ng isang hint-- mga pagsisimula na may ito. 551 00:28:09,630 --> 00:28:11,455 >> Madla: Mayroon kang upang buksan ang isang file. 552 00:28:11,455 --> 00:28:12,250 >> Tagapagsalita 1: Oo. 553 00:28:12,250 --> 00:28:14,060 Kaya kung ano ang gusto mong itawag sa? 554 00:28:14,060 --> 00:28:16,150 Gusto mo lamang na tumawag ito "file"? 555 00:28:16,150 --> 00:28:17,480 Ay gawing madali Hayaan. 556 00:28:17,480 --> 00:28:26,752 Kaya fopen-- kung ano ang aming output pagsubok ng pagpunta sa maging? 557 00:28:26,752 --> 00:28:36,130 Tumawag ito "Hello." 558 00:28:36,130 --> 00:28:37,810 At kung ano ang aming mga mode? 559 00:28:37,810 --> 00:28:39,764 560 00:28:39,764 --> 00:28:41,055 Ano ang ginagawa namin sa file na ito? 561 00:28:41,055 --> 00:28:42,676 562 00:28:42,676 --> 00:28:43,500 >> Madla: Basahin. 563 00:28:43,500 --> 00:28:44,401 564 00:28:44,401 --> 00:28:44,900 Nagsusulat. 565 00:28:44,900 --> 00:28:46,191 Tagapagsalita 1: Sumusulat kami dito. 566 00:28:46,191 --> 00:28:47,360 567 00:28:47,360 --> 00:28:47,860 Kaibig-ibig. 568 00:28:47,860 --> 00:28:50,330 569 00:28:50,330 --> 00:28:52,860 OK, kaya kami ay ang file na ito ngayon. 570 00:28:52,860 --> 00:28:54,920 571 00:28:54,920 --> 00:28:56,212 Ano ang kailangan naming gawin? 572 00:28:56,212 --> 00:28:57,420 Madla: Tingnan kung ito ay walang bisa. 573 00:28:57,420 --> 00:28:59,820 Tagapagsalita 1: I-check kung ito ay null-- eksakto. 574 00:28:59,820 --> 00:29:01,980 Iyon ang dahilan kung ano ang gusto kong marinig. 575 00:29:01,980 --> 00:29:05,930 Iyon ay dapat na awtomatikong, lalo na halos mula sa punto sa. 576 00:29:05,930 --> 00:29:07,530 577 00:29:07,530 --> 00:29:10,950 Kung sinimulan mo ang segfaulting, malamang na Hindi suriin para sa null sa isang lugar. 578 00:29:10,950 --> 00:29:12,480 Siyam na beses sa labas ng sampung, na pagpunta sa iyong magiging error. 579 00:29:12,480 --> 00:29:15,400 Kaya kung maaari mo lamang makuha sa ugali, laging suriin kung ito ay walang bisa, 580 00:29:15,400 --> 00:29:18,150 iyong buhay ay magiging maganda at easy-- o mas madali. 581 00:29:18,150 --> 00:29:19,480 >> Kaya suriin upang makita kung ito ay walang bisa. 582 00:29:19,480 --> 00:29:21,200 583 00:29:21,200 --> 00:29:24,820 Kaya kung ito ay hindi null, na ay kung ano ang katumbas ng putok 584 00:29:24,820 --> 00:29:26,784 Hindi means-- null-- ito ay wasto. 585 00:29:26,784 --> 00:29:27,700 Ano ang gusto naming gawin? 586 00:29:27,700 --> 00:29:29,750 587 00:29:29,750 --> 00:29:31,570 Gusto lang namin na mag-print sa file na iyon, tama? 588 00:29:31,570 --> 00:29:32,923 Kaya kung ano ang gagamitin namin? 589 00:29:32,923 --> 00:29:34,092 >> Madla: Fprintf 590 00:29:34,092 --> 00:29:36,800 >> Tagapagsalita 1: Fprintf-- kaibig-ibig. 591 00:29:36,800 --> 00:29:38,150 592 00:29:38,150 --> 00:29:44,000 At fprintf tumatagal ng dalawang arguments-- kung saan ito ang nangyayari at kung ano ang gusto namin naka-print na. 593 00:29:44,000 --> 00:29:45,820 Kaya kung ano ang ang una? 594 00:29:45,820 --> 00:29:46,570 Saan ito pagpunta ay? 595 00:29:46,570 --> 00:29:47,490 >> Madla: File. 596 00:29:47,490 --> 00:29:48,785 >> Tagapagsalita 1: Ito ang nangyayari sa file na. 597 00:29:48,785 --> 00:29:49,784 598 00:29:49,784 --> 00:29:50,950 At ano ang gusto naming naka-print? 599 00:29:50,950 --> 00:29:52,900 600 00:29:52,900 --> 00:29:58,065 "Kamusta, mundo!" 601 00:29:58,065 --> 00:29:58,565 Lahat ng karapatan. 602 00:29:58,565 --> 00:30:03,670 Mayroon kaming isang huling thing-- isa pang malaking tularan dito. 603 00:30:03,670 --> 00:30:04,479 604 00:30:04,479 --> 00:30:05,145 Madla: ang Isara. 605 00:30:05,145 --> 00:30:05,853 Tagapagsalita 1: ang Isara. 606 00:30:05,853 --> 00:30:09,990 607 00:30:09,990 --> 00:30:10,540 Mayroon kang pumunta. 608 00:30:10,540 --> 00:30:13,384 >> Madla: ba ito nangyayari kung ang file ay walang bisa? 609 00:30:13,384 --> 00:30:15,050 Tagapagsalita 1: Hindi, ito ay kung hindi null. 610 00:30:15,050 --> 00:30:16,881 Madla: Oh, kung ito ay not-- OK. 611 00:30:16,881 --> 00:30:21,728 612 00:30:21,728 --> 00:30:25,410 Para sa fopen at pagkatapos ay ang dalawang mga argument na pumunta sa loob, 613 00:30:25,410 --> 00:30:27,655 kung ano ang ibig sabihin muli ang unang argumento? 614 00:30:27,655 --> 00:30:30,392 >> Tagapagsalita 1: argument ay tulad lamang ang pangalan ng file 615 00:30:30,392 --> 00:30:31,350 na nais mong pumunta sa. 616 00:30:31,350 --> 00:30:36,020 Kaya pagkatapos na ito ay nagpapatakbo, gagawin mo May ilang mga file na tinatawag na "hello" 617 00:30:36,020 --> 00:30:38,320 na may "Kamusta, mundo" sa loob nito. 618 00:30:38,320 --> 00:30:38,820 Iyon lang. 619 00:30:38,820 --> 00:30:39,500 Lamang ang pangalan. 620 00:30:39,500 --> 00:30:42,685 621 00:30:42,685 --> 00:30:48,650 >> Madla: At dahil ito ay sumusulat, ang file ay hindi kailangang mag-umiiral na. 622 00:30:48,650 --> 00:30:49,675 Iyan ba kung ano ang sinabi mo? 623 00:30:49,675 --> 00:30:50,410 >> Tagapagsalita 1: I-right. 624 00:30:50,410 --> 00:30:50,910 Mismong. 625 00:30:50,910 --> 00:30:53,110 626 00:30:53,110 --> 00:30:55,839 Kung "Kamusta" bilang isang file Hindi pa umiiral, ito ay 627 00:30:55,839 --> 00:30:58,380 pagpunta upang lumikha ng isang file na tinatawag na Kamusta "at isulat dito para sa iyo. 628 00:30:58,380 --> 00:30:59,631 629 00:30:59,631 --> 00:31:03,610 >> Madla: Kapag sinasabi mo ang programa sa nagsulat sa file, 630 00:31:03,610 --> 00:31:08,075 bakit "file" sa halip na huwag mong isulat ang pangalan ng file at fprintf-- 631 00:31:08,075 --> 00:31:13,600 >> Tagapagsalita 1: Dahil sa kasong ito, mayroon kaming na malaking FILE-- lahat sa caps-- bituin, 632 00:31:13,600 --> 00:31:14,260 -file. 633 00:31:14,260 --> 00:31:17,370 Kaya ito ay isang pointer sa file na pinag-uusapan tungkol sa. 634 00:31:17,370 --> 00:31:19,930 Ito ang paraan na sumangguni lamang namin dito. 635 00:31:19,930 --> 00:31:24,850 Kaya sa kasong ito, mo Maaari isipin file-- aha, 636 00:31:24,850 --> 00:31:31,271 maaari naming gamitin this-- file dito ay tumutukoy sa pagbubukas ng "Hello" 637 00:31:31,271 --> 00:31:32,145 at pagpapaalam nito magsulat. 638 00:31:32,145 --> 00:31:34,728 >> Madla: Puwede naming ilagay ang isang "Hello" sa halip [? ng lang?] f file? 639 00:31:34,728 --> 00:31:40,160 Tagapagsalita 1: Hindi, dahil ang "Kumusta" Kailangang maging bukas at writeable. 640 00:31:40,160 --> 00:31:41,820 641 00:31:41,820 --> 00:31:45,980 Maghain dito ay tulad ng isang designator na nagsasabing OK, namin 642 00:31:45,980 --> 00:31:49,190 Mayroon na ito file-- hello-- na kaming naghahanap sa. 643 00:31:49,190 --> 00:31:50,680 Ito ay binuksan. 644 00:31:50,680 --> 00:31:52,140 At kami ay pagpunta sa magsulat dito. 645 00:31:52,140 --> 00:31:55,130 Kung gumagamit ka lang "Hello", na encapsulated sa loob nito. 646 00:31:55,130 --> 00:31:56,846 Kaya ito ang nangyayari sa taong kakatuwa out. 647 00:31:56,846 --> 00:31:58,590 648 00:31:58,590 --> 00:32:00,300 Ibig kong sabihin, maaari mo pa na may pangalang ito. 649 00:32:00,300 --> 00:32:03,960 Maaaring nagawa mo na ang file, bituin, "Hello", ay katumbas iyon. 650 00:32:03,960 --> 00:32:07,840 Ngunit ang buong punto ay na Kailangan ng file star pointer sa pagkakasunud-sunod 651 00:32:07,840 --> 00:32:09,281 upang magawang gamitin ang mga function. 652 00:32:09,281 --> 00:32:11,280 Madla: Maaari mo bang gawin file, bituin, file, "Kamusta" 653 00:32:11,280 --> 00:32:13,113 o huwag kang magkaroon ng upang ilagay maghain ng bituin, file sa pamamagitan ng ito? 654 00:32:13,113 --> 00:32:16,330 Tagapagsalita 1: maaari mong gawin file, bituin, "Hello." 655 00:32:16,330 --> 00:32:19,790 Maaari mong baguhin ito sa anumang pangalan na nais mo. 656 00:32:19,790 --> 00:32:22,114 Ito ay lubos na di-makatwirang kung ano na ang pangalan ay. 657 00:32:22,114 --> 00:32:23,179 658 00:32:23,179 --> 00:32:24,220 Maaari mong pangalanan ito kahit ano. 659 00:32:24,220 --> 00:32:25,501 660 00:32:25,501 --> 00:32:28,020 Pangalanan ito na lumilipad spaghetti, kung nais mo. 661 00:32:28,020 --> 00:32:29,690 >> Madla: Ano ang "w" sa mga panipi para sa? 662 00:32:29,690 --> 00:32:31,540 >> Tagapagsalita 1: Ang "w" lamang ang mode ng. 663 00:32:31,540 --> 00:32:33,170 Kaya kami ay sumusulat upang ang file na ito. 664 00:32:33,170 --> 00:32:34,410 665 00:32:34,410 --> 00:32:35,320 Ang bawat tao'y magandang? 666 00:32:35,320 --> 00:32:36,227 I-clear? 667 00:32:36,227 --> 00:32:36,981 Oo. 668 00:32:36,981 --> 00:32:40,365 >> Madla: Kaya kapag nagsusulat ito sa ganitong -file, na kung saan ay pagkatapos ay nakita namin ang file na iyon? 669 00:32:40,365 --> 00:32:43,820 >> Tagapagsalita 1: Ito nasa parehong directory na iyon na kasalukuyang. 670 00:32:43,820 --> 00:32:45,650 671 00:32:45,650 --> 00:32:48,880 Kung ikaw ay nasa pset tatlong at patakbuhin mo ito, sa loob ng iyong pset 672 00:32:48,880 --> 00:32:52,600 tatlong folder ay magiging ang file na ito na tinatawag na "Hello." 673 00:32:52,600 --> 00:32:53,160 Cool? 674 00:32:53,160 --> 00:32:53,757 Ang bawat tao'y magandang? 675 00:32:53,757 --> 00:32:55,840 Nararamdaman kong ikaw ay ang lahat ng nakakakuha ito, na kung saan ay mahusay. 676 00:32:55,840 --> 00:32:57,290 677 00:32:57,290 --> 00:32:57,790 OK. 678 00:32:57,790 --> 00:33:05,960 Kaya pabalik sa aking mga slide show-- Gustung-gusto ko kapag bagay gumagana. 679 00:33:05,960 --> 00:33:08,674 OK, pointers-- Sigurado ka guys ay nasasabik? 680 00:33:08,674 --> 00:33:09,465 Pointer ay mahusay. 681 00:33:09,465 --> 00:33:11,581 682 00:33:11,581 --> 00:33:13,580 Nagsasagawa sila ng kaunting sa wrap ang iyong ulo sa paligid. 683 00:33:13,580 --> 00:33:15,288 Ito ang aking pangalawang taon payo pagtuturo. 684 00:33:15,288 --> 00:33:16,850 At sa tingin ko sa wakas ay nakuha ko ito. 685 00:33:16,850 --> 00:33:18,650 Kaya kung nagpupumilit sa iyo, OK. 686 00:33:18,650 --> 00:33:19,940 687 00:33:19,940 --> 00:33:24,070 Tulad ng sinabi ko bago, gumuhit ng mga larawan Tinutulungan ng maraming mga bagay sa CS, 688 00:33:24,070 --> 00:33:27,400 hangga't sa tingin ko ang mga tao ay may posibilidad mag-isip oh, hindi namin sa isang computer. 689 00:33:27,400 --> 00:33:28,399 Dapat naming code lamang. 690 00:33:28,399 --> 00:33:30,190 No-- mga larawan pagguhit ay talagang makakatulong sa iyo. 691 00:33:30,190 --> 00:33:32,773 At talagang ko hinihikayat ka upang mag-tap sa iyong kindergartner gilid 692 00:33:32,773 --> 00:33:35,010 at dalhin ang crayons o mga marker at ayon sa mabubunot. 693 00:33:35,010 --> 00:33:36,110 Dahil makakatulong ito sa iyo. 694 00:33:36,110 --> 00:33:39,380 At kung makakita ka sa akin sa oras ng opisina, ako ay nagdadala sa paligid ng mga stack ng papel 695 00:33:39,380 --> 00:33:41,580 may Panulat pagguhit ng mga bagay out. 696 00:33:41,580 --> 00:33:44,370 >> Kaya lalo na sa pointers-- gumuhit ng mga larawan. 697 00:33:44,370 --> 00:33:47,970 At ako bang talaga kami ng pagpunta sa maging pagguhit ng ilang mga larawan dito masyadong. 698 00:33:47,970 --> 00:33:51,270 >> Kaya lahat Nakakuha ka guys upang makita Binky, ang cool na bagay claymation. 699 00:33:51,270 --> 00:33:54,720 At sa tingin namin na ikaw talaga nakakatawa kapag siya explodes sa isang bungkos ng mga piraso. 700 00:33:54,720 --> 00:33:56,280 701 00:33:56,280 --> 00:33:57,755 Ito ang ilang comic lunas para sa klase. 702 00:33:57,755 --> 00:34:02,140 703 00:34:02,140 --> 00:34:05,900 C [hindi marinig] ang mahusay na kakayahan upang magagawang kontrolin ang memory. 704 00:34:05,900 --> 00:34:10,090 At ito ay isa sa mga bagay na talagang Ginagawang tulad ng isang malakas na wika. 705 00:34:10,090 --> 00:34:13,469 Ngunit may dakilang kapangyarihan ay mahusay na responsibilidad. 706 00:34:13,469 --> 00:34:16,230 At nakatutuwang bagay ang maaaring mangyari kung ikaw ay hindi maingat. 707 00:34:16,230 --> 00:34:18,560 Kaya kapag gumagamit ka ng mga payo, nais mong gumawa ng 708 00:34:18,560 --> 00:34:21,440 sigurado ba talagang nauunawaan mo nang eksakto kung ano ang iyong ginagawa. 709 00:34:21,440 --> 00:34:25,530 Sana sa susunod kaunting oras ay tutulong sa talagang nauunawaan mo 710 00:34:25,530 --> 00:34:27,850 mga payo, kung paano gamitin ang mga ito, at kung paano upang manipulahin ang mga ito. 711 00:34:27,850 --> 00:34:29,170 712 00:34:29,170 --> 00:34:33,460 >> Kaya memory-- Ako ba na hindi namin Nakita diagram na ito dati. 713 00:34:33,460 --> 00:34:38,540 Kaya ito ay lamang ng isang simpleng diagram ng kung paano ang mga bagay ay maaaring naka-imbak sa memorya. 714 00:34:38,540 --> 00:34:43,145 Kaya ikaw ay may isa lamang ang mga malaking array ng mga bloke ng isang byte 715 00:34:43,145 --> 00:34:46,000 ay kung ano ang mayroon kaming here-- bahagyang mga palugit sa pamamagitan ng isa sa bawat oras. 716 00:34:46,000 --> 00:34:51,810 Ito ay sa hex [hindi marinig] kaya walong-bit na mga bloke. 717 00:34:51,810 --> 00:34:55,510 At ang bawat bloke ay nauugnay na may ilang hexadecimal address. 718 00:34:55,510 --> 00:34:58,750 Kaya kung sakaling makita mo ang 0x, na lamang notating 719 00:34:58,750 --> 00:35:00,670 na ito ay isang hexadecimal address. 720 00:35:00,670 --> 00:35:03,970 Maaari mong angkinin ang ibig sabihin nito ang ilang mga address sa memorya. 721 00:35:03,970 --> 00:35:06,935 Kami ay pakikipag-usap tungkol sa memory address sa tuwing nakikita mo sa hexadecimal. 722 00:35:06,935 --> 00:35:10,420 723 00:35:10,420 --> 00:35:14,630 >> Mayroon kaming ints mga variable, sa kamay ay mga variable na nag-iimbak. 724 00:35:14,630 --> 00:35:16,260 Kaya ints store ints. 725 00:35:16,260 --> 00:35:17,430 Sa kamay ng tindahan sa kamay. 726 00:35:17,430 --> 00:35:20,260 Kaya mayroon rin kaming mga payo na nag-iimbak ng memory address. 727 00:35:20,260 --> 00:35:21,660 Iyon ay isang uri ng pagma-map. 728 00:35:21,660 --> 00:35:24,240 Pointer ay eksklusibo para sa memory address. 729 00:35:24,240 --> 00:35:25,780 730 00:35:25,780 --> 00:35:27,292 Kaya na tulad ng iyong uri doon. 731 00:35:27,292 --> 00:35:29,550 732 00:35:29,550 --> 00:35:34,470 Ang iyong appliance ay 32-bit, na nangangahulugan na ang iyong memorya address ay apat na bytes. 733 00:35:34,470 --> 00:35:37,830 Kaya ang anumang pointer na mayroon ka Mawawala din na maging apat na bytes. 734 00:35:37,830 --> 00:35:43,200 O kaya kung ito ay apat na bytes, memorya ay apat na bytes. 735 00:35:43,200 --> 00:35:44,790 Mga Pointer tindahan ng memory. 736 00:35:44,790 --> 00:35:46,430 Samakatuwid, ang mga ito ay apat na bytes. 737 00:35:46,430 --> 00:35:48,460 Gusto lang Cool-- para mapalakas iyon. 738 00:35:48,460 --> 00:35:50,120 739 00:35:50,120 --> 00:35:52,220 >> Dapat mong makuha ang comic ngayon. 740 00:35:52,220 --> 00:35:55,040 Hindi ko alam kung paano marami sa inyo ay xkcd tagahanga, ngunit mahal ko xkcd. 741 00:35:55,040 --> 00:35:55,780 Ito ay mahusay na. 742 00:35:55,780 --> 00:35:57,290 743 00:35:57,290 --> 00:35:57,790 >> Lahat ng karapatan. 744 00:35:57,790 --> 00:36:01,640 Kaya paglikha pointers-- ng sinabi ko ito, halos gusto lamang ng ano pa man. 745 00:36:01,640 --> 00:36:02,930 Mayroon kang isang uri. 746 00:36:02,930 --> 00:36:04,050 Mayroon kang isang pangalan. 747 00:36:04,050 --> 00:36:04,810 Mag-right? 748 00:36:04,810 --> 00:36:10,410 Iyon ay kung ano ang mayroon kami doon. [? Hex?] Bituin ay nangangahulugan na ito ay isang pointer, 749 00:36:10,410 --> 00:36:12,250 at pagkatapos ay anumang nais mong tawagan ito. 750 00:36:12,250 --> 00:36:15,770 Kaya ay kumakatawan sa uri ano ang maaari mong mag-imbak. 751 00:36:15,770 --> 00:36:16,850 752 00:36:16,850 --> 00:36:17,990 Ang lahat ng mga karapatan? 753 00:36:17,990 --> 00:36:24,350 Sa parehong paraan na kung gagawin namin ints, alam namin kami nag-iimbak ng isang int doon. 754 00:36:24,350 --> 00:36:25,990 755 00:36:25,990 --> 00:36:30,280 Sa isang pointer, ito Taglay ng memory address. 756 00:36:30,280 --> 00:36:34,240 Ngunit ano ang ibig sabihin nito ay that-- narito ang kung saan isang guhit ay pagpunta sa darating sa madaling-gamiting. 757 00:36:34,240 --> 00:36:36,170 758 00:36:36,170 --> 00:36:45,980 Kaya sa kasong ito, mayroon kaming ilang value-- ipaalam sabihin ng apat. 759 00:36:45,980 --> 00:36:49,306 Apat ay sa address na isa. 760 00:36:49,306 --> 00:36:49,805 OK? 761 00:36:49,805 --> 00:36:51,550 762 00:36:51,550 --> 00:36:56,170 >> Ang unang isa dito ay nangangahulugang na ito ay isang pointer 2x. 763 00:36:56,170 --> 00:36:56,740 Mag-right? 764 00:36:56,740 --> 00:36:57,628 Ito ay ilang mga pointer x. 765 00:36:57,628 --> 00:36:58,852 766 00:36:58,852 --> 00:37:00,940 x ay maaaring maging isang bagay, kahit ano. 767 00:37:00,940 --> 00:37:01,960 768 00:37:01,960 --> 00:37:05,130 Anuman x is-- sabihin x ay apat. 769 00:37:05,130 --> 00:37:07,280 Ito ay pagpunta upang mag-imbak ang memory address dito. 770 00:37:07,280 --> 00:37:12,260 Kaya int, bituin, x-- ito ilang iba pang mga puwang sa memory-- 771 00:37:12,260 --> 00:37:13,590 na nakakaalam kung ano ito ay. 772 00:37:13,590 --> 00:37:15,430 Ngunit ito ay pagpunta upang mag-imbak ng address dito. 773 00:37:15,430 --> 00:37:27,040 Kaya ito ay magiging like-- sa kasong ito, Anuman, 774 00:37:27,040 --> 00:37:32,630 ay naka-imbak sa 0x1-- anumang ay naka-imbak sa address na hold ang aming pointer, 775 00:37:32,630 --> 00:37:35,280 May upang tumugma sa up gamit kung ano ang itinalagang namin. 776 00:37:35,280 --> 00:37:40,330 Kaya sa 0x1, sa kasong ito, ito ay x. 777 00:37:40,330 --> 00:37:42,500 778 00:37:42,500 --> 00:37:49,340 Ito ay maaari lamang kailanman maging isang int habang ginagamit namin ito. 779 00:37:49,340 --> 00:37:52,950 >> Katulad nito, kung kami ay isa pang 1t, kahit ano 780 00:37:52,950 --> 00:37:59,130 address na ito ay naka-imbak sa isang y ay maging isang char-- parehong bagay sa z. 781 00:37:59,130 --> 00:38:05,840 Sa katulad na paraan, sa tuwing nag subukan at gawin intx katumbas ng 0.4, 782 00:38:05,840 --> 00:38:09,275 ito ay pagpunta sa sumigaw sa iyo at maging tulad ng hindi, sinabi mo na gusto mo sa isang int. 783 00:38:09,275 --> 00:38:10,525 Ito ay dapat na maging isang int. 784 00:38:10,525 --> 00:38:11,900 Ihinto ang sinusubukan upang gawin itong isang float. 785 00:38:11,900 --> 00:38:14,150 >> Kaya ipaalam sa mga bagay na maging kung ano ang gusto nilang maging. 786 00:38:14,150 --> 00:38:15,159 787 00:38:15,159 --> 00:38:16,200 Hayaan ang mga bagay na kanilang sarili. 788 00:38:16,200 --> 00:38:19,380 789 00:38:19,380 --> 00:38:23,450 Kaya sisikat lamang kahit anong uri ng pointer 790 00:38:23,450 --> 00:38:26,101 ito ay, na ang tanging bagay na maaari mong iimbak doon. 791 00:38:26,101 --> 00:38:26,600 OK? 792 00:38:26,600 --> 00:38:27,910 793 00:38:27,910 --> 00:38:31,160 Sa pagsasagawa, tulad ng sa noong nakaraang linggo, lahat 794 00:38:31,160 --> 00:38:32,817 Mukhang talagang uri ng abstract. 795 00:38:32,817 --> 00:38:34,150 Kami ay pagpunta sa gawin ang ilang mga kasanayan. 796 00:38:34,150 --> 00:38:36,760 Dapat itong gawing mas kahulugan. 797 00:38:36,760 --> 00:38:44,580 >> Kaya tumutukoy at dereferencing-- ito talagang mahalaga upang makuha ang mga matuwid. 798 00:38:44,580 --> 00:38:46,630 Mayroon akong pa upang i-refresh bawat ngayon at pagkatapos. 799 00:38:46,630 --> 00:38:48,450 At ako tulad ng paghihintay, kung alin ang ko nais? 800 00:38:48,450 --> 00:38:56,080 Kaya ang ampersand ang talagang bigyan ang reference o address ng. 801 00:38:56,080 --> 00:39:00,100 Kaya nagbalik ito ang address sa memorya ng na variable ay naka-imbak. 802 00:39:00,100 --> 00:39:01,170 803 00:39:01,170 --> 00:39:07,020 Kaya ito ay pagpunta sa aktwal na bumalik sa iyo ng hexadecimal, samantalang dereferencing ito 804 00:39:07,020 --> 00:39:10,641 ay talagang pagpunta sa magbibigay sa iyo ng ang data na nakaimbak doon. 805 00:39:10,641 --> 00:39:11,140 OK? 806 00:39:11,140 --> 00:39:12,680 807 00:39:12,680 --> 00:39:16,060 Kaya kami ay pagpunta sa tumingin sa isang halimbawa Talagang mabilis, o talagang hanggang sa susunod. 808 00:39:16,060 --> 00:39:18,050 809 00:39:18,050 --> 00:39:19,150 >> OK. 810 00:39:19,150 --> 00:39:21,790 Kaya mayroon kaming mag-isip talaga mabuti ang tungkol na ito. 811 00:39:21,790 --> 00:39:23,860 Kaya dito mayroon kaming ilang mga integer x. 812 00:39:23,860 --> 00:39:26,485 Pupunta ako sa subukan at gumuhit ito out sa abot ng aking kakayahan. 813 00:39:26,485 --> 00:39:30,230 814 00:39:30,230 --> 00:39:32,410 Kaya kami ay pagpunta sa may ito slot x. 815 00:39:32,410 --> 00:39:35,850 816 00:39:35,850 --> 00:39:37,315 At ito ay ang pag-iimbak ng limang. 817 00:39:37,315 --> 00:39:38,640 818 00:39:38,640 --> 00:39:40,090 Nito address ay 0x4. 819 00:39:40,090 --> 00:39:41,920 820 00:39:41,920 --> 00:39:43,160 Cool? 821 00:39:43,160 --> 00:39:44,100 Ang lahat ng mabuti. 822 00:39:44,100 --> 00:39:45,470 >> Kaya ngayon ay mayroon kaming na ito pointer. 823 00:39:45,470 --> 00:39:46,916 824 00:39:46,916 --> 00:39:47,990 Ito ay higit sa dito. 825 00:39:47,990 --> 00:39:52,130 826 00:39:52,130 --> 00:39:57,560 At ang mga ampersand ay nagbibigay sa amin ang address ng isang bagay. 827 00:39:57,560 --> 00:40:00,780 Kaya, sa kasong ito, ang address ng x. 828 00:40:00,780 --> 00:40:01,875 Ano ang address ng x? 829 00:40:01,875 --> 00:40:05,660 830 00:40:05,660 --> 00:40:12,590 04-- at ang pointer ay nasa 0x08. 831 00:40:12,590 --> 00:40:14,490 832 00:40:14,490 --> 00:40:14,990 Cool? 833 00:40:14,990 --> 00:40:16,570 834 00:40:16,570 --> 00:40:21,570 Kaya maaari mong isipin ang tungkol na ito pointer, 04, tumuturo ng higit lamang sa dito. 835 00:40:21,570 --> 00:40:22,840 836 00:40:22,840 --> 00:40:25,740 At sila ay tinatawag na mga payo dahil bilang makakakuha tayo ng higit pa sa na ito, 837 00:40:25,740 --> 00:40:28,450 na iyong pupuntahan upang makita na tumuturo sa mga bagay. 838 00:40:28,450 --> 00:40:31,470 At isang bloke na tumuturo sa isa pang bloke ay gumawa ng maraming higit pang mga kahulugan. 839 00:40:31,470 --> 00:40:32,760 840 00:40:32,760 --> 00:40:33,890 Kaya narito ang dalawang. 841 00:40:33,890 --> 00:40:38,230 At pagkatapos ay mayroon kaming ilang mga kopya, na kung saan ay what-- 0x0c. 842 00:40:38,230 --> 00:40:41,290 843 00:40:41,290 --> 00:40:43,420 At ito pagpunta sa dereference aming pointer. 844 00:40:43,420 --> 00:40:46,790 >> Kaya kung ano ang sinasabi ay OK, narito ang aming pointer. 845 00:40:46,790 --> 00:40:53,090 Ang halaga nito ay nag-iimbak ng 0x04, At kung ano ang ito sinasabi ay pupunta sa address na ito 846 00:40:53,090 --> 00:40:54,300 at sabihin sa akin kung ano ang sa dito. 847 00:40:54,300 --> 00:40:55,520 848 00:40:55,520 --> 00:40:57,710 Kaya na epektibong kung ano ang arrow ay ginagawa. 849 00:40:57,710 --> 00:40:58,750 850 00:40:58,750 --> 00:41:01,280 Maaari mong isipin na ito tulad ng iyong mga bituin. 851 00:41:01,280 --> 00:41:05,410 Kaya OK, kapag ginagawa namin star, nangangahulugan itong sundin. 852 00:41:05,410 --> 00:41:06,810 Pumunta sa address na ito. 853 00:41:06,810 --> 00:41:11,430 At iyon ang isa lamang sumusunod na lamang ang arrow sa memory tipak. 854 00:41:11,430 --> 00:41:15,380 At bigyan kami kung ano ang nasa loob nito, na kung saan ay 5. 855 00:41:15,380 --> 00:41:18,840 Ito ang dahilan kung bakit ang aming mga kopya ay katumbas ng 5. 856 00:41:18,840 --> 00:41:20,120 Ay na magkaroon ng kahulugan? 857 00:41:20,120 --> 00:41:22,769 Kailangan ba ako upang pumunta sa pamamagitan ng na muli, o mas mabagal? 858 00:41:22,769 --> 00:41:24,560 Gusto mo sa akin upang pumunta sa pamamagitan nito nang isa pang beses? 859 00:41:24,560 --> 00:41:25,060 OK. 860 00:41:25,060 --> 00:41:27,549 861 00:41:27,549 --> 00:41:28,840 Kami ay pagpunta sa redraw itong muli. 862 00:41:28,840 --> 00:41:31,930 863 00:41:31,930 --> 00:41:37,205 Kapag sinimulan namin, namin ang lahat ng sumang-ayon kami ay ilang tipak ng memorya na ang isang variable 864 00:41:37,205 --> 00:41:40,890 x na itinakda namin katumbas ng 5. 865 00:41:40,890 --> 00:41:42,910 Hindi namin kontrolin kung saan ito ay nasa memory. 866 00:41:42,910 --> 00:41:45,520 Kaya ito lugar lamang nagkataon itinalaga. 867 00:41:45,520 --> 00:41:47,770 868 00:41:47,770 --> 00:41:48,731 Magandang doon? 869 00:41:48,731 --> 00:41:49,230 OK. 870 00:41:49,230 --> 00:41:50,420 871 00:41:50,420 --> 00:41:53,330 Pagkatapos initialize kami ng pointer sa isang int. 872 00:41:53,330 --> 00:41:56,900 Iyon ang dahilan kung bakit ito pinapayagan upang tumuro sa x dahil mayroon kaming isang int in dito. 873 00:41:56,900 --> 00:42:00,840 Mayroon kaming isa pang tipak ng memory dahil ang pointer 874 00:42:00,840 --> 00:42:03,485 ay isang variable na tulad ng ano pa man. 875 00:42:03,485 --> 00:42:06,615 Nagkataon Ito ay nakatalaga ilang espasyo sa memory. 876 00:42:06,615 --> 00:42:07,630 877 00:42:07,630 --> 00:42:10,830 At kung ano ito ay nag-iimbak ang address ng x. 878 00:42:10,830 --> 00:42:13,200 Ampersand nangangahulugan address ng x. 879 00:42:13,200 --> 00:42:14,575 Kaya kung ano ay ang address ng x? 880 00:42:14,575 --> 00:42:19,179 881 00:42:19,179 --> 00:42:20,614 >> Madla: Ito ay zero-- 882 00:42:20,614 --> 00:42:21,280 Tagapagsalita 1: 0x04. 883 00:42:21,280 --> 00:42:24,350 884 00:42:24,350 --> 00:42:25,940 Kaya then-- huli. 885 00:42:25,940 --> 00:42:30,650 Mayroon kaming muli ng ilang copy-- isa lamang variable. 886 00:42:30,650 --> 00:42:32,520 Kaya ni magtalaga ng ilang di-makatwirang lugar ipaalam. 887 00:42:32,520 --> 00:42:35,260 888 00:42:35,260 --> 00:42:38,080 At namin dereference aming pointer. 889 00:42:38,080 --> 00:42:42,490 Star Ang ibig sabihin pumunta sa address na naka-imbak sa aking pointer. 890 00:42:42,490 --> 00:42:44,480 Sabihin mo sa akin kung ano ang doon. 891 00:42:44,480 --> 00:42:47,290 Kaya sa address na naka-imbak sa aming pointer ay 0x04. 892 00:42:47,290 --> 00:42:49,070 893 00:42:49,070 --> 00:42:51,310 Kaya pumunta kami sa address na iyon. 894 00:42:51,310 --> 00:42:52,402 895 00:42:52,402 --> 00:42:54,590 Ito ay tumuturo sa address na iyon. 896 00:42:54,590 --> 00:42:57,481 Ano ang nasa loob sa block na ito memory? 897 00:42:57,481 --> 00:42:57,980 Ito ay isang limang. 898 00:42:57,980 --> 00:42:59,210 899 00:42:59,210 --> 00:43:01,650 Kaya na kung ano ang namin magtalaga ng aming mga kopya. 900 00:43:01,650 --> 00:43:03,430 901 00:43:03,430 --> 00:43:04,860 Ang bawat tao'y magandang? 902 00:43:04,860 --> 00:43:05,360 Ayos. 903 00:43:05,360 --> 00:43:07,010 904 00:43:07,010 --> 00:43:08,330 Again-- mga larawan. 905 00:43:08,330 --> 00:43:19,750 906 00:43:19,750 --> 00:43:25,200 >> Kaya sa pagsubaybay sa mga halaga here-- ako pagpunta sa ipaalam sa iyo guys isipin ang tungkol na ito. 907 00:43:25,200 --> 00:43:26,550 908 00:43:26,550 --> 00:43:27,750 Maaari naming gumuhit ng isa pang larawan. 909 00:43:27,750 --> 00:43:31,260 Ngunit nais ko sa iyo upang subukan at dahilan sa pamamagitan ng sa iyong sariling para sa isang minuto. 910 00:43:31,260 --> 00:44:01,430 911 00:44:01,430 --> 00:44:04,149 >> Dahil hindi sila nag bigyan amin ang isang halimbawa address, 912 00:44:04,149 --> 00:44:06,940 Lamang ako ng pagpunta sa gawin ampersand x-- na kung saan ay dapat makatulong sa humimok ito sa bahay. 913 00:44:06,940 --> 00:44:07,950 Ampersand nangangahulugan address. 914 00:44:07,950 --> 00:44:09,540 915 00:44:09,540 --> 00:44:12,360 >> Kaya sa unang isa, lahat ng tao pumunta sa unang linya. 916 00:44:12,360 --> 00:44:15,690 Ang ilang mga x hanay ng five-- ilang random na puwang sa memorya. 917 00:44:15,690 --> 00:44:17,660 918 00:44:17,660 --> 00:44:23,200 Int star pointer ay katumbas sa address ng x, tama? 919 00:44:23,200 --> 00:44:28,180 Int star pointer ay lumilikha sa block na ito, tawag ito pointer, 920 00:44:28,180 --> 00:44:30,650 at nagtatalaga ito sa address ng x. 921 00:44:30,650 --> 00:44:32,750 922 00:44:32,750 --> 00:44:34,230 Ako ay kahila-hilakbot sa mga ampersand. 923 00:44:34,230 --> 00:44:36,460 924 00:44:36,460 --> 00:44:40,550 >> Ngayon kung ano ang aming ginagawa ay sabihin namin OK, dereference aming pointer. 925 00:44:40,550 --> 00:44:42,760 Kaya pumunta kami OK, kung ano ang sa aming pointer? 926 00:44:42,760 --> 00:44:44,820 Ito ay ampersand x. 927 00:44:44,820 --> 00:44:49,400 Pumunta sa ampersand x at reassign ito. 928 00:44:49,400 --> 00:44:51,620 929 00:44:51,620 --> 00:44:57,480 >> Kaya ngayon, ampersand x ay magiging 35. 930 00:44:57,480 --> 00:45:01,540 931 00:45:01,540 --> 00:45:05,174 Kaya talaga, kapag handa ka dereferencing, pumunta ka sa OK. 932 00:45:05,174 --> 00:45:07,090 Na iyong pupuntahan ay pagguhit mga larawan na tulad nito. 933 00:45:07,090 --> 00:45:09,423 Na iyong pupuntahan ay pagguhit ang iyong mga arrow sa kung saan ito ay. 934 00:45:09,423 --> 00:45:16,030 Kaya pumunta sa ang puwang sa memorya at alinman sa bigyan ako ng halagang iyon pabalik, o baguhin ito. 935 00:45:16,030 --> 00:45:21,620 Sa kasong ito, dahil kami sa ito halaga, kami ay nagtatalaga ito upang maging 35. 936 00:45:21,620 --> 00:45:24,700 Sapagkat sa huling isa, kung napansin mo, kami 937 00:45:24,700 --> 00:45:27,680 ay nagtatalaga kung ano ang in dito sa ibang bagay. 938 00:45:27,680 --> 00:45:30,450 939 00:45:30,450 --> 00:45:32,245 >> Kaya ang mga ito ay kahanga-hangang talahanayan na ito. 940 00:45:32,245 --> 00:45:35,000 941 00:45:35,000 --> 00:45:36,890 Hindi na masama. 942 00:45:36,890 --> 00:45:37,970 Ikaw guys gumana ito. 943 00:45:37,970 --> 00:45:39,640 Pupunta ako sa maglabas ito sa board. 944 00:45:39,640 --> 00:45:41,306 Kami ay pagpunta sa itong punan magkasama, OK? 945 00:45:41,306 --> 00:45:42,290 946 00:45:42,290 --> 00:45:45,530 Kaya grab ang ilang mga papel, mang-agaw isang kasosyo, magsisimulang gumana. 947 00:45:45,530 --> 00:45:53,897 948 00:45:53,897 --> 00:45:55,605 Pupunta ako upang makakuha ng isang mas malaking piraso ng tisa. 949 00:45:55,605 --> 00:45:56,624 950 00:45:56,624 --> 00:45:58,150 Dahil ito ay magiging ng maraming. 951 00:45:58,150 --> 00:45:59,410 952 00:45:59,410 --> 00:45:59,910 OK. 953 00:45:59,910 --> 00:48:08,567 954 00:48:08,567 --> 00:48:09,150 Propesor: OK. 955 00:48:09,150 --> 00:48:11,599 956 00:48:11,599 --> 00:48:12,890 Magsimula tayo sa unang hilera Hayaan. 957 00:48:12,890 --> 00:48:14,070 958 00:48:14,070 --> 00:48:16,970 Sisimulan naming doon, pagkatapos mo guys Maaari siguro gumagana sa pamamagitan ng ilang higit pa. 959 00:48:16,970 --> 00:48:17,870 OK. 960 00:48:17,870 --> 00:48:19,810 isang katumbas ng beses b c kaya kung ano ang isang? 961 00:48:19,810 --> 00:48:21,420 962 00:48:21,420 --> 00:48:23,260 Ito ay hindi isang kahanga-hangang gawa tanong, nangangako ako. 963 00:48:23,260 --> 00:48:24,440 >> MAG-AARAL: 4 na beses 5. 964 00:48:24,440 --> 00:48:25,420 >> Propesor: 4 na beses 5. 965 00:48:25,420 --> 00:48:25,920 20. 966 00:48:25,920 --> 00:48:26,730 Kaya kung ano ang b? 967 00:48:26,730 --> 00:48:27,921 968 00:48:27,921 --> 00:48:28,420 MAG-AARAL: 4. 969 00:48:28,420 --> 00:48:30,204 970 00:48:30,204 --> 00:48:31,043 >> Propesor: At c? 971 00:48:31,043 --> 00:48:31,542 MAG-AARAL: 5. 972 00:48:31,542 --> 00:48:32,083 Propesor: 5. 973 00:48:32,083 --> 00:48:35,960 At pagkatapos na ito ay pupunta lamang sa ay isang ampersand, ampersand b, 974 00:48:35,960 --> 00:48:38,575 ampersand c, tama? 975 00:48:38,575 --> 00:48:39,728 976 00:48:39,728 --> 00:48:40,596 Hindi masama. 977 00:48:40,596 --> 00:48:42,081 Ito ay simple sapat. 978 00:48:42,081 --> 00:48:42,580 OK. 979 00:48:42,580 --> 00:48:44,300 Kaya sa susunod na isa. 980 00:48:44,300 --> 00:48:48,725 Ang katumbas ng isang beses c, sa kasong sinuman ay pamilyar sa mga iyon. 981 00:48:48,725 --> 00:48:49,812 982 00:48:49,812 --> 00:48:53,300 Ay lahat pamilyar may mga oras ay katumbas? 983 00:48:53,300 --> 00:49:00,105 OK, lahat ng ito means-- ito shorthand para sa isang katumbas ng isang beses c. 984 00:49:00,105 --> 00:49:04,840 Maaari mo rin itong gawin sa dibisyong ito, sa karagdagan, may mga pagbabawas. 985 00:49:04,840 --> 00:49:12,130 Maaari mong gawin ang isang equals, o ng plus ay katumbas ng c ay nangangahulugang isang katumbas ng plus c, ng minus katumbas 986 00:49:12,130 --> 00:49:15,190 c ay magiging isang katumbas ng minus c. 987 00:49:15,190 --> 00:49:16,690 Ito ay lang sintaktik asukal. 988 00:49:16,690 --> 00:49:19,380 989 00:49:19,380 --> 00:49:24,140 >> Kaya, sa kasong ito, ang isang ay katumbas ng isang beses c ay magbibigay sa amin kung ano? 990 00:49:24,140 --> 00:49:25,910 991 00:49:25,910 --> 00:49:28,186 Muli, hindi isang kahanga-hangang gawa tanong. 992 00:49:28,186 --> 00:49:28,965 >> MAG-AARAL: 100. 993 00:49:28,965 --> 00:49:29,300 >> Propesor: 100. 994 00:49:29,300 --> 00:49:30,383 Anumang bagay Mababago ba? 995 00:49:30,383 --> 00:49:31,790 996 00:49:31,790 --> 00:49:32,290 Hindi. 997 00:49:32,290 --> 00:49:37,380 998 00:49:37,380 --> 00:49:39,850 Siguro ako ay sa wakas makakuha ng mas mahusay sa aking mga ampersand. 999 00:49:39,850 --> 00:49:42,047 >> MAG-AARAL: OK, paumanhin, kung paano nag ka kumuha ng 100? 1000 00:49:42,047 --> 00:49:42,630 Propesor: OK. 1001 00:49:42,630 --> 00:49:46,594 Kaya ng ay katumbas sa isang c beses, kaya isang beses c. 1002 00:49:46,594 --> 00:49:48,510 MAG-AARAL: Oh, gumagamit ka ng ng para sa previous-- 1003 00:49:48,510 --> 00:49:49,135 Propesor: Oo. 1004 00:49:49,135 --> 00:49:51,450 Kaya ito ay ang aming pinaka-kamakailang mga halaga. 1005 00:49:51,450 --> 00:49:53,990 Ang mga ito ay kung ano ang dapat mong maging paggamit bilang ilipat namin pababa, OK. 1006 00:49:53,990 --> 00:49:57,290 1007 00:49:57,290 --> 00:50:01,520 Kaya, b ay ang tanging pagbabago bagay, tama? 1008 00:50:01,520 --> 00:50:02,910 Kaya ipaalam punan sa lahat ng iba pa. 1009 00:50:02,910 --> 00:50:09,110 1010 00:50:09,110 --> 00:50:11,330 B. Ano ang pagpunta b upang maging? 1011 00:50:11,330 --> 00:50:13,020 1012 00:50:13,020 --> 00:50:14,140 Upang maging o hindi maging. 1013 00:50:14,140 --> 00:50:18,680 1014 00:50:18,680 --> 00:50:20,240 Kaya kung ano ang ginagawa ay? 1015 00:50:20,240 --> 00:50:21,605 Ano ang bituin pa ginagawa? 1016 00:50:21,605 --> 00:50:23,280 1017 00:50:23,280 --> 00:50:25,350 >> MAG-AARAL: Kodigo sa lokasyon ng pa. 1018 00:50:25,350 --> 00:50:26,390 1019 00:50:26,390 --> 00:50:27,480 >> MAG-AARAL: Hindi, hindi pa. 1020 00:50:27,480 --> 00:50:29,470 Kaya ito ay isang d sanggunian. 1021 00:50:29,470 --> 00:50:31,580 >> MAG-AARAL: Kaya b ay kamay halaga ng pa. 1022 00:50:31,580 --> 00:50:37,340 >> Propesor: Oo, kaya pa ay ang address ng isang, i-right? 1023 00:50:37,340 --> 00:50:42,430 Kaya ito ay nagsasabi pumunta sa kung saan ang ay naka-imbak at bigyan ito ng halaga na iyon. 1024 00:50:42,430 --> 00:50:43,884 Kaya kung ano ay b? 1025 00:50:43,884 --> 00:50:44,425 MAG-AARAL: 100. 1026 00:50:44,425 --> 00:50:46,534 Propesor: 100. 1027 00:50:46,534 --> 00:50:47,450 Perpekto. 1028 00:50:47,450 --> 00:50:49,879 OK, kaya pc ay kung ano ang pagbabago. 1029 00:50:49,879 --> 00:50:51,170 Lahat ng iba pa ay mananatiling pareho. 1030 00:50:51,170 --> 00:50:57,160 1031 00:50:57,160 --> 00:50:58,620 Ano ang pagpunta pc upang maging? 1032 00:50:58,620 --> 00:51:00,770 1033 00:51:00,770 --> 00:51:01,580 Simple pagtatalaga. 1034 00:51:01,580 --> 00:51:03,520 1035 00:51:03,520 --> 00:51:05,990 Pc ay katumbas pa, at ano ang pa? 1036 00:51:05,990 --> 00:51:07,049 >> MAG-AARAL: ampersand ng. 1037 00:51:07,049 --> 00:51:07,840 Propesor: Perpekto. 1038 00:51:07,840 --> 00:51:09,490 1039 00:51:09,490 --> 00:51:10,740 Ngayon kami ay nakakakuha ng mga kawili-wiling. 1040 00:51:10,740 --> 00:51:12,310 1041 00:51:12,310 --> 00:51:15,230 OK, masira ng isang ito down na ipaalam. 1042 00:51:15,230 --> 00:51:21,110 Una, kung ano ang mga oras b c, dahil iyon ang madaling bahagi ng isang ito, i-right? 1043 00:51:21,110 --> 00:51:22,360 Beses B c is-- 1044 00:51:22,360 --> 00:51:23,320 >> MAG-AARAL: 500. 1045 00:51:23,320 --> 00:51:28,880 >> Propesor: Oo, kaya kung ano ang isang ito ay ang paggawa, 1046 00:51:28,880 --> 00:51:33,705 kung ito ay bituin PB, ano ang pagbabago? 1047 00:51:33,705 --> 00:51:35,320 1048 00:51:35,320 --> 00:51:37,242 >> MAG-AARAL: Ano sa the-- 1049 00:51:37,242 --> 00:51:38,200 Propesor: Ano ang nasa b? 1050 00:51:38,200 --> 00:51:41,340 MAG-AARAL: Ano sa puwang na PB ay tumuturo sa. 1051 00:51:41,340 --> 00:51:43,406 Propesor: At PB nakaturo to-- 1052 00:51:43,406 --> 00:51:43,905 MAG-AARAL: B. 1053 00:51:43,905 --> 00:51:46,740 Propesor: B. Kaya ang tanging bagay na pagbabago ay b, i-right. 1054 00:51:46,740 --> 00:51:50,800 Kaya b ulit c, 500. 1055 00:51:50,800 --> 00:51:52,367 Kaya iyon ang mga pagbabago ngayon. 1056 00:51:52,367 --> 00:51:59,091 1057 00:51:59,091 --> 00:51:59,590 Ayos. 1058 00:51:59,590 --> 00:52:00,340 1059 00:52:00,340 --> 00:52:00,840 Kaibig-ibig. 1060 00:52:00,840 --> 00:52:01,905 Ikaw guys ang ginagawa ng mahusay. 1061 00:52:01,905 --> 00:52:03,650 1062 00:52:03,650 --> 00:52:06,740 Ang lahat ng mga karapatan, breaking ang isang ito pababa. 1063 00:52:06,740 --> 00:52:08,050 1064 00:52:08,050 --> 00:52:09,630 C ay nagbabago, tama? 1065 00:52:09,630 --> 00:52:11,530 Kaya maaari naming punan ang lahat ng iba pa. 1066 00:52:11,530 --> 00:52:12,540 1067 00:52:12,540 --> 00:52:13,205 Tingnan natin Hayaan. 1068 00:52:13,205 --> 00:52:19,125 1069 00:52:19,125 --> 00:52:19,625 OK. 1070 00:52:19,625 --> 00:52:21,420 1071 00:52:21,420 --> 00:52:24,740 Alam namin na ang c ay magiging sa produkto ng dalawang numero, i-right? 1072 00:52:24,740 --> 00:52:26,290 1073 00:52:26,290 --> 00:52:27,980 Ano ang dalawang numero, bagaman? 1074 00:52:27,980 --> 00:52:28,970 >> MAG-AARAL: Ang isang at c? 1075 00:52:28,970 --> 00:52:31,930 >> Propesor: Kaya isang ay karapatan para sa unang isa. 1076 00:52:31,930 --> 00:52:34,385 Kaya kami d na tumutukoy p ng, tama? 1077 00:52:34,385 --> 00:52:35,390 1078 00:52:35,390 --> 00:52:42,870 P ng isang punto sa isang, upang malaman namin na ito ay magiging 100 beses kung ano? 1079 00:52:42,870 --> 00:52:46,232 Times kung ano ang ginagawa pc punto upang? 1080 00:52:46,232 --> 00:52:47,410 1081 00:52:47,410 --> 00:52:48,740 Mga puntos sa isang. 1082 00:52:48,740 --> 00:52:55,038 Kaya 100 beses 100 ay 10,000. 1083 00:52:55,038 --> 00:52:56,170 Sinusuportahan ba na saysay? 1084 00:52:56,170 --> 00:52:57,640 1085 00:52:57,640 --> 00:52:58,200 Ayos. 1086 00:52:58,200 --> 00:53:00,500 Home kahabaan, guys, huling hilera. 1087 00:53:00,500 --> 00:53:01,190 OK. 1088 00:53:01,190 --> 00:53:02,160 Ano ang pagbabago dito? 1089 00:53:02,160 --> 00:53:05,640 1090 00:53:05,640 --> 00:53:06,935 >> MAG-AARAL: A. 1091 00:53:06,935 --> 00:53:09,435 Propesor: A. Perpekto, kaya lahat ng iba pa ay maaaring mananatiling pareho. 1092 00:53:09,435 --> 00:53:16,210 1093 00:53:16,210 --> 00:53:16,710 OK. 1094 00:53:16,710 --> 00:53:17,970 At kung ano ay isang? 1095 00:53:17,970 --> 00:53:23,610 1096 00:53:23,610 --> 00:53:26,060 Kaya ito ay isang beses ano? 1097 00:53:26,060 --> 00:53:27,120 Ito ay bituin PB. 1098 00:53:27,120 --> 00:53:29,750 1099 00:53:29,750 --> 00:53:34,490 Kaya star PB nangangahulugan narito PB, PB punto upang b. 1100 00:53:34,490 --> 00:53:35,370 >> MAG-AARAL: 500. 1101 00:53:35,370 --> 00:53:36,230 >> Propesor: 500. 1102 00:53:36,230 --> 00:53:39,236 Kaya mayroon kaming 500 beses 100. 1103 00:53:39,236 --> 00:53:41,758 Iyon ang 50,000. 1104 00:53:41,758 --> 00:53:43,216 Whew! 1105 00:53:43,216 --> 00:53:45,646 Tumingin sa iyon. 1106 00:53:45,646 --> 00:53:47,982 >> MAG-AARAL: Bakit kailangan namin ang & c para sa last-- 1107 00:53:47,982 --> 00:53:48,690 Propesor: Paumanhin. 1108 00:53:48,690 --> 00:53:50,080 MAG-AARAL: Oh, OK. 1109 00:53:50,080 --> 00:53:51,600 Propesor: Aking masama. 1110 00:53:51,600 --> 00:53:52,890 Maraming pagsusulat. 1111 00:53:52,890 --> 00:53:53,917 1112 00:53:53,917 --> 00:53:54,500 Ang bawat tao'y magandang? 1113 00:53:54,500 --> 00:53:55,630 1114 00:53:55,630 --> 00:53:56,660 Hindi masyadong masama, tama? 1115 00:53:56,660 --> 00:53:58,490 Tumatagal lamang ng kaunti habang upang gumana sa pamamagitan ng. 1116 00:53:58,490 --> 00:54:01,080 Kung masira ito pababa, maunawaan kung ano ang bawat bahagi 1117 00:54:01,080 --> 00:54:03,197 ay nagre-refer na to-- bilang ang lahat ng ito, 1118 00:54:03,197 --> 00:54:05,780 yes-- masira ito pababa sa maliit na mga problema at pagkatapos ay muling isama, 1119 00:54:05,780 --> 00:54:07,345 at maaari kang gumawa ng ilang mga kahanga-hangang mga bagay-bagay. 1120 00:54:07,345 --> 00:54:08,970 May mga sagot, ngunit ginawa namin na. 1121 00:54:08,970 --> 00:54:10,324 1122 00:54:10,324 --> 00:54:11,115 Palatuusan ng pointer. 1123 00:54:11,115 --> 00:54:13,961 1124 00:54:13,961 --> 00:54:14,460 Ah. 1125 00:54:14,460 --> 00:54:15,510 Aking mga kamay ay lahat may tsok. 1126 00:54:15,510 --> 00:54:17,970 Kaya ang pagdaragdag o pagbabawas int inaayos ng pointer 1127 00:54:17,970 --> 00:54:21,890 sa pamamagitan ng ang laki ng mga uri ng pointer. 1128 00:54:21,890 --> 00:54:22,940 1129 00:54:22,940 --> 00:54:28,390 Natatandaan kung paano bawat uri ng May iba't ibang laki? 1130 00:54:28,390 --> 00:54:34,890 Kaya tulad ng isang double o ng mahabang mahaba ay kung walo at int ay apat ngunit pansamantalang trabaho ay isa. 1131 00:54:34,890 --> 00:54:38,360 >> Kaya kung ano ang gusto mong gawin is-- isang bagay na dapat tandaan 1132 00:54:38,360 --> 00:54:44,080 ay na lamang kung magkano ang iyong aktwal na mga pagbabago halaga pointer 1133 00:54:44,080 --> 00:54:46,550 ay nakasalalay sa mga uri ng pointer ito. 1134 00:54:46,550 --> 00:54:50,820 1135 00:54:50,820 --> 00:54:51,820 Ang bawat tao'y may mahusay na ito? 1136 00:54:51,820 --> 00:54:52,760 Maaari ko bang burahin ito? 1137 00:54:52,760 --> 00:54:53,440 Humihingi kami ng magandang? 1138 00:54:53,440 --> 00:54:53,940 Kahanga-hanga. 1139 00:54:53,940 --> 00:55:01,020 1140 00:55:01,020 --> 00:55:07,501 >> Kaya kung mayroon kaming ilang mga pointer that-- ito ay pagpunta sa be-- ako 1141 00:55:07,501 --> 00:55:08,834 pagpunta sa gawin itong isang int pointer. 1142 00:55:08,834 --> 00:55:10,610 1143 00:55:10,610 --> 00:55:12,760 Nag-iimbak nito ito. 1144 00:55:12,760 --> 00:55:14,210 1145 00:55:14,210 --> 00:55:20,170 Kung kayo ay sasabihin pointer plus one, kung ano ang pagpunta sa gawin 1146 00:55:20,170 --> 00:55:23,420 ay ito ay pagpunta sa i-update ito sa pamamagitan ng ang laki ng isang int 1147 00:55:23,420 --> 00:55:25,950 dahil iyon ang uri ng pointer ito. 1148 00:55:25,950 --> 00:55:28,260 >> Sa C, lahat ng bagay ay napaka mahigpit at regulated. 1149 00:55:28,260 --> 00:55:29,440 1150 00:55:29,440 --> 00:55:35,260 Ang int pointer ay pagpunta upang i-update sa pamamagitan ng ang dami ng espasyo sa isang int nais gawin. 1151 00:55:35,260 --> 00:55:36,260 Isang int ay apat na bytes. 1152 00:55:36,260 --> 00:55:37,650 1153 00:55:37,650 --> 00:55:39,060 >> Kaya kung ano ang maging ito? 1154 00:55:39,060 --> 00:55:40,876 1155 00:55:40,876 --> 00:55:44,390 Lamang nagdadagdag ka ng apat papunta ito. 1156 00:55:44,390 --> 00:55:50,040 Ngayon ang iyong mga pointer ay be-- OK. 1157 00:55:50,040 --> 00:55:51,820 1158 00:55:51,820 --> 00:55:55,380 >> Kaya kung ito ay isang pansamantalang trabaho at ginawa namin ang pointer plus one, ano ang magiging ngayon? 1159 00:55:55,380 --> 00:56:00,300 1160 00:56:00,300 --> 00:56:03,330 Kung started-- ito ng pagpapanggap namin started-- ngayon ito 0x08. 1161 00:56:03,330 --> 00:56:04,850 1162 00:56:04,850 --> 00:56:10,850 Sabihin ngayon sabihin na ito ay isang pansamantalang trabaho pointer, at idinagdag namin ng isa. 1163 00:56:10,850 --> 00:56:11,850 Ano ang gusto itong baguhin sa? 1164 00:56:11,850 --> 00:56:14,989 1165 00:56:14,989 --> 00:56:16,030 Gaano karaming mga byte ay isang pansamantalang trabaho? 1166 00:56:16,030 --> 00:56:16,680 >> Madla: Isa. 1167 00:56:16,680 --> 00:56:17,304 >> Tagapagsalita 1: Isang. 1168 00:56:17,304 --> 00:56:18,309 Madla: Kaya 0x09. 1169 00:56:18,309 --> 00:56:19,600 Tagapagsalita 1: Kaya magiging siyam. 1170 00:56:19,600 --> 00:56:22,571 1171 00:56:22,571 --> 00:56:23,820 Kaya isang bagay lang matandaan. 1172 00:56:23,820 --> 00:56:28,340 Kapag lamang magdagdag ka ng isa, hindi pagdaragdag ng isa maliban kung ito ay isang pansamantalang trabaho. 1173 00:56:28,340 --> 00:56:34,190 Ito ay pagdaragdag ng kung gaano karaming bytes ang uri na ito ay, 1174 00:56:34,190 --> 00:56:36,960 na ang dahilan kung bakit mayroon kaming ang equation dito. 1175 00:56:36,960 --> 00:56:40,190 Kaya int beses ang laki ng uri ng pointer. 1176 00:56:40,190 --> 00:56:42,850 1177 00:56:42,850 --> 00:56:44,730 >> Kaya mayroon kaming mga halimbawa dito. 1178 00:56:44,730 --> 00:56:47,250 1179 00:56:47,250 --> 00:56:54,430 y itinalaga sa halagang iyon, 0x4, kapag ginawa namin y plus ay katumbas ng isa. 1180 00:56:54,430 --> 00:56:56,830 Ano ang nasa loob nito, kung ano ang sa x, ay hindi nagbabago. 1181 00:56:56,830 --> 00:56:58,610 Ano ang pagbabago ay kung ano ang sa y. 1182 00:56:58,610 --> 00:57:04,980 -Update ang address na naka-imbak sa y sa pamamagitan ng apat na dahil mayroong apat na bytes sa isang int 1183 00:57:04,980 --> 00:57:06,097 at ito ay isang int pointer. 1184 00:57:06,097 --> 00:57:07,290 1185 00:57:07,290 --> 00:57:07,790 >> Lahat ng karapatan. 1186 00:57:07,790 --> 00:57:09,123 Kaya ngayon kami ay may isa pang ehersisyo. 1187 00:57:09,123 --> 00:57:11,140 1188 00:57:11,140 --> 00:57:13,500 Kaya ang tanong ay kung ano ang i-print. 1189 00:57:13,500 --> 00:57:36,710 1190 00:57:36,710 --> 00:57:37,650 Ang anumang mga ideya? 1191 00:57:37,650 --> 00:57:41,690 1192 00:57:41,690 --> 00:57:43,699 >> Madla: Ang bilang ng mga character sa masaya pusa? 1193 00:57:43,699 --> 00:57:44,490 Tagapagsalita 1: Eksaktong. 1194 00:57:44,490 --> 00:57:45,531 Kaya gusto gamit ang iyong string. 1195 00:57:45,531 --> 00:57:47,302 1196 00:57:47,302 --> 00:57:48,260 Lahat ng tao makakuha ba iyon? 1197 00:57:48,260 --> 00:57:49,509 Gusto naming maglakad sa pamamagitan nito? 1198 00:57:49,509 --> 00:57:50,300 1199 00:57:50,300 --> 00:57:52,010 >> Oo, OK. 1200 00:57:52,010 --> 00:57:57,385 Kaya kung ano ang mayroon kaming here-- ko ganito kaya marami pang iba. 1201 00:57:57,385 --> 00:57:59,340 Hindi ko na kailangang [Hindi marinig] ridiculously. 1202 00:57:59,340 --> 00:58:01,690 >> Kaya mayroon kaming string dito, masaya pusa. 1203 00:58:01,690 --> 00:58:02,950 Kaibig-ibig. 1204 00:58:02,950 --> 00:58:05,080 Mayroon kaming ilang mga sagot na Pinananatili namin ang track ng. 1205 00:58:05,080 --> 00:58:11,430 Kaya mayroon kaming ilang mga pansamantalang trabaho * pointer na lamang ay naka-set katumbas ng STR. 1206 00:58:11,430 --> 00:58:14,320 Ano ang ginagawa ay ito nagtatalaga ng ilang pointer 1207 00:58:14,320 --> 00:58:16,380 sa simula ng iyong string. 1208 00:58:16,380 --> 00:58:19,840 Dahil hindi ako sigurado, pati na ito Nabanggit sa panayam, 1209 00:58:19,840 --> 00:58:22,290 binigyan ka namin ng guys na ito uri ng data na tinatawag na string. 1210 00:58:22,290 --> 00:58:29,070 >> Ngunit talagang string lamang isang array of-- tulad ng pansamantalang trabaho *. 1211 00:58:29,070 --> 00:58:32,330 Ito ay isang pointer sa isang bungkos ng mga character na magkadikit sa memory. 1212 00:58:32,330 --> 00:58:33,680 1213 00:58:33,680 --> 00:58:36,280 Kaya ito lamang Nagtatakda ito katumbas ng anumang string ay 1214 00:58:36,280 --> 00:58:38,980 makikilala sa pamamagitan ng kung saan ang unang character ay. 1215 00:58:38,980 --> 00:58:42,710 Kaya ito ay pagtatakda lamang ng ilang mga punto katumbas ng simula ng string. 1216 00:58:42,710 --> 00:58:44,130 Ang bawat tao'y may magandang? 1217 00:58:44,130 --> 00:58:44,960 Ayos. 1218 00:58:44,960 --> 00:58:49,840 >> Kaya ito ay dereferencing aming pointer. 1219 00:58:49,840 --> 00:58:53,760 Kaya ito ay aktwal na pagpunta sa bigyan kami ng ilang mga halaga sa dito, 1220 00:58:53,760 --> 00:58:55,610 sa aming string na pinag-uusapan natin ang tungkol. 1221 00:58:55,610 --> 00:58:58,342 At kami ay nagsasabi hangga't hindi null Terminator. 1222 00:58:58,342 --> 00:59:00,550 Kaya panatilihin ang pagpunta hanggang sa makuha mo sa dulo ng string. 1223 00:59:00,550 --> 00:59:02,180 1224 00:59:02,180 --> 00:59:04,190 I-update ang iyong pointer sa pamamagitan ng isa. 1225 00:59:04,190 --> 00:59:09,250 Kaya r, ito ay aktwal na-update sa pamamagitan ng isang sa bawat oras na ito dahil ito ay isang pansamantalang trabaho, 1226 00:59:09,250 --> 00:59:09,820 ang pansamantalang trabaho *. 1227 00:59:09,820 --> 00:59:10,930 1228 00:59:10,930 --> 00:59:12,340 >> Kaya ito ay pagpunta sa pumunta sa pamamagitan ng. 1229 00:59:12,340 --> 00:59:13,290 Ito ay pagpunta upang i-update. 1230 00:59:13,290 --> 00:59:16,705 Kaya sa unang pagkakataon ay tumatakbo na ito, ito ay magiging dito sa h. 1231 00:59:16,705 --> 00:59:17,590 Ito ay pagpunta upang i-update. 1232 00:59:17,590 --> 00:59:18,185 >> Ito ay isang a. 1233 00:59:18,185 --> 00:59:21,310 Makikita ito ay isang p, y, at iba pa at iba pa. 1234 00:59:21,310 --> 00:59:22,300 Ia-update namin ang counter. 1235 00:59:22,300 --> 00:59:26,160 Kapag umabot sa dulo, ito Pini-print lamang kung gaano kalayo ito ay nakuha. 1236 00:59:26,160 --> 00:59:27,550 1237 00:59:27,550 --> 00:59:28,050 Oo. 1238 00:59:28,050 --> 00:59:31,475 >> Madla: Kaya binibilang ito ang puwang bilang isa, i-right? 1239 00:59:31,475 --> 00:59:31,974 OK. 1240 00:59:31,974 --> 00:59:34,294 1241 00:59:34,294 --> 00:59:35,222 >> Tagapagsalita 1: Mag-isip kaya. 1242 00:59:35,222 --> 00:59:36,830 Iyan ba ay question-- 1243 00:59:36,830 --> 00:59:37,746 >> Madla: [hindi marinig]. 1244 00:59:37,746 --> 00:59:37,968 1245 00:59:37,968 --> 00:59:38,884 >> Tagapagsalita 1: Huwag mag-alala. 1246 00:59:38,884 --> 00:59:39,720 1247 00:59:39,720 --> 00:59:42,736 Gagawin ko ito na. 1248 00:59:42,736 --> 00:59:47,710 Ang lahat ng mga karapatan, kaya isa ako bagay Nauunawaan ay may isang array, 1249 00:59:47,710 --> 00:59:51,736 maaari mo ring ituring ito bilang isang pointer dahil array lamang 1250 00:59:51,736 --> 00:59:52,860 tuloy-tuloy na mga spot ng memorya. 1251 00:59:52,860 --> 00:59:53,970 1252 00:59:53,970 --> 00:59:56,380 >> Kaya maaari mong ituring ito sa parehong paraan. 1253 00:59:56,380 --> 00:59:59,000 Maaari mong manipulahin ang mga ito may mga payo, masyadong. 1254 00:59:59,000 --> 01:00:04,770 Kaya sa halip ng paggawa, sa kaso, ang mga kahalintulad na bagay 1255 01:00:04,770 --> 01:00:07,490 magiging array 0 ay katumbas ng 1. 1256 01:00:07,490 --> 01:00:08,760 1257 01:00:08,760 --> 01:00:15,210 >> Ngunit sa parehong paraan na isang string ay natutukoy 1258 01:00:15,210 --> 01:00:18,740 sa pamamagitan ng simula ng kung saan ang unang character ay, 1259 01:00:18,740 --> 01:00:22,270 isang array ay natutukoy sa pamamagitan ng kung saan unang elemento nito ay. 1260 01:00:22,270 --> 01:00:25,120 Dahil alam namin, hindi namin katiyakan, na ang mga 1261 01:00:25,120 --> 01:00:27,985 ay magiging tuluy-tuloy na bloke ng memorya. 1262 01:00:27,985 --> 01:00:29,360 Iyon ay kung ano ang nagbibigay-daan sa amin upang gawin ito. 1263 01:00:29,360 --> 01:00:31,193 Alam namin na ang mga ito ay tuloy-tuloy na bloke ng memorya. 1264 01:00:31,193 --> 01:00:32,230 1265 01:00:32,230 --> 01:00:36,500 >> Kaya sa kasong ito, sa pamamagitan ng dereferencing lamang array, na nagsasabi sa amin, 1266 01:00:36,500 --> 01:00:40,800 OK, pumunta sa simula ng ang iyong array, na kung saan ay dito. 1267 01:00:40,800 --> 01:00:42,640 Kaya maaari mo itong itakda katumbas ng isa. 1268 01:00:42,640 --> 01:00:48,610 At sa kasong ito, ang anumang iyong array uri ay, kapag nag-update mo ito sa pamamagitan ng isa, 1269 01:00:48,610 --> 01:00:50,830 na tulad ng pag-update ito sa susunod na index. 1270 01:00:50,830 --> 01:00:52,760 1271 01:00:52,760 --> 01:00:56,360 Maaari mong gawin iyon dahil ikaw malaman kung ano ang nasa iyong mga array. 1272 01:00:56,360 --> 01:00:59,770 Kaya alam nito kung gaano kalaki ang -update ang iyong pointer sa pamamagitan ng, 1273 01:00:59,770 --> 01:01:02,925 kung ano ang address upang i-update ito sa gayon na ikaw ay nasa susunod na slot. 1274 01:01:02,925 --> 01:01:04,740 1275 01:01:04,740 --> 01:01:09,400 >> Kaya ito ay lamang ng ibang paraan ng pagsusulat ng mga array ay katumbas ng 0 1, 1276 01:01:09,400 --> 01:01:15,114 array 1 ay katumbas ng 2, array bracket 2 ay katumbas ng 3. 1277 01:01:15,114 --> 01:01:16,780 Ito ay isa lamang paraan upang isipin ang tungkol dito. 1278 01:01:16,780 --> 01:01:19,600 Dahil ang mga ito ay tuloy-tuloy na bloke sa memorya, 1279 01:01:19,600 --> 01:01:21,830 Maaari kang sumangguni sa mga ito ang alinman sa sa pamamagitan ng array notation-- 1280 01:01:21,830 --> 01:01:24,390 na ako ang personal na hanapin easier-- ngunit marahil 1281 01:01:24,390 --> 01:01:27,347 kailangan mo na manipulahin ito mahigpit na sa pamamagitan ng memory address. 1282 01:01:27,347 --> 01:01:28,930 At ito ay ang paraan na gusto mong gawin iyon. 1283 01:01:28,930 --> 01:01:30,630 1284 01:01:30,630 --> 01:01:32,630 Uri ng higit pa sa tulad ng isang cool na bagay na maaari mong gawin 1285 01:01:32,630 --> 01:01:35,213 kumpara siguro hindi isang bagay na ikaw ay talagang pagpunta na ipapatupad. 1286 01:01:35,213 --> 01:01:36,960 1287 01:01:36,960 --> 01:01:38,630 >> Gamitin ko ito sa 61. 1288 01:01:38,630 --> 01:01:41,710 Ikaw guys malamang na hindi na kailangan mag-alala tungkol dito masyadong maraming. 1289 01:01:41,710 --> 01:01:43,693 Ngunit kung ikaw ay interesado, tumagal ng 61 sa susunod na taon. 1290 01:01:43,693 --> 01:01:45,269 1291 01:01:45,269 --> 01:01:46,560 Humihingi kami sa bahay kahabaan guys. 1292 01:01:46,560 --> 01:01:47,510 Alam ko, ito ay ang haba. 1293 01:01:47,510 --> 01:01:50,570 1294 01:01:50,570 --> 01:01:58,880 Dynamic na Memory Allocation-- upang malaman namin ang isa na 1295 01:01:58,880 --> 01:02:01,790 ng mga bagay kapag usapan natin ang panahon ang aming unang seksyon nang sama-sama, 1296 01:02:01,790 --> 01:02:04,560 tumingin kami sa isang magpalitan function na kung saan ito ay 1297 01:02:04,560 --> 01:02:08,010 sa labas ng saklaw ng aming mga pangunahing pag-andar. 1298 01:02:08,010 --> 01:02:14,370 At kami ay pagpasa sa mga halagang ito na naging epektibo ang mga kopya. 1299 01:02:14,370 --> 01:02:20,570 >> At sa sandaling tapos swap -e-execute, pakaliwa lang ito ng stack. 1300 01:02:20,570 --> 01:02:22,830 Tandaan, mayroon kaming isang stack frame para sa swap. 1301 01:02:22,830 --> 01:02:26,070 Nag-iiwan ito at ang mga -iwan ng mga halaga sa mga ito. 1302 01:02:26,070 --> 01:02:27,050 At sila ay nawala. 1303 01:02:27,050 --> 01:02:28,615 Hindi namin ma-gumawa ng anumang bagay sa kanila at kami ay malungkot 1304 01:02:28,615 --> 01:02:29,989 dahil hindi namin maaaring magpalit ng aming mga halaga. 1305 01:02:29,989 --> 01:02:31,070 1306 01:02:31,070 --> 01:02:36,560 >> Ngunit sa C, tulad ng nabanggit ko, mo magkaroon ng maraming kapangyarihan sa memory. 1307 01:02:36,560 --> 01:02:43,310 Kaya ano ang maaari mong gawin ay maaari ka maglaan ng mga bagay sa kimpal dito 1308 01:02:43,310 --> 01:02:46,830 na mananatili doon hanggang sabihin mo ang mga ito kung hindi man. 1309 01:02:46,830 --> 01:02:48,280 >> Ang mga ito ay tulad ng mahusay na mga bata. 1310 01:02:48,280 --> 01:02:49,150 Manatili ang mga ito doon. 1311 01:02:49,150 --> 01:02:50,270 Hindi sila umalis. 1312 01:02:50,270 --> 01:02:52,750 Makikita nila manatili doon hanggang ikaw ay tulad ng, OK, maaari kang pumunta ang layo. 1313 01:02:52,750 --> 01:02:55,920 >> Sapagkat ang mga bagay sa stack, who-- ang mga ito ay tulad ng malikot na bata. 1314 01:02:55,920 --> 01:02:59,160 Makikita lang nila tumakas kung kailan mo nais upang maging doon at pagkatapos ay sila ay nawala. 1315 01:02:59,160 --> 01:03:00,160 Hindi ka maaaring makakuha ng mga ito pabalik. 1316 01:03:00,160 --> 01:03:01,350 1317 01:03:01,350 --> 01:03:07,187 >> Kaya ang kimpal is-- kami ng pagpunta sa makipag-usap tungkol sa malloc at libreng, na 1318 01:03:07,187 --> 01:03:08,895 Ako ba mo guys naririnig ang tungkol sa aralin. 1319 01:03:08,895 --> 01:03:10,270 1320 01:03:10,270 --> 01:03:14,210 At iyon ang isa lamang paraan upang magkaroon ng paulit-ulit na data. 1321 01:03:14,210 --> 01:03:18,920 Kaya maaari mong itago ang data sa paligid hangga't gusto mo. 1322 01:03:18,920 --> 01:03:19,546 Mhm. 1323 01:03:19,546 --> 01:03:21,475 >> Madla: Maaari mong tukuyin ang kimpal at stack? 1324 01:03:21,475 --> 01:03:24,030 Sigurado gusto nila mga lugar upang ilagay ang mga bagay? 1325 01:03:24,030 --> 01:03:26,630 >> Tagapagsalita 1: Kaya ang mga ito ay talaga just-- ang mga ito 1326 01:03:26,630 --> 01:03:29,530 ang paraan sumangguni namin lamang sa memorya. 1327 01:03:29,530 --> 01:03:37,300 Kaya kimpal ay naglalagay lamang kung saan memorya ay dynamic na inilalaan, 1328 01:03:37,300 --> 01:03:40,960 samantalang ang stack ay tumutukoy higit pa sa stack frame 1329 01:03:40,960 --> 01:03:45,950 na mas gitnang sa mga function na ay aktwal na tumatakbo. 1330 01:03:45,950 --> 01:03:47,200 Wala ka talagang may kontrol. 1331 01:03:47,200 --> 01:03:50,690 >> Ang malaking pagkakaiba, may kontrol ka sa ibabaw ng kimpal kung nais mong. 1332 01:03:50,690 --> 01:03:52,710 Ikaw ay may mas kontrol sa mga stack. 1333 01:03:52,710 --> 01:03:55,030 Ang stack ay depende sa mga function na ay tumatakbo, 1334 01:03:55,030 --> 01:03:58,320 at ang pagkakasunud-sunod kung saan ang mga ito ay tumakbo, at kung paano mga bagay ay ibinalik. 1335 01:03:58,320 --> 01:04:01,290 Sapagkat may kimpal, pati na ipapakita namin makita, maaari mong sabihin, 1336 01:04:01,290 --> 01:04:06,639 OK, gusto kong ang halagang ito upang maging sa paligid hanggang Sinasabi ko sa iyo kung hindi man. 1337 01:04:06,639 --> 01:04:08,180 Hindi ka pinapayagang upang mapupuksa ito. 1338 01:04:08,180 --> 01:04:09,300 Hindi ka pinapayagang i-override ito. 1339 01:04:09,300 --> 01:04:11,675 Ka ng pagpunta sa panatilihin ito sa paligid para sa hangga't Sinasabi ko sa iyo. 1340 01:04:11,675 --> 01:04:15,780 Makakakuha ka ng upang maging boss sa kimpal, habang ang mga stack-- siguro kung 1341 01:04:15,780 --> 01:04:18,080 tulad ng dayain ang iyong mga paraan maaaring ikaw ang boss. 1342 01:04:18,080 --> 01:04:19,340 Ngunit hindi pa. 1343 01:04:19,340 --> 01:04:20,480 1344 01:04:20,480 --> 01:04:22,070 At ito ay tunay na memorya lamang. 1345 01:04:22,070 --> 01:04:24,260 Ito ay iba't ibang mga paraan lamang ng nagre-refer sa memorya. 1346 01:04:24,260 --> 01:04:25,800 1347 01:04:25,800 --> 01:04:26,400 >> Ayos. 1348 01:04:26,400 --> 01:04:28,630 Kaya sa na, kung paano kontrolin ang iyong memory. 1349 01:04:28,630 --> 01:04:32,070 Ito ay may malloc, na na iyong pupuntahan upang makakuha ng gamitin. 1350 01:04:32,070 --> 01:04:37,100 Kaya maikli lamang para sa paglalaan ng memory. 1351 01:04:37,100 --> 01:04:38,459 Iyon ang lahat ng ito ay. 1352 01:04:38,459 --> 01:04:41,250 Mayroong isang bungkos ng iba pang mga cool na mga function na may alloc sa dulo, 1353 01:04:41,250 --> 01:04:42,750 at tumayo sila para sa iba't ibang mga bagay. 1354 01:04:42,750 --> 01:04:43,550 1355 01:04:43,550 --> 01:04:49,050 >> Kaya kapag kailangan mo imbakan na kailangan upang daigin sa tagal ng iyong kasalukuyang pag-andar nang sa gayon 1356 01:04:49,050 --> 01:04:51,010 na kapag ang iyong kasalukuyang Nagpapatakbo ang layo ng pag-andar, 1357 01:04:51,010 --> 01:04:55,774 Mayroon ka pa rin ang data na Nakakuha mula dito, nais mong gamitin ang malloc. 1358 01:04:55,774 --> 01:04:57,190 Na makikita initialize ito sa kimpal. 1359 01:04:57,190 --> 01:05:00,140 At tulad ng sinabi ko at panatilihing na nagsasabi, makikita mo itong panatilihin doon 1360 01:05:00,140 --> 01:05:03,050 hanggang sa sabihin sa iyo nito kung hindi man, kung saan ay ang mahalagang bagay dito. 1361 01:05:03,050 --> 01:05:08,450 >> Kaya isang bagay upang mapansin, at na karaniwang talagang mahalaga, 1362 01:05:08,450 --> 01:05:13,620 ay na ito sizeof ay sobrang kapaki-pakinabang na gamitin ang 1363 01:05:13,620 --> 01:05:16,440 dahil depende sa uri ng machine na pinapatakbo mo, 1364 01:05:16,440 --> 01:05:22,470 maaari itong magkaroon ng iba't ibang mga halaga ng memory na tumatagal. 1365 01:05:22,470 --> 01:05:26,870 Kaya gusto mong palaging gamitin ang laki ng kaya na hindi ka machine umaasa, 1366 01:05:26,870 --> 01:05:30,300 upang ang iyong code habilin tumakbo sa anumang computer. 1367 01:05:30,300 --> 01:05:32,360 >> At na bahagi lamang ng pagsusulat ng mga mahusay na code. 1368 01:05:32,360 --> 01:05:34,610 Kung ito ay gumagana sa isang computer, subalit hindi alinman sa mga iba, 1369 01:05:34,610 --> 01:05:36,440 kung paano kapaki-pakinabang ay ang iyong programa? 1370 01:05:36,440 --> 01:05:38,420 Kaya palagi nais mong tiyakin at gamitin ang sizeof. 1371 01:05:38,420 --> 01:05:41,306 >> Madla: Kaya ay ang tulad ng laki ng 10 pulgada [hindi marinig]? 1372 01:05:41,306 --> 01:05:43,698 >> Tagapagsalita 1: Ito ay ang laki ng 10 ints. 1373 01:05:43,698 --> 01:05:44,197 oo. 1374 01:05:44,197 --> 01:05:45,360 1375 01:05:45,360 --> 01:05:48,830 Kaya laki ng ints ay magbabalik kung magkano ay isang int gawin. 1376 01:05:48,830 --> 01:05:51,530 O laki ng pansamantalang trabaho, paano magkano ang isang pansamantalang trabaho gawin. 1377 01:05:51,530 --> 01:05:54,150 At pagkatapos ay kung gaano karaming mga bloke ng na gusto mo? 1378 01:05:54,150 --> 01:05:57,590 >> Kaya sa kasong ito, gusto naming ng isang bagay maaari naming mag-imbak ng 10 ints sa. 1379 01:05:57,590 --> 01:06:00,240 At ito gagana nang walang kinalaman ng machine, na kung saan ay cool. 1380 01:06:00,240 --> 01:06:01,720 1381 01:06:01,720 --> 01:06:04,846 Kaya kung gaano karaming mga byte habilin na aktwal na magbibigay sa iyo? 1382 01:06:04,846 --> 01:06:06,190 Mabilis na matematika. 1383 01:06:06,190 --> 01:06:06,787 >> Madla: 40. 1384 01:06:06,787 --> 01:06:07,370 Tagapagsalita 1: 40. 1385 01:06:07,370 --> 01:06:07,869 Mismong. 1386 01:06:07,869 --> 01:06:09,520 1387 01:06:09,520 --> 01:06:12,030 Kaya isa pang sisikat. 1388 01:06:12,030 --> 01:06:14,840 Pointer o malloc makakabalik null. 1389 01:06:14,840 --> 01:06:17,910 >> Kaya ulit, palaging suriin upang makita kung ibinalik ito null 1390 01:06:17,910 --> 01:06:19,620 bago mo subukan at gumawa ng anumang bagay na may ito. 1391 01:06:19,620 --> 01:06:23,430 1392 01:06:23,430 --> 01:06:27,350 Kung sinubukan mong at dereference ang pointer ngayon, 1393 01:06:27,350 --> 01:06:29,720 lamang ito ng pagpunta sa segfault dahil ka nagpunta at sinubukan 1394 01:06:29,720 --> 01:06:31,730 pindutin null kapag hindi mo kailangang. 1395 01:06:31,730 --> 01:06:34,000 Kaya laging suriin para sa null. 1396 01:06:34,000 --> 01:06:36,075 Muli, maaari lahat ng mong gawin. 1397 01:06:36,075 --> 01:06:38,300 1398 01:06:38,300 --> 01:06:39,720 >> Maaaring bumalik null. 1399 01:06:39,720 --> 01:06:42,740 Ito bumalik null kung ikaw ay alinman sa na ng puwang, o para sa anumang dahilan 1400 01:06:42,740 --> 01:06:44,350 ito ang bumangga sa ilang mga memory bug. 1401 01:06:44,350 --> 01:06:45,890 1402 01:06:45,890 --> 01:06:47,510 Nag-minsan lang nagbabalik null. 1403 01:06:47,510 --> 01:06:48,990 Kaya ikaw ay upang tingnan ang mga ito. 1404 01:06:48,990 --> 01:06:51,050 Iyon lang ang slide na ito ay sinasabi. 1405 01:06:51,050 --> 01:06:53,366 1406 01:06:53,366 --> 01:06:55,240 At pagkatapos ay kung ano ang mayroon kami dito ay isang tawag upang magbakante. 1407 01:06:55,240 --> 01:07:00,550 Kaya sa parehong paraan na kung iyong buksan ang isang file na kailangan mong isara ang isang file, 1408 01:07:00,550 --> 01:07:04,340 kung malloc memorya, mo dapat kang magbakante na memory. 1409 01:07:04,340 --> 01:07:06,530 At ka guys ay makakakuha gawin talagang cool na bagay. 1410 01:07:06,530 --> 01:07:09,624 >> At mayroong isang programa na maaari mong patakbuhin sa makita kung sakaling ka pagtulo ng memory. 1411 01:07:09,624 --> 01:07:11,040 Ngunit hindi mo nais na tumagas memory. 1412 01:07:11,040 --> 01:07:11,820 Ito ay ganap na hindi maayos. 1413 01:07:11,820 --> 01:07:13,191 1414 01:07:13,191 --> 01:07:15,020 Nagkamali bagay lamang. 1415 01:07:15,020 --> 01:07:20,939 >> Ito'y hindi magandang gawin tulad ng programming matalino para sa kahusayan disenyo. 1416 01:07:20,939 --> 01:07:22,980 Ngunit ito ay din uri lamang ng masamang para sa iyong computer. 1417 01:07:22,980 --> 01:07:26,780 Kaya lamang libreng mga bagay kapag malloc mo ang mga ito. 1418 01:07:26,780 --> 01:07:28,190 1419 01:07:28,190 --> 01:07:30,210 >> Ikaw guys makita ang symmetries dito. 1420 01:07:30,210 --> 01:07:31,180 Super simple. 1421 01:07:31,180 --> 01:07:33,010 Libreng lamang at pagkatapos ay kahit ano ang iyong pointer, 1422 01:07:33,010 --> 01:07:34,843 anuman ang pangalan ng ang iyong pointer ay, at ito 1423 01:07:34,843 --> 01:07:36,710 ay alagaan pagbabakante ito para sa iyo. 1424 01:07:36,710 --> 01:07:38,200 1425 01:07:38,200 --> 01:07:38,700 Ayos. 1426 01:07:38,700 --> 01:07:40,410 1427 01:07:40,410 --> 01:07:42,530 >> Pagkatapos ay mayroon ito namin. 1428 01:07:42,530 --> 01:07:44,770 Kaya namin lamang ng pagpunta sa maglakad sa pamamagitan ng programang ito. 1429 01:07:44,770 --> 01:07:46,560 At pagkatapos ay sa iyo guys tapos ka na. 1430 01:07:46,560 --> 01:07:50,240 >> Kaya lamang pangunahing [hindi marinig]. 1431 01:07:50,240 --> 01:07:51,690 Kaya mayroon kaming ilang mga int * pointer. 1432 01:07:51,690 --> 01:07:53,648 Kaya mayroon kaming isang pointer na pupuntahan matagal ints. 1433 01:07:53,648 --> 01:07:54,500 1434 01:07:54,500 --> 01:07:56,170 At kung gaano karaming mga ints ay ito pagpunta sa hawakan? 1435 01:07:56,170 --> 01:07:57,400 1436 01:07:57,400 --> 01:07:58,170 Isa lang. 1437 01:07:58,170 --> 01:07:59,400 1438 01:07:59,400 --> 01:08:01,100 Laki ng isang int. 1439 01:08:01,100 --> 01:08:03,900 >> Nagsusuri kami upang makita kung pointer ay null sapagkat ito 1440 01:08:03,900 --> 01:08:06,130 ay, gusto naming sabihin huwag gumawa ng kahit ano. 1441 01:08:06,130 --> 01:08:07,065 Ito ay masama. 1442 01:08:07,065 --> 01:08:08,130 1443 01:08:08,130 --> 01:08:12,130 Kaya i-print namin ang ilang mga error sa labas ng memorya, pinakamadalas na bumalik 1, 1444 01:08:12,130 --> 01:08:14,260 bilang ka guys ay ginagamit upang. 1445 01:08:14,260 --> 01:08:17,390 >> At pagkatapos ay mayroon kaming dito, namin dereference aming pointer. 1446 01:08:17,390 --> 01:08:22,840 Kaya nangangahulugan na kami ay pagpunta upang mag-imbak isang bagay sa lokasyon na ibinigay sa atin. 1447 01:08:22,840 --> 01:08:24,350 1448 01:08:24,350 --> 01:08:30,830 Int * pointer, o malloc, nagbabalik ang address ng kung saan ito ilaan ito 1449 01:08:30,830 --> 01:08:31,750 memory para sa iyo. 1450 01:08:31,750 --> 01:08:32,830 1451 01:08:32,830 --> 01:08:34,800 Kaya ito ay isa lamang pagbibigay like-- sa iyo kung 1452 01:08:34,800 --> 01:08:38,149 isipin ang tungkol sa isang bungkos ng bahay sa isang kapitbahayan 1453 01:08:38,149 --> 01:08:40,640 na nais mong ilagay ang iyong mga kasangkapan sa, malloc 1454 01:08:40,640 --> 01:08:43,850 ay tulad ng OK, makakakuha ka ng upang pumunta upang paglagyan ng tatlo. 1455 01:08:43,850 --> 01:08:45,800 At binibigyan ka nito ng address ng bahay tatlo. 1456 01:08:45,800 --> 01:08:48,775 >> Kaya ito sa ngayon, ito Nag-iimbak ang pointer ng isang address, 1457 01:08:48,775 --> 01:08:50,149 nag-iimbak ang address ng iyong bahay. 1458 01:08:50,149 --> 01:08:51,470 1459 01:08:51,470 --> 01:08:54,640 * Ptr paraan, OK, ako sa aking bahay. 1460 01:08:54,640 --> 01:08:55,326 Ayos. 1461 01:08:55,326 --> 01:08:56,580 Kailangan kong makakuha ng ilang integer. 1462 01:08:56,580 --> 01:08:59,229 >> Kaya ka nagtatanong para sa isang tao upang bigyan ka ng mga kasangkapan sa bahay ngayon. 1463 01:08:59,229 --> 01:09:00,430 Kaya kang makakuha ng ilang int. 1464 01:09:00,430 --> 01:09:05,100 At ito ay naglalagay ito sa iyong pointer kung saan ito na tumuturo sa. 1465 01:09:05,100 --> 01:09:08,670 >> At pagkatapos lamang ng mga kopya nito out, ipinasok saan ka man. 1466 01:09:08,670 --> 01:09:11,060 At muli, ang reference. 1467 01:09:11,060 --> 01:09:15,649 Kaya ito ay tulad ng sa iyo napunta sa mga ito tugunan at nakita mo kung ano ang doon. 1468 01:09:15,649 --> 01:09:17,120 1469 01:09:17,120 --> 01:09:17,630 Cool? 1470 01:09:17,630 --> 01:09:20,174 >> At pagkatapos ng kurso magbakante namin ang aming pointer. 1471 01:09:20,174 --> 01:09:21,590 Huwag kalimutan upang magbakante ang pointer. 1472 01:09:21,590 --> 01:09:22,933 Huwag kalimutang i-check para sa null. 1473 01:09:22,933 --> 01:09:24,349 Huwag kalimutan upang magbakante ang pointer. 1474 01:09:24,349 --> 01:09:27,270 Mayroon kang dalawang mga bagay na iyong naaalala mula sa na ito, o na dapat mong tandaan. 1475 01:09:27,270 --> 01:09:27,770 Oo. 1476 01:09:27,770 --> 01:09:31,590 Madla: [hindi marinig] bagay-bagay tulad ng iyon, ang pansamantalang trabaho * s. 1477 01:09:31,590 --> 01:09:33,760 Paano bakit hindi naming magbakante ng mga? 1478 01:09:33,760 --> 01:09:34,529 >> Tagapagsalita 1: Hm? 1479 01:09:34,529 --> 01:09:36,450 >> Madla: Sigurado mga tulad ng mga string? 1480 01:09:36,450 --> 01:09:39,160 Sinabi mo string ay tulad ng pansamantalang trabaho * s, tama? 1481 01:09:39,160 --> 01:09:41,200 Kaya bakit hindi namin magbakante ng string? 1482 01:09:41,200 --> 01:09:43,204 >> Tagapagsalita 1: mo lamang na libreng kung naka-mallocing. 1483 01:09:43,204 --> 01:09:44,620 Madla: Oh, kung naka-mallocing. 1484 01:09:44,620 --> 01:09:47,399 Tagapagsalita 1: Kaya malloc at libre ang dalawang bagay 1485 01:09:47,399 --> 01:09:49,000 na dapat ay palagi kang magkaroon ng sama-sama. 1486 01:09:49,000 --> 01:09:51,630 f bukas, f malapit, ang dalawang bagay Dapat mayroon kang sama-sama. 1487 01:09:51,630 --> 01:09:54,471 Sa parehong mga kaso, suriin para sa null. 1488 01:09:54,471 --> 01:09:54,971 Oo. 1489 01:09:54,971 --> 01:09:57,130 >> Madla: Kaya libreng lamang nagbibigay-daan sa ibang bagay 1490 01:09:57,130 --> 01:09:59,690 na nakaimbak doon pagkatapos ang program na ito ay ginamit ito? 1491 01:09:59,690 --> 01:10:01,946 >> Tagapagsalita 1: ang sinasabi lang ito, OK, ako ko tapos na may ito. 1492 01:10:01,946 --> 01:10:03,320 Hindi mo na kailangan upang mapanatili itong paligid. 1493 01:10:03,320 --> 01:10:05,340 1494 01:10:05,340 --> 01:10:08,190 Kung hindi man ang iyong computer habilin lamang gustong subukan at panatilihin ito doon. 1495 01:10:08,190 --> 01:10:10,910 At pagkatapos ay can't-- mo ito ay nagpapatakbo sa mga isyu sa memory sa ibang pagkakataon. 1496 01:10:10,910 --> 01:10:13,660 Gusto mong palaging upang magbakante ito dahil Sinasabi nito sa iyong computer, OK, ako 1497 01:10:13,660 --> 01:10:15,190 tapos na may ganitong lugar ng memorya. 1498 01:10:15,190 --> 01:10:17,190 Maaari kang magkaroon ng pabalik ito para sa akin upang gamitin sa ibang pagkakataon. 1499 01:10:17,190 --> 01:10:19,250 1500 01:10:19,250 --> 01:10:20,500 Cool? 1501 01:10:20,500 --> 01:10:21,320 Oo. 1502 01:10:21,320 --> 01:10:26,950 >> Madla: Kaya ginamit namin ang% d lamang dahil double na bumabalik, 1503 01:10:26,950 --> 01:10:28,330 o kung bakit is-- [hindi marinig]. 1504 01:10:28,330 --> 01:10:30,170 1505 01:10:30,170 --> 01:10:31,620 >> Madla: Maaari mong gamitin% i? 1506 01:10:31,620 --> 01:10:32,760 >> Speaker 1: Maaari mong gamitin% i. 1507 01:10:32,760 --> 01:10:35,052 1508 01:10:35,052 --> 01:10:36,135 Ang anumang huling minutong katanungan? 1509 01:10:36,135 --> 01:10:38,310 1510 01:10:38,310 --> 01:10:38,985 Sige. 1511 01:10:38,985 --> 01:10:40,610 Madla: Mayroon akong lamang ng isang mabilis na tanong. 1512 01:10:40,610 --> 01:10:50,200 Kaya ang ptr variable, that's-- , na ang int * ptr = malloc, 1513 01:10:50,200 --> 01:10:54,142 na lamang sinasabi ito nagtuturo sa isang lugar sa memory-- 1514 01:10:54,142 --> 01:10:55,600 Tagapagsalita 1: Gusto mo [hindi marinig]? 1515 01:10:55,600 --> 01:10:58,050 Madla: --that ang laki of-- hindi, ito ay OK. 1516 01:10:58,050 --> 01:11:01,292 Ngunit lamang ito ay nagtuturo sa isang lugar sa memory na tulad ng apat na bytes. 1517 01:11:01,292 --> 01:11:02,000 Tagapagsalita 1: I-right. 1518 01:11:02,000 --> 01:11:03,030 1519 01:11:03,030 --> 01:11:07,070 Kaya malloc laki ng int nagsasabing, OK, pupunta ako upang pumunta tumakas, 1520 01:11:07,070 --> 01:11:08,780 maghanap ng apat na bytes ng memory para sa iyo. 1521 01:11:08,780 --> 01:11:10,700 Kapag nakita nito na ang apat na byte ng memorya, ito 1522 01:11:10,700 --> 01:11:14,030 nagbibigay sa iyo-back address ng kung saan nagsisimula ito, 1523 01:11:14,030 --> 01:11:16,160 at iyon ang naka-imbak na sa pointer, o ptr. 1524 01:11:16,160 --> 01:11:17,510 1525 01:11:17,510 --> 01:11:18,010 Mahusay. 1526 01:11:18,010 --> 01:11:18,742 1527 01:11:18,742 --> 01:11:21,700 Ikaw guys tumingin mas nalilito kaysa sa pinaka mga tao kapag makipag-usap ko tungkol sa pointer, 1528 01:11:21,700 --> 01:11:23,670 kaya pakiramdam ako mahusay sa ngayon. 1529 01:11:23,670 --> 01:11:24,520 >> Lahat ng karapatan. 1530 01:11:24,520 --> 01:11:27,960 Tulad ng nakasanayan, mo guys ay dapat magkaroon ng lahat nakuha ang iyong mga grado pset2 sa ngayon. 1531 01:11:27,960 --> 01:11:32,769 Alam ko nagkaroon ng ilang mga wonky mga bagay kung saan sinasabi nito, formula hindi wasto 1532 01:11:32,769 --> 01:11:33,310 o isang bagay. 1533 01:11:33,310 --> 01:11:36,166 Kung nakukuha mo na, ang lahat ng ang iyong mga marka ay wasto sa aking tagiliran. 1534 01:11:36,166 --> 01:11:38,040 Kaya ang maaari kong magpadala sa iyo ng screenshot ng iyong mga grado. 1535 01:11:38,040 --> 01:11:39,011 1536 01:11:39,011 --> 01:11:41,760 Ipaalam lamang sa akin kung pati na rin kung ikaw ay Nawawala ang anumang mga marka o isang bagay 1537 01:11:41,760 --> 01:11:43,060 Hindi mukhang may kabuluhan. 1538 01:11:43,060 --> 01:11:43,720 Halika sa akin. 1539 01:11:43,720 --> 01:11:44,830 1540 01:11:44,830 --> 01:11:48,830 >> Napuntahan ko sobrang maipagmamalaki ng sa iyo guys na, kaya panatilihin up ito. 1541 01:11:48,830 --> 01:11:50,640 At may isang mahusay na natitira sa iyong linggo. 1542 01:11:50,640 --> 01:11:53,440 Ako ba na kukunin ko na makita ang ilang mga ng sa iyo sa oras ng opisina. 1543 01:11:53,440 --> 01:11:55,414