1 00:00:00,000 --> 00:00:00,960 2 00:00:00,960 --> 00:00:03,360 >> [Musika sa pag-play] 3 00:00:03,360 --> 00:00:11,050 4 00:00:11,050 --> 00:00:12,065 >> DAVIN: Ang lahat ng mga karapatan, guys. 5 00:00:12,065 --> 00:00:13,642 6 00:00:13,642 --> 00:00:15,350 Kaya ito ay ang pagsusuri para sa unang pagsusulit. 7 00:00:15,350 --> 00:00:17,751 Handa na ang lahat para sa ang pagsusulit sa Miyerkules? 8 00:00:17,751 --> 00:00:18,292 Allison: Woo! 9 00:00:18,292 --> 00:00:18,743 MAG-AARAL: Woo! 10 00:00:18,743 --> 00:00:19,242 DAVIN: Oo. 11 00:00:19,242 --> 00:00:19,920 Allison: Oo! 12 00:00:19,920 --> 00:00:20,920 DAVIN: Iyon tao ay handa na. 13 00:00:20,920 --> 00:00:22,200 Na tao, dalawang kamay, mabait. 14 00:00:22,200 --> 00:00:23,234 15 00:00:23,234 --> 00:00:25,900 Kaya pagsusuri pagsusulit ngayon, ang pagpunta ito upang maging halos isang oras at kalahati. 16 00:00:25,900 --> 00:00:27,940 Kami ay pagpunta sa pumunta sa paglipas ng lahat ng mga pangunahing konsepto na dapat mong malaman para sa pagsusulit. 17 00:00:27,940 --> 00:00:31,434 Kami ay pagpunta sa pumunta sa paglipas ng ilang mga coding sa pamamagitan ng kamay mga halimbawa, kung saan ay sa bawat pagsusulit. 18 00:00:31,434 --> 00:00:34,350 At kung mayroon kang mga katanungan, huwag mag-atubiling itaas ang iyong mga kamay at lahat ng bagay 19 00:00:34,350 --> 00:00:34,945 tulad na. 20 00:00:34,945 --> 00:00:36,695 Well, logistik tungkol sa ang pagsusulit ay online. 21 00:00:36,695 --> 00:00:38,450 Kaya kami ay pagpunta sa hatiin ang mga tao hanggang sa iba't-ibang mga kuwarto. 22 00:00:38,450 --> 00:00:39,491 Ito ay batay sa kanilang mga pangalan. 23 00:00:39,491 --> 00:00:43,630 Kaya kung mayroon kang anumang mga katanungan tungkol sa kung saan upang pumunta o tungkol sa kung anong materyal ay, tulad ng, 24 00:00:43,630 --> 00:00:46,810 ang opisyal na salita sa kung ano ang nangyayari upang maging sa pagsusulit, suriin online. 25 00:00:46,810 --> 00:00:48,420 At iyon ang lahat ng hanggang sa petsa. 26 00:00:48,420 --> 00:00:51,280 Kaya kung walang mga tanong sa mga magsimula sa, kami ay pagpunta upang magsimula. 27 00:00:51,280 --> 00:00:52,790 28 00:00:52,790 --> 00:00:53,710 At narito Allison. 29 00:00:53,710 --> 00:00:56,060 30 00:00:56,060 --> 00:00:57,000 >> [CLAPS] 31 00:00:57,000 --> 00:00:59,300 >> Allison: OK, salamat, Rob. 32 00:00:59,300 --> 00:01:00,280 Pinahahalagahan ito. 33 00:01:00,280 --> 00:01:01,350 34 00:01:01,350 --> 00:01:03,050 Davin dapat Binaligtad nang upang ito. 35 00:01:03,050 --> 00:01:07,240 Ito ang di-malawakan listahan ng mga mga paksa, gaya ng lagi, pati na Davin sinabi lamang. 36 00:01:07,240 --> 00:01:10,860 Kumonsulta sa dokumentasyon online na pagsusulit tungkol sa zero. 37 00:01:10,860 --> 00:01:13,680 Ngunit ito ay medyo much-- ito sa syllabus 38 00:01:13,680 --> 00:01:15,550 ay ang lahat ng bagay na nawala namin sa paglipas ng sa gayon ay malayo. 39 00:01:15,550 --> 00:01:18,290 Lahat dito ay patas na laro, pati na rin ang anumang bagay 40 00:01:18,290 --> 00:01:21,380 na maaaring nabanggit sa aralin. 41 00:01:21,380 --> 00:01:25,070 >> Aking seksyon, dito, ay lamang ng maraming pagsusuri. 42 00:01:25,070 --> 00:01:27,775 May ilang pagsasanay maaaring gumana na guys sa. 43 00:01:27,775 --> 00:01:30,650 Ngunit para sa pinaka-bahagi, kami talaga Gusto upang makapunta sa Davin sa mga code 44 00:01:30,650 --> 00:01:31,710 sa pamamagitan ng kamay pagsasanay. 45 00:01:31,710 --> 00:01:33,940 >> Kaya ako pagpunta sa lumipad sa pamamagitan na ito. 46 00:01:33,940 --> 00:01:36,330 Kung mayroon kang anumang mga katanungan, titigil sa akin. 47 00:01:36,330 --> 00:01:37,270 Itaas ang iyong kamay. 48 00:01:37,270 --> 00:01:39,250 Nangangako ako magpapadala ako malamang na iyong nakikita. 49 00:01:39,250 --> 00:01:41,042 Kung hindi, iwagayway lang ito sa paligid. 50 00:01:41,042 --> 00:01:42,250 Pupunta ako sa ay pakikipag-usap nang mabilis. 51 00:01:42,250 --> 00:01:43,950 Umaasa ako sa lahat ng tao OK lang na may mga iyon. 52 00:01:43,950 --> 00:01:48,020 >> OK, espesyal na salita, Davin nang walang alinlangan Nakalimutan upang i-flip sa pamamagitan ng mga slide. 53 00:01:48,020 --> 00:01:51,880 [LAUGHS] Ikaw sa problema, tao. 54 00:01:51,880 --> 00:01:55,770 Kaya mga tip para sa pagsusulit zero, pagsasanay coding sa papel. 55 00:01:55,770 --> 00:01:58,950 Ikaw guys ay pumunta upang makakuha ng ilang -ensayo sa na ngayon sa Davin, 56 00:01:58,950 --> 00:02:00,655 kaya hindi mo ay magiging ganap sa pamamagitan ng iyong sarili. 57 00:02:00,655 --> 00:02:03,030 Sa tingin ko talaga kami ng pagpunta sa pamamagitan ng mga dalawang function. 58 00:02:03,030 --> 00:02:04,500 Kaya ikaw ay may mahusay na inihanda doon. 59 00:02:04,500 --> 00:02:05,958 >> Maging pamilyar sa iyong mga hanay ng problema. 60 00:02:05,958 --> 00:02:08,150 Nagkaroon ng tanong sa nakaraang pagsusulit 61 00:02:08,150 --> 00:02:12,680 na hihilingin sa iyo, halimbawa, upang Code up ng isang bagay na halos kapareho sa Mario. 62 00:02:12,680 --> 00:02:15,060 Kaya pagiging napaka-pamilyar sa Nagtatakda ang iyong problema, pati na rin 63 00:02:15,060 --> 00:02:17,827 bilang ng mga tanong hinihiling namin sa iyo sa simula sa form 64 00:02:17,827 --> 00:02:19,660 na punan, ay maghatid sa iyo nang mahusay. 65 00:02:19,660 --> 00:02:20,940 66 00:02:20,940 --> 00:02:23,380 >> Gumawa ng isang nakaraang pagsusulit sa ilalim ng ang oras hadlang. 67 00:02:23,380 --> 00:02:25,430 Ang mga pagsusulit ay matagal. 68 00:02:25,430 --> 00:02:26,850 Ang oras na pumupunta talagang mabilis. 69 00:02:26,850 --> 00:02:30,480 At madalas, hindi mo nauunawaan kung paano mabilis pupunta ito hanggang sa iyong aktwal na 70 00:02:30,480 --> 00:02:32,180 ilagay ang iyong sarili sa ilalim ng mga hadlang. 71 00:02:32,180 --> 00:02:36,500 Kaya kung maaari mo lamang mag-ukit out, alam mo na, 75 minuto, alinman ngayong gabi o bukas 72 00:02:36,500 --> 00:02:41,020 gumawa ng isa sa mga pagsusulit sa ilalim ng na, ikaw ay nasa mas mahusay na hugis. 73 00:02:41,020 --> 00:02:43,060 >> At din, ang paglikha ng iyong reference sheet. 74 00:02:43,060 --> 00:02:45,290 Tandaan, makakuha ka ng isa front page at likod 75 00:02:45,290 --> 00:02:47,040 bilang sanggunian para sa iyong pagsusulit sa Miyerkules. 76 00:02:47,040 --> 00:02:49,074 Paglikha na ay isang mahusay na paraan upang pag-aralan. 77 00:02:49,074 --> 00:02:51,990 Anumang bagay na nagkakaroon ka ng problema may gusto mong isama sa doon. 78 00:02:51,990 --> 00:02:55,627 Anumang bagay na iyong TFs naging, tulad ng, ito ay talagang mahalaga. 79 00:02:55,627 --> 00:02:57,960 Dapat mong malaman na ito, hindi siguro mga bagay na mayroon ka sa doon 80 00:02:57,960 --> 00:02:59,931 kung wala kang mga ito kabisado. 81 00:02:59,931 --> 00:03:02,680 Kahit mo alam ang mga ito talaga na rin, minsan nagkakaproblema ito sa may 82 00:03:02,680 --> 00:03:07,030 lamang ang uri ng ginhawa para sa iyo, na kilala ko pagsusulit ay nakababahalang. 83 00:03:07,030 --> 00:03:09,260 Kaya maaaring makatulong sa anumang ginhawa iyong makukuha. 84 00:03:09,260 --> 00:03:13,072 Ang lahat ng mga karapatan, din, kumuha ng pagtulog at kumain at gusto ang normal na mga bagay 85 00:03:13,072 --> 00:03:14,280 na sabihin namin sa iyo para sa mga pagsusulit. 86 00:03:14,280 --> 00:03:16,320 87 00:03:16,320 --> 00:03:18,890 >> Kaya nagsisimula off madali, mga uri ng data at laki. 88 00:03:18,890 --> 00:03:22,720 Tulad ng sinabi ko, ito ay lamang ng pagpunta na ako masusuka ng maraming mga bagay-bagay 89 00:03:22,720 --> 00:03:24,320 hanggang dito na dapat mong malaman. 90 00:03:24,320 --> 00:03:27,600 Kaya mayroon namin ang aming mga char na isang byte, ints 91 00:03:27,600 --> 00:03:30,390 na apat na bytes, ang haba ang haba, na kung saan ay walong bytes. 92 00:03:30,390 --> 00:03:33,280 Talaga, ito ay mo lamang nais upang i-hold ang mas malaking integer. 93 00:03:33,280 --> 00:03:35,490 Sa kamay, na apat, doubles, na mga alas-otso. 94 00:03:35,490 --> 00:03:38,150 Muli, ay nagbibigay lamang sa iyo nang higit pa espasyo para sa iyong mga kamay. 95 00:03:38,150 --> 00:03:41,290 At pagkatapos i-type bituin, kaya ang anumang mga pointer sa isang 32-bit na machine, 96 00:03:41,290 --> 00:03:44,650 na kung saan ay kailangan mo ang lahat ng guys malaman, ay apat na bytes. 97 00:03:44,650 --> 00:03:46,542 >> Kaya lahat ng bagay dapat mong alam, siguro bagay 98 00:03:46,542 --> 00:03:48,250 Gusto mong magkaroon sa iyong reference sheet. 99 00:03:48,250 --> 00:03:50,350 100 00:03:50,350 --> 00:03:53,520 OK, binary conversion sa binary, conversion 101 00:03:53,520 --> 00:03:56,860 sa hexadecimal, pabalik-balik, lahat ng bagay na dapat mong malaman. 102 00:03:56,860 --> 00:03:59,480 Kaya mula sa binary sa decimal. 103 00:03:59,480 --> 00:04:03,309 Ikaw guys nais na magsagawa ng mabilis na minutong at subukan at malaman kung bawat isa sa mga 104 00:04:03,309 --> 00:04:04,600 at pagkatapos ay sabihin sa akin kung ano ang mga ito? 105 00:04:04,600 --> 00:04:06,500 106 00:04:06,500 --> 00:04:10,240 >> Mayroon din akong kendi sa aking bag, kaya't sinuman na sumasagot ay makakakuha ng kendi, sa pamamagitan ng mga paraan. 107 00:04:10,240 --> 00:04:13,560 108 00:04:13,560 --> 00:04:14,480 At Mayroon akong maraming mga ito. 109 00:04:14,480 --> 00:04:15,760 110 00:04:15,760 --> 00:04:16,870 Hayaan akong-grab ito. 111 00:04:16,870 --> 00:04:18,480 Pupunta ako upang bigyan ito upang Gabe. 112 00:04:18,480 --> 00:04:21,829 Kaya maaari mong out kendi sa kahit sino ay maganda at matulungin. 113 00:04:21,829 --> 00:04:23,490 >> OK, Nakita ko ang isang kamay doon sa likod. 114 00:04:23,490 --> 00:04:26,418 115 00:04:26,418 --> 00:04:28,370 >> MAG-AARAL: Oo, ang una ay 42. 116 00:04:28,370 --> 00:04:30,280 >> Allison: Oo, una ay 42, tama. 117 00:04:30,280 --> 00:04:31,163 118 00:04:31,163 --> 00:04:32,038 MAG-AARAL: [hindi marinig]. 119 00:04:32,038 --> 00:04:34,810 [Tawa] 120 00:04:34,810 --> 00:04:37,030 Allison: Ikalawa isa, Mayroon bang bumalik sa kulay dilaw? 121 00:04:37,030 --> 00:04:38,910 MAG-AARAL: 110,010. 122 00:04:38,910 --> 00:04:43,410 Allison: Tama, at ang huli, pababa dito sa ibaba? 123 00:04:43,410 --> 00:04:44,570 Gayundin, oo, alam mo gusto? 124 00:04:44,570 --> 00:04:45,550 Palabunutan lang kendi. 125 00:04:45,550 --> 00:04:46,483 Paano tungkol sa kendi para sa lahat? 126 00:04:46,483 --> 00:04:47,510 >> MAG-AARAL: [hindi marinig] kapag tapos na kami. 127 00:04:47,510 --> 00:04:48,051 >> Allison: Shh. 128 00:04:48,051 --> 00:04:49,380 129 00:04:49,380 --> 00:04:50,910 At pagkatapos ay ang huli. 130 00:04:50,910 --> 00:04:52,000 Sino ang nais ni upang sagutin? 131 00:04:52,000 --> 00:04:52,744 I-right doon. 132 00:04:52,744 --> 00:04:54,480 >> MAG-AARAL: 11,100. 133 00:04:54,480 --> 00:04:56,820 >> Allison: 11,100, tingnan iyon. 134 00:04:56,820 --> 00:04:58,790 Binabati kita, mahusay na trabaho, sa lahat. 135 00:04:58,790 --> 00:05:03,370 OK, lahat ng tao uri ng maunawaan ang proseso para sa paggawa na ito? 136 00:05:03,370 --> 00:05:08,700 Ikaw, ng pagpunta mula sa binary sa decimal ang daan ay may posibilidad kong gawin ito, ay sumusulat out 137 00:05:08,700 --> 00:05:09,920 ang kapangyarihan ng 2. 138 00:05:09,920 --> 00:05:18,350 Kaya sabihin ko, OK, 0 beses 2-0, kaya na 0, 1 beses 2 sa unang, 139 00:05:18,350 --> 00:05:21,400 2 pagpunta pasulong na paraan. 140 00:05:21,400 --> 00:05:25,790 Ba ako sa malinaw na gusto mo pumunta sa pamamagitan ng isang halimbawa ng binary? 141 00:05:25,790 --> 00:05:26,840 142 00:05:26,840 --> 00:05:28,140 OK, cool. 143 00:05:28,140 --> 00:05:30,390 >> Decimal sa binary ay halos katulad na. 144 00:05:30,390 --> 00:05:31,550 145 00:05:31,550 --> 00:05:33,630 Malamang kong isulat ang kapangyarihan ng 2. 146 00:05:33,630 --> 00:05:38,660 Magsimula sa isa na ay ang pinakadakilang, ngunit hindi pumunta lagpas sa decimal 147 00:05:38,660 --> 00:05:39,710 na hinahanap mo. 148 00:05:39,710 --> 00:05:42,870 At pagkatapos ay uri ng gumana ang iyong paraan paurong pagdaragdag up ng mga bagay tulad ng kinakailangan. 149 00:05:42,870 --> 00:05:45,200 >> At pagkatapos ay may karagdagan, ito ay tulad ng normal na karagdagan. 150 00:05:45,200 --> 00:05:51,110 Kung sakaling mayroon kang kaso kung saan ikaw ay pagdagdag ng dalawang 1s, ito ay nagiging malinaw naman 2. 151 00:05:51,110 --> 00:05:56,875 2 sa binary na ngayon ang 1 0 kaya kailangan mo upang isakatuparan ang iyong 1 sa susunod na hanay. 152 00:05:56,875 --> 00:05:57,375 Ayos. 153 00:05:57,375 --> 00:05:59,220 154 00:05:59,220 --> 00:06:03,240 >> Hexadecimal, ito ay maaaring maging isang bagay na bahagyang mas pamilyar. 155 00:06:03,240 --> 00:06:06,600 Kaya bilang Rob ay lamang na nagsasabi sa akin sa simula pa, ang kanyang bilis ng kamay para sa 156 00:06:06,600 --> 00:06:10,210 ay upang hatiin ito up lamang sa apat na chunks byte, OK? 157 00:06:10,210 --> 00:06:11,050 Bits, paumanhin. 158 00:06:11,050 --> 00:06:11,720 Tingnan? 159 00:06:11,720 --> 00:06:12,220 Salamat Rob. 160 00:06:12,220 --> 00:06:15,874 Ito ang dahilan kung bakit ikaw ay dito. [Ingay] OK, kaya masira lang namin ito up 161 00:06:15,874 --> 00:06:16,790 sa apat na chunks bits. 162 00:06:16,790 --> 00:06:21,570 Kaya sa binary sa hexadecimal, tinitingnan namin ang unang 4, 163 00:06:21,570 --> 00:06:25,573 na kung kami ay may apat na 1s sa isang hilera, kung ano ang numero ng na katawanin? 164 00:06:25,573 --> 00:06:26,540 >> MAG-AARAL: F. 165 00:06:26,540 --> 00:06:32,751 >> Allison: Kaya sa kasong ito, ano ang 11111111 or-- yes? 166 00:06:32,751 --> 00:06:33,250 MAG-AARAL: FF. 167 00:06:33,250 --> 00:06:34,600 Allison: Perpekto, FF. 168 00:06:34,600 --> 00:06:36,900 Kaya mahusay, candy para sa iyo. 169 00:06:36,900 --> 00:06:41,100 Ngayon, para sa kung paano hexadecimal sa binary, namin Sa tingin lamang tungkol dito uri ng sa reverse. 170 00:06:41,100 --> 00:06:46,420 Para sa bawat numero o titik na mayroon kaming sa aming hexadecimal, 171 00:06:46,420 --> 00:06:53,930 -convert lang ito sa kanyang apat na bit [LAUGHS] sa kanyang apat na bit conversion. 172 00:06:53,930 --> 00:06:58,696 Kaya 5, sa kasong ito, ano ang 5 kung kami ay kumakatawan ito sa apat na piraso? 173 00:06:58,696 --> 00:06:59,608 >> MAG-AARAL: 010? 174 00:06:59,608 --> 00:07:00,520 Mm-Hm. 175 00:07:00,520 --> 00:07:03,605 At pagkatapos A, na kung saan ay talaga 10, magiging? 176 00:07:03,605 --> 00:07:06,230 177 00:07:06,230 --> 00:07:08,040 1010. 178 00:07:08,040 --> 00:07:09,670 Kaya mayroon kaming iyon, dito. 179 00:07:09,670 --> 00:07:13,990 Kaya nagko-convert sa pagitan ng hexadecimal at binary aktwal na ay hindi na masama. 180 00:07:13,990 --> 00:07:16,565 Kung tumingin ka sa ito sa apat na bit chunks, magiging golden. 181 00:07:16,565 --> 00:07:18,330 182 00:07:18,330 --> 00:07:19,300 Everyone-- yes? 183 00:07:19,300 --> 00:07:21,903 >> Rob: Ito ay walang isip, ngunit laging tandaan ako 184 00:07:21,903 --> 00:07:23,500 A, dahil ang ay dapat na maging 10. 185 00:07:23,500 --> 00:07:26,230 At binary ay 10 lamang 10, so-- 186 00:07:26,230 --> 00:07:27,310 >> Allison: Ah, doon kami pumunta. 187 00:07:27,310 --> 00:07:28,615 >> Rob: Uy. 188 00:07:28,615 --> 00:07:30,020 >> Allison: Uy, kendi para sa Rob. 189 00:07:30,020 --> 00:07:31,707 190 00:07:31,707 --> 00:07:33,290 May mga bagay-bagay na di-tsokolate doon. 191 00:07:33,290 --> 00:07:34,180 Kaya maaari kang magkaroon ng ilan. 192 00:07:34,180 --> 00:07:35,790 193 00:07:35,790 --> 00:07:36,760 Kaya ASCII matematika. 194 00:07:36,760 --> 00:07:38,206 195 00:07:38,206 --> 00:07:38,705 Kumilos. 196 00:07:38,705 --> 00:07:40,630 197 00:07:40,630 --> 00:07:44,720 Kaya ASCII matematika, tulad ng sa iyo guys Marahil na rin matandaan 198 00:07:44,720 --> 00:07:48,480 p-set 2 na may Visioneer at Caesar, ginawa mo ng maraming ito. 199 00:07:48,480 --> 00:07:49,610 200 00:07:49,610 --> 00:07:51,980 Tandaan, ang mga character ay sa panimula lamang ng mga numero. 201 00:07:51,980 --> 00:07:54,780 Kaya maaari naming gawin matematika sa kanila, tulad ng ginagawa namin sa math na may ints. 202 00:07:54,780 --> 00:07:58,090 >> Kaya mayroon kaming maliit lamang simpleng bagay dito. 203 00:07:58,090 --> 00:08:00,940 Mayroon kaming ilang sa isang na nasimulan sa 65. 204 00:08:00,940 --> 00:08:07,440 At B katumbas ng halaga ASCII ng isang plus 1, pansamantalang trabaho C katumbas D minus 1, 205 00:08:07,440 --> 00:08:09,060 at char D patas sa 68. 206 00:08:09,060 --> 00:08:13,130 Kaya pagkatapos kami ay pagpunta sa pag-print lahat ng mga ito, tulad ng nakikita namin dito. 207 00:08:13,130 --> 00:08:15,650 At maaari sinuman sabihin sa akin kung ano na ito ay mag-print? 208 00:08:15,650 --> 00:08:17,335 209 00:08:17,335 --> 00:08:18,210 MAG-AARAL: [hindi marinig]. 210 00:08:18,210 --> 00:08:20,540 Allison: Eksakto, kaya isang bagay na napansin ay 211 00:08:20,540 --> 00:08:22,900 na pag-print out namin mga character sa bawat oras, dito. 212 00:08:22,900 --> 00:08:28,290 Kami ay pagtatalaga ng kahit A at B mga ints kapag inihayag namin ang mga ito sa itaas. 213 00:08:28,290 --> 00:08:32,870 Kami sa pag-print ay ang mga ito bilang mga character sa pamamagitan ng ang porsyento C at ang aming printf pahayag, 214 00:08:32,870 --> 00:08:34,610 kaya sila lahat ng mag-print ng mga character. 215 00:08:34,610 --> 00:08:40,730 At syempre, ang halaga ASCII 65 kalooban -print bilang A. Ang halaga ASCII ng isang plus 1 216 00:08:40,730 --> 00:08:43,669 ay magiging 66, na gagawin mapagmataas sa B. Kaya sa katunayan, namin 217 00:08:43,669 --> 00:08:49,107 makakuha ng isang B C D. Ang bawat tao'y magandang doon? 218 00:08:49,107 --> 00:08:49,690 Anumang mga katanungan? 219 00:08:49,690 --> 00:08:50,721 220 00:08:50,721 --> 00:08:51,220 Kahanga-hanga. 221 00:08:51,220 --> 00:08:52,500 222 00:08:52,500 --> 00:08:53,455 >> OK, saklaw. 223 00:08:53,455 --> 00:08:55,090 224 00:08:55,090 --> 00:08:59,950 Kaya ang saklaw ay malinaw naman isang napaka mahalagang bagay upang maunawaan, narito. 225 00:08:59,950 --> 00:09:03,250 Marami sa inyo, kung Mayroon kino-compile ang mga error, 226 00:09:03,250 --> 00:09:06,085 at sinasabi nito na hindi mo kailangang access sa ilang mga variable, 227 00:09:06,085 --> 00:09:08,540 marahil ito ay dahil sa iyo tinukoy ito sa loob ng loop 228 00:09:08,540 --> 00:09:12,210 at pagkatapos ay sinubukang i-access ito out ng mga ito, o visa versa. 229 00:09:12,210 --> 00:09:16,410 >> Kaya ang saklaw sa core nito, Tinutukoy lamang nito kung saan 230 00:09:16,410 --> 00:09:20,800 sabihin namin ang isang variable na umiiral, kung saan kami Maaari itong baguhin, kung saan maaari naming i-access ito. 231 00:09:20,800 --> 00:09:24,550 Ito ay lamang uri ng sinasabi ng mga ito ay ang tanging mga lugar kung saan mayroon kang access 232 00:09:24,550 --> 00:09:26,060 sa variable. 233 00:09:26,060 --> 00:09:30,080 >> Kaya ang dalawang saklaw na makipag-usap kami tungkol sa sa panahon ng klase ay pandaigdigan at lokal. 234 00:09:30,080 --> 00:09:35,080 Kaya mga pangkalahatang variable makipag-usap kami tungkol sa kapag ikaw ay pagtukoy sa mga ito sa itaas pangunahing. 235 00:09:35,080 --> 00:09:38,390 Nangangahulugan ito na ang iyong buong programa ay may access dito, 236 00:09:38,390 --> 00:09:42,090 at ito ang umiiral para sa hangga't bilang ang nagpapatakbo ng programa, OK? 237 00:09:42,090 --> 00:09:45,100 Lokal na nangangahulugan na ito mas saradong sa isang rehiyon. 238 00:09:45,100 --> 00:09:50,520 Kaya sa tuwing mayroon kang tukoy na mga function tulad ng swap, palagi naming makipag-usap tungkol sa. 239 00:09:50,520 --> 00:09:54,380 Palagi kaming makipag-usap tungkol sa swap A at B. A at B umiiral sa loob ng na function. 240 00:09:54,380 --> 00:09:55,690 Hindi ito umiiral kahit saan pa. 241 00:09:55,690 --> 00:09:56,860 242 00:09:56,860 --> 00:10:00,610 >> Pati na rin, kapag mayroon kang kung pahayag o para sa loop. 243 00:10:00,610 --> 00:10:04,670 Sa tuwing mayroon kaming, halimbawa, sa isang para sa loop mayroon kaming int katumbas ko 0. 244 00:10:04,670 --> 00:10:06,630 Mayroon kaming ilang mga kundisyon at i-update namin ito. 245 00:10:06,630 --> 00:10:10,270 Umiiral na lang ako sa loob ng brace ng iyon para sa loop. 246 00:10:10,270 --> 00:10:13,270 Kung sinubukan mong i-access ito sa ibang lugar, ang iyong mga compiler ay sumigaw sa iyo. 247 00:10:13,270 --> 00:10:14,560 Gusto Ito ay tulad ng, kung ano ang gusto ninyong gawin? 248 00:10:14,560 --> 00:10:15,400 Ito ay hindi umiiral. 249 00:10:15,400 --> 00:10:16,644 250 00:10:16,644 --> 00:10:18,435 Kaya iyon ang dalawang iba't ibang uri ng saklaw. 251 00:10:18,435 --> 00:10:19,486 252 00:10:19,486 --> 00:10:20,860 Ay na magkaroon ng kahulugan sa lahat? 253 00:10:20,860 --> 00:10:23,870 254 00:10:23,870 --> 00:10:27,890 >> Kaya halimbawa dito, ang lamang ng ilang simpleng mga programa. 255 00:10:27,890 --> 00:10:29,120 256 00:10:29,120 --> 00:10:32,890 Ano sa tingin guys ay pagpunta sa mangyari sa bawat punto 257 00:10:32,890 --> 00:10:34,210 na subukan namin na mag-print? 258 00:10:34,210 --> 00:10:40,150 Kaya ang isang ito dito, kung ano ang nangyayari sa mangyayari? 259 00:10:40,150 --> 00:10:43,047 260 00:10:43,047 --> 00:10:44,255 MAG-AARAL: Ito ay i-print ang tatlo. 261 00:10:44,255 --> 00:10:44,880 Allison: I-right. 262 00:10:44,880 --> 00:10:45,930 Ito i-print ang tatlo. 263 00:10:45,930 --> 00:10:47,272 Paano ang tungkol dito? 264 00:10:47,272 --> 00:10:48,230 MAG-AARAL: Hindi ito gagana. 265 00:10:48,230 --> 00:10:48,910 Allison: Hindi ito gagana. 266 00:10:48,910 --> 00:10:50,290 Naubusan ka na ng saklaw, tama? 267 00:10:50,290 --> 00:10:55,160 Lokal na variable ay hindi umiiral sa labas ng mga brace, ang lahat ng karapatan? 268 00:10:55,160 --> 00:10:56,462 At pagkatapos ay kung ano ang tungkol dito? 269 00:10:56,462 --> 00:10:57,850 >> MAG-AARAL: [hindi marinig]. 270 00:10:57,850 --> 00:10:59,210 >> Allison: Ano? 271 00:10:59,210 --> 00:10:59,900 Rob, pumunta. 272 00:10:59,900 --> 00:11:00,854 >> Rob: Kakalagay ko lang sinabi. 273 00:11:00,854 --> 00:11:04,200 Mga pangkalahatang variable ay dapat na global underscore variable. 274 00:11:04,200 --> 00:11:05,660 >> Allison: Ah, oo, paumanhin. 275 00:11:05,660 --> 00:11:06,200 Salamat, Rob. 276 00:11:06,200 --> 00:11:07,480 277 00:11:07,480 --> 00:11:10,170 Rob ay tulad ng ating resident compiler. 278 00:11:10,170 --> 00:11:12,684 Makikita niya lamang sumigaw sa amin kung kailan namin kailangan ito. [LAUGHS] Oo, na 279 00:11:12,684 --> 00:11:14,225 dapat na pandaigdigang underscore variable. 280 00:11:14,225 --> 00:11:15,760 281 00:11:15,760 --> 00:11:18,430 Kaya sa pag-aakala na iyon ay pandaigdigang underscore 282 00:11:18,430 --> 00:11:20,260 variable, kung ano ang nangyayari sa mangyayari dito? 283 00:11:20,260 --> 00:11:21,260 MAG-AARAL: Iyon ang gagana. 284 00:11:21,260 --> 00:11:22,093 Allison: Ito makikita gumagana. 285 00:11:22,093 --> 00:11:24,655 Kaya ito ay i-print, kaya lang isang napaka-simpleng halimbawa. 286 00:11:24,655 --> 00:11:27,650 287 00:11:27,650 --> 00:11:29,870 OK, mga modelo. 288 00:11:29,870 --> 00:11:33,680 Kaya malinaw naman, kami talaga bigyang-diin para sa iyo guys 289 00:11:33,680 --> 00:11:36,460 upang gumawa ng mga pag-andar kung ito magkaroon ng kahulugan sa iyong mga programa. 290 00:11:36,460 --> 00:11:38,460 Ngunit siyempre, kapag nag gumawa ng iyong sariling mga pag-andar, 291 00:11:38,460 --> 00:11:40,930 Karaniwang makikita mo tukuyin ang mga ito pagkatapos ng pangunahing. 292 00:11:40,930 --> 00:11:42,430 At makikita mo subukang tumawag ang mga ito sa pangunahing. 293 00:11:42,430 --> 00:11:46,030 At kung hindi ka gumagamit ng isang prototype, ang iyong mga compiler ay sumigaw sa iyo. 294 00:11:46,030 --> 00:11:49,590 >> Prototype ay isa lamang nagsasabi lamang ang iyong compiler 295 00:11:49,590 --> 00:11:52,400 na mayroon akong ang function na ito sa ibaba ng pangunahing. 296 00:11:52,400 --> 00:11:54,970 Pupunta ako sa tawagan ito bago ko ito tukuyin. 297 00:11:54,970 --> 00:11:56,360 Matagal lang sa. 298 00:11:56,360 --> 00:12:00,660 Nangangako ako na ito ay tinukoy, at Magkakaroon ng lahat ng bagay na kailangan mo. 299 00:12:00,660 --> 00:12:05,900 >> Kaya ang paraan ginagawa namin ito ay ang iyong return lamang uri, ang iyong pangalan ng function, ang iyong pag-input 300 00:12:05,900 --> 00:12:06,400 listahan. 301 00:12:06,400 --> 00:12:09,760 Ito ay isa lamang ang unang linya ng iyong pag-andar na pagpapahayag. 302 00:12:09,760 --> 00:12:11,510 Ito ay talagang ang lahat ng ito ay. 303 00:12:11,510 --> 00:12:14,440 Ngunit ito lamang ang pangkalahatang uri ng format. 304 00:12:14,440 --> 00:12:17,220 >> Kaya sa aming mga halimbawa dito, kung saan mo guys dapat 305 00:12:17,220 --> 00:12:19,700 na nakita sa seksyon sa ilang mga punto, mayroon kaming 306 00:12:19,700 --> 00:12:23,220 ilang int kubo na tumatagal ng ilang int ng pag-input. 307 00:12:23,220 --> 00:12:25,870 At mayroon kaming pangunahing function, na tinatawag kubo. 308 00:12:25,870 --> 00:12:28,670 At kubo ay tinutukoy pagkatapos ng katotohanan. 309 00:12:28,670 --> 00:12:34,450 >> Kaya kung hindi namin ginawa magkaroon ng int kubo ng pag-input sa itaas, kapag tinatawag naming kubo 310 00:12:34,450 --> 00:12:36,620 sa loob ng pangunahing, ang aming compiler Gusto makakuha ng galit na galit sa amin. 311 00:12:36,620 --> 00:12:38,890 Gusto Ito ay tulad ng, kung ano ang kausap mo tungkol sa? 312 00:12:38,890 --> 00:12:40,360 Cube ay hindi umiiral. 313 00:12:40,360 --> 00:12:41,910 Hindi ko alam kung ano ang iyong humihingi. 314 00:12:41,910 --> 00:12:43,490 At pupuntahan ko lang stop. 315 00:12:43,490 --> 00:12:47,330 >> Ngunit dahil ginawa namin ang aming prototype sa itaas, nai-sinabi namin, 316 00:12:47,330 --> 00:12:49,800 alam mo na, kapag nakita mo kubo, huwag mag-alala tungkol dito. 317 00:12:49,800 --> 00:12:51,990 Nangangako ako ito ay tinukoy sa ibang pagkakataon. 318 00:12:51,990 --> 00:12:53,750 At makikita ito ipaalam gawin mo kung ano ang gusto mo. 319 00:12:53,750 --> 00:12:57,750 Kaya kung sakaling mayroon kang isang function na ipinahayag pagkatapos mong tawagan ito 320 00:12:57,750 --> 00:13:00,570 para sa unang pagkakataon, kailangan mong Mayroon itong prototyped sa itaas. 321 00:13:00,570 --> 00:13:01,640 322 00:13:01,640 --> 00:13:02,720 >> Oo? 323 00:13:02,720 --> 00:13:04,412 >> Rob: Ito ay nakalapat, hindi cubing. 324 00:13:04,412 --> 00:13:05,855 >> Allison: Oh aking Diyos. 325 00:13:05,855 --> 00:13:09,435 Hindi ko have-- Gabe, naisip ko na kayo ay aming tagawasto. 326 00:13:09,435 --> 00:13:10,740 327 00:13:10,740 --> 00:13:12,760 OK guys, makisama sa akin, dito. 328 00:13:12,760 --> 00:13:14,440 Umaasa ako sa lahat ng tao ang pagkuha ng mga ideya. 329 00:13:14,440 --> 00:13:15,560 330 00:13:15,560 --> 00:13:20,380 OK, sa gayon ito ay dapat magkaroon na nakalapat, hindi nakakubo. 331 00:13:20,380 --> 00:13:22,700 Ngunit ang ideya ay nananatiling pareho. 332 00:13:22,700 --> 00:13:23,702 333 00:13:23,702 --> 00:13:26,660 Anumang mga pag-andar na aming pagtawag pagkatapos ng ang katotohanan ay dapat magkaroon ng prototype. 334 00:13:26,660 --> 00:13:27,730 335 00:13:27,730 --> 00:13:28,970 Ang bawat tao'y may mahusay na? 336 00:13:28,970 --> 00:13:30,730 337 00:13:30,730 --> 00:13:32,310 Anumang iba pang mga typo? 338 00:13:32,310 --> 00:13:32,810 OK. 339 00:13:32,810 --> 00:13:34,730 340 00:13:34,730 --> 00:13:36,230 Anumang mga typo dito bago namin simulan, Rob? 341 00:13:36,230 --> 00:13:37,356 342 00:13:37,356 --> 00:13:42,380 [LAUGHS] OK, kaya structs. 343 00:13:42,380 --> 00:13:45,040 Talaga, payagan mo structs upang likhain ang iyong sariling uri ng data. 344 00:13:45,040 --> 00:13:49,264 Kaya tulad ng isang int o isang pansamantalang trabaho o isang float, ito ay isa lamang uri. 345 00:13:49,264 --> 00:13:51,680 Gusto kong isipin na ito bilang, tulad ng, lumikha ng iyong sariling uri ng data. 346 00:13:51,680 --> 00:13:53,740 Kaya pinapayagan ka upang gawin iyon. 347 00:13:53,740 --> 00:13:56,160 At hold iba't ibang mga uri ng data. 348 00:13:56,160 --> 00:14:01,030 >> Kaya kung tandaan mo, sa isang array, namin maaari lamang humawak ng mga bagay ng parehong uri. 349 00:14:01,030 --> 00:14:04,660 Structs-daan sa amin upang i-hold ang maramihang bagay ng iba't ibang mga uri. 350 00:14:04,660 --> 00:14:08,944 Kaya sa kasong ito dito, namin magkaroon ng struct tinatawag na Mag-aaral, 351 00:14:08,944 --> 00:14:10,650 na may pangalang dito sa ibaba. 352 00:14:10,650 --> 00:14:13,540 At mayroon kaming ilang mga int id at ang ilang mga pangalan ng string. 353 00:14:13,540 --> 00:14:14,620 354 00:14:14,620 --> 00:14:17,300 Kaya ito ay isa lamang uri ng data. 355 00:14:17,300 --> 00:14:18,950 Mayroon na kami ngayong ng isang uri ng data na tinatawag na Mag-aaral. 356 00:14:18,950 --> 00:14:20,330 357 00:14:20,330 --> 00:14:24,750 >> Kaya dahil maaari naming isipin ito bilang isa lamang uri ng data, 358 00:14:24,750 --> 00:14:27,760 maaari naming ipinapahayag na variable tulad ng gagawin namin sa anumang iba pang. 359 00:14:27,760 --> 00:14:32,680 Kaya sa halip ng pagkakaroon lamang, tulad ng, ang isang int mag-aaral, mayroon lamang kami ng isang mag-aaral, 360 00:14:32,680 --> 00:14:33,390 mag-aaral 1. 361 00:14:33,390 --> 00:14:33,560 Oh, hanapin. 362 00:14:33,560 --> 00:14:34,059 Ito ay Rob. 363 00:14:34,059 --> 00:14:35,750 364 00:14:35,750 --> 00:14:38,880 Kaya dito kami ay deklarasyon isang struct, o isang variable 365 00:14:38,880 --> 00:14:40,940 na tinatawag na mag-aaral 1 ng mag-aaral uri. 366 00:14:40,940 --> 00:14:45,370 Kaya ito ay pagpunta sa may id at pangalan na nauugnay dito. 367 00:14:45,370 --> 00:14:48,430 >> At ang paraan ma-access namin ang mga mga elemento sa loob ng aming struct 368 00:14:48,430 --> 00:14:50,100 ay may tuldok operator, dito. 369 00:14:50,100 --> 00:14:51,910 370 00:14:51,910 --> 00:14:54,660 Kaya sa kasong ito, kami mga ipinahayag na ang ilang mga mag-aaral 1. 371 00:14:54,660 --> 00:14:57,080 Itinalaga namin ang ID na maging 1. 372 00:14:57,080 --> 00:14:58,840 At nagtalaga kami ng mga pangalan upang Rob. 373 00:14:58,840 --> 00:15:03,010 374 00:15:03,010 --> 00:15:04,960 OK, lahat maganda sa iyon? 375 00:15:04,960 --> 00:15:06,787 Gamitin lamang like-- ito yes? 376 00:15:06,787 --> 00:15:09,530 >> MAG-AARAL: Oo, typedef-- kapag kailangan naming gamitin ang typedef? 377 00:15:09,530 --> 00:15:13,190 >> Allison: Kaya typedef lamang sabi ni Rob that--, mo 378 00:15:13,190 --> 00:15:16,990 maitatama sa akin sa kung ako wrong-- ngunit typedef lamang ang aktwal na deklarasyon 379 00:15:16,990 --> 00:15:19,330 ito bilang isang uri na maaari mong gamitin, i-right? 380 00:15:19,330 --> 00:15:22,550 >> Rob: Oo, ito ay isa lamang, kaya lang ito sa paglikha ng 381 00:15:22,550 --> 00:15:24,215 alyas, o isang palayaw para sa isang uri. 382 00:15:24,215 --> 00:15:25,590 Kaya maaari mong i-type na [hindi marinig]. 383 00:15:25,590 --> 00:15:27,140 384 00:15:27,140 --> 00:15:30,350 Kaya Umiiral na [hindi marinig], at ngayon kami ay may lamang 385 00:15:30,350 --> 00:15:32,090 [Hindi marinig] paraan nang eksakto ang parehong bagay. 386 00:15:32,090 --> 00:15:37,210 At kaya dito, kami ay nai-type, sa palagay ko, ang ilang mga uri ng struct 2 [hindi marinig]. 387 00:15:37,210 --> 00:15:40,680 Kaya ito ay isang palayaw lamang para sa isang naibigay na uri. 388 00:15:40,680 --> 00:15:44,344 >> MAG-AARAL: String [hindi marinig] library ay na-type up tulad ng pansamantalang trabaho star. 389 00:15:44,344 --> 00:15:51,380 390 00:15:51,380 --> 00:15:54,390 >> Allison: Para sa aming mga layunin dito, kung naka-deklarasyon ng struct, 391 00:15:54,390 --> 00:15:55,600 gawin lamang typedef struct. 392 00:15:55,600 --> 00:15:57,680 393 00:15:57,680 --> 00:16:04,490 OK, kaya sa simula pa, ito ay lamang ng isang normal na variable dito. 394 00:16:04,490 --> 00:16:06,390 -Access namin ito gamit ang dot. 395 00:16:06,390 --> 00:16:08,580 kung mayroon kaming isang pointer sa isang struct, maaari naming aktwal 396 00:16:08,580 --> 00:16:10,700 gamitin ang isang arrow, na kung saan ay medyo cool. 397 00:16:10,700 --> 00:16:17,130 >> Kaya sa kasong ito, mayroon kaming isang pointer sa isang mag-aaral 1 na ng mag-aaral uri. 398 00:16:17,130 --> 00:16:19,020 Tandaan, kasama ang iyong pointer ng konstruksiyon, 399 00:16:19,020 --> 00:16:23,710 Gusto mo anumang-type ang iyong pointer ay nagtuturo sa upang maging sa simula. 400 00:16:23,710 --> 00:16:25,960 Kaya mayroon kaming ilang mga mag-aaral 1, dito. 401 00:16:25,960 --> 00:16:27,370 402 00:16:27,370 --> 00:16:31,050 At dahil mag-aaral ito 1 ay isa na ngayong matulis, 403 00:16:31,050 --> 00:16:36,520 maaari naming aktwal na pumunta mag-aaral pangalan 1 arrow sa halip ng tuldok, dahil ito ay isang pointer, 404 00:16:36,520 --> 00:16:37,640 at magtalaga Rob. 405 00:16:37,640 --> 00:16:40,720 At ngayon kung gusto naming baguhin Rob sa Davin, 406 00:16:40,720 --> 00:16:43,570 ito ay lamang ng pagpapakita sa iyo ang ibang paraan upang magawa ito. 407 00:16:43,570 --> 00:16:48,850 >> Kaya sa halip na gamitin ang mga arrow, mo Maaari also-- ako matapos na ito at pagkatapos ay 408 00:16:48,850 --> 00:16:52,860 tumagal na question-- ng dati mo ring gawin reference mag-aaral 1. 409 00:16:52,860 --> 00:16:56,170 Na sinasabi tulad ng pumunta sa anumang ay sa mag-aaral 1, na 410 00:16:56,170 --> 00:16:58,840 ay magiging aming mga mag-aaral struct. 411 00:16:58,840 --> 00:17:03,910 I-access ito sa isang tuldok at ang elemento na gusto mo, at pagkatapos ay i-reassign ito. 412 00:17:03,910 --> 00:17:05,326 Nagkaroon ng isang katanungan. 413 00:17:05,326 --> 00:17:08,034 MAG-AARAL: Oo, kaya kung paano dumating mayroon kang gamitin ang [hindi marinig] kapag ikaw ay 414 00:17:08,034 --> 00:17:10,367 paggawa ng mag-aaral na walang bituin [Hindi marinig] mag-aaral? 415 00:17:10,367 --> 00:17:12,200 Allison: Dahil ito ay ang paglikha ng isang pointer. 416 00:17:12,200 --> 00:17:13,616 Rob: Kami ay pagpunta sa makipag-usap tungkol dito. 417 00:17:13,616 --> 00:17:16,119 Allison: Kami ay pagpunta sa makipag-usap tungkol na sa paglaon sa pagsusuri. 418 00:17:16,119 --> 00:17:17,660 Kaya hawakan lamang sa pag-iisip na iyon. 419 00:17:17,660 --> 00:17:20,560 Kung bothers mo ito pa rin sa pagtatapos, ay makipag-usap sa isa sa amin. 420 00:17:20,560 --> 00:17:23,380 >> Kaya ang mga ginagawa nang eksakto ang parehong bagay. 421 00:17:23,380 --> 00:17:25,579 Ka lamang nagpapakita kami sa iyo ng dalawang iba't ibang paraan upang gawin ito. 422 00:17:25,579 --> 00:17:29,470 Mag-aaral 1 ay isa na ngayong pointer, kaya Maaari mong ma-access ang elemento ng Pangalan 423 00:17:29,470 --> 00:17:30,960 sa loob ng struct na may isang arrow. 424 00:17:30,960 --> 00:17:36,440 O maaari mong dereference iyong pointer, at pagkatapos ay i-access ito tulad ng karaniwan mong ginagawa. 425 00:17:36,440 --> 00:17:38,430 Sinusuportahan ba na saysay sa bawat isa? 426 00:17:38,430 --> 00:17:39,480 427 00:17:39,480 --> 00:17:43,890 Kung ang buong pointer ng bagay ay isang maliit na nakakalito, Gabe ay makipag-usap tungkol sa na, 428 00:17:43,890 --> 00:17:45,740 at pagkatapos ay marahil na ito ay gawing mas kahulugan. 429 00:17:45,740 --> 00:17:46,240 Oo? 430 00:17:46,240 --> 00:17:48,387 >> MAG-AARAL: Oo, kaya kung paano ay ito naiiba mula sa? 431 00:17:48,387 --> 00:17:49,470 Allison: Ang nakaraang isa? 432 00:17:49,470 --> 00:17:52,330 Kaya ng mag-aaral 1 sa kaso ay hindi isang pointer. 433 00:17:52,330 --> 00:17:54,380 Ito ay lamang ang iyong aktwal na struct. 434 00:17:54,380 --> 00:17:55,400 >> MAG-AARAL: OK. 435 00:17:55,400 --> 00:17:57,645 >> Allison: Sapagkat ang isang ito ay isang pointer sa isang struct. 436 00:17:57,645 --> 00:17:58,910 437 00:17:58,910 --> 00:18:02,060 >> MAG-AARAL: OK, ngunit ginagawa nito uri ng napupunta gumagana sa parehong [hindi marinig]. 438 00:18:02,060 --> 00:18:03,310 >> Allison: Ito ay epektibong ay gumagana sa parehong. 439 00:18:03,310 --> 00:18:04,560 Ang iyong syntax ay naiiba lamang. 440 00:18:04,560 --> 00:18:05,185 MAG-AARAL: OK. 441 00:18:05,185 --> 00:18:07,600 >> Allison: Oo, ang mga ito ay ang parehong epektibo. 442 00:18:07,600 --> 00:18:11,321 Lamang Ito ay depende sa konteksto, baka gusto isa sa ibabaw ng iba pang. 443 00:18:11,321 --> 00:18:11,820 Oo? 444 00:18:11,820 --> 00:18:13,956 >> MAG-AARAL: Kapag ginawa mo mga sanggunian sa 1-- 445 00:18:13,956 --> 00:18:14,580 Allison: MM-Hm? 446 00:18:14,580 --> 00:18:16,880 MAG-AARAL: Bakit mo may panaklong? 447 00:18:16,880 --> 00:18:19,575 Allison: Dahil ang mag-aaral 1 ay ang pointer. 448 00:18:19,575 --> 00:18:22,200 Kaya kailangan mong tiyakin na ikaw ay dereferencing lamang ang pointer. 449 00:18:22,200 --> 00:18:23,380 >> MAG-AARAL: OK. 450 00:18:23,380 --> 00:18:26,700 >> Allison: Kaya sa kasong ito dito, ang mga panaklong sa paligid nito 451 00:18:26,700 --> 00:18:29,875 Nangangahulugan ka dereferencing mag-aaral 1. 452 00:18:29,875 --> 00:18:35,390 Kaya na iyong pupuntahan kung saan ang mag-aaral 1 punto, na ang iyong struct. 453 00:18:35,390 --> 00:18:38,010 Maaari mong Kaya ngayon tingin ng ito bilang na struct, 454 00:18:38,010 --> 00:18:39,785 upang maaari naming gamitin ang aming normal na operasyon tuldok. 455 00:18:39,785 --> 00:18:42,752 456 00:18:42,752 --> 00:18:43,585 Ang anumang iba pang mga tanong? 457 00:18:43,585 --> 00:18:45,840 458 00:18:45,840 --> 00:18:48,120 Mahusay, kahanga-hangang. 459 00:18:48,120 --> 00:18:51,359 >> Kaya huling bagay, sa tingin ko ang aking huling slide, mang-akit! 460 00:18:51,359 --> 00:18:52,775 OK, kaya lumulutang na tuldok imprecision. 461 00:18:52,775 --> 00:18:54,090 462 00:18:54,090 --> 00:18:56,820 Kami usapan sa madaling sabi tungkol sa ito sa panahon ng panayam. 463 00:18:56,820 --> 00:19:00,030 Talaga, mayroon kaming walang hanggan maraming mga tunay na numero. 464 00:19:00,030 --> 00:19:02,237 At kung anuman sa iyo guys Gustung-gusto matematika, mayroong 465 00:19:02,237 --> 00:19:03,570 lahat ng uri ng mga cool na bagay sa amin. 466 00:19:03,570 --> 00:19:05,010 467 00:19:05,010 --> 00:19:07,190 >> Ngunit may mga walang katapusan maraming mga tunay na numero. 468 00:19:07,190 --> 00:19:09,850 Ngunit ang mga ito ay may hangganan lamang maraming mga piraso na mayroon kami. 469 00:19:09,850 --> 00:19:13,240 Kaya ka palaging pagpunta sa Mayroon imprecision, ay lahat. 470 00:19:13,240 --> 00:19:16,269 At na ito lamang uri ng tulad ng isang bagay na dapat mong malaman. 471 00:19:16,269 --> 00:19:19,060 Na tulad namin maaaring hilingin sa iyo kung bakit ang lumulutang na tuldok imprecision umiiral? 472 00:19:19,060 --> 00:19:20,004 473 00:19:20,004 --> 00:19:21,420 Isang bagay kaya lang dapat mong malaman. 474 00:19:21,420 --> 00:19:23,770 At gamit na, ako pag ito sa ibabaw ng Pointer. 475 00:19:23,770 --> 00:19:27,720 476 00:19:27,720 --> 00:19:28,520 >> BINKY: Hello, guys. 477 00:19:28,520 --> 00:19:29,616 Binky ang aking pangalan ni. 478 00:19:29,616 --> 00:19:30,990 Pupunta ako sa makipag-usap tungkol sa mga payo. 479 00:19:30,990 --> 00:19:33,247 480 00:19:33,247 --> 00:19:35,830 Oo, kaya pointer ay talagang ang aking mga paboritong bahagi sa kursong ito. 481 00:19:35,830 --> 00:19:39,740 Kaya lamang upang gumawa ng malinaw kung ano ang Allison ay pinag-uusapan dito, kaya ang mga dahilan 482 00:19:39,740 --> 00:19:43,810 why-- ang pagkakaiba lamang dito, ang malaking pagkakaiba ay ang paraan 483 00:19:43,810 --> 00:19:44,760 ipinahahayag namin bagay. 484 00:19:44,760 --> 00:19:47,560 Kaya mag-aaral na bituin ay nangangahulugan ito ay isang pointer sa isang mag-aaral. 485 00:19:47,560 --> 00:19:52,960 Sapagkat ang slide bago, mag-aaral ay isang aktwal na struct, tulad ng isang aktwal na mag-aaral, 486 00:19:52,960 --> 00:19:54,400 naglalaman ng anuman sa mga bagay. 487 00:19:54,400 --> 00:19:57,050 >> At ang dahilan kung bakit namin Gusto to-- oo, Davin? 488 00:19:57,050 --> 00:19:58,630 >> DAVIN: Ano ang ibig sabihin ng arrow? 489 00:19:58,630 --> 00:20:04,240 >> BINKY: Ang arrow paraan ang parehong eksakto tulad ito. 490 00:20:04,240 --> 00:20:06,150 Kaya huwag talagang kailangan mo ang mga arrow. 491 00:20:06,150 --> 00:20:11,060 Tulad ng, kung ikaw lamang ang programa sa C, maaari mo lamang gamitin ito. 492 00:20:11,060 --> 00:20:12,850 Paumanhin, gagawin ko hindi kung ano na. 493 00:20:12,850 --> 00:20:14,920 Maaari mo lamang gamitin ang syntax na ito. 494 00:20:14,920 --> 00:20:17,430 >> Ngunit ang ilang mga tao, kapag sila ay pagdidisenyo C, 495 00:20:17,430 --> 00:20:19,870 nila naisip na ang mga tao ginamit na syntax kaya magkano, 496 00:20:19,870 --> 00:20:23,970 na sila ay gustong lamang makabuo na may syntax istraktura para dito. 497 00:20:23,970 --> 00:20:26,820 At ito nangyari sa anyo ng mga ito arrow. 498 00:20:26,820 --> 00:20:29,210 At ito ay talagang maganda, dahil ito simbolo ng isang bagay 499 00:20:29,210 --> 00:20:33,670 tulad ng aktwal na namin sinusubaybayan ang arrow, ito pointer, 500 00:20:33,670 --> 00:20:35,300 patungo sa ilang espasyo sa memory. 501 00:20:35,300 --> 00:20:40,410 At kapag makuha namin doon, gusto naming Inaasahan ng pangalan ng mag-aaral na, 502 00:20:40,410 --> 00:20:42,150 kung na saysay. 503 00:20:42,150 --> 00:20:43,000 OK? 504 00:20:43,000 --> 00:20:44,290 >> Kaya ito ay eksaktong kapareho. 505 00:20:44,290 --> 00:20:46,310 Eksaktong Ito ay ang parehong bagay bilang na ito. 506 00:20:46,310 --> 00:20:48,130 Sila makakuha ng OK pinagsama-sama ang eksaktong pareho,? 507 00:20:48,130 --> 00:20:50,100 508 00:20:50,100 --> 00:20:55,580 At ang dahilan kung bakit dito kami malloc ang isang bagay, ay dahil sa kasong ito, 509 00:20:55,580 --> 00:20:59,120 ang aming mga variable ay ang tunay lamang sa isang variable ng pointer. 510 00:20:59,120 --> 00:21:02,900 Kaya mayroon lamang namin ang ilang mga puwang sa memorya na hawak ang isang pointer. 511 00:21:02,900 --> 00:21:06,570 Hindi kami talaga mayroon kang anumang mga puwang na hold ang aktwal na struct. 512 00:21:06,570 --> 00:21:08,660 >> Kaya ito ay dapat gawin sa dalawang hakbang. 513 00:21:08,660 --> 00:21:11,545 Mayroon kaming upang likhain ang memory upang ilagay ang struct in. 514 00:21:11,545 --> 00:21:14,445 At mayroon kaming upang lumikha ng memory upang ilagay ang pointer sa. 515 00:21:14,445 --> 00:21:16,570 Kaya ang mga ito ay isa lamang sa dalawang iba't-ibang mga variable, dito. 516 00:21:16,570 --> 00:21:19,730 Ang isa sa mga ito ay mag-aaral ng uri, maliban ito ay hindi talagang magkaroon ng isang pangalan. 517 00:21:19,730 --> 00:21:21,900 At ang iba pang isa ay ng uri ng mag-aaral na bituin. 518 00:21:21,900 --> 00:21:24,900 At pagkatapos ay mag-aaral 1 punto doon, kung na make-unawa. 519 00:21:24,900 --> 00:21:25,871 520 00:21:25,871 --> 00:21:26,370 OK? 521 00:21:26,370 --> 00:21:28,160 522 00:21:28,160 --> 00:21:31,860 >> Kaya ang dahilan kung bakit ginagamit namin mga payo ay dahil ang lahat ng bagay 523 00:21:31,860 --> 00:21:35,510 sa isang computer, ang bawat variable sa isang computer ay may dalawang mga bagay. 524 00:21:35,510 --> 00:21:36,580 Ito ay ang halaga nito. 525 00:21:36,580 --> 00:21:38,420 At ito ay ang address nito. 526 00:21:38,420 --> 00:21:41,390 At isang mahusay na paraan upang conceptualize ito ay mayroong 527 00:21:41,390 --> 00:21:44,230 maraming mga problema kapag nag subukang gamitin ang pag-andar. 528 00:21:44,230 --> 00:21:47,200 At kami ay pagpunta upang subukang tumingin sa isa sa mga iyon. 529 00:21:47,200 --> 00:21:50,370 Lalo, ito ay pagpunta sa -isip ng memorya bilang mga kahon. 530 00:21:50,370 --> 00:21:52,810 >> Palagi kang naisip ng mga variable kapag sinabi mo Na katumbas ng 5. 531 00:21:52,810 --> 00:21:54,430 Sa tingin mo na ilagay ang 5 sa isang kahon. 532 00:21:54,430 --> 00:21:55,520 533 00:21:55,520 --> 00:22:00,030 Kaya kung ano kung gusto mong pumasa na int sa isang function? 534 00:22:00,030 --> 00:22:03,230 Pass-- mo lang gagawin ko hindi know-- x sa isang function. 535 00:22:03,230 --> 00:22:06,090 Ngunit kung ano ang mangyayari ay normal bilang tao, mo 536 00:22:06,090 --> 00:22:09,050 Gusto sa tingin ng isang bagay tulad ng ako ay pagpasa sa kahon sa isang tao. 537 00:22:09,050 --> 00:22:12,070 At hindi talaga mangyari sa mga computer. 538 00:22:12,070 --> 00:22:17,770 Ano ang mangyayari ay kopyahin mo ang value ng kahon sa kahon ng tao. 539 00:22:17,770 --> 00:22:22,440 >> Kaya kung ano ang sinusubukan ko sasabihin ay kung mayroon kang function-- sorry-- dito, 540 00:22:22,440 --> 00:22:27,700 kung kami ay may isang function tulad ng sa limang up doon, kung susubukan mo upang pumasa sa isang variable, 541 00:22:27,700 --> 00:22:29,450 lamang ito ng pagpunta sa kopyahin. 542 00:22:29,450 --> 00:22:35,771 Kung ang isang pagsisimula ng pag-nx ay katumbas ng 3, ito ay pagpunta upang kopyahin ang halagang ito hanggang sa isang variable 543 00:22:35,771 --> 00:22:36,270 up doon. 544 00:22:36,270 --> 00:22:37,005 545 00:22:37,005 --> 00:22:39,630 OK, at ito ay uri ng mga dahilan bakit gusto naming gamitin ang mga payo. 546 00:22:39,630 --> 00:22:42,550 Dahil sa halip na pagbibigay lamang ang halaga, 547 00:22:42,550 --> 00:22:44,850 sa halip na lamang ang pagpasa lamang ang halaga sa isang function, 548 00:22:44,850 --> 00:22:46,530 gusto naming dinadaanan ang reference. 549 00:22:46,530 --> 00:22:50,630 Ano ang tinatawag naming pass sa pamamagitan ng sanggunian ay uri ng pagbibigay ang kahon upang ang pag-andar, 550 00:22:50,630 --> 00:22:53,890 nang sa gayon ay ang pag-andar maaari ring baguhin ang mga halaga sa loob ng kahon. 551 00:22:53,890 --> 00:22:57,280 >> OK, kaya lamang ang ilang pangunahing pointer mga bagay-bagay ay upang lumikha ng mga payo, 552 00:22:57,280 --> 00:23:00,300 pinahahayag lang ito ng isang uri, at kang maglagay ng star kanan pagkatapos nito. 553 00:23:00,300 --> 00:23:02,307 At ang uri ng lamang kung ano ang iyong na tumuturo sa. 554 00:23:02,307 --> 00:23:04,390 Kaya kung ito ay isang int bituin, ka na tumuturo sa isang int. 555 00:23:04,390 --> 00:23:05,940 Kung ito ay isang pansamantalang trabaho bituin, ka na tumuturo sa isang chart. 556 00:23:05,940 --> 00:23:07,790 At kung ito ay isang mag-aaral ng bituin, ka na tumuturo sa isang mag-aaral. 557 00:23:07,790 --> 00:23:08,770 OK? 558 00:23:08,770 --> 00:23:10,510 >> At ang mga ito ay ang lahat ng 4 bytes mahaba. 559 00:23:10,510 --> 00:23:13,010 Dahil ang variable hindi tunay 560 00:23:13,010 --> 00:23:15,380 Kailangan upang i-hold ang isang pansamantalang trabaho, isang int, o isang mag-aaral. 561 00:23:15,380 --> 00:23:16,890 Kailangan lamang ito upang i-hold ang isang address. 562 00:23:16,890 --> 00:23:21,390 Iyon ang dahilan kung bakit ang mga ito ay ang lahat ng 4 bytes mahaba sa isang normal na 32-bit na machine. 563 00:23:21,390 --> 00:23:21,890 OK? 564 00:23:21,890 --> 00:23:25,600 Kaya dito, x ay isang variable na tumuturo papunta sa isang int. y mga punto sa isang pansamantalang trabaho. z puntos 565 00:23:25,600 --> 00:23:26,580 sa isang float. 566 00:23:26,580 --> 00:23:27,480 Ang anumang mga tanong dito? 567 00:23:27,480 --> 00:23:29,841 568 00:23:29,841 --> 00:23:30,340 Ayos. 569 00:23:30,340 --> 00:23:32,550 At mayroong dalawang iba't ibang mga simbolo ang mga ito ay 570 00:23:32,550 --> 00:23:34,341 na dapat tandaan kapag na nanggagaling sa pointer. 571 00:23:34,341 --> 00:23:36,540 Kaya tumutukoy at dereferencing ang malaki bago. 572 00:23:36,540 --> 00:23:38,100 573 00:23:38,100 --> 00:23:41,602 Kaya ang ampersand ng pangalan ng variable ay nagbibigay sa iyo ng? 574 00:23:41,602 --> 00:23:42,310 MAG-AARAL: Address. 575 00:23:42,310 --> 00:23:43,380 BINKY: Address. 576 00:23:43,380 --> 00:23:47,330 Kaya kung ipinahayag mo int isang ay katumbas ng 5, pagkatapos ay i-ampersand 577 00:23:47,330 --> 00:23:49,214 ng isang ay pagpunta sa magbibigay sa iyo ng address. 578 00:23:49,214 --> 00:23:51,130 At maaari mong aktwal na subukan mag-print na iyon at makita 579 00:23:51,130 --> 00:23:54,640 ano address sa memory ang iyong mga variable na may. 580 00:23:54,640 --> 00:23:57,380 At pagkatapos ay dereferencing-- nang sa gayon ay tumutukoy, 581 00:23:57,380 --> 00:24:00,380 pagkuha ng address-- dereferencing ay ang eksaktong kabaligtaran. 582 00:24:00,380 --> 00:24:04,120 OK, tulad ng mga oras ay ang sa tapat ng isang sangay, 583 00:24:04,120 --> 00:24:06,060 star ay ang tapat ng ampersand. 584 00:24:06,060 --> 00:24:09,710 Kaya dereferencing paraan pumunta doon. 585 00:24:09,710 --> 00:24:14,280 Kaya kung bibigyan ka star-- ko huwag know-- 50, na 586 00:24:14,280 --> 00:24:20,320 pagpunta sa subukan upang pumunta sa address ng numero 50 sa loob ng iyong computer. 587 00:24:20,320 --> 00:24:22,840 OK, at bakit nakikita natin na ang mga ito ay opposites? 588 00:24:22,840 --> 00:24:27,320 Dahil kung ano ang mangyayari kung gagawin mo isang bagay tulad ng bituin ampersand isang? 589 00:24:27,320 --> 00:24:28,470 590 00:24:28,470 --> 00:24:33,460 Well, ampersand ang nagbibigay sa iyo ng address ng isang variable, ang address ng isang. 591 00:24:33,460 --> 00:24:35,830 Ngunit bituin ay nangangahulugan na pumunta doon. 592 00:24:35,830 --> 00:24:38,930 >> Kaya kung ano ang mangyayari kung pumunta sa address ng isang? 593 00:24:38,930 --> 00:24:40,400 Kang makakuha lamang sa isang, i-right? 594 00:24:40,400 --> 00:24:41,410 595 00:24:41,410 --> 00:24:43,600 Kaya pagpunta sa address ng isang kaparehong bagay ang bilang. 596 00:24:43,600 --> 00:24:47,580 Iyon ang dahilan kung bakit ang mga ito ay karaniwang tinutukoy ang same-- ito 597 00:24:47,580 --> 00:24:50,480 at ito ay tinukoy sa bilang tapat operator. 598 00:24:50,480 --> 00:24:50,980 OK? 599 00:24:50,980 --> 00:24:52,780 600 00:24:52,780 --> 00:24:53,790 Kaya cool. 601 00:24:53,790 --> 00:24:57,240 >> Sa ilalim ng hood, halimbawa, kung ipinahayag namin int x ay katumbas ng 5, 602 00:24:57,240 --> 00:24:58,040 mayroon kaming isang variable. 603 00:24:58,040 --> 00:25:00,790 At tandaan na ang sinabi ko sa bawat variable-- at ito ay isang magandang bagay 604 00:25:00,790 --> 00:25:03,820 upang panatilihin sa mind-- mayroon itong dalawang iba't ibang bagay na nauugnay sa. 605 00:25:03,820 --> 00:25:06,460 Mayroon itong naka-address at ng isang halaga. 606 00:25:06,460 --> 00:25:07,140 OK? 607 00:25:07,140 --> 00:25:09,180 >> Kaya ang halaga sa kasong ito ay 5. 608 00:25:09,180 --> 00:25:12,140 At ang address is-- sabihin nating, ako ay paggawa ng isang bagay up-- ito 0x04. 609 00:25:12,140 --> 00:25:13,180 610 00:25:13,180 --> 00:25:17,200 At ang tanging dahilan kung bakit namin karaniwang kumakatawan sa mga address sa hexadecimal 611 00:25:17,200 --> 00:25:19,770 ay isa, dahil ito ay tulad ng mabuti. 612 00:25:19,770 --> 00:25:21,600 Ito napupunta na rin sa binary. 613 00:25:21,600 --> 00:25:23,500 Ito ay madali upang i-convert sa at mula sa binary. 614 00:25:23,500 --> 00:25:26,890 At hindi ito makakuha ng masyadong malaki kung mayroon kang isang napaka-malaking numero. 615 00:25:26,890 --> 00:25:29,990 Kaya gusto naming gamitin ang hexadecimal sa pagpi-print address. 616 00:25:29,990 --> 00:25:31,890 Ngunit maaari kong kumatawan ito bilang isang integer. 617 00:25:31,890 --> 00:25:32,750 Ito ay multa. 618 00:25:32,750 --> 00:25:35,450 >> At kaya ito ay may isang address 4 at isang halaga na 5. 619 00:25:35,450 --> 00:25:38,080 At pagkatapos ay sinabi ko int star pointer. 620 00:25:38,080 --> 00:25:40,070 Kaya ito ay isang iba't ibang mga uri, abiso. 621 00:25:40,070 --> 00:25:43,220 Int star pointer ay katumbas ng ang address ng x. 622 00:25:43,220 --> 00:25:46,425 Kaya kung ano ay magiging ang halaga ng ptr? 623 00:25:46,425 --> 00:25:47,710 624 00:25:47,710 --> 00:25:51,600 Ito ay magiging ang address ng x, pababa dito. 625 00:25:51,600 --> 00:25:54,190 OK, kaya ang halaga ay pagpunta sa maging kapareho ng address. 626 00:25:54,190 --> 00:25:56,130 Iyon ay nagpapatakbo ang pagtatalaga ako ginagawa. 627 00:25:56,130 --> 00:25:59,380 At pagkatapos ay ptr ay pagpunta sa may sarili nitong address, na nag-o-out, 628 00:25:59,380 --> 00:26:02,050 sa kasong ito, ang 8, OK? 629 00:26:02,050 --> 00:26:03,850 630 00:26:03,850 --> 00:26:05,900 >> At pagkatapos ay ako lilikha ng bagong kopya ng integer. 631 00:26:05,900 --> 00:26:08,790 At sinasabi ko ay katumbas ng pumunta doon int kopya. 632 00:26:08,790 --> 00:26:11,140 Kaya pumunta sa kung ano ang ptr ay tumuturo sa. 633 00:26:11,140 --> 00:26:13,940 Well, kung ano ang ptr na ito? 634 00:26:13,940 --> 00:26:14,740 Ptr may 0x04. 635 00:26:14,740 --> 00:26:16,060 636 00:26:16,060 --> 00:26:18,400 Ano ang mangyayari kapag sinusubukan kong pumunta doon? 637 00:26:18,400 --> 00:26:23,650 Ay ko mahahanap ang taong may address x at kung sino ang may address 4. 638 00:26:23,650 --> 00:26:25,970 At kung sino ang may apat na tugunan ay x. 639 00:26:25,970 --> 00:26:26,950 Ay na magkaroon ng kahulugan? 640 00:26:26,950 --> 00:26:28,295 641 00:26:28,295 --> 00:26:28,795 Oo? 642 00:26:28,795 --> 00:26:32,060 >> MAG-AARAL: Sa kasong ito, ay ang pointer sa isang stack? 643 00:26:32,060 --> 00:26:36,024 >> BINKY: Sa kasong ito, it's-- mahusay na pinag-uusapan. 644 00:26:36,024 --> 00:26:38,690 Ako ay hindi tunay na isipin ang tungkol na ito kapag gumagawa ng hanggang mga address na ito. 645 00:26:38,690 --> 00:26:42,570 Ngunit kung ito ay, tulad ng, ang lahat ng mga ito ay mga lokal na variable, 646 00:26:42,570 --> 00:26:46,372 pagkatapos x ay pagpunta sa mabuhay in-- lahat Mawawala na mabuhay sa stack. 647 00:26:46,372 --> 00:26:48,330 Kaya lahat ay pagpunta na tumuturo sa stack. 648 00:26:48,330 --> 00:26:49,360 649 00:26:49,360 --> 00:26:52,700 Ikaw lamang makapunta sa kimpal kapag simulan mong gamitin ang malloc, tama? 650 00:26:52,700 --> 00:26:59,430 >> Kaya kung isipin mo stack ay tuwing mong tawagan ang isang function sa iyong programa, 651 00:26:59,430 --> 00:27:02,800 tulad ng, ang mga pangunahing halimbawa, o anumang iba pang mga function, tulad ng printf. 652 00:27:02,800 --> 00:27:06,334 Ang lahat ng mga lokal na variable ay pagpunta upang ilagay sa isang stack frame. 653 00:27:06,334 --> 00:27:08,500 At sila ay pagpunta upang makakuha ng tulad ng nakasalansan up sa stack. 654 00:27:08,500 --> 00:27:09,930 Iyon ay kung ano ang tinatawag na stack. 655 00:27:09,930 --> 00:27:12,200 At ang lahat ng mga lokal na variable ay magiging doon. 656 00:27:12,200 --> 00:27:14,940 At ang heap-- at kami ay pagpunta makipag-usap nang higit pa tungkol sa later-- 657 00:27:14,940 --> 00:27:19,050 ang kimpal ay kung saan lahat ng dynamic na ilalaan buhay memory. 658 00:27:19,050 --> 00:27:20,270 Cool? 659 00:27:20,270 --> 00:27:21,680 >> Pumunta kami sa slide na ito. 660 00:27:21,680 --> 00:27:22,800 Oo? 661 00:27:22,800 --> 00:27:25,490 >> MAG-AARAL: Bakit hindi int Kopyahin ang bumabalik na 0x04? 662 00:27:25,490 --> 00:27:27,870 663 00:27:27,870 --> 00:27:30,066 >> BINKY: Bakit hindi int Kopyahin ang bumabalik na 0x04? 664 00:27:30,066 --> 00:27:32,450 >> MAG-AARAL: Bakit hindi na [hindi marinig]? 665 00:27:32,450 --> 00:27:35,530 >> BINKY: Dahil kung ano ang isang halaga ng ptr? 666 00:27:35,530 --> 00:27:37,394 667 00:27:37,394 --> 00:27:38,370 >> MAG-AARAL: 0x04. 668 00:27:38,370 --> 00:27:38,960 >> BINKY: 0x04. 669 00:27:38,960 --> 00:27:40,910 Ano ang mangyayari kung pupunta ka sa 0x04? 670 00:27:40,910 --> 00:27:41,620 Ano ang kang makakuha? 671 00:27:41,620 --> 00:27:42,371 >> MAG-AARAL: Oh, OK. 672 00:27:42,371 --> 00:27:42,995 BINKY: mong makita? 673 00:27:42,995 --> 00:27:43,536 MAG-AARAL: Oo. 674 00:27:43,536 --> 00:27:44,890 BINKY: Kaya makakakuha ka ng 5. 675 00:27:44,890 --> 00:27:49,170 Kaya kopya ay pagpunta sa may 5, kung na saysay. 676 00:27:49,170 --> 00:27:49,809 Oo? 677 00:27:49,809 --> 00:27:52,803 >> MAG-AARAL: ma namin nakuha 5 sa halaga box [hindi marinig] 678 00:27:52,803 --> 00:27:55,300 kung ilalagay namin int kopyahin [hindi marinig]. 679 00:27:55,300 --> 00:27:56,710 >> BINKY: Int-- gagawin namin, oo. 680 00:27:56,710 --> 00:27:59,080 Na sana ay tapos na medyo marami ang parehong bagay. 681 00:27:59,080 --> 00:28:02,080 Subalit sa ganitong paraan, maaari naming ipasa tugunan upang function. 682 00:28:02,080 --> 00:28:05,050 At iyon ang cool na bagay kami ay pagpunta sa gawin ngayon. 683 00:28:05,050 --> 00:28:06,770 684 00:28:06,770 --> 00:28:13,090 >> Kaya ang ganitong uri ng pagsasanay na laging ay lumalabas on-- napaka-karaniwang ay lumalabas sa mga pagsusulit. 685 00:28:13,090 --> 00:28:15,870 Kaya ito ay talagang mahusay na upang subukang gawin na uri ng iyong sarili bagay. 686 00:28:15,870 --> 00:28:21,210 Kaya subukan na ang subaybayan kung ano ang address ay at nais ang mga halaga ng variable 687 00:28:21,210 --> 00:28:22,620 ay nasa bawat punto. 688 00:28:22,620 --> 00:28:24,370 Kaya ito ay eksaktong kung ano ang pagpunta naming gawin. 689 00:28:24,370 --> 00:28:26,988 Dito, mayroon kaming mga hakbang, isa, dalawa, tatlo, apat, lima. 690 00:28:26,988 --> 00:28:30,530 Ang isa, dalawa, tatlo, apat, lima. 691 00:28:30,530 --> 00:28:33,330 At kami ay pagpunta sa subaybayan ng mga halaga ng x at. 692 00:28:33,330 --> 00:28:34,650 693 00:28:34,650 --> 00:28:40,530 >> Kaya kung ano ang ginagawa, kung ito ay isang maraming surot code, sinusubukan naming gawin sa limang. 694 00:28:40,530 --> 00:28:43,610 Kaya naming sinusubukang upang makakuha ng sa isang variable at baguhin ang halaga nito upang 5. 695 00:28:43,610 --> 00:28:44,630 696 00:28:44,630 --> 00:28:49,900 At tandaan ang aking pagkakatulad ng pagkakaroon ng box at handing ang kahon sa isang tao? 697 00:28:49,900 --> 00:28:51,515 Kaya pangunahing ay ang kahon na ito na tinatawag na x. 698 00:28:51,515 --> 00:28:52,570 699 00:28:52,570 --> 00:28:54,170 At ito ay naglalaman ng mga halaga 3. 700 00:28:54,170 --> 00:28:55,230 701 00:28:55,230 --> 00:28:57,455 At sinusubukan ko ipasa ang kahong ito upang i-lima. 702 00:28:57,455 --> 00:28:58,560 703 00:28:58,560 --> 00:29:01,510 >> At gusto ko sa limang upang baguhin ang halaga ng ang kahong ito upang 5. 704 00:29:01,510 --> 00:29:03,080 705 00:29:03,080 --> 00:29:05,120 At pagkatapos ay i-print ko lang ang halaga ng x. 706 00:29:05,120 --> 00:29:06,475 707 00:29:06,475 --> 00:29:08,850 Ito ay kung ano ang aking function-- ito ay kung ano ang sinusubukan ko ang gagawin. 708 00:29:08,850 --> 00:29:12,450 Lamang sinusubukan ko upang i-update ang halaga ng x sa 5. 709 00:29:12,450 --> 00:29:13,512 710 00:29:13,512 --> 00:29:14,970 Ito ba ay malinaw kung ano ang ginagawa ang pag-andar? 711 00:29:14,970 --> 00:29:16,210 712 00:29:16,210 --> 00:29:21,440 >> OK, kaya kung ano ang magiging ang mga halaga ng x at may karapatan dito, 713 00:29:21,440 --> 00:29:27,734 ang unang linya, bago mismo ang unang line-- Gusto ko say-- ng programa? 714 00:29:27,734 --> 00:29:28,940 >> MAG-AARAL: Malamang basura. 715 00:29:28,940 --> 00:29:30,023 >> BINKY: basura bagay lamang. 716 00:29:30,023 --> 00:29:32,590 Kaya ko bang ilagay lamang N / A. Kaya hindi namin talaga alam. 717 00:29:32,590 --> 00:29:37,400 Tulad ng, isang hindi kahit pa umiiral, dahil hindi pa namin na tinatawag na sa limang. 718 00:29:37,400 --> 00:29:38,980 Int isang ay hindi ipinahayag. 719 00:29:38,980 --> 00:29:40,030 720 00:29:40,030 --> 00:29:42,920 At x ay pagpunta sa umiiral dito, ngunit mayroon kaming hindi talaga 721 00:29:42,920 --> 00:29:45,370 bibigyan ng anumang mga halaga sa mga ito, kaya OK? 722 00:29:45,370 --> 00:29:46,570 723 00:29:46,570 --> 00:29:52,340 >> At pagkatapos ay, kung ano ang magiging ang mga halaga ng x at sa numero ng dalawang? 724 00:29:52,340 --> 00:29:54,530 725 00:29:54,530 --> 00:29:55,410 >> MAG-AARAL: [hindi marinig]. 726 00:29:55,410 --> 00:29:57,540 >> BINKY: Kaya x ay magiging 3. 727 00:29:57,540 --> 00:29:59,650 Iyon ay madali, dahil kami ay nagtatalaga ng 3 dito. 728 00:29:59,650 --> 00:30:03,500 At pa rin ay hindi umiiral dahil ang isang lamang nabubuhay sa limang. 729 00:30:03,500 --> 00:30:05,800 Kaya ako ng pagpunta sa may 3 at wala. 730 00:30:05,800 --> 00:30:08,590 o tulad ng basura, kahit ano, hindi talagang tinukoy. 731 00:30:08,590 --> 00:30:11,640 732 00:30:11,640 --> 00:30:13,140 At ngayon, ito ang mahalagang linya. 733 00:30:13,140 --> 00:30:14,931 Dito, kami ay pagpunta sa talagang tumawag sa limang. 734 00:30:14,931 --> 00:30:17,140 735 00:30:17,140 --> 00:30:18,680 At tandaan kung ano ang aking sinabi. 736 00:30:18,680 --> 00:30:20,240 Kami ay hindi kailanman pumasa sa kahon. 737 00:30:20,240 --> 00:30:23,110 Kopyahin lamang namin ang halaga ng ang kahon sa isa pang box. 738 00:30:23,110 --> 00:30:27,000 Iyon ang lahat ng mga computer ko, kopyahin bagay mula sa isang lugar patungo sa isa pa. 739 00:30:27,000 --> 00:30:33,550 >> Kaya sa limang, kung ano talaga ang ginagawa nito ito kopya ang halaga ng x sa isang. 740 00:30:33,550 --> 00:30:35,130 Kaya kung ano ay magiging dito? 741 00:30:35,130 --> 00:30:36,210 Ang mga halaga ng x at. 742 00:30:36,210 --> 00:30:38,670 743 00:30:38,670 --> 00:30:43,360 3 at 3, makikita namin lamang makopya ito sa mula sa x sa isang. 744 00:30:43,360 --> 00:30:44,710 745 00:30:44,710 --> 00:30:45,320 Ayos. 746 00:30:45,320 --> 00:30:46,140 >> Ngayon kami dito. 747 00:30:46,140 --> 00:30:47,610 748 00:30:47,610 --> 00:30:49,430 At ngayon kami ay pagpunta i-update ang isang katumbas ng 5. 749 00:30:49,430 --> 00:30:50,900 750 00:30:50,900 --> 00:30:53,070 Ano ang pagpunta sa mangyayari sa apat na linya? 751 00:30:53,070 --> 00:30:55,120 752 00:30:55,120 --> 00:30:56,010 >> MAG-AARAL: [hindi marinig]. 753 00:30:56,010 --> 00:30:59,685 >> BINKY: isang maipo-update, ngunit x ay hindi-update. 754 00:30:59,685 --> 00:31:02,050 755 00:31:02,050 --> 00:31:05,250 Dahil x ay nabubuhay pa rin sa pangunahing, ito ay isang ganap na naiibang mga bloke ng memorya. 756 00:31:05,250 --> 00:31:06,970 Ito ay isang iba't ibang mga variable. 757 00:31:06,970 --> 00:31:07,900 ng isa pang variable. 758 00:31:07,900 --> 00:31:10,000 Nangyayari ang mga ito upang magkaroon ng parehong halaga dahil ako 759 00:31:10,000 --> 00:31:13,980 nakopya ang halaga ng x sa isang. 760 00:31:13,980 --> 00:31:20,070 Ngunit ngayon kapag gumawa ako ng katumbas ng 5, ito hindi talagang epekto x sa anumang paraan. 761 00:31:20,070 --> 00:31:21,450 Ito ang trickier bahagi. 762 00:31:21,450 --> 00:31:23,380 Ay gawin itong kamalayan sa lahat? 763 00:31:23,380 --> 00:31:24,093 Oo? 764 00:31:24,093 --> 00:31:25,717 MAG-AARAL: Isa pang tanong, mayroon kang 3. 765 00:31:25,717 --> 00:31:27,741 Bakit ang isang already-- oh, hindi, ito ay 3. 766 00:31:27,741 --> 00:31:28,490 Paumanhin, hindi bale. 767 00:31:28,490 --> 00:31:29,310 Nabasa ko 5. 768 00:31:29,310 --> 00:31:30,415 >> BINKY: Oo, 3, 3. 769 00:31:30,415 --> 00:31:31,540 >> MAG-AARAL: [hindi marinig], oo. 770 00:31:31,540 --> 00:31:35,290 BINKY: At pagkatapos naming magtalaga ng 5 hanggang ng, ngunit hindi talagang baguhin ang x. 771 00:31:35,290 --> 00:31:36,369 Magandang? 772 00:31:36,369 --> 00:31:36,910 MAG-AARAL: Oo. 773 00:31:36,910 --> 00:31:37,410 BINKY: Oo? 774 00:31:37,410 --> 00:31:42,330 Maaari mong ipaliwanag kung paano muli isang nakakakuha nakopya [hindi marinig]? 775 00:31:42,330 --> 00:31:48,480 >> BINKY: OK, kaya kapag tumawag ka sa limang ng x, kaya ito linya ng code dito. 776 00:31:48,480 --> 00:31:50,100 777 00:31:50,100 --> 00:31:52,340 sa limang ng x, kung ano ang x? 778 00:31:52,340 --> 00:31:55,160 779 00:31:55,160 --> 00:31:58,340 x 3 lang sa puntong ito, tama? 780 00:31:58,340 --> 00:32:03,320 Kaya maaari mong tingin lamang ng paglalagay ng 3 in dito at forgetting tungkol sa x. 781 00:32:03,320 --> 00:32:04,410 Maglagay lang ng 3 dito. 782 00:32:04,410 --> 00:32:10,880 Tulad ng, kami ay pagpunta sa kopyahin sa ibabaw ng halaga ng x sa isang int na ang bahala doon. 783 00:32:10,880 --> 00:32:12,310 784 00:32:12,310 --> 00:32:13,630 OK? 785 00:32:13,630 --> 00:32:14,780 >> Kaya ang halaga ng x 3. 786 00:32:14,780 --> 00:32:17,680 Kami ay pagpunta sa kopyahin 3 sa paglipas ng sa isang. 787 00:32:17,680 --> 00:32:20,040 At lahat ng ito sa iba pang mga bloke ng memorya, ang iba pang mga variable 788 00:32:20,040 --> 00:32:22,640 tinatawag na magkakaroon ng 3, pati na rin. 789 00:32:22,640 --> 00:32:23,580 Ay na magkaroon ng kahulugan? 790 00:32:23,580 --> 00:32:24,780 791 00:32:24,780 --> 00:32:25,794 Oo? 792 00:32:25,794 --> 00:32:31,008 >> MAG-AARAL: Kung magbibigay sa iyo sa limang tulad ng Mayroon ito bilang integer x sa halip na isang, 793 00:32:31,008 --> 00:32:32,910 Gusto na ayusin ang lahat ng bagay? 794 00:32:32,910 --> 00:32:36,290 >> BINKY: Kung ito ay isang integer-- hindi, na hindi ayusin ang lahat. 795 00:32:36,290 --> 00:32:37,590 Kaya iyon ay isang napakahusay na pinag-uusapan. 796 00:32:37,590 --> 00:32:40,480 Ito ay hindi talagang mahalaga kung ano ang Tatawagan ka ng mga variable. 797 00:32:40,480 --> 00:32:44,510 Muli, ito ay isang isyu ng saklaw, dahil ang mga ito ay hindi ang parehong x. 798 00:32:44,510 --> 00:32:46,526 Ang mga ito ay ganap na iba't ibang mga puwang sa memorya. 799 00:32:46,526 --> 00:32:47,400 MAG-AARAL: [hindi marinig]. 800 00:32:47,400 --> 00:32:49,020 BINKY: Kaya hindi talaga mahalaga kung ano ang tawagan mo ang mga ito. 801 00:32:49,020 --> 00:32:50,480 Hindi nito maayos ang mga bagay, OK? 802 00:32:50,480 --> 00:32:53,390 803 00:32:53,390 --> 00:32:54,430 Higit pang mga tanong? 804 00:32:54,430 --> 00:32:55,762 Oo? 805 00:32:55,762 --> 00:32:58,498 >> MAG-AARAL: Paano ay ito pabalik sa numero ng limang [hindi marinig]? 806 00:32:58,498 --> 00:32:59,661 807 00:32:59,661 --> 00:33:01,160 BINKY: OK, kami ay hindi tapos na pa. 808 00:33:01,160 --> 00:33:03,432 Sabihin pumunta sa numero ng limang, pagkatapos. 809 00:33:03,432 --> 00:33:04,650 >> MAG-AARAL: [hindi marinig]? 810 00:33:04,650 --> 00:33:05,565 >> BINKY: Ano? 811 00:33:05,565 --> 00:33:08,179 >> MAG-AARAL: Mayroon ka ng isang balik sa lahat ng ba? 812 00:33:08,179 --> 00:33:09,970 BINKY: Wala kaming sa isang pabalik, hindi ng pangunahing. 813 00:33:09,970 --> 00:33:12,940 Ngunit awtomatikong pangunahing babalik 0 kung hindi mo nagbalik ng anuman. 814 00:33:12,940 --> 00:33:14,400 815 00:33:14,400 --> 00:33:15,188 Oo? 816 00:33:15,188 --> 00:33:22,658 >> MAG-AARAL: mai gagawin mo main-- o maaaring gumawa ka ng limang balik ang isang? 817 00:33:22,658 --> 00:33:24,170 818 00:33:24,170 --> 00:33:27,990 >> BINKY: Kami ay maaaring magkaroon ng sa limang magbalik ng, oo. 819 00:33:27,990 --> 00:33:32,527 Ngunit pagkatapos ay mayroon kaming upang magtalaga x ay katumbas ng return halaga ng limang, 820 00:33:32,527 --> 00:33:34,360 na kung saan ay magiging isang bahagyang iba't ibang mga programa. 821 00:33:34,360 --> 00:33:35,440 Ito ay gumagana. 822 00:33:35,440 --> 00:33:38,730 Ngunit kung ano ang gusto naming gawin ay kung ano ang tinatawag na pagbabago ng isang bagay sa lugar. 823 00:33:38,730 --> 00:33:41,690 Kaya gusto namin upang aktwal na baguhin ang na kahon at mag-alala 824 00:33:41,690 --> 00:33:44,390 tungkol sa pagkakaroon upang bumalik mga halaga o kahit ano. 825 00:33:44,390 --> 00:33:44,890 OK? 826 00:33:44,890 --> 00:33:46,490 827 00:33:46,490 --> 00:33:50,150 >> Ito ay tulad lang ang magpalitan ng pag-andar Nagpakita si David sa panayam, maliban ako 828 00:33:50,150 --> 00:33:51,740 lamang pagharap sa isang variable. 829 00:33:51,740 --> 00:33:55,960 At siya ay ginamit ng dalawang, kaya int isang at b at pagkatapos ay pansamantalang variable at watnat. 830 00:33:55,960 --> 00:33:57,020 OK? 831 00:33:57,020 --> 00:33:58,070 Kaya kung ano ang huling linya? 832 00:33:58,070 --> 00:34:04,400 Pagkatapos ng limang babalik ito, lamang ang isang ay pagpunta sa pumunta ang layo. 833 00:34:04,400 --> 00:34:06,120 834 00:34:06,120 --> 00:34:10,179 Hindi namin ay may ngayon, at lamang x ay nakatira pa rin sa. 835 00:34:10,179 --> 00:34:12,130 >> At hulaan kung ano? x ay hindi baguhin ang halaga nito, 836 00:34:12,130 --> 00:34:15,520 pagkatapos ng lahat, dahil kami lamang sa pagbabago ng halaga ng isang. 837 00:34:15,520 --> 00:34:17,370 Iyon ang dahilan kung bakit x 3 ay buong lugar. 838 00:34:17,370 --> 00:34:17,870 OK? 839 00:34:17,870 --> 00:34:20,195 840 00:34:20,195 --> 00:34:21,130 Mahusay. 841 00:34:21,130 --> 00:34:23,560 Kaya ang program na ito ay hindi makamit kung ano ang gusto naming. 842 00:34:23,560 --> 00:34:24,760 Ngayon ayusin ito ipaalam. 843 00:34:24,760 --> 00:34:27,440 >> At ang pag-aayos ng programa ay gumagamit ng mga payo. 844 00:34:27,440 --> 00:34:32,300 Ano ang ginagawa namin ay mayroon kaming tatlong linya na iba. 845 00:34:32,300 --> 00:34:34,020 Ang unang mga hindi namin ang pagpasa sa x. 846 00:34:34,020 --> 00:34:35,535 Kami ay pagpasa sa address ng x. 847 00:34:35,535 --> 00:34:37,330 848 00:34:37,330 --> 00:34:40,876 Kaya sa halip ng pagkopya sa ibabaw ang halaga ng kahon, 849 00:34:40,876 --> 00:34:42,500 Pupunta ako pa rin upang kopyahin ang higit sa isang bagay. 850 00:34:42,500 --> 00:34:45,380 Ngunit ako ng pagkopya sa ibabaw ang address ng box. 851 00:34:45,380 --> 00:34:48,780 >> Kaya kung pumasa ko ang address ng kahon sa limang, pagkatapos ay i-limang 852 00:34:48,780 --> 00:34:51,560 magagawang makita na sa memorya at baguhin ang halaga nito. 853 00:34:51,560 --> 00:34:53,980 854 00:34:53,980 --> 00:34:59,580 >> Kaya at pagkatapos ay i-up doon, mayroon akong na ang ay hindi isang int na ngayon. 855 00:34:59,580 --> 00:35:00,882 isang ay isang int bituin. 856 00:35:00,882 --> 00:35:02,090 Ito ay isang pointer sa isang integer. 857 00:35:02,090 --> 00:35:03,790 858 00:35:03,790 --> 00:35:07,310 At pagkatapos, dahil ako pagpasa sa tugunan dito, at pagkatapos ay kung ano ang gagawin ko 859 00:35:07,310 --> 00:35:10,530 ay hindi isang katumbas ng 5, dahil isang ay may hawak na isang address. 860 00:35:10,530 --> 00:35:16,710 Kaya kung ano ang gusto kong gawin ay pumunta doon at i-update ang mga nilalaman ng address na ito 861 00:35:16,710 --> 00:35:18,305 may 5. 862 00:35:18,305 --> 00:35:21,130 >> OK, na pumunta sa pamamagitan ng kaya hayaan ang lahat ng mga linya nang paisa-isa. 863 00:35:21,130 --> 00:35:22,410 864 00:35:22,410 --> 00:35:26,024 Kaya kapag nagsimula ko dito, ako Mayroon pa ring N / A, N / A, N / A 865 00:35:26,024 --> 00:35:28,440 para sa lahat ng bagay sa unang linya, dahil mayroon akong hindi talaga 866 00:35:28,440 --> 00:35:29,390 mga ipinahayag na mga bagay-bagay pa. 867 00:35:29,390 --> 00:35:30,980 868 00:35:30,980 --> 00:35:35,110 At pagkatapos ay i-line dalawang, mayroon akong x ay katumbas ng 3. 869 00:35:35,110 --> 00:35:38,020 Ang isang int star isang hindi umiiral, parehong bagay tulad ng dati. 870 00:35:38,020 --> 00:35:39,160 871 00:35:39,160 --> 00:35:40,640 >> Ngayon kagiliw-giliw na ito ay nakakakuha. 872 00:35:40,640 --> 00:35:42,300 Kaya ako ng pagpunta sa pumasa. 873 00:35:42,300 --> 00:35:45,720 At Ipagpalagay na ang address na ipaalam ng x 12 sa hexadecimal. 874 00:35:45,720 --> 00:35:46,880 875 00:35:46,880 --> 00:35:48,420 Ipagpalagay na lang ito Hayaan. 876 00:35:48,420 --> 00:35:49,221 Ginawa ko ito up. 877 00:35:49,221 --> 00:35:51,680 878 00:35:51,680 --> 00:35:53,500 Kaya kung ano ang ako ng pagpasa dito ay isang limang. 879 00:35:53,500 --> 00:35:54,460 Ako pagpasa sa 12. 880 00:35:54,460 --> 00:35:56,390 881 00:35:56,390 --> 00:35:58,610 >> Kaya kung ano ang halaga ay isang mayroon? 882 00:35:58,610 --> 00:36:04,785 883 00:36:04,785 --> 00:36:06,210 >> MAG-AARAL: [hindi marinig]. 884 00:36:06,210 --> 00:36:06,950 >> BINKY: Paumanhin? 885 00:36:06,950 --> 00:36:08,145 >> MAG-AARAL: [hindi marinig]. 886 00:36:08,145 --> 00:36:10,520 BINKY: Oo, tulad ng, upang sabihin ipagpalagay na kami ay narito, ngayon. 887 00:36:10,520 --> 00:36:11,540 888 00:36:11,540 --> 00:36:12,040 Ako nagtatanong. 889 00:36:12,040 --> 00:36:12,915 >> MAG-AARAL: [hindi marinig]. 890 00:36:12,915 --> 00:36:13,590 891 00:36:13,590 --> 00:36:14,890 >> BINKY: Ito ay pinasimulan. 892 00:36:14,890 --> 00:36:15,860 >> MAG-AARAL: [hindi marinig]. 893 00:36:15,860 --> 00:36:17,985 BINKY: Dahil kami ang pumasa ng isang bagay sa function. 894 00:36:17,985 --> 00:36:19,431 895 00:36:19,431 --> 00:36:19,930 Oo? 896 00:36:19,930 --> 00:36:20,899 >> MAG-AARAL: Address ng x. 897 00:36:20,899 --> 00:36:22,690 BINKY: Ito ay pagpunta sa Mayroon ang address ng x. 898 00:36:22,690 --> 00:36:25,800 At ang address ng x 12, mabuti. 899 00:36:25,800 --> 00:36:30,990 Kaya x ay magiging 3, dahil hindi pa namin na talagang nagbago pa x. 900 00:36:30,990 --> 00:36:36,700 At pagkatapos ay may ay magiging 0x12, kaya ang address ng x, dahil iyon 901 00:36:36,700 --> 00:36:38,840 kung ano ang namin ipapasa sa limang. 902 00:36:38,840 --> 00:36:40,940 >> At pagkatapos ay kung ano ang mangyayari kung sinusubukan naming pumunta doon? 903 00:36:40,940 --> 00:36:42,145 Ano kami makapupunta upang mahanap? 904 00:36:42,145 --> 00:36:47,120 Kaya kung subukan mong mag-print ng star ang isang, kami ay pagpunta sa sundin ang address na ito 905 00:36:47,120 --> 00:36:48,620 at makuha ang halaga sa loob. 906 00:36:48,620 --> 00:36:50,470 At ang halaga ay lamang ang parehong halaga na x 907 00:36:50,470 --> 00:36:53,980 May dahil iyon ang address ng x, na magiging 3. 908 00:36:53,980 --> 00:36:55,440 909 00:36:55,440 --> 00:36:56,930 Sigurado namin magandang? 910 00:36:56,930 --> 00:36:59,990 >> OK, at pagkatapos ngayon, namin talagang pumunta doon. 911 00:36:59,990 --> 00:37:05,510 At namin i-update ang anumang Nasa sa address na ito 12. 912 00:37:05,510 --> 00:37:07,390 Ginagawa naming 5. 913 00:37:07,390 --> 00:37:10,560 Kaya ngayon parehong x at bituin ng mga 5. 914 00:37:10,560 --> 00:37:13,170 915 00:37:13,170 --> 00:37:13,680 >> Bakit iyon? 916 00:37:13,680 --> 00:37:17,070 Dahil ang address ng x 12. 917 00:37:17,070 --> 00:37:20,920 At may 12 bilang halaga nito. 918 00:37:20,920 --> 00:37:23,780 Kaya kung sinusunod namin ang 12, kami ay lamang ng pagpunta sa makahanap ng x. 919 00:37:23,780 --> 00:37:27,400 Kaya kahit anong ginagawa namin star isang ay pagpunta sa mangyayari 920 00:37:27,400 --> 00:37:30,790 sa x, dahil naglalaman ng ang address ng x. 921 00:37:30,790 --> 00:37:31,918 922 00:37:31,918 --> 00:37:32,418 OK? 923 00:37:32,418 --> 00:37:34,090 924 00:37:34,090 --> 00:37:37,750 >> At ito ay tulad ng pinakabuod ng pag-aayos. 925 00:37:37,750 --> 00:37:41,500 Kaya ngayon namin magawang, mula sa limang, talagang 926 00:37:41,500 --> 00:37:43,840 -access memory na nanirahan sa pangunahing. 927 00:37:43,840 --> 00:37:47,980 Kaya ito memory hindi nakatira sa limang, tulad ng dati, sa address na ito 12. 928 00:37:47,980 --> 00:37:50,980 At namin nagawang pumunta doon at baguhin ang halaga nito upang 5. 929 00:37:50,980 --> 00:37:53,990 >> At pagkatapos ay kapag bumalik namin, nakalimutan namin tungkol sa isang. 930 00:37:53,990 --> 00:37:55,720 Nakalimutan namin tungkol sa isang star. 931 00:37:55,720 --> 00:37:57,020 At x ay limang pa rin. 932 00:37:57,020 --> 00:37:58,327 933 00:37:58,327 --> 00:38:00,160 Kaya kung nais mong ipatupad ang magpalitan function, 934 00:38:00,160 --> 00:38:05,010 Gusto mong gawin lamang ang eksaktong parehong bagay, maliban kailangan mong i-int bituin dito, 935 00:38:05,010 --> 00:38:06,140 at iba pa at iba pa. 936 00:38:06,140 --> 00:38:06,976 OK? 937 00:38:06,976 --> 00:38:07,475 Sigurado namin magandang? 938 00:38:07,475 --> 00:38:09,860 939 00:38:09,860 --> 00:38:10,610 Ayos. 940 00:38:10,610 --> 00:38:12,410 >> Kaya pointer aritmetika. 941 00:38:12,410 --> 00:38:13,960 Ito ay isang bahagyang nakakalito paksa. 942 00:38:13,960 --> 00:38:16,554 Kaya ito ay lumiliko out na payo lamang integer. 943 00:38:16,554 --> 00:38:17,970 Maaari mong isipin na ang mga ito bilang integer. 944 00:38:17,970 --> 00:38:21,080 Dahil sa memorya, mayroon ka tulad ng memory address zero, isa, dalawa, tatlo, 945 00:38:21,080 --> 00:38:21,900 apat, lima. 946 00:38:21,900 --> 00:38:23,900 Upang maaari naming sabihin sa ilang memory address. 947 00:38:23,900 --> 00:38:27,230 >> At iyon ay karaniwang kung ano ang gagawin kapag ikaw ay nasa at array, halimbawa. 948 00:38:27,230 --> 00:38:30,540 Isang array ay nais lamang magkadikit bloke ng memorya, ng maraming mga karakter, 949 00:38:30,540 --> 00:38:31,840 halimbawa, ng maraming mga ints. 950 00:38:31,840 --> 00:38:34,420 Kaya kung nais mong pumunta sa pangalawang int o sa mga third int, 951 00:38:34,420 --> 00:38:37,830 maaari mong sabihin sa ilang lamang ng isang bagay sa unang address, at ka pagpunta sa makarating doon. 952 00:38:37,830 --> 00:38:39,620 Kaya ito ay talagang kapaki-pakinabang para sa mga iyon. 953 00:38:39,620 --> 00:38:41,850 >> At ang mga bagay na dapat sa isip, bagaman, ay 954 00:38:41,850 --> 00:38:45,140 na ito ay hindi lamang nais normal palatuusan sa kamalayan 955 00:38:45,140 --> 00:38:50,304 na kung pagharap sa, sabihin nating, isang int bituin, at magdagdag ka ng 1 dito, 956 00:38:50,304 --> 00:38:52,220 pagkatapos ay hindi ka pagpunta magdagdag ng 1 sa address, 957 00:38:52,220 --> 00:38:53,950 na iyong pupuntahan upang magdagdag ng 4 sa address. 958 00:38:53,950 --> 00:38:55,030 959 00:38:55,030 --> 00:38:56,670 Dahil sa isang int 4 bytes. 960 00:38:56,670 --> 00:38:57,720 961 00:38:57,720 --> 00:38:59,540 >> Kaya ito ay tulad ng paglalakad sa isang array. 962 00:38:59,540 --> 00:39:05,260 Kung mayroon kami ng isang hanay ng maraming mga ints at pagkatapos ay subukan namin upang pumunta sa pangalawang isa, 963 00:39:05,260 --> 00:39:08,790 ito ay isa lamang lamang summing ang address ng una plus 1. 964 00:39:08,790 --> 00:39:10,040 965 00:39:10,040 --> 00:39:13,425 Ngunit iyon ay hindi be-- lamang sabihin nating na ang address ng una ay 4. 966 00:39:13,425 --> 00:39:14,560 967 00:39:14,560 --> 00:39:16,250 Dito, sa kasong ito. 968 00:39:16,250 --> 00:39:19,780 969 00:39:19,780 --> 00:39:22,850 At kung sabihin sa ilang namin, kaya ito ay kung ano ang nangyayari. 970 00:39:22,850 --> 00:39:23,530 Mayroon kaming isang int. 971 00:39:23,530 --> 00:39:25,640 Int x ay katumbas ng 5. 972 00:39:25,640 --> 00:39:26,950 May halaga 5 X. 973 00:39:26,950 --> 00:39:31,240 At initialize namin ito pointer, int y int bituin y katumbas ang address ng x. 974 00:39:31,240 --> 00:39:33,660 >> Ipagpalagay ang address ng x 4 Hayaan. 975 00:39:33,660 --> 00:39:36,960 Ano ang pagpunta sa mangyayari ngayon kung ako Sum magdagdag ng 1 sa y? 976 00:39:36,960 --> 00:39:39,110 977 00:39:39,110 --> 00:39:44,790 Ito ay pagpunta sa aktwal halagang 4 sa halip na 1 lang. 978 00:39:44,790 --> 00:39:50,920 Kaya magdagdag ako ng 1, ngunit ito talaga Idinagdag 4, dahil computer na smart. 979 00:39:50,920 --> 00:39:55,275 Kaya ito ay pagpunta sa aktwal na magdagdag sa pamamagitan ng i beses ang laki ng mga uri ng pointer. 980 00:39:55,275 --> 00:39:56,340 981 00:39:56,340 --> 00:39:56,840 OK? 982 00:39:56,840 --> 00:39:58,030 983 00:39:58,030 --> 00:40:02,440 >> Kaya kung ito ay isang pansamantalang trabaho, halimbawa, kung ito ay isang pansamantalang trabaho star y, 984 00:40:02,440 --> 00:40:07,141 at kung nagdagdag kami ng 1 pagkatapos ng gagawin na ito magiging 5, dahil pansamantalang trabaho ay 1 byte ang haba. 985 00:40:07,141 --> 00:40:07,640 Magandang? 986 00:40:07,640 --> 00:40:10,560 987 00:40:10,560 --> 00:40:13,190 >> At sa wakas, nakuha namin sa mga payo at array. 988 00:40:13,190 --> 00:40:16,451 Ito ay lumiliko out na ang bawat oras ka pagharap sa isang array, 989 00:40:16,451 --> 00:40:18,075 aktwal na pagharap sa isang pointer. 990 00:40:18,075 --> 00:40:19,720 991 00:40:19,720 --> 00:40:24,777 Ang napaka maganda ang haka-haka na dahilan para sa ito ay ang array ay masyadong malaki. 992 00:40:24,777 --> 00:40:27,360 Kaya tandaan na ang sinabi ko na sa tuwing kayo na ipasa ang mga bagay-bagay sa paligid, 993 00:40:27,360 --> 00:40:29,097 kopyahin mo ang lahat. 994 00:40:29,097 --> 00:40:31,180 Kaya kung mayroon kang isang array na talaga, talagang malaki, 995 00:40:31,180 --> 00:40:32,990 hindi mo ba talagang i- kopyahin ang lahat ng bagay sa bawat oras 996 00:40:32,990 --> 00:40:35,710 ipasa mo ito sa paligid sa isa pang function, dahil iyon lamang 997 00:40:35,710 --> 00:40:37,190 napakalaking halaga ng trabaho. 998 00:40:37,190 --> 00:40:39,710 Kaya kung ano ang ginagawa mo lamang ang nakalipas ang address ng unang byte. 999 00:40:39,710 --> 00:40:40,969 1000 00:40:40,969 --> 00:40:44,010 At pagkatapos ay ang function ay magkakaroon ng access sa lahat ng mga elemento sa array na. 1001 00:40:44,010 --> 00:40:48,670 Kaya ka nakapasa sa array ng address nito, kaya ang address ng unang byte. 1002 00:40:48,670 --> 00:40:53,010 >> Kaya kung ipinahayag namin int array 3, dito, alam namin 1003 00:40:53,010 --> 00:40:57,470 paano i-access ang unang elemento gamit ang pagtatanda bracket. 1004 00:40:57,470 --> 00:41:02,410 Kung naaalala mo ang bracket pagtatanda, array bracket 0 ay katumbas ng 1. 1005 00:41:02,410 --> 00:41:06,330 Well, ito ay magiging eksaktong katulad ng pumunta lamang doon at ilagay 1. 1006 00:41:06,330 --> 00:41:07,370 1007 00:41:07,370 --> 00:41:09,110 OK, nang eksakto ang parehong bagay. 1008 00:41:09,110 --> 00:41:13,010 Kaya ang bracket pagtatanda in dito ay magiging katulad ng linyang ito. 1009 00:41:13,010 --> 00:41:18,600 >> At hulaan kung ano ang pagtatanda bracket para sa array bracket 1 ay magiging? 1010 00:41:18,600 --> 00:41:20,440 Ito lamang ang parehong bagay bilang na ito. 1011 00:41:20,440 --> 00:41:22,500 Kaya idagdag ang isa sa array. 1012 00:41:22,500 --> 00:41:24,370 Ilipat ang isang kasama sa memory. 1013 00:41:24,370 --> 00:41:26,310 Pumunta doon, at maglagay ng 2. 1014 00:41:26,310 --> 00:41:28,050 1015 00:41:28,050 --> 00:41:28,579 OK? 1016 00:41:28,579 --> 00:41:29,870 At ang linyang ito ang parehong bagay. 1017 00:41:29,870 --> 00:41:34,860 Gusto naming pumunta sa mga third kahon, kaya array plus 2. 1018 00:41:34,860 --> 00:41:37,465 Pumunta doon, at maglagay ng 3. 1019 00:41:37,465 --> 00:41:39,340 Kaya sa memory, kung ano ang pagpunta sa mangyari ay hindi namin 1020 00:41:39,340 --> 00:41:44,400 pagpunta sa may 1, 2, at 3 bilang tatlong elemento ng array. 1021 00:41:44,400 --> 00:41:46,970 >> Na namin ma tapos na ito gamit ang ang aming mga pamilyar na bracket pagtatanda. 1022 00:41:46,970 --> 00:41:49,410 Gusto ko lang sa iyo guys malaman na ang mga ito ay ang parehong bagay. 1023 00:41:49,410 --> 00:41:50,530 1024 00:41:50,530 --> 00:41:53,010 OK, mga tanong tungkol dito? 1025 00:41:53,010 --> 00:41:56,115 1026 00:41:56,115 --> 00:41:56,615 Nice. 1027 00:41:56,615 --> 00:41:57,990 1028 00:41:57,990 --> 00:41:59,880 Ngayon, pupunta ako ipasa ito sa paglipas ng sa Hannah, 1029 00:41:59,880 --> 00:42:00,330 >> Hannah: Ayos, yee-haw. 1030 00:42:00,330 --> 00:42:02,246 >> BINKY: pinag-uusapan ng memorya at bagay-bagay artikulo. 1031 00:42:02,246 --> 00:42:06,554 [Palakpakan] 1032 00:42:06,554 --> 00:42:10,150 >> Hannah: Hi, cool na, kaya kami ay pagpunta sa makipag-usap nang higit pa nang kaunti 1033 00:42:10,150 --> 00:42:13,090 tungkol sa memory, na kung saan namin lamang -address gamit ang mga payo. 1034 00:42:13,090 --> 00:42:16,060 Kaya mayroong dalawang pangunahing mga bahagi ng memorya na nag-aalala ka namin. 1035 00:42:16,060 --> 00:42:18,830 Mayroon kaming ng stack, na kung saan ay lumalaki hanggang sa ibaba, at kimpal, na 1036 00:42:18,830 --> 00:42:20,600 pupunta pababa mula sa itaas. 1037 00:42:20,600 --> 00:42:24,690 At ang stack ay pagpunta upang i-hold lahat ng aming mga variable halimbawa. 1038 00:42:24,690 --> 00:42:28,860 Kaya ang bawat tawag sa isang function ay makakakuha ng sarili nitong maliit na frame sa stack. 1039 00:42:28,860 --> 00:42:32,160 Kaya bilang mas maaga nabanggit Gabe, kung namin tumawag muli at muli ang pag-andar, 1040 00:42:32,160 --> 00:42:34,180 kami ay pagpunta sa stack bagay sa stack. 1041 00:42:34,180 --> 00:42:35,220 1042 00:42:35,220 --> 00:42:38,570 >> At katulad, ang kimpal, na nagsisimula sa tuktok 1043 00:42:38,570 --> 00:42:42,660 Mawawala na hawakan ang lahat ng mga memory na pabago-bago namin maglaan. 1044 00:42:42,660 --> 00:42:45,110 At sa gayon ay namin pabagu-bagong maglaan ng memorya, 1045 00:42:45,110 --> 00:42:47,580 ito ay bumaba patungo sa ibaba. 1046 00:42:47,580 --> 00:42:51,340 Ilang bagay na dapat malaman kapag ginagamit namin ang stack at ang kimpal, 1047 00:42:51,340 --> 00:42:55,200 may stack, kung kami ay may masyadong ni say-- recursive tawag many-- ipaalam, 1048 00:42:55,200 --> 00:42:58,392 at kami ay tumawag muli ang isang function, at muli, at muli, at muli, 1049 00:42:58,392 --> 00:43:00,350 at ito ay stacking up, stacking up, stacking up. 1050 00:43:00,350 --> 00:43:01,570 At ito ay pagpunta sa pag-crash sa kimpal. 1051 00:43:01,570 --> 00:43:03,040 Kami ay pagpunta sa maubusan ng memory. 1052 00:43:03,040 --> 00:43:05,100 Na pupuntahan maging sanhi ng problema para sa mga computer. 1053 00:43:05,100 --> 00:43:06,770 At na tinatawag na stack overflow. 1054 00:43:06,770 --> 00:43:09,728 Kaya na talagang isang bagay sa iyo dapat magkaroon ng kamalayan ng at subukan upang maiwasan. 1055 00:43:09,728 --> 00:43:10,228 1056 00:43:10,228 --> 00:43:14,050 At ang mga kimpal, kailangang tandaan hindi sinasadyang tumagas memory. 1057 00:43:14,050 --> 00:43:17,950 Anumang oras na gamitin mo ang malloc, hindi kalimutan upang magbakante na memory. 1058 00:43:17,950 --> 00:43:20,040 Kung hindi man, ipapakita ito lamang nasa kimpal nasayang, 1059 00:43:20,040 --> 00:43:23,230 at hindi malalaman na ang computer ito ay libreng gamitin na memorya. 1060 00:43:23,230 --> 00:43:25,810 Kaya mga ilang bagay upang maging maingat sa kung kailan 1061 00:43:25,810 --> 00:43:28,580 ka pagharap sa ng stack at ang kimpal. 1062 00:43:28,580 --> 00:43:30,412 Ang anumang mga katanungan na may ito? 1063 00:43:30,412 --> 00:43:31,304 Kahanga-hanga. 1064 00:43:31,304 --> 00:43:31,900 >> OK, cool. 1065 00:43:31,900 --> 00:43:32,940 1066 00:43:32,940 --> 00:43:36,810 Kaya ang ganitong uri ng may kaparehong ideya ng stack overflow, kung saan 1067 00:43:36,810 --> 00:43:39,850 kami ay lagpas sa mga hangganan ng kung ano ang memorya 1068 00:43:39,850 --> 00:43:41,960 ay namin ang dapat magagawang gamitin. 1069 00:43:41,960 --> 00:43:45,077 Kaya tumagal, halimbawa, ang isang buffer, o mo maaaring sa tingin lamang ng mga ito bilang isang array. 1070 00:43:45,077 --> 00:43:47,660 At sinabi namin, OK, kami ay pagpunta sa lumikha ng magandang maliit na array. 1071 00:43:47,660 --> 00:43:49,140 Ito ay magiging isang string. 1072 00:43:49,140 --> 00:43:50,630 O kaya ito ang nangyayari upang mag-imbak character. 1073 00:43:50,630 --> 00:43:51,720 At lamang ito ng pagpunta sa kamustahin. 1074 00:43:51,720 --> 00:43:52,678 At ito ay hindi tiyak. 1075 00:43:52,678 --> 00:43:53,990 Iyan na ang lahat. 1076 00:43:53,990 --> 00:43:58,240 >> Ngunit kung ako ay may isang taong masama at nais na gawin ang isang bagay masamang gamit ang array, kung ano ang 1077 00:43:58,240 --> 00:44:02,310 Maaari kong gawin ay subukan na magsulat nakalipas na ang dulo ng string. 1078 00:44:02,310 --> 00:44:04,490 At tulad ng makikita mo, kung Sumulat ako ngayon sapat, 1079 00:44:04,490 --> 00:44:06,980 Maaari ko talagang makakaapekto ang return address. 1080 00:44:06,980 --> 00:44:09,530 At kung sisimulan ko ang upang makaapekto ang return address, 1081 00:44:09,530 --> 00:44:11,730 Makakaapekto ko kung paano talaga tumatakbo ang programa. 1082 00:44:11,730 --> 00:44:15,900 At sa halip na bumabalik, mo alam, isang masaya string tulad ng halo, ako 1083 00:44:15,900 --> 00:44:19,460 maaaring gawin ang isang bagay masamang, tulad ng pumunta sa sa isang lugar tao sa iyong computer, pa rin 1084 00:44:19,460 --> 00:44:22,146 memorya, baguhin ito, kahit anong gusto kong gawin. 1085 00:44:22,146 --> 00:44:25,020 Kaya na kung ano ang magiging hitsura ng ay kung lamang uri ng ko napuno up ito 1086 00:44:25,020 --> 00:44:27,400 may random na halaga ng basura, sa kasong ito, isang. 1087 00:44:27,400 --> 00:44:30,490 At pagkatapos ay kapag ako ay talagang Nakakuha sa memory address, 1088 00:44:30,490 --> 00:44:33,740 Ako makapagsimula ng pagpuno ito sa isang bagay na ginawa kung ano ang nais ko ito upang gawin. 1089 00:44:33,740 --> 00:44:34,952 1090 00:44:34,952 --> 00:44:36,410 Ang anumang mga katanungan na may buffer overflow? 1091 00:44:36,410 --> 00:44:38,450 1092 00:44:38,450 --> 00:44:40,730 Galing, lumilipad pakanan sa pamamagitan ng mga bagay-bagay na ito. 1093 00:44:40,730 --> 00:44:43,530 >> OK, kaya usapan natin ng maraming tungkol sa pointer sa Gabe. 1094 00:44:43,530 --> 00:44:45,790 Paano talaga kami makakuha ng isang pointer? 1095 00:44:45,790 --> 00:44:48,070 Paano ako makakakuha kami ng isang address sa memorya? 1096 00:44:48,070 --> 00:44:51,040 Well, maaari naming gamitin ang magaling malloc tawag function, kung saan 1097 00:44:51,040 --> 00:44:53,370 Mawawala upang makakuha ng isang maliit na bahagi ng memorya, 1098 00:44:53,370 --> 00:44:55,480 partikular sa kimpal, bilang namin tinalakay, 1099 00:44:55,480 --> 00:44:59,780 at ito ay pagpunta sa magbibigay sa iyo ng likod ng pointer sa na address sa memorya. 1100 00:44:59,780 --> 00:45:01,950 At ang argument na kami kailangang ibigay sa malloc 1101 00:45:01,950 --> 00:45:04,280 ay kung magkano ang espasyo sa memory namin na gusto. 1102 00:45:04,280 --> 00:45:06,100 >> Kaya maaari mong makita ang laki sa byte. 1103 00:45:06,100 --> 00:45:08,670 Sabihin nating, halimbawa, o talaga, sa halimbawang ito, 1104 00:45:08,670 --> 00:45:12,040 sapat na kaming maglaan espasyo para sa 10 integer. 1105 00:45:12,040 --> 00:45:15,640 Kaya marahil kung ano ang pagpunta naming nais upang ilagay dito ay isang hanay ng mga 10 integer. 1106 00:45:15,640 --> 00:45:19,641 Kaya namin ibinigay ito laki ng ints, na natutunan namin ay kung gaano karaming mga byte? 1107 00:45:19,641 --> 00:45:20,140 MAG-AARAL: 4. 1108 00:45:20,140 --> 00:45:22,920 Hannah: 4, maganda, at kami Gusto 10 ng mga sunud-sunod, 1109 00:45:22,920 --> 00:45:28,050 kaya mayroon kaming sapat na espasyo upang iimbak ang lahat ng 10 integer, sa kasong ito. 1110 00:45:28,050 --> 00:45:31,290 Isang bagay na sobrang mahalaga, anumang oras tumawag ka malloc, 1111 00:45:31,290 --> 00:45:32,880 mayroon kang mag-check para sa null. 1112 00:45:32,880 --> 00:45:37,310 Kung hindi mo check para sa null, mahusay, malloc kung ito ay nagpapatakbo na ng puwang 1113 00:45:37,310 --> 00:45:40,400 at hindi na magbibigay sa iyo ng anumang higit pang memory, ito ay bumalik null. 1114 00:45:40,400 --> 00:45:42,060 1115 00:45:42,060 --> 00:45:45,630 Kaya kung hindi mo suriin, malloc maaaring bumalik null. 1116 00:45:45,630 --> 00:45:51,265 At pagkatapos ay kung sinusubukan naming dereference isang null pointer, 1117 00:45:51,265 --> 00:45:54,960 kami ay pagpunta upang makakuha ng segmentation fault, na kung saan ay namin makipag-usap tungkol sa ngayon. 1118 00:45:54,960 --> 00:45:56,150 1119 00:45:56,150 --> 00:45:56,650 Kahanga-hanga. 1120 00:45:56,650 --> 00:45:58,300 >> OK, mga tanong na may malloc? 1121 00:45:58,300 --> 00:46:00,044 1122 00:46:00,044 --> 00:46:00,544 Oo? 1123 00:46:00,544 --> 00:46:05,460 >> MAG-AARAL: ba null pagsuri [Hindi marinig] huwag gawin ito sa pagsusulit? 1124 00:46:05,460 --> 00:46:08,100 >> Hannah: Oo naman, ang tanong ay aabutin matter-- sa pagsusulit, 1125 00:46:08,100 --> 00:46:10,420 makakakuha ka ng mga puntos off kung hindi mo check para sa null? 1126 00:46:10,420 --> 00:46:12,794 Oo, makakakuha ka ng mga puntos off kung hindi mo check para sa null. 1127 00:46:12,794 --> 00:46:16,030 Anumang oras na tumawag ka malloc, parehong sa pagsusulit at ang iyong psets at sa tunay na buhay, 1128 00:46:16,030 --> 00:46:17,155 mayroon kang mag-check para sa null. 1129 00:46:17,155 --> 00:46:18,330 Magandang katanungan. 1130 00:46:18,330 --> 00:46:19,689 >> Gabe: Paano kapag hindi ko magbakante? 1131 00:46:19,689 --> 00:46:21,730 Hannah: Nais ni na alam Gabe paano kung hindi namin libre. 1132 00:46:21,730 --> 00:46:25,030 Pagkatapos ay magkakaroon kami ng isang memory tumagas sa aming kimpal. 1133 00:46:25,030 --> 00:46:26,140 Ang anumang iba pang mga tanong? 1134 00:46:26,140 --> 00:46:27,550 Oo? 1135 00:46:27,550 --> 00:46:30,120 >> MAG-AARAL: Maari you-- pumunta sa paglipas ng buffer overflow tunay na mabilis na muli? 1136 00:46:30,120 --> 00:46:30,530 >> Hannah: Oo naman. 1137 00:46:30,530 --> 00:46:33,071 Ang tanong ay maaari naming pumunta sa paglipas ng buffer overflow talagang mabilis. 1138 00:46:33,071 --> 00:46:35,050 Sabihin bumalik sa mga slide. 1139 00:46:35,050 --> 00:46:37,430 Kaya isang buffer, maaari mo lamang isipin na ito bilang isang array, tama? 1140 00:46:37,430 --> 00:46:39,360 Mayroon kang ilang mga puwang sa memorya. 1141 00:46:39,360 --> 00:46:43,580 At noong una naming lumikha ng aming array, alam namin array Naayos laki, 1142 00:46:43,580 --> 00:46:45,470 o sa aming buffer ay may isang nakapirming laki. 1143 00:46:45,470 --> 00:46:51,360 >> Kaya sabihin nating sa kasong ito, mayroon kaming lamang sapat na espasyo upang isulat ang string halo. 1144 00:46:51,360 --> 00:46:57,340 Kung pumunta kami nakalipas na nakagapos, kung pumunta kami nakalipas kung ano ang aming array namin sinabi maaari itong pindutin nang matagal, 1145 00:46:57,340 --> 00:46:59,780 maaaring namin talagang simulan pagsusulat sa memory 1146 00:46:59,780 --> 00:47:01,780 na ang computer ay hindi Gusto sa amin upang isulat sa. 1147 00:47:01,780 --> 00:47:02,810 1148 00:47:02,810 --> 00:47:05,580 At partikular, kung pindutin namin isang bagay tulad ng pagbalik 1149 00:47:05,580 --> 00:47:08,700 tugunan ng pag-andar, kung saan, tulad ng anumang iba pang mga piraso ng memorya, 1150 00:47:08,700 --> 00:47:11,420 lamang sa isang lugar sa iyong computer, maaari mo talaga 1151 00:47:11,420 --> 00:47:14,080 baguhin iyon at simulan upang gumawa ng sama bagay. 1152 00:47:14,080 --> 00:47:15,272 Sagutin ang iyong tanong? 1153 00:47:15,272 --> 00:47:16,230 Galing, ano pa man? 1154 00:47:16,230 --> 00:47:17,466 Oo? 1155 00:47:17,466 --> 00:47:21,948 >> MAG-AARAL: Kaya stack [hindi marinig], mo Sinabi pumunta mula sa ibaba ng pagpunta up. 1156 00:47:21,948 --> 00:47:25,434 Sa loob ng hanay ng stack, ang ang memorya pumunta mula sa, tulad ng, 1157 00:47:25,434 --> 00:47:27,230 tuktok down na tumutukoy sa bawat bakasyon? 1158 00:47:27,230 --> 00:47:28,646 1159 00:47:28,646 --> 00:47:32,100 >> Hannah: Paano ko you-- umalinsunod sa Rob sa isang ito. 1160 00:47:32,100 --> 00:47:35,370 1161 00:47:35,370 --> 00:47:38,213 >> Rob: Ito ay lalaki sa parehong direksyon tulad ng stack ay lumalaki. 1162 00:47:38,213 --> 00:47:38,712 Hannah: OK. 1163 00:47:38,712 --> 00:47:40,967 Rob: Kaya nakukuha ko nalilito. 1164 00:47:40,967 --> 00:47:42,331 Ito ay magiging abstraction. 1165 00:47:42,331 --> 00:47:42,831 Hannah: OK. 1166 00:47:42,831 --> 00:47:44,000 Rob: Ito ay tama. 1167 00:47:44,000 --> 00:47:49,420 Kaya kung ang stack ay lumalaking up, pagkatapos ay i-generally-- ito 1168 00:47:49,420 --> 00:47:52,380 Hindi na kailangang maging ganito. ngunit maaari mong idedeklara int x. 1169 00:47:52,380 --> 00:47:54,120 Pagkatapos ay ipinahahayag ninyo int y. 1170 00:47:54,120 --> 00:47:57,300 Pagkatapos int x ay pangkalahatan ay maging mas mababa sa stack sa int y. 1171 00:47:57,300 --> 00:47:59,300 Ngunit iyon lamang ang isang katotohanan lamang. 1172 00:47:59,300 --> 00:48:02,410 Na hindi gusto ang isang mahalagang binhi bagay. 1173 00:48:02,410 --> 00:48:06,800 >> Rob: Kaya ang tanong muli ay isa lamang kung ano ang mangyayari sa bawat frame build up. 1174 00:48:06,800 --> 00:48:08,960 Kaya ay makakakuha ng bawat pag-andar ng maliit na bahagi ng stack. 1175 00:48:08,960 --> 00:48:13,030 At bilang pumunta up ka, sa loob ng maliit na piraso, sa loob ng frame na iyon, 1176 00:48:13,030 --> 00:48:16,710 ipapakita namin sinasabi na variable sa loob ng frame na umakyat din. 1177 00:48:16,710 --> 00:48:17,473 Tanong? 1178 00:48:17,473 --> 00:48:18,688 >> Rob: lamang upang maging sa mic. 1179 00:48:18,688 --> 00:48:19,396 Hannah: Oh, oo. 1180 00:48:19,396 --> 00:48:20,440 Rob: Makikita ko makipag-usap sa iyo. 1181 00:48:20,440 --> 00:48:21,410 Hannah: Oh, oo, ang OK. 1182 00:48:21,410 --> 00:48:24,150 Rob: pagbubukod ay para sa array at structs, 1183 00:48:24,150 --> 00:48:27,470 kung saan array, ang isang mas mababang index sa array, 1184 00:48:27,470 --> 00:48:29,930 at sa structs sa mas mataas na patlang sa structs 1185 00:48:29,930 --> 00:48:35,040 ay garantisadong maging sa mas mababang address kaysa sa isang mas huling halaga sa array. 1186 00:48:35,040 --> 00:48:36,720 Kaya iyon ay garantisadong. 1187 00:48:36,720 --> 00:48:40,310 Ngunit anumang partikular na mga variable sa loob, tulad ng int x at int y sa loob ng isang function, 1188 00:48:40,310 --> 00:48:43,030 walang kinakailangang mga relasyon sa pagitan ng kanilang mga address. 1189 00:48:43,030 --> 00:48:44,882 1190 00:48:44,882 --> 00:48:46,340 Hannah: Ang isa pang tanong sa paglipas dito? 1191 00:48:46,340 --> 00:48:51,620 MAG-AARAL: Kaya sa buffer daloy, buffer overflow lamang 1192 00:48:51,620 --> 00:48:54,980 lamang ang nangyari kapag na, tulad ng, itinalaga 1193 00:48:54,980 --> 00:49:01,056 isang halaga ng isang array na pagkatapos ay mas malaki? 1194 00:49:01,056 --> 00:49:03,230 Tulad ng, maaari kang? 1195 00:49:03,230 --> 00:49:05,435 Kaya kung hinihingi para sa isang bagay mula sa user-- 1196 00:49:05,435 --> 00:49:06,018 >> Hannah: MM-Hm. 1197 00:49:06,018 --> 00:49:08,600 MAG-AARAL: Maaari bang sila papuwersa magbibigay sa iyo ng isang bagay na bumalik 1198 00:49:08,600 --> 00:49:11,777 na mas malaki kaysa sa anumang mo na inilaan para sa kanila? 1199 00:49:11,777 --> 00:49:13,610 Hannah: Oo naman, kaya ang tanong ay isa lamang, 1200 00:49:13,610 --> 00:49:16,217 Maaari user ang nagbibigay sa iyo higit sa hilingin sa iyo para sa? 1201 00:49:16,217 --> 00:49:16,800 MAG-AARAL: Oo. 1202 00:49:16,800 --> 00:49:18,480 Hannah: Well, maaari mong pigilan ang user mula sa paggawa na. 1203 00:49:18,480 --> 00:49:21,350 Maaari mong sabihin ay hindi bigyan mo ako ng higit sa x bilang ng mga byte 1204 00:49:21,350 --> 00:49:24,330 Binigyan ko lang sa iyo na kuwarto para sa x bilang ng mga byte, x bilang ng mga character. 1205 00:49:24,330 --> 00:49:25,700 Kaya na ang isang bagay na gusto mong pigilan. 1206 00:49:25,700 --> 00:49:26,199 Oo? 1207 00:49:26,199 --> 00:49:30,270 Ano ang pagkakaiba sa pagitan ng stack overflow at buffer overflow? 1208 00:49:30,270 --> 00:49:32,140 >> Hannah: OK, kaya ang stack overflow-- oh, ano 1209 00:49:32,140 --> 00:49:34,790 ang pagkakaiba sa pagitan ng stack overflow at buffer overflow? 1210 00:49:34,790 --> 00:49:37,581 Kaya gusto naming mag-isip ng stack overflow nangyayari kapag kami ay talagang 1211 00:49:37,581 --> 00:49:39,530 stacking up ang mga tawag function. 1212 00:49:39,530 --> 00:49:42,991 Sabihin nating mayroon kang isang recursive function, dahil alam namin na sa bawat oras na 1213 00:49:42,991 --> 00:49:45,240 tumawag sa isang function, ito ay makakakuha ng sarili nitong frame sa stack. 1214 00:49:45,240 --> 00:49:47,950 >> Kaya stack up namin masyadong mataas, at pagkatapos ay sisimulan namin ang pag-apaw. 1215 00:49:47,950 --> 00:49:50,530 At ginagamit namin ng masyadong maraming memorya, At Hindi pa namin kahit saan iniwan ko. 1216 00:49:50,530 --> 00:49:51,590 Makuha namin ang error na iyon. 1217 00:49:51,590 --> 00:49:53,930 >> Buffer overflow ay sa loob ng programa. 1218 00:49:53,930 --> 00:49:57,180 Gusto naming maaaring hindi kinakailangang magkaroon Naubusan ng memory sa parehong paraan 1219 00:49:57,180 --> 00:50:00,080 na maaari kung kami ay stacking namin hanggang kaya maraming mga function na tawag, 1220 00:50:00,080 --> 00:50:04,540 ngunit isulat namin nakaraan ang memorya na alam namin na maaari naming gamitin. 1221 00:50:04,540 --> 00:50:06,170 At na nagbibigay-daan sa amin upang gumawa ng sama bagay. 1222 00:50:06,170 --> 00:50:08,060 1223 00:50:08,060 --> 00:50:08,560 Oo? 1224 00:50:08,560 --> 00:50:10,950 >> Rob: Oo, baka gusto ulitin ito lamang, 1225 00:50:10,950 --> 00:50:12,699 ngunit maaari ka ring mag-isip ng isang stack overflow 1226 00:50:12,699 --> 00:50:15,374 bilang tulad ng isang partikular na uri ng buffer overflow. 1227 00:50:15,374 --> 00:50:17,665 O sa tingin mo lang sa iyong stack bilang isang talagang malaking buffer. 1228 00:50:17,665 --> 00:50:20,724 Pagkatapos ay kapag apaw mo stack, ito ay uri ng tulad ng isang buffer overflow. 1229 00:50:20,724 --> 00:50:23,390 Ngunit ng stack overflow lamang tiyak na termino na ginagamit kapag ang stack 1230 00:50:23,390 --> 00:50:24,310 mismo overflows. 1231 00:50:24,310 --> 00:50:27,500 >> Hannah: I-right, kaya upang ulitin para sa video, 1232 00:50:27,500 --> 00:50:31,756 ito maaari mong isipin stack overflow bilang ang partikular na uri ng buffer overflow. 1233 00:50:31,756 --> 00:50:33,040 Cool? 1234 00:50:33,040 --> 00:50:34,562 Anumang higit pang mga tanong bago kami pumunta sa? 1235 00:50:34,562 --> 00:50:35,380 1236 00:50:35,380 --> 00:50:35,880 Kahanga-hanga. 1237 00:50:35,880 --> 00:50:37,130 1238 00:50:37,130 --> 00:50:39,727 >> OK, cool, ni pag-usapan kaya hayaan ilang karaniwang mga error na mensahe. 1239 00:50:39,727 --> 00:50:42,060 Ito ay isang bagay na may ipinapakita ng hanggang sa maraming mga pagsusulit, 1240 00:50:42,060 --> 00:50:44,740 kaya isang bagay na Sulit pagkuha ng isang pangalawang hitsura sa. 1241 00:50:44,740 --> 00:50:46,860 Ako ba na iyong naranasan hindi bababa sa ilan sa mga 1242 00:50:46,860 --> 00:50:48,690 tulad ng iyong ginagawa Nagtatakda ang iyong problema. 1243 00:50:48,690 --> 00:50:50,980 Kaya tiyaking maaari kang makipag-usap tungkol sa mga ito sa pagsusulit. 1244 00:50:50,980 --> 00:50:52,990 >> Kaya ang una ay ng segmentation fault. 1245 00:50:52,990 --> 00:50:55,250 At iyon anumang oras namin subukan na i-access memory 1246 00:50:55,250 --> 00:50:57,130 na hindi namin pinapayagan ka upang i-access. 1247 00:50:57,130 --> 00:51:00,280 Kaya migh na nakita mo ito, halimbawa, sa breakout. 1248 00:51:00,280 --> 00:51:03,390 Kung nakita banggaan bumalik null, at pagkatapos ay sa iyo 1249 00:51:03,390 --> 00:51:05,500 Sinubukan gawin ang isang bagay sa na halaga null, 1250 00:51:05,500 --> 00:51:08,147 Maaaring magbigay ang computer ka ng segmentation fault. 1251 00:51:08,147 --> 00:51:10,730 Kaya isa, isang mahalagang bagay na dapat gawin upang subukan upang maiwasan ang mga ito 1252 00:51:10,730 --> 00:51:12,000 ay upang laging suriin para sa null. 1253 00:51:12,000 --> 00:51:13,300 1254 00:51:13,300 --> 00:51:16,180 >> Maaaring nakita rin implicit deklarasyon ng function. 1255 00:51:16,180 --> 00:51:18,370 Kaya ito ay kung ano ang mangyayari kapag nagpakita ka Allison 1256 00:51:18,370 --> 00:51:20,150 kung paano namin gumawa ng prototype, i-right? 1257 00:51:20,150 --> 00:51:23,440 Kaya sabihin nating mayroon kaming ilang mga function na namin tukuyin. 1258 00:51:23,440 --> 00:51:24,440 Hayaan sabihin ng kubo. 1259 00:51:24,440 --> 00:51:27,120 At na napupunta sa ibaba sa aming mga pag-andar, sa ilalim ng pangunahing. 1260 00:51:27,120 --> 00:51:35,205 >> Kung nakalimutan naming sabihin sa computer tungkol sa kubo, kapag pangunahing sinusubukan na tumawag sa kubo, 1261 00:51:35,205 --> 00:51:36,830 ang computer ay, tulad ng, oh aking susmariyosep. 1262 00:51:36,830 --> 00:51:38,300 Wala akong palagay kung ano ang ibig sabihin nito ay. 1263 00:51:38,300 --> 00:51:39,760 Hindi ko alam kung ano ang gagawin, narito. 1264 00:51:39,760 --> 00:51:41,594 Kaya ang prototype sabi ni huwag mag-alala. 1265 00:51:41,594 --> 00:51:42,510 Pupunta ako sa sabihin sa iyo. 1266 00:51:42,510 --> 00:51:43,132 >> Ito darating. 1267 00:51:43,132 --> 00:51:43,840 Huwag sumigaw sa akin. 1268 00:51:43,840 --> 00:51:46,697 Huwag magbigay sa akin ng isang implicit deklarasyon ng function. 1269 00:51:46,697 --> 00:51:49,280 Kaya kung kang makakuha ng error na ito, isa sa bagay na iyong pupuntahan gustong gawin 1270 00:51:49,280 --> 00:51:50,821 ay siguraduhin na mayroon kang ang iyong mga prototype. 1271 00:51:50,821 --> 00:51:52,320 1272 00:51:52,320 --> 00:51:53,230 OK? 1273 00:51:53,230 --> 00:51:55,680 >> At huling ngunit hindi bababa sa, hindi nagbigay-alam identifier 1274 00:51:55,680 --> 00:52:00,570 ay mahalagang kapag sinusubukan mong gamitin ang isang variable na hindi mo ipinahayag. 1275 00:52:00,570 --> 00:52:03,449 Kaya ang lahat ng isang biglaang simulan mo sinasabi tulad n plus plus. 1276 00:52:03,449 --> 00:52:04,740 At sinasabi ng computer na kung ano ang n? 1277 00:52:04,740 --> 00:52:06,660 Hindi mo sinabi sa akin n ay isang bagay. 1278 00:52:06,660 --> 00:52:10,930 >> Kaya isang bagay na mayroon ka upang matiyak na ginawa ay sabihin ang computer kung ano n ay. 1279 00:52:10,930 --> 00:52:13,320 Kaya halimbawa, n maaaring maging isang integer. 1280 00:52:13,320 --> 00:52:14,999 At pagkatapos ay mong iwasan ang error na ito. 1281 00:52:14,999 --> 00:52:16,290 Ang anumang mga katanungan sa karaniwang mga error? 1282 00:52:16,290 --> 00:52:17,260 Oo? 1283 00:52:17,260 --> 00:52:19,344 >> MAG-AARAL: Para sa implicit deklarasyon ng function, 1284 00:52:19,344 --> 00:52:22,343 maaaring ito ay din na tinanggal ng isa ng mga library na ipagpalagay 1285 00:52:22,343 --> 00:52:24,400 upang isama, sa halip na ang prototype? 1286 00:52:24,400 --> 00:52:26,359 >> Hannah: I-right, kaya ang tanong ay, maaari mong 1287 00:52:26,359 --> 00:52:28,650 ring makakuha ng error na ito kung nakalimutan mong isama ang isang library. 1288 00:52:28,650 --> 00:52:29,085 >> MAG-AARAL: Oo. 1289 00:52:29,085 --> 00:52:30,876 >> Hannah: Oo naman, dahil sa parehong paraan 1290 00:52:30,876 --> 00:52:33,540 na gusto naming ilagay ang aming mga modelo bago ang pangunahing pag-andar, 1291 00:52:33,540 --> 00:52:37,717 kung kami ay may isang library, ang mga pupunta sa tunay na isama ang mga modelo, 1292 00:52:37,717 --> 00:52:39,425 isama ang mga kahulugan ng pag-andar. 1293 00:52:39,425 --> 00:52:40,585 Mahusay na tanong. 1294 00:52:40,585 --> 00:52:43,230 >> MAG-AARAL: Para sa pagse-segment pagkukulang, gusto na rin 1295 00:52:43,230 --> 00:52:47,350 mangyayari kung namin, tulad ng, sinubukan -access ang isang variable, 1296 00:52:47,350 --> 00:52:51,947 tulad ng, sa ibang [hindi marinig] kaysa ito ay ipinahayag sa? 1297 00:52:51,947 --> 00:52:54,030 Hannah: Oo naman, kaya kami ay makakuha ng segmentation fault 1298 00:52:54,030 --> 00:52:56,270 kung sinubukan naming i-access ang isang variable sa labas ng saklaw? 1299 00:52:56,270 --> 00:52:57,104 Ay na ang isang tanong? 1300 00:52:57,104 --> 00:52:57,645 MAG-AARAL: Oo. 1301 00:52:57,645 --> 00:52:58,430 Hannah: Magandang. 1302 00:52:58,430 --> 00:53:01,840 Kaya marahil, na iyong pupuntahan upang makakuha ng hindi nagbigay-alam identifier error sa halip. 1303 00:53:01,840 --> 00:53:04,006 Kaya lang pagpunta sa sabihin Hindi ko alam kung ano na. 1304 00:53:04,006 --> 00:53:04,920 1305 00:53:04,920 --> 00:53:05,920 Mahusay, kahit ano? 1306 00:53:05,920 --> 00:53:07,744 1307 00:53:07,744 --> 00:53:08,980 Oo, OK, maganda. 1308 00:53:08,980 --> 00:53:10,330 1309 00:53:10,330 --> 00:53:12,400 >> Lahat ng righty, kaya't Rekursiyon. 1310 00:53:12,400 --> 00:53:15,160 Kaya nabanggit ko ng dalawang beses na maaari naming makakuha ng isang stack overflow 1311 00:53:15,160 --> 00:53:17,919 dahil kami ay pagtawag sa aming recursive function na sa gayon maraming beses. 1312 00:53:17,919 --> 00:53:20,210 Kami ay nakakakuha ng lahat ng mga stack mga frame, blah, blah, blah. 1313 00:53:20,210 --> 00:53:22,420 Ano ang kahit ay isang recursive function na? 1314 00:53:22,420 --> 00:53:25,680 Well, isang recursive function ay anumang function na tawag mismo. 1315 00:53:25,680 --> 00:53:26,820 1316 00:53:26,820 --> 00:53:30,160 >> Ang ilang mga bagay na dapat malaman kung kailan mo ay pagpapatupad ng recursive function, 1317 00:53:30,160 --> 00:53:31,940 huwag kalimutan na isama ang isang base kaso. 1318 00:53:31,940 --> 00:53:34,010 Ang isang base kaso ay ang punto kung saan magtapos namin. 1319 00:53:34,010 --> 00:53:38,740 Kaya, halimbawa, kung kami ay coding, , Sabihin nating, Fibonacci recursively, 1320 00:53:38,740 --> 00:53:43,210 nais naming tiyakin na kapag makuha namin sa 0 o ang unang Bilang Fibonacci, 1321 00:53:43,210 --> 00:53:46,220 ang dalawang numero ay may mga kasong ito, dahil iyon ay hindi umaasa 1322 00:53:46,220 --> 00:53:47,700 sa mga bagay na dumating bago. 1323 00:53:47,700 --> 00:53:48,990 Ang mga mayroon ng kanilang sariling halaga. 1324 00:53:48,990 --> 00:53:51,270 1325 00:53:51,270 --> 00:53:55,320 >> Ang ilan sa mga pro upang Rekursiyon, na isang tanong nasaksihan namin sa mga nakaraang pagsusulit. 1326 00:53:55,320 --> 00:53:57,930 Maaari silang humantong sa higit pang madaling maintindihan, eleganteng code. 1327 00:53:57,930 --> 00:54:00,510 At ng maraming mga pag-andar, isang maraming iba't ibang mga algorithm, 1328 00:54:00,510 --> 00:54:02,350 talaga ninyo bang ipahiram sa kanilang sarili na Rekursiyon. 1329 00:54:02,350 --> 00:54:05,510 Ang kanilang mga kahulugan ay maaaring maging recursive in at ng mismo. 1330 00:54:05,510 --> 00:54:06,980 Kaya Fibonacci ay isa. 1331 00:54:06,980 --> 00:54:07,860 Factorial ay isa. 1332 00:54:07,860 --> 00:54:10,480 Pagsamahin ang pag-uuri ay kung one-- lahat mga bagay na maaari mong tingnan. 1333 00:54:10,480 --> 00:54:12,650 1334 00:54:12,650 --> 00:54:13,460 OK, anumang mga katanungan? 1335 00:54:13,460 --> 00:54:13,960 Oo? 1336 00:54:13,960 --> 00:54:15,644 1337 00:54:15,644 --> 00:54:19,612 >> MAG-AARAL: Ay isang sulok kaso katulad ng isang batayang kaso? 1338 00:54:19,612 --> 00:54:22,590 O kaya ay na para sa ilang mga iba pang uri ng [hindi marinig]? 1339 00:54:22,590 --> 00:54:25,170 >> Hannah: Oo naman, kaya ang sulok kaso ay any-- kaya 1340 00:54:25,170 --> 00:54:27,580 ay sulok kaso katulad ng base kaso? 1341 00:54:27,580 --> 00:54:32,825 Ang isang sulok kaso ay anumang bagay na iyong Maaaring kumilos code ng kaunti naiiba. 1342 00:54:32,825 --> 00:54:34,450 1343 00:54:34,450 --> 00:54:38,610 Base kaso ay isang uri ng mga kaugnay na, sa na ang mga ito ay tulad ng partikular na mga kaso 1344 00:54:38,610 --> 00:54:40,240 na nais mong tingnan. 1345 00:54:40,240 --> 00:54:43,240 Ngunit ang ideya ng isang base kaso ay Nais mo ang iyong recursive function na 1346 00:54:43,240 --> 00:54:44,870 upang ihinto sa ilang mga punto. 1347 00:54:44,870 --> 00:54:46,490 Hindi ito maaaring panatilihin sa pagtawag mismo magpakailanman. 1348 00:54:46,490 --> 00:54:47,781 Kailangan itong ihinto sa ilang mga punto. 1349 00:54:47,781 --> 00:54:49,340 1350 00:54:49,340 --> 00:54:53,460 >> Rob: Oo, madalas, ang iyong base ng kaso Maaaring maging mga halimbawa ng sulok bases. 1351 00:54:53,460 --> 00:54:55,876 >> Hannah: I-right, cool, kahit ano? 1352 00:54:55,876 --> 00:54:58,732 >> MAG-AARAL: Maaari mo bang ipaliwanag bases nang kaunti pa? 1353 00:54:58,732 --> 00:55:01,600 Hindi ko pa maintindihan [Hindi marinig] base kaso. 1354 00:55:01,600 --> 00:55:02,676 >> Hannah: Ng base kaso? 1355 00:55:02,676 --> 00:55:03,140 >> MAG-AARAL: kaso Base, oo. 1356 00:55:03,140 --> 00:55:03,770 >> Hannah: Oh oo, sigurado. 1357 00:55:03,770 --> 00:55:04,270 Tingnan natin Hayaan. 1358 00:55:04,270 --> 00:55:05,480 Huwag namin tisa sa paglipas dito? 1359 00:55:05,480 --> 00:55:06,690 1360 00:55:06,690 --> 00:55:07,320 Oo, gawin namin. 1361 00:55:07,320 --> 00:55:09,530 OK, kaya talagang mabilis, idedetalye ko subukan na isulat malaki sapat 1362 00:55:09,530 --> 00:55:11,320 sa gayon maaari mong makita sa screen. 1363 00:55:11,320 --> 00:55:13,490 Ay makipag-usap tungkol sa Hayaan, talagang mabilis, Fibonacci. 1364 00:55:13,490 --> 00:55:15,550 Kaya kukunin ko na magbibigay sa iyo ng pagkakasunud-sunod Fibonacci. 1365 00:55:15,550 --> 00:55:17,090 Maaari mong hanapin ang kahulugan. 1366 00:55:17,090 --> 00:55:26,050 >> Mahalaga, ang bawat numero sa pagkakasunod-sunod ay ang kabuuan ng dalawang nakaraang mga numero. 1367 00:55:26,050 --> 00:55:29,720 OK, kaya ang paraan na ako lamang na inilarawan Fibonacci, 1368 00:55:29,720 --> 00:55:31,530 maaari mong marinig ang Rekursiyon, tama? 1369 00:55:31,530 --> 00:55:35,280 Kapag sinabi ko sa bawat numero ay ang kabuuan ng dalawang nakaraang mga numero, 1370 00:55:35,280 --> 00:55:36,420 maaari naming sabihin ang OK. 1371 00:55:36,420 --> 00:55:38,570 Well, ang nth Fibonacci number-- kaya sabihin 1372 00:55:38,570 --> 00:55:42,260 sabihin nating mayroon namin ang function na ito tinatawag na fib-- maliit na kasinungalingan ng n 1373 00:55:42,260 --> 00:55:48,260 ay magiging katumbas ng maliit na kasinungalingan ng n minus 1 plus-- ng paumanhin, 1374 00:55:48,260 --> 00:55:51,240 magpapadala kami ng pagpunta sa susunod na linya higit sa here-- maliit na kasinungalingan ng n minus 2. 1375 00:55:51,240 --> 00:55:52,790 1376 00:55:52,790 --> 00:55:56,790 >> OK, kaya ito gumagana mahusay na kung ikaw ay tinitingnan, halimbawa, ang zero, isa, 1377 00:55:56,790 --> 00:55:59,410 dalawa, tatlo, apat, ikalimang Bilang Fibonacci, 1378 00:55:59,410 --> 00:56:03,561 kung saan maaari mong sabihin na 5 ay katumbas ng 2 plus 3. 1379 00:56:03,561 --> 00:56:05,060 Ngunit ano kung ikaw ay sa simula? 1380 00:56:05,060 --> 00:56:07,184 Paano kung lamang mong naaabot ang ang mga unang dalawang mga halaga? 1381 00:56:07,184 --> 00:56:08,470 1382 00:56:08,470 --> 00:56:11,330 >> Upang makakuha ng mga ito 1, hindi mo magagawa sabihin idagdag ang nakaraang dalawang, 1383 00:56:11,330 --> 00:56:13,930 dahil na zero and-- Hindi ko alam. 1384 00:56:13,930 --> 00:56:15,390 Kaya sa isang punto, kailangan naming ihinto. 1385 00:56:15,390 --> 00:56:21,250 Sa ilang mga punto, kailangan naming sabihin na ang mga dalawang lang ay ang kanilang sariling mga kahulugan. 1386 00:56:21,250 --> 00:56:23,890 Ang bilang 0 Fibonacci ay 0. 1387 00:56:23,890 --> 00:56:26,115 At ang unang Bilang Fibonacci ay 1. 1388 00:56:26,115 --> 00:56:34,120 >> Kaya ang paraan na maaari kong code na ito, ako sasabihin kung n ay mas mababa sa dalawang, 1389 00:56:34,120 --> 00:56:35,130 pagkatapos ay bumalik lamang n. 1390 00:56:35,130 --> 00:56:36,494 At iyon ay magiging aking base kaso. 1391 00:56:36,494 --> 00:56:38,660 Iyon ay kung paano alam kong itigil may isang recursive function. 1392 00:56:38,660 --> 00:56:40,640 1393 00:56:40,640 --> 00:56:41,410 Malinaw ba iyon? 1394 00:56:41,410 --> 00:56:41,940 Kahanga-hanga. 1395 00:56:41,940 --> 00:56:43,260 Ano pa sa Rekursiyon? 1396 00:56:43,260 --> 00:56:44,890 1397 00:56:44,890 --> 00:56:45,930 Maganda. 1398 00:56:45,930 --> 00:56:48,750 >> Mabilis na pag-usapan natin ang -uri-uriin magpatakbo ng mga oras sa paghahanap at. 1399 00:56:48,750 --> 00:56:52,660 At pagkatapos ay ako ay magbibigay sa Davin ilang oras upang makipag-usap tungkol sa coding mga halimbawa. 1400 00:56:52,660 --> 00:56:56,490 Kaya dito ay ang mga pangunahing paghahanap at uri na dapat mong malaman tungkol sa. 1401 00:56:56,490 --> 00:56:59,500 Guarantee-- Hindi ko magagarantiya, dahil hindi ko nakita ang quiz-- 1402 00:56:59,500 --> 00:57:01,940 ngunit ito ay lumalabas pagsusulit pagkatapos ng pagsusulit pagkatapos umalis. 1403 00:57:01,940 --> 00:57:04,050 Kaya nga gamitin ang tsart na ito. 1404 00:57:04,050 --> 00:57:05,682 Tulad ng, tumagal ang chart na ito. 1405 00:57:05,682 --> 00:57:06,890 Ilagay ito sa iyong impostor sheet. 1406 00:57:06,890 --> 00:57:07,931 Ikaw ay isang masaya tao. 1407 00:57:07,931 --> 00:57:09,010 1408 00:57:09,010 --> 00:57:12,590 >> Sinasabi nito sa atin ang mga oras run ng bawat ng mga pag-uuri at mga search algorithm. 1409 00:57:12,590 --> 00:57:14,020 1410 00:57:14,020 --> 00:57:18,850 Kaya linear paghahanap, maaari mong makita run oras, at parehong may binary paghahanap. 1411 00:57:18,850 --> 00:57:21,490 Pumunta sa kung ano ang mga algorithm gawin, ang pangkalahatang ideya. 1412 00:57:21,490 --> 00:57:24,220 Tingnan ang ilang mga pseudocode, kung hindi code mismo. 1413 00:57:24,220 --> 00:57:25,610 1414 00:57:25,610 --> 00:57:30,380 >> Makikita mo na bubble-uuri-uri ay may mas mataas na nakatali sa pinakamasama kaso ng n nakalapat. 1415 00:57:30,380 --> 00:57:31,490 1416 00:57:31,490 --> 00:57:34,680 Kaya kung ang aming array ay ganap na paurong bago namin nais na ayusin ito, 1417 00:57:34,680 --> 00:57:37,090 Gusto naming sabihin na iyon pagpunta sa tumagal n nakalapat na hakbang. 1418 00:57:37,090 --> 00:57:38,160 1419 00:57:38,160 --> 00:57:41,730 Ngunit sa pinakamahusay na mga kaso, kaya ang mas mababang nakatali para sa pinakamahusay na kaso 1420 00:57:41,730 --> 00:57:44,300 ay magiging kung ito ay na lubos na pinagsunod-sunod. 1421 00:57:44,300 --> 00:57:46,671 Pagkatapos lahat ng mayroon kaming gawin ay suriin na ito ay pinagsunod-sunod. 1422 00:57:46,671 --> 00:57:47,921 Mayroon bang isang katanungan sa paglipas dito? 1423 00:57:47,921 --> 00:57:49,805 >> MAG-AARAL: Kapag gagawin nais mong gamitin ang pag-uuri? 1424 00:57:49,805 --> 00:57:50,747 Ang pag-uuri. 1425 00:57:50,747 --> 00:57:52,160 Ako lang malaman. 1426 00:57:52,160 --> 00:57:53,510 >> Hannah: Kapag gagawin mo nais na gumamit ng pag-uuri seleksyon? 1427 00:57:53,510 --> 00:57:54,010 Isa ito? 1428 00:57:54,010 --> 00:57:55,705 Ang isa na n nakalapat sa parehong mga sitwasyon? 1429 00:57:55,705 --> 00:57:56,860 >> MAG-AARAL: [hindi marinig]. 1430 00:57:56,860 --> 00:57:58,151 >> Hannah: Kaya ibang-iba. 1431 00:57:58,151 --> 00:58:00,760 Kung mayroon kang tukoy na mga kinakailangan para sa iyong programa, 1432 00:58:00,760 --> 00:58:04,887 tulad ng mga bagay tulad ng kung sinabi namin lamang ipatupad ang search-- sorry-- 1433 00:58:04,887 --> 00:58:06,720 ipatupad ang pag-uuri, ikaw malamang na gusto mong pumunta 1434 00:58:06,720 --> 00:58:09,950 para sa isa sa mga iyon May pinakamahusay na kaso ng n, 1435 00:58:09,950 --> 00:58:12,410 o ang isang mas mababang bound sa pinakamahusay na kaso ng n. 1436 00:58:12,410 --> 00:58:14,790 Ngunit may maaaring maging ang ilang mga bagay tulad ng, sabihin nating, 1437 00:58:14,790 --> 00:58:16,767 swaps ay talagang mahal para sa ilang mga kadahilanan. 1438 00:58:16,767 --> 00:58:18,850 Pagkatapos ay gusto mo gawin bubble-uri-uriin, dahil hindi mo 1439 00:58:18,850 --> 00:58:20,641 kailangang gawin sa maraming swaps, mga bagay tulad na. 1440 00:58:20,641 --> 00:58:21,710 1441 00:58:21,710 --> 00:58:23,098 Anumang other-- yes? 1442 00:58:23,098 --> 00:58:25,488 >> MAG-AARAL: Gusto itong maging [hindi marinig] sasabihin na [hindi marinig]? 1443 00:58:25,488 --> 00:58:30,077 1444 00:58:30,077 --> 00:58:31,910 Hannah: Iyon ang isang bagay na sabihin sa iyo 1445 00:58:31,910 --> 00:58:33,670 kung naghahanap ka sa pagpapatupad. 1446 00:58:33,670 --> 00:58:35,850 Ang paraan gagawin ko talaga isipin ang tungkol sa kung bakit ito n 1447 00:58:35,850 --> 00:58:40,840 squared ay mayroon kaming upang tumakbo sa pamamagitan ng aming hanay ng mga haba n, 1448 00:58:40,840 --> 00:58:42,765 paggawa ng hindi hihigit, n swaps bawat oras. 1449 00:58:42,765 --> 00:58:43,980 1450 00:58:43,980 --> 00:58:46,220 At mayroon kaming upang gawin ito proseso ng n beses. 1451 00:58:46,220 --> 00:58:51,130 >> Kaya kapag mayroon kang magsagawa ng hindi hihigit, n swaps at para n nagpapatakbo sa pamamagitan ng array, 1452 00:58:51,130 --> 00:58:52,380 Mayroon bang pupuntahan dapat n nakalapat. 1453 00:58:52,380 --> 00:58:55,480 Ngunit oo, ito ay nagsiwalat sa pamamagitan ng double para sa loop, 1454 00:58:55,480 --> 00:58:59,428 bilang ang tanong asked-- o nested para sa loop, dapat ko bang sabihin. 1455 00:58:59,428 --> 00:59:00,890 OK? 1456 00:59:00,890 --> 00:59:03,375 >> At pagkatapos ay pagsamahin ang pag-uuri, na ay ang pinakamabilis na uri-uriin kami ngayon, 1457 00:59:03,375 --> 00:59:07,560 o na-sakop namin sa CS50, alam na ang pangunahing algorithm ay 1458 00:59:07,560 --> 00:59:10,150 ideyang ito ng pagsira sa Pinagbukud-bukod piraso at pagkatapos ay 1459 00:59:10,150 --> 00:59:11,980 pinagsasama-sama ang mga pinagsunod-sunod bits. 1460 00:59:11,980 --> 00:59:14,170 At ay makakakuha sa amin mag-log n log n. 1461 00:59:14,170 --> 00:59:17,110 Ang anumang mga tanong sa paghahanap at uri bago ako pumasa ito sa? 1462 00:59:17,110 --> 00:59:19,840 1463 00:59:19,840 --> 00:59:21,040 Tingnan natin Hayaan. 1464 00:59:21,040 --> 00:59:21,800 >> Oh, naka-link na mga listahan. 1465 00:59:21,800 --> 00:59:23,210 Paumanhin, mayroon akong isa pang paksa. 1466 00:59:23,210 --> 00:59:25,000 OK, kahanga-hangang, naka-link na mga listahan. 1467 00:59:25,000 --> 00:59:27,900 Problema sa mga array, mayroon sila ng isang nakapirming laki. 1468 00:59:27,900 --> 00:59:30,634 Kaya kung hindi mo alam kung gaano kalaki iyong input ay magiging, 1469 00:59:30,634 --> 00:59:32,050 hindi mo nais na lumikha ng isang array. 1470 00:59:32,050 --> 00:59:34,080 Dahil kung lumikha kami ng isang array na ay masyadong maliit, 1471 00:59:34,080 --> 00:59:35,930 maaari naming patakbuhin sa buffer overflow. 1472 00:59:35,930 --> 00:59:38,890 >> Kaya sa halip, maaari naming gawin ang isang bagay na may naka-link na mga listahan, na 1473 00:59:38,890 --> 00:59:44,280 Binibigyang-daan sa amin upang magkaroon ng isang dynamic na sized na istraktura ng data 1474 00:59:44,280 --> 00:59:48,970 na magbibigay-daan sa amin upang mag-imbak ng mas may kakayahang umangkop dami ng data. 1475 00:59:48,970 --> 00:59:54,030 Kaya sa loob ng bawat node sa aming listahan na naka-link, mayroon kaming dalawang piraso. 1476 00:59:54,030 --> 00:59:56,820 Mayroon kaming aktwal na halaga na nag-iimbak ito. 1477 00:59:56,820 --> 00:59:59,530 Kaya ito lamang ang bagay na gagawin mo makita sa array, halimbawa. 1478 00:59:59,530 --> 01:00:04,600 At pagkatapos naming panatilihin din ang track ng isang pointer sa susunod na bagay sa memorya. 1479 01:00:04,600 --> 01:00:06,430 >> Hindi tulad ng array, na Alam namin ay pumunta sa lahat 1480 01:00:06,430 --> 01:00:10,890 sa be-- mga elemento ng array ay ang lahat sa isang pagkatapos ng isa pang sa memory-- na naka-link 1481 01:00:10,890 --> 01:00:13,300 mga listahan ay maaaring saanman sa memory. 1482 01:00:13,300 --> 01:00:14,590 Ang mga ito ay di-makatwirang mga lokasyon. 1483 01:00:14,590 --> 01:00:16,410 Kaya kung kami ay upang talaga pumunta makita ang mga ito, kami 1484 01:00:16,410 --> 01:00:19,770 Kailangan upang masubaybayan ang susunod na bagay sa aming listahan. 1485 01:00:19,770 --> 01:00:22,840 >> At pagkatapos ay upang malaman kung saan listahang iyon bilang isang buo ay, 1486 01:00:22,840 --> 01:00:26,276 ang mayroon kami upang masubaybayan ang napaka unang elemento sa aming listahan na naka-link. 1487 01:00:26,276 --> 01:00:27,900 At makikita na nagbibigay-daan sa amin upang sundin sa pamamagitan ng. 1488 01:00:27,900 --> 01:00:31,020 1489 01:00:31,020 --> 01:00:33,070 >> Kaya ito ay kung paano mo maaaring tukuyin ang isang mode. 1490 01:00:33,070 --> 01:00:36,160 Ito ay isang mahusay na pagkakataon upang samantalahin ang structs. 1491 01:00:36,160 --> 01:00:39,660 Dahil mayroon kang ideyang ito, mahusay, para sa isang naibigay na node, mayroon akong dalawang piraso. 1492 01:00:39,660 --> 01:00:41,770 Mayroon akong aktwal na halaga mismo. 1493 01:00:41,770 --> 01:00:45,610 At pagkatapos ay mayroon akong isang pointer sa susunod na elemento sa naka-link na listahan. 1494 01:00:45,610 --> 01:00:49,150 Kaya tingnan mo, mayroon kaming isang integer n, na kung saan ay magiging aktwal na halaga, 1495 01:00:49,150 --> 01:00:53,150 at pagkatapos ay isang pointer sa isang node, na tinatawag na susunod. 1496 01:00:53,150 --> 01:00:56,431 Kaya na pupuntahan ang susunod na sangkap sa aming listahan na naka-link. 1497 01:00:56,431 --> 01:00:56,972 MAG-AARAL: Oo? 1498 01:00:56,972 --> 01:01:01,920 Mayroon ba kayong upang tukuyin iyon ang bituin ay tulad ng isang struct? 1499 01:01:01,920 --> 01:01:05,620 >> Hannah: Oo, kaya dahil ito ay halos tulad ng isang uri ng, 1500 01:01:05,620 --> 01:01:07,980 ito ay tila isang recursive kahulugan sa na namin 1501 01:01:07,980 --> 01:01:12,080 kailangan mong malaman kung ano ang isang node ay sa loob sa paghahanap ng isang node. 1502 01:01:12,080 --> 01:01:14,450 Dahil hindi talaga alam kung ano ang isang node ay lubos na 1503 01:01:14,450 --> 01:01:17,283 hanggang sa makuha namin sa dulo ng this-- at pagkatapos na ito maaari naming tumawag lang ito 1504 01:01:17,283 --> 01:01:21,935 isang node-- sa loob ng kahulugan na ito, kailangan naming tumawag ito ng isang struct node. 1505 01:01:21,935 --> 01:01:22,560 Mahusay na tanong. 1506 01:01:22,560 --> 01:01:23,580 1507 01:01:23,580 --> 01:01:25,214 Ano pa? 1508 01:01:25,214 --> 01:01:26,198 Oo? 1509 01:01:26,198 --> 01:01:29,150 >> MAG-AARAL: Bakit ginagawa namin ang masasabi node dalawang beses? 1510 01:01:29,150 --> 01:01:33,578 Dahil kapag kami ay nasa [hindi marinig] Nagkaroon lamang nating gawin ito sa tuldok-kuwit, 1511 01:01:33,578 --> 01:01:37,352 ngunit ngayon ay mayroon kaming na makita na ang struct node? [Hindi marinig]. 1512 01:01:37,352 --> 01:01:39,060 Hannah: Kaya naniniwala ako sa huling halimbawa, 1513 01:01:39,060 --> 01:01:42,110 kami ay lamang sa paglikha ng anumang oras sa iyo Nais na gumamit ng isang mag-aaral matapos iyon, 1514 01:01:42,110 --> 01:01:46,430 Nagkaroon gamitin ang struct node-- Ako sorry-- mag-aaral struct. 1515 01:01:46,430 --> 01:01:51,575 Pinapayagan kami nito na, pagkatapos ng katotohanan, lamang paggamit node magdagdag ng bagong uri, mahalagang. 1516 01:01:51,575 --> 01:01:53,324 1517 01:01:53,324 --> 01:01:53,990 Na make-unawa? 1518 01:01:53,990 --> 01:01:54,984 1519 01:01:54,984 --> 01:01:57,150 Kaya gusto naming bumalik at tingnan ang code bago. 1520 01:01:57,150 --> 01:01:59,025 Ngunit Gusto ko hulaan na hindi namin gamitin typedef. 1521 01:01:59,025 --> 01:02:02,050 At hiniling namin ang tanong, bakit kailangan naming gamitin typedef? 1522 01:02:02,050 --> 01:02:05,540 Binibigyang-daan ka Typedef sa amin upang maiwasan ang salita struct sa simula. 1523 01:02:05,540 --> 01:02:06,221 Oo? 1524 01:02:06,221 --> 01:02:08,095 MAG-AARAL: Ano ang uri ng mga tanong na makabuo 1525 01:02:08,095 --> 01:02:10,400 sa mga tuntunin sa mga tuntunin ng nodes at naka-link listahan? 1526 01:02:10,400 --> 01:02:15,110 >> Hannah: Kaya ang isang bagay ay maaaring namin sabihin kung paano maaari kang maghanap sa pamamagitan ng isang naka-link na listahan? 1527 01:02:15,110 --> 01:02:16,930 OK, dahil ito ay isang kaunti pa kumplikado 1528 01:02:16,930 --> 01:02:18,520 kaysa sa kung namin hinahanap sa pamamagitan ng isang array. 1529 01:02:18,520 --> 01:02:21,472 Maaari lang namin tumingin sa elemento zero, elemento ng isa, elemento ng dalawa, blah, blah, 1530 01:02:21,472 --> 01:02:21,972 blah. 1531 01:02:21,972 --> 01:02:22,629 1532 01:02:22,629 --> 01:02:24,420 Kung gusto naming maghanap sa pamamagitan ng isang naka-link na listahan, 1533 01:02:24,420 --> 01:02:27,229 nais naming aktwal na kailangang sundin ang maliit na maze ng mga payo. 1534 01:02:27,229 --> 01:02:29,270 Kaya sabihin aktwal na pumunta sa pamamagitan ng tunay mabilis. 1535 01:02:29,270 --> 01:02:30,460 1536 01:02:30,460 --> 01:02:32,860 Ano ang maaari naming gawin sa -order to-- ipaalam sabihin ng namin 1537 01:02:32,860 --> 01:02:35,430 Gusto upang umulit lamang sa pamamagitan ng aming lubos na naka-link listahan. 1538 01:02:35,430 --> 01:02:37,450 Gusto naming simulan sa ulo. 1539 01:02:37,450 --> 01:02:39,890 At pagkatapos ay upang lumipat sa susunod na elemento, 1540 01:02:39,890 --> 01:02:43,680 sa halip na lamang incrementing sa pamamagitan ng isa tulad ng maaari sa pagpunta sa pamamagitan ng isang array namin, 1541 01:02:43,680 --> 01:02:45,720 talaga kami ng pagpunta sa sundin ang mga susunod na pointer, 1542 01:02:45,720 --> 01:02:48,360 upang maaari naming makita kung saan sa memorya ng susunod na elemento ay. 1543 01:02:48,360 --> 01:02:49,357 1544 01:02:49,357 --> 01:02:51,690 Kaya alam ko hindi ito sapat upang gawin ang lahat ng ito sa ngayon, 1545 01:02:51,690 --> 01:02:52,650 ngunit magkakaroon ka ng mga slide. 1546 01:02:52,650 --> 01:02:54,730 Kaya maaari kang pumunta sa pamamagitan ng mas mabagal ng kaunti ito. 1547 01:02:54,730 --> 01:02:56,890 Ngunit mahalagang, kung ano ang gusto namin gawin ay sundin ang mga payo 1548 01:02:56,890 --> 01:02:58,550 sa pamamagitan ng ang kabuuan ng naka-link na listahan. 1549 01:02:58,550 --> 01:03:00,258 Kaya ito ay isang tanong maaaring hilingin. 1550 01:03:00,258 --> 01:03:01,920 1551 01:03:01,920 --> 01:03:03,980 >> Isang bagay na napansin sa pagpapasok ng, sabihin nating 1552 01:03:03,980 --> 01:03:07,925 Nais namin upang ilagay ang isang bagong elemento sa harap ng aming mga listahan na naka-link. 1553 01:03:07,925 --> 01:03:10,800 Mayroon kaming upang maging maingat tungkol sa pagkakasunud-sunod kung namin 1554 01:03:10,800 --> 01:03:12,760 reassigned sa mga payo. 1555 01:03:12,760 --> 01:03:15,230 Dahil sabihin nating ko lang sinabi OK. 1556 01:03:15,230 --> 01:03:18,930 Gumawa ng ulo punto upang ang bagong elemento. 1557 01:03:18,930 --> 01:03:23,550 Tiyakin lang ito ay tumuturo sa 1 Pagkatapos, hindi namin mahalagang nawala ang natitira sa aming listahan, 1558 01:03:23,550 --> 01:03:25,860 dahil hindi ko matandaan kung saan 2 buhay. 1559 01:03:25,860 --> 01:03:27,730 >> Kaya dapat nating gawin sa isang napaka-tukoy na order. 1560 01:03:27,730 --> 01:03:31,500 Una, gumawa kami ng bagong point elemento sa ulo. 1561 01:03:31,500 --> 01:03:33,970 At pagkatapos ay gawin namin ang ulo nagtuturo sa mga bagong elemento. 1562 01:03:33,970 --> 01:03:38,455 Kaya tingnan natin kung ano na kamukha may arrows-- katulad nito. 1563 01:03:38,455 --> 01:03:42,080 Kaya mayroon kang muna ang bagong point elemento sa lumang ulo. 1564 01:03:42,080 --> 01:03:45,990 At ngayon, mayroon kaming ang ulo tumuturo sa unang bagong elemento. 1565 01:03:45,990 --> 01:03:47,187 Ang anumang mga katanungan na may ito? 1566 01:03:47,187 --> 01:03:49,870 1567 01:03:49,870 --> 01:03:54,350 >> OK narito muli ang ilang mga code, ang isang bagay upang tumingin sa isang maliit na bit sa ibang pagkakataon. 1568 01:03:54,350 --> 01:03:58,630 At ngayon ay magpapasara ko ito sa paglipas ng sa Davin para sa GDB at ng kaunting kasanayan 1569 01:03:58,630 --> 01:03:59,480 coding sa papel. 1570 01:03:59,480 --> 01:04:00,597 1571 01:04:00,597 --> 01:04:01,096 Maganda. 1572 01:04:01,096 --> 01:04:01,810 >> Rob: At Rob. 1573 01:04:01,810 --> 01:04:02,360 >> Hannah: Oh, Davin at Rob. 1574 01:04:02,360 --> 01:04:03,055 Sorry. 1575 01:04:03,055 --> 01:04:03,596 >> MAG-AARAL: Woo! 1576 01:04:03,596 --> 01:04:08,140 1577 01:04:08,140 --> 01:04:09,110 >> Rob: Salamat. 1578 01:04:09,110 --> 01:04:11,209 >> DAVIN: Gusto mo bang sabihin lahat ng tunay na mabilis? 1579 01:04:11,209 --> 01:04:11,875 Rob: Oo, oo. 1580 01:04:11,875 --> 01:04:12,845 DAVIN: Kapag ako up. 1581 01:04:12,845 --> 01:04:16,240 1582 01:04:16,240 --> 01:04:19,520 OK, habang naglalagay Rob ang mikropono sa, kaya kung ano ang GDB? 1583 01:04:19,520 --> 01:04:23,945 Dapat na nakita Ang bawat tao'y GDB sa klase at din sa oras ng opisina. 1584 01:04:23,945 --> 01:04:25,070 At dapat kang maging ang paggamit nito. 1585 01:04:25,070 --> 01:04:25,750 Kaya kung ano ang GDB? 1586 01:04:25,750 --> 01:04:28,030 1587 01:04:28,030 --> 01:04:28,850 Sinuman? 1588 01:04:28,850 --> 01:04:29,540 >> MAG-AARAL: Ito ay isang debugger. 1589 01:04:29,540 --> 01:04:30,250 >> DAVIN: Ito ay isang debugger. 1590 01:04:30,250 --> 01:04:31,624 At ano ang pinapayagan ito mong gawin? 1591 01:04:31,624 --> 01:04:33,064 Tulad ng, kung bakit gusto namin GDB? 1592 01:04:33,064 --> 01:04:34,480 MAG-AARAL: Upang pabagalin ang programa. 1593 01:04:34,480 --> 01:04:36,740 DAVIN: I-right, sa gayon ay maaari kang maglakad sa pamamagitan nito ng isang tao mong bilis. 1594 01:04:36,740 --> 01:04:38,490 At kaya kung ano ang ilang mga command na maaari mong gawin? 1595 01:04:38,490 --> 01:04:40,407 Well, pahinga ay marahil ang iyong mga paboritong command. 1596 01:04:40,407 --> 01:04:43,240 Dahil na nagbibigay-daan sa iyo masira ang programa at aktwal na maglakad sa pamamagitan nito 1597 01:04:43,240 --> 01:04:44,280 linya sa pamamagitan ng linya. 1598 01:04:44,280 --> 01:04:46,500 >> Run ay nagbibigay-daan sa iyo upang patakbuhin ito. 1599 01:04:46,500 --> 01:04:48,210 Susunod, tulad ng stepping sa pamamagitan ng. 1600 01:04:48,210 --> 01:04:49,820 Ano ang susunod na sa pagitan ng at na hakbang? 1601 01:04:49,820 --> 01:04:52,190 1602 01:04:52,190 --> 01:04:53,190 Maghintay, sabihin natin na nang malakas. 1603 01:04:53,190 --> 01:04:54,060 Ito ay tama. 1604 01:04:54,060 --> 01:04:55,280 >> MAG-AARAL: [hindi marinig]. 1605 01:04:55,280 --> 01:04:56,190 >> DAVIN: Oo, kahanga-hanga. 1606 01:04:56,190 --> 01:04:59,210 Kaya tulad ng, susunod na hakbang at, kung you're-- sabihin nating mayroon kang isang function sa iyo 1607 01:04:59,210 --> 01:04:59,950 tukuyin. 1608 01:04:59,950 --> 01:05:03,350 Ipagpalagay natin na ang ilan sa iyong pangunahing pag-andar, at lamang mong naaabot ang susunod, susunod, 1609 01:05:03,350 --> 01:05:03,850 sa susunod. 1610 01:05:03,850 --> 01:05:05,910 Aktwal na iyong pupuntahan maisagawa na function, 1611 01:05:05,910 --> 01:05:07,285 ngunit ka pagpunta sa lundagan ito. 1612 01:05:07,285 --> 01:05:09,711 Kung pinindot ninyo ang hakbang na ito, o s o anumang, ikaw ay 1613 01:05:09,711 --> 01:05:11,460 pagpunta sa aktwal na tumalon sa na pag-andar, 1614 01:05:11,460 --> 01:05:14,110 at pagkatapos ay maaari mong pindutin ang susunod upang makita ang iba't ibang mga tawag 1615 01:05:14,110 --> 01:05:16,170 sa loob ng partikular na function. 1616 01:05:16,170 --> 01:05:16,670 Oo? 1617 01:05:16,670 --> 01:05:18,670 >> MAG-AARAL: Mayroon bang isang paraan upang lumipat, tulad ng, i-back out? 1618 01:05:18,670 --> 01:05:20,750 DAVIN: Tapos na, oo, matapos may tumalon out ka. 1619 01:05:20,750 --> 01:05:22,570 Kaya pupuntahan matapos na function, at pagkatapos ikaw ay 1620 01:05:22,570 --> 01:05:24,153 magiging pabalik sa pangunahing, halimbawa. 1621 01:05:24,153 --> 01:05:25,250 1622 01:05:25,250 --> 01:05:27,370 I-print ay i-print ito nang isang beses. 1623 01:05:27,370 --> 01:05:29,381 Isang bagay na laging ko bang gamitin ang display. 1624 01:05:29,381 --> 01:05:31,880 Display ay i-print ito Patuloy sa buong kabuuan 1625 01:05:31,880 --> 01:05:32,470 ng iyong programa. 1626 01:05:32,470 --> 01:05:33,810 >> Halimbawa, kung ikaw ay sa isang para sa loop, at 1627 01:05:33,810 --> 01:05:37,018 Gusto upang makita kung paano ang pagbabago ng isang bagay, at hindi mo nais na, tulad ng, patuloy 1628 01:05:37,018 --> 01:05:38,940 ginagawa tulad ng pag-print, -print, i-print, display 1629 01:05:38,940 --> 01:05:43,230 Ipapakita variable na patuloy na, sa tuwing ang mo pindutin ang Susunod. 1630 01:05:43,230 --> 01:05:44,310 At magpatuloy. 1631 01:05:44,310 --> 01:05:45,905 Kaya GBD, na GDB. 1632 01:05:45,905 --> 01:05:47,160 1633 01:05:47,160 --> 01:05:49,180 >> MAG-AARAL: Ano ang isang kung saan mo [hindi marinig]? 1634 01:05:49,180 --> 01:05:50,150 1635 01:05:50,150 --> 01:05:50,900 DAVIN: Ano ito? 1636 01:05:50,900 --> 01:05:52,310 1637 01:05:52,310 --> 01:05:54,390 >> MAG-AARAL: Ano ang the-- ang lokal na mga variable. 1638 01:05:54,390 --> 01:05:55,364 1639 01:05:55,364 --> 01:05:57,780 Rob: May isang bagay na talagang tulad ng lokal o isang bagay. 1640 01:05:57,780 --> 01:05:58,140 Can't-- ko 1641 01:05:58,140 --> 01:05:59,930 >> DAVIN: Ito ay maaaring maging isang bagay tulad na, oo. 1642 01:05:59,930 --> 01:06:00,830 >> Hannah: Sa mga lokal? 1643 01:06:00,830 --> 01:06:01,510 >> DAVIN: Iyon na. 1644 01:06:01,510 --> 01:06:02,134 Iyon ang isa. 1645 01:06:02,134 --> 01:06:03,040 Rob: Magandang. 1646 01:06:03,040 --> 01:06:04,030 >> DAVIN: Oo. 1647 01:06:04,030 --> 01:06:06,010 >> MAG-AARAL: Ano ang patuloy na gawin? 1648 01:06:06,010 --> 01:06:08,010 >> DAVIN: Ito continues-- kaya lang pagpunta upang ipagpatuloy ang iyong mga programa. 1649 01:06:08,010 --> 01:06:09,843 Kaya kung masira at pindutin ang magpatuloy, ito ay pagpunta 1650 01:06:09,843 --> 01:06:13,119 upang tumakbo lamang ng programa na hanggang ito ay umabot muli break na iyon. 1651 01:06:13,119 --> 01:06:14,910 Kaya halimbawa, kung sinira sa isang function, 1652 01:06:14,910 --> 01:06:16,720 at tapos ka pagpunta sa gawin tulad ng para sa loop o isang bagay tulad na, 1653 01:06:16,720 --> 01:06:19,869 at pindutin ka magpatuloy, ito ng pagpunta sa magpatuloy at bumalik sa break na iyon. 1654 01:06:19,869 --> 01:06:22,660 O kaya walang pahinga, ito ay pagpunta sa magpatuloy at tapusin sa programa. 1655 01:06:22,660 --> 01:06:25,000 >> Rob: gusto Kaya lang tumakbo hinto sa pinakadulo unang breakpoint 1656 01:06:25,000 --> 01:06:27,010 mo pindutin, kung pagkatapos ay pindutin ang magpatuloy, magkakaroon ito panatilihin 1657 01:06:27,010 --> 01:06:28,070 pagpunta hanggang sa ito sa susunod na breakpoint. 1658 01:06:28,070 --> 01:06:30,111 At pagkatapos ay magpatuloy ay pupunta sa susunod na breakpoint. 1659 01:06:30,111 --> 01:06:31,264 1660 01:06:31,264 --> 01:06:32,680 DAVIN: Anumang iba pang mga katanungan sa GDB? 1661 01:06:32,680 --> 01:06:33,577 1662 01:06:33,577 --> 01:06:35,410 Kaya tingin ko sa nakaraan, na hiniling namin sa iyo kung ano ang 1663 01:06:35,410 --> 01:06:37,690 GDB ay at bigyan ng halimbawa ng ilang bagay sa iyo 1664 01:06:37,690 --> 01:06:40,770 Maaari gawin sa GDB, kaya tunay na simple, ngunit oo. 1665 01:06:40,770 --> 01:06:42,280 Mayroon kang pumunta. 1666 01:06:42,280 --> 01:06:43,250 At node? 1667 01:06:43,250 --> 01:06:49,571 >> Rob: Oo, kaya kung aling mga direksyon ay ito? 1668 01:06:49,571 --> 01:06:50,851 1669 01:06:50,851 --> 01:06:51,726 MAG-AARAL: Iyon ay ito. 1670 01:06:51,726 --> 01:06:52,160 DAVIN: Maghintay. 1671 01:06:52,160 --> 01:06:52,270 Rob: tao na ito? 1672 01:06:52,270 --> 01:06:52,936 DAVIN: isa iyon. 1673 01:06:52,936 --> 01:06:54,660 Rob: tao na ito, naku, ako ay hindi nauunawaan. 1674 01:06:54,660 --> 01:06:56,940 Kaya kami ay hindi malinaw sa kung anong the-- kong gawin hindi 1675 01:06:56,940 --> 01:06:58,680 alam kung sino ang was-- ito ngunit ang tanong. 1676 01:06:58,680 --> 01:07:01,180 Hindi namin alam kung ano ang mismong ay nagtatanong tungkol dito, kaya lang 1677 01:07:01,180 --> 01:07:04,800 upang linawin ang isang bagay. 1678 01:07:04,800 --> 01:07:07,750 Kaya una, tulad ng sinabi ko bago, typedef ka laging gamit lamang 1679 01:07:07,750 --> 01:07:09,305 lumikha ng isang palayaw para sa isang uri. 1680 01:07:09,305 --> 01:07:13,420 Kaya dito mismo, ang palayaw na kami ay paglikha ay para sa uri ng struct node. 1681 01:07:13,420 --> 01:07:18,070 >> Kaya unang, nang binabalewala ang node sa typedef, kaya ito struct node kulot 1682 01:07:18,070 --> 01:07:21,060 suhay pababa sa susunod na kulot suhay ang uri struct node. 1683 01:07:21,060 --> 01:07:23,470 At kailangan naming na node up doon, dahil kami 1684 01:07:23,470 --> 01:07:25,190 kailangan na banggitin ang mga node in dito. 1685 01:07:25,190 --> 01:07:29,380 Kaya sa ganitong uri ng recursive struct, Kailangan mong bigyan ito struct ng pangalan, 1686 01:07:29,380 --> 01:07:31,340 o iba hindi mo magagawa sabihin struct node in dito. 1687 01:07:31,340 --> 01:07:33,340 Sapagkat bago sa mag-aaral kapag tayo ay nai-type, sa palagay ko, 1688 01:07:33,340 --> 01:07:35,423 hindi namin masasabi mag-aaral up doon, dahil kami 1689 01:07:35,423 --> 01:07:40,370 Hindi na kailangang sabihin struct mag-aaral sa loob ng struct mismo. 1690 01:07:40,370 --> 01:07:43,730 Kaya ito ang recursive na Pinipilit sa amin upang sabihin node doon. 1691 01:07:43,730 --> 01:07:46,610 >> Node na ito ay lamang ang pangalan namin pagbibigay node para sa typedef. 1692 01:07:46,610 --> 01:07:48,520 Kaya na node ay hindi katulad ng na node. 1693 01:07:48,520 --> 01:07:51,567 Ngunit ito struct node ay ang parehong bilang na struct node. 1694 01:07:51,567 --> 01:07:54,150 DAVIN: Kaya sa tuwing kang tumawag, tulad ng, node sa iyong pangunahing pag-andar, 1695 01:07:54,150 --> 01:07:55,350 Hindi ka pagpunta sa ang masasabi struct node. 1696 01:07:55,350 --> 01:07:58,360 Maaari mo lang sabihin node, dahil node ay isang different-- ay isa lamang 1697 01:07:58,360 --> 01:07:59,440 na iyong sinasabi, OK. 1698 01:07:59,440 --> 01:08:01,490 Sa halip na tumawag struct node sa aking code, 1699 01:08:01,490 --> 01:08:04,050 Gusto ko lang palitan ang pangalan nito bilang node upang gawing mas madali. 1700 01:08:04,050 --> 01:08:06,800 >> Rob: Kung palagi gamitin typedef, pagkatapos ito 1701 01:08:06,800 --> 01:08:11,240 ay ang tanging lugar na iyong pupuntahan ay may idedeklara isang variable na may struct node 1702 01:08:11,240 --> 01:08:11,740 lagyan ng star, oo. 1703 01:08:11,740 --> 01:08:14,650 1704 01:08:14,650 --> 01:08:20,801 >> DAVIN: OK, kaya ang huling bahagi Mahirap magturo because-- 1705 01:08:20,801 --> 01:08:22,185 1706 01:08:22,185 --> 01:08:22,685 Rob: Ano? 1707 01:08:22,685 --> 01:08:24,098 1708 01:08:24,098 --> 01:08:25,649 >> DAVIN: Dahil ito ay coding sa papel. 1709 01:08:25,649 --> 01:08:28,689 Kaya bawat taon kami ay code sa mga tanong papel. 1710 01:08:28,689 --> 01:08:32,510 Kaya palagay ko noong nakaraang taon, 12 out sa 80 puntos ay code sa papel. 1711 01:08:32,510 --> 01:08:36,720 Taon bago iyon, 10 out ng 80, taon bago iyon, 20 sa 100, 1712 01:08:36,720 --> 01:08:37,939 kaya marami-dami ng mga ito. 1713 01:08:37,939 --> 01:08:40,970 Kaya ka ng pagpunta sa may upang magawang sa code up ang mga pag-andar sa pamamagitan ng kamay. 1714 01:08:40,970 --> 01:08:45,340 >> Kaya naisip ko na maaari naming pumunta sa pamamagitan ng isang ilang sa mga ito at makita kung paano gawin ng mga tao, 1715 01:08:45,340 --> 01:08:47,340 uri ng maglakad sa pamamagitan ng ang mga ito dahan-dahan sa mga tao. 1716 01:08:47,340 --> 01:08:48,790 1717 01:08:48,790 --> 01:08:52,420 Kaya sa pangkalahatan, strlen at atoi naging napaka-tanyag. 1718 01:08:52,420 --> 01:08:55,670 Nitong nakaraang taon, sa tingin ko namin ay may GetPositiveInt at RandomInt. 1719 01:08:55,670 --> 01:08:58,591 Ngunit yukod, kaya kapangyarihan, din isang positibong isa masyadong. 1720 01:08:58,591 --> 01:09:00,965 Hayaan pumunta lamang sa pamamagitan ng siguro isa o dalawa sa mga magkakasama. 1721 01:09:00,965 --> 01:09:02,510 1722 01:09:02,510 --> 01:09:03,729 Ano ang nais na makita ng mga tao? 1723 01:09:03,729 --> 01:09:05,037 1724 01:09:05,037 --> 01:09:05,767 >> MAG-AARAL: Atoi. 1725 01:09:05,767 --> 01:09:06,350 MAG-AARAL: Oo. 1726 01:09:06,350 --> 01:09:06,859 DAVIN: Atoi? 1727 01:09:06,859 --> 01:09:07,800 MAG-AARAL: [hindi marinig]. 1728 01:09:07,800 --> 01:09:09,682 DAVIN: OK, pupunta ako upang gawin ito sa board. 1729 01:09:09,682 --> 01:09:11,765 Mayroon ba kayong kagustuhan kung gagawin ko dito o doon? 1730 01:09:11,765 --> 01:09:13,580 1731 01:09:13,580 --> 01:09:14,550 Doon, sabi ni Gabe doon. 1732 01:09:14,550 --> 01:09:16,729 1733 01:09:16,729 --> 01:09:19,580 >> Rob: At ito ang pangkalahatang mga saloobin sa mga coding katanungan. 1734 01:09:19,580 --> 01:09:21,705 Subukan na magsulat ng isang bagay. 1735 01:09:21,705 --> 01:09:22,580 Huwag mag-iwan itong blangko. 1736 01:09:22,580 --> 01:09:23,080 >> DAVIN: Oo. 1737 01:09:23,080 --> 01:09:25,520 Rob: Kung maaari mong makuha ang bumalik tamang uri, 1738 01:09:25,520 --> 01:09:27,090 o marahil maaari naming ibigay ito sa ka, ngunit kung maaari, tulad ng, 1739 01:09:27,090 --> 01:09:30,256 isulat ang pangkalahatang function na lagda, Kung maaari kang makakuha ng tamang base kaso, 1740 01:09:30,256 --> 01:09:32,244 o kaso sulok, o pagtanda ng tseke para sa null, 1741 01:09:32,244 --> 01:09:34,160 hangga't mayroon kang ilang mga mga bagay, at pagkatapos ay marahil kami 1742 01:09:34,160 --> 01:09:35,880 maaaring magbigay sa iyo ng ilang tumuturo para sa mga problema. 1743 01:09:35,880 --> 01:09:36,810 Huwag mag-iwan lamang itong blangko. 1744 01:09:36,810 --> 01:09:38,560 >> DAVIN: Oo, at kung ay ganap lamang 1745 01:09:38,560 --> 01:09:40,580 stumped sa kung paano talagang maging code. 1746 01:09:40,580 --> 01:09:43,140 Kung nagsusulat ka pseudocode, na mahusay masyadong. 1747 01:09:43,140 --> 01:09:46,390 Kaya ito ay tulad ng, ito ay isang anim na punto-uusapan, at isulat mo ang tamang pseudocode, 1748 01:09:46,390 --> 01:09:47,858 makakakuha ka ng hindi bababa sa dalawang mga punto. 1749 01:09:47,858 --> 01:09:49,149 Kaya huwag lamang mag-iwan ang mga ito blangko. 1750 01:09:49,149 --> 01:09:50,279 Subukang maglagay ng isang bagay. 1751 01:09:50,279 --> 01:09:51,770 >> Rob: Kailangan itong maging tamang pseudocode, bagaman. 1752 01:09:51,770 --> 01:09:52,270 >> DAVIN: Oo. 1753 01:09:52,270 --> 01:09:55,381 Rob: Kaya hindi namin sa pangkalahatan ay mas kaunti hindi mahigpit na may mga bug sa pseudocode. 1754 01:09:55,381 --> 01:09:57,130 DAVIN: OK, kaya mo guys Nais upang makita atoi. 1755 01:09:57,130 --> 01:09:58,480 1756 01:09:58,480 --> 01:10:02,820 OK, kaya lamang really-- kaya kung ano ang gusto mong gawin 1757 01:10:02,820 --> 01:10:04,969 ay ka pagpunta sa maging ibinigay ng ilang mga uri ng numero. 1758 01:10:04,969 --> 01:10:07,010 Subalit ang bilang na ito ay hindi magiging isang int, i-right? 1759 01:10:07,010 --> 01:10:08,574 Ano ang ito ng pagpunta sa maging? 1760 01:10:08,574 --> 01:10:09,480 >> MAG-AARAL: [hindi marinig]. 1761 01:10:09,480 --> 01:10:11,146 >> DAVIN: Ito ay pagpunta sa maging isang string, i-right? 1762 01:10:11,146 --> 01:10:13,160 Kaya kung saan bibigyan isang string-- ni say-- ipaalam 1763 01:10:13,160 --> 01:10:15,228 >> Rob: Dapat ko bang makuha ang isang editor? 1764 01:10:15,228 --> 01:10:16,200 Maaari ko bang hilahin up-- 1765 01:10:16,200 --> 01:10:16,800 >> DAVIN: Oh, gusto mong gawin ito on-- 1766 01:10:16,800 --> 01:10:17,420 >> Rob: Ginusto mo ba ang board? 1767 01:10:17,420 --> 01:10:18,800 >> DAVIN: Ano ang gusto mong gawin? 1768 01:10:18,800 --> 01:10:19,900 Ibig kong sabihin, ang gusto mong gawin ito sa pamamagitan ng kamay? 1769 01:10:19,900 --> 01:10:21,460 O nais mong gawin ito sa pamamagitan ng computer? 1770 01:10:21,460 --> 01:10:22,180 >> Rob: Gawin ito sa pamamagitan ng kamay. 1771 01:10:22,180 --> 01:10:22,805 >> DAVIN: [LAUGHS] 1772 01:10:22,805 --> 01:10:23,950 Rob: Gawin ito sa pamamagitan ng kamay. 1773 01:10:23,950 --> 01:10:25,469 >> DAVIN: OK, kaya magiging atoi. 1774 01:10:25,469 --> 01:10:27,760 Kaya kung ano ang it-- ibig kong sabihin, kami ay marahil bigyan ito sa iyo. 1775 01:10:27,760 --> 01:10:29,106 Ngunit kung ano ang ito pagpunta sa bumalik? 1776 01:10:29,106 --> 01:10:29,452 >> MAG-AARAL: Int. 1777 01:10:29,452 --> 01:10:31,076 >> DAVIN: Ito ay pagpunta upang bumalik int, i-right? 1778 01:10:31,076 --> 01:10:33,772 So-- hindi ko nais upang gawin ito doon. 1779 01:10:33,772 --> 01:10:34,510 Makikita kong gawin ito dito. 1780 01:10:34,510 --> 01:10:36,596 >> Rob: Maaari mong hilahin ito pababa at pagkatapos ay itulak up dito. 1781 01:10:36,596 --> 01:10:38,500 1782 01:10:38,500 --> 01:10:40,385 >> DAVIN: oo. 1783 01:10:40,385 --> 01:10:43,880 [LAUGHS] pagbabago Laro. 1784 01:10:43,880 --> 01:10:50,950 OK, kaya magiging int atoi, at kung ano ang ito pagpunta sa tumagal? 1785 01:10:50,950 --> 01:10:52,180 1786 01:10:52,180 --> 01:10:57,780 Ang isang pansamantalang trabaho bituin, kaya lang ang isang string, star s, tulad ng iyon. 1787 01:10:57,780 --> 01:10:59,240 >> Rob: Nice bituin, mabait. 1788 01:10:59,240 --> 01:11:02,582 1789 01:11:02,582 --> 01:11:04,040 DAVIN: Ito ay maaaring maging doon, OK. 1790 01:11:04,040 --> 01:11:04,540 Rob: Oo. 1791 01:11:04,540 --> 01:11:06,670 DAVIN: OK, kaya ang unang bagay na gusto mong do-- ko 1792 01:11:06,670 --> 01:11:08,490 hindi alam kung tumingin kahit sino sa pagsasanay solutions-- 1793 01:11:08,490 --> 01:11:10,150 ngunit kung ano ang iyong pagpunta sa nais na gawin ay ikaw 1794 01:11:10,150 --> 01:11:11,570 pagpunta sa nais na magkaroon ng loop, dahil ikaw ay 1795 01:11:11,570 --> 01:11:14,100 pagpunta sa nais na aktwal magbasa-basa ang string na ito. 1796 01:11:14,100 --> 01:11:18,880 Kaya helpful-- kaya sabihin nating kami ay pagpunta sa may para sa loop, 1797 01:11:18,880 --> 01:11:22,270 at kami ay pagpunta upang magbasa-basa bawat elemento ng string. 1798 01:11:22,270 --> 01:11:23,470 Gaano katagal na? 1799 01:11:23,470 --> 01:11:26,464 Gaano karaming beses kami makapupunta upang umulit sa na para sa loop? 1800 01:11:26,464 --> 01:11:27,130 MAG-AARAL: Sterln? 1801 01:11:27,130 --> 01:11:27,963 DAVIN: Sterln, oo. 1802 01:11:27,963 --> 01:11:29,350 1803 01:11:29,350 --> 01:11:41,294 Kaya sabihin nating haba int katumbas sterln s. 1804 01:11:41,294 --> 01:11:44,240 1805 01:11:44,240 --> 01:11:48,740 At lamang malaman, kung bakit ito ay palaging uri ng mas mahusay na gawin ito sa labas ng loop? 1806 01:11:48,740 --> 01:11:52,277 Tulad ng, kung bakit ito ay mas mahusay na tumawag sa ang function na ito sa labas ng isang loop? 1807 01:11:52,277 --> 01:11:53,360 Lamang ng isang mabilis na katinuan check? 1808 01:11:53,360 --> 01:11:55,810 1809 01:11:55,810 --> 01:11:56,311 Oo? 1810 01:11:56,311 --> 01:11:58,268 MAG-AARAL: Kaya hindi mo gusto mayroon upang panatilihing ng pagsuri ito. 1811 01:11:58,268 --> 01:11:59,400 Maaari mo lamang [hindi marinig]. 1812 01:11:59,400 --> 01:12:01,560 >> DAVIN: Eksakto, kaya oo, kung ano ang eksaktong sinabi niya. 1813 01:12:01,560 --> 01:12:03,101 Kaya namin Hindi mo na kailangang panatilihin ang pagsuri ito. 1814 01:12:03,101 --> 01:12:05,690 Kaya halimbawa, kung gumagamit ako ng pagtawag ang function na ito sa loob ng loop, 1815 01:12:05,690 --> 01:12:08,050 pagkatapos Pupunta ako sa panatilihin ang pagtawag function na ito nang maraming beses. 1816 01:12:08,050 --> 01:12:10,080 At na pupuntahan bawasan ang pagiging epektibo ng iyong programa. 1817 01:12:10,080 --> 01:12:12,370 Kaya ito ay palaging kapaki-pakinabang idedeklara ito sa labas. 1818 01:12:12,370 --> 01:12:14,370 >> Rob: Iyon ang sinabi, sa ang anuman sa mga problemang ito, 1819 01:12:14,370 --> 01:12:17,940 halos hangga't kang makakuha ng nagtatrabaho solusyon, makakakuha ka ng ganap na kredito. 1820 01:12:17,940 --> 01:12:20,820 Kaya huwag mag-alala kung ang iyong disenyo ay ganap na horrendous. 1821 01:12:20,820 --> 01:12:22,120 1822 01:12:22,120 --> 01:12:25,230 Maaaring gumawa kami magbaligtag sa pagbabasa ng iyong code. 1823 01:12:25,230 --> 01:12:28,160 Subalit hangga't ito gumagana, makakakuha ka ng mga puntos. 1824 01:12:28,160 --> 01:12:29,302 >> DAVIN: Oo. 1825 01:12:29,302 --> 01:12:31,260 OK, kaya pagkatapos ay pupuntahan ko Ipinahahayag ng ilang mga variable. 1826 01:12:31,260 --> 01:12:33,900 Lamang Ito ay pagpunta sa tumawag sa int halaga. 1827 01:12:33,900 --> 01:12:37,031 At pupuntahan ko upang i-set na ito katumbas ng zero, tulad ng iyon. 1828 01:12:37,031 --> 01:12:38,780 At na lamang ang pagpunta upang maging isang placeholder. 1829 01:12:38,780 --> 01:12:40,960 Kaya na magiging kung ano ang Pupunta ako sa bumalik. 1830 01:12:40,960 --> 01:12:43,730 Kaya ako ng pagpunta sa huli bumalik halagang out sa programang ito. 1831 01:12:43,730 --> 01:12:44,980 Kaya ba akong magkaroon ng dalawang variable. 1832 01:12:44,980 --> 01:12:45,563 Mayroon akong haba. 1833 01:12:45,563 --> 01:12:46,500 Mayroon akong halaga. 1834 01:12:46,500 --> 01:12:48,290 At sa tumalon sa aming mga string na ngayon hayaan. 1835 01:12:48,290 --> 01:12:49,510 >> Kaya ay nagbibigay-daan mayroon ang aming para sa loop. 1836 01:12:49,510 --> 01:13:06,520 Kaya apat int ko ay katumbas ng 0 w, habang Ako ay mas mababa kaysa sa haba ko plus plus. 1837 01:13:06,520 --> 01:13:07,150 At now-- 1838 01:13:07,150 --> 01:13:10,920 1839 01:13:10,920 --> 01:13:11,420 Rob: Nice. 1840 01:13:11,420 --> 01:13:14,030 DAVIN: OK, at ngayon dito pagdating ng karne ng aming mga code. 1841 01:13:14,030 --> 01:13:17,380 Kaya maaari mong aktwal na gawin ito talaga sa isang linya. 1842 01:13:17,380 --> 01:13:20,702 Kaya ang sinuman magkaroon ng ideya ng kung ano ang iyong pupuntahan namin ang susunod na gagawin? 1843 01:13:20,702 --> 01:13:23,680 1844 01:13:23,680 --> 01:13:25,380 OK, sa gayon ang OK. 1845 01:13:25,380 --> 01:13:35,860 Kaya aming ginagawa upang sabihin halagang equals-- hayaan mo akong mabilis na ito over-- kabuuan 1846 01:13:35,860 --> 01:13:50,010 ay katumbas ng beses halagang 10 plus-- kami pagpunta sa tumagal s ko minus isa 1847 01:13:50,010 --> 01:13:54,787 quote 0 isang quote na, tulad ng iyon. 1848 01:13:54,787 --> 01:13:55,620 Rob: Bihirang-intuitive. 1849 01:13:55,620 --> 01:13:56,980 1850 01:13:56,980 --> 01:13:57,880 >> DAVIN: durog ito. 1851 01:13:57,880 --> 01:14:01,438 OK, kaya someone-- ko nakuha ko, nakuha ko ito. 1852 01:14:01,438 --> 01:14:03,680 1853 01:14:03,680 --> 01:14:06,960 OK, kaya ito ay malinaw na pagpunta up. 1854 01:14:06,960 --> 01:14:08,320 1855 01:14:08,320 --> 01:14:09,450 Ano ang ibig sabihin nito? 1856 01:14:09,450 --> 01:14:12,120 Kaya ang sinuman malaman kung ano ang ibig sabihin nito? 1857 01:14:12,120 --> 01:14:13,826 Maaari lahat makita ito? 1858 01:14:13,826 --> 01:14:16,088 Hindi, walang sinuman ang makakakita nito, OK. 1859 01:14:16,088 --> 01:14:17,390 1860 01:14:17,390 --> 01:14:18,340 Pupunta ako to-- 1861 01:14:18,340 --> 01:14:20,506 >> Rob: Pupunta ako sa isulat ang formula lang dito mismo. 1862 01:14:20,506 --> 01:14:23,140 DAVIN: OK, pupuntahan Rob upang gawin ito sa computer, na kung saan ay masaya. 1863 01:14:23,140 --> 01:14:26,889 1864 01:14:26,889 --> 01:14:27,514 Rob: Oh aking Diyos. 1865 01:14:27,514 --> 01:14:34,340 1866 01:14:34,340 --> 01:14:35,010 O kaya hindi ako'y. 1867 01:14:35,010 --> 01:14:36,288 1868 01:14:36,288 --> 01:14:36,954 DAVIN: Stand sa pamamagitan ng. 1869 01:14:36,954 --> 01:14:42,300 1870 01:14:42,300 --> 01:14:44,260 MAG-AARAL: Mayroon akong tanong. 1871 01:14:44,260 --> 01:14:45,348 DAVIN: Oo, sigurado. 1872 01:14:45,348 --> 01:14:46,223 MAG-AARAL: [hindi marinig]? 1873 01:14:46,223 --> 01:14:52,529 1874 01:14:52,529 --> 01:14:54,570 DAVIN: OK, kaya talagang, tulad ng, lamang sa pangkalahatan, 1875 01:14:54,570 --> 01:14:56,710 kung ikaw ay upang ilagay ang, tulad ng, sa pagpapahayag int 1876 01:14:56,710 --> 01:14:59,770 Ay katumbas ng haba ko 0 kuwit ay katumbas ng sterln, that-- 1877 01:14:59,770 --> 01:15:01,200 >> MAG-AARAL: [hindi marinig]. 1878 01:15:01,200 --> 01:15:03,585 >> DAVIN: Iyon ay pinong, dahil that-- 1879 01:15:03,585 --> 01:15:05,543 MAG-AARAL: Bakit gagawin mo kahit na kailangan upang gamitin ang haba? 1880 01:15:05,543 --> 01:15:08,620 Bakit dati hindi namin lamang [hindi marinig] sterln s, tulad ng buong oras [hindi marinig]? 1881 01:15:08,620 --> 01:15:09,460 >> DAVIN: sabihin mo dito mismo? 1882 01:15:09,460 --> 01:15:10,001 >> MAG-AARAL: Oo. 1883 01:15:10,001 --> 01:15:12,630 DAVIN: Dahil ang bawat oras na ito para sa loop ay tumatakbo, 1884 01:15:12,630 --> 01:15:14,295 ito ay pagpunta upang suriin ang kundisyong ito. 1885 01:15:14,295 --> 01:15:14,920 MAG-AARAL: I-right. 1886 01:15:14,920 --> 01:15:16,836 DAVIN: At kung mayroon kang sterln doon, pagkatapos ito ay 1887 01:15:16,836 --> 01:15:19,510 pagpunta sa may upang aktwal na tumawag sa na function ng bawat solong oras. 1888 01:15:19,510 --> 01:15:21,090 Kaya sa halip na lamang paghahambing nito sa isang int, 1889 01:15:21,090 --> 01:15:23,548 na iyong pupuntahan ay pagtawag ng function at pagkatapos ay paghahambing nito 1890 01:15:23,548 --> 01:15:24,510 sa halaga ng kita. 1891 01:15:24,510 --> 01:15:25,860 Oo, kaya lang, oo. 1892 01:15:25,860 --> 01:15:28,860 1893 01:15:28,860 --> 01:15:30,770 >> Nice, OK, kaya ngayon lahat ng tao ang maaaring makakita nito. 1894 01:15:30,770 --> 01:15:33,400 Ano does-- ito ay tulad, ito ay ito. 1895 01:15:33,400 --> 01:15:34,580 Ito ang jam, dito mismo. 1896 01:15:34,580 --> 01:15:37,030 1897 01:15:37,030 --> 01:15:37,930 Ano ang ibig sabihin na? 1898 01:15:37,930 --> 01:15:39,250 1899 01:15:39,250 --> 01:15:39,970 Ano ang aking ginagawa? 1900 01:15:39,970 --> 01:15:41,890 1901 01:15:41,890 --> 01:15:42,880 Oo, ang isang ideya? 1902 01:15:42,880 --> 01:15:43,482 Oo? 1903 01:15:43,482 --> 01:15:45,692 >> MAG-AARAL: Well, kaya kapag naglalagay ka ng isang array, 1904 01:15:45,692 --> 01:15:47,525 na iyong pupuntahan ay pagpunta mula kaliwa papuntang kanan, 1905 01:15:47,525 --> 01:15:51,786 kaya ka ng pagpunta sa ma-pagpunta sa decimal mula pababa sa [hindi marinig]. 1906 01:15:51,786 --> 01:15:52,410 DAVIN: Eksaktong. 1907 01:15:52,410 --> 01:15:55,063 MAG-AARAL: Kaya ang bawat isa kailangan mong i-multiply 1908 01:15:55,063 --> 01:15:59,490 kung ano ang nakita mo na rin ang halaga ng int sa pamamagitan ng ang oras makakuha mong ilipat na higit sa isa. 1909 01:15:59,490 --> 01:16:01,590 >> DAVIN: Perpekto, perpekto, kaya halimbawa, sabihin 1910 01:16:01,590 --> 01:16:05,376 sabihin Nagbigay ako ng you-- ako pagpunta sa magsulat sa paglipas dito. 1911 01:16:05,376 --> 01:16:06,480 Hindi, hindi ako. 1912 01:16:06,480 --> 01:16:08,640 Pupunta ako sa magsulat sa paglipas dito. 1913 01:16:08,640 --> 01:16:12,080 Sabihin nating Nagbigay ako sa iyo 76, tama? 1914 01:16:12,080 --> 01:16:13,380 Sabihin nating bigyan ko sa inyo 76. 1915 01:16:13,380 --> 01:16:15,360 Iyon ay isang string na nagsisimula sa, OK? 1916 01:16:15,360 --> 01:16:16,840 >> Kaya haba ay kung ano? 1917 01:16:16,840 --> 01:16:18,060 1918 01:16:18,060 --> 01:16:19,060 2, i-right? 1919 01:16:19,060 --> 01:16:20,290 Sum ay 0. 1920 01:16:20,290 --> 01:16:21,600 Pagkatapos ay lumipat kami sa aming para sa loop. 1921 01:16:21,600 --> 01:16:24,187 OK, ang unang pag-ulit ng ito, ano ang ito pagpunta sa maging? 1922 01:16:24,187 --> 01:16:25,270 Ito ay magiging halagang ay 0. 1923 01:16:25,270 --> 01:16:27,180 Kaya sabihin sa ilang beses 10 0. 1924 01:16:27,180 --> 01:16:28,500 Iyon ay walang kahulugan. 1925 01:16:28,500 --> 01:16:29,880 Pagkatapos kung ano ang ginagawa nito? 1926 01:16:29,880 --> 01:16:30,845 1927 01:16:30,845 --> 01:16:31,720 MAG-AARAL: [hindi marinig]. 1928 01:16:31,720 --> 01:16:33,110 1929 01:16:33,110 --> 01:16:37,430 >> DAVIN: Ito ay pagpunta sa i-na na character sa isang integer, tama? 1930 01:16:37,430 --> 01:16:42,160 Ito ay uri ng tulad ng sa iyong problema set-- ito light-- 1931 01:16:42,160 --> 01:16:44,170 ito ay uri ng tulad ng sa itakda ang problema sa Visioneer. 1932 01:16:44,170 --> 01:16:45,980 Ka pagharap sa mga halaga na ASCII. 1933 01:16:45,980 --> 01:16:48,520 Kaya kung bibigyan ko kayo, tulad ng, ang isang pitong, ngunit ito ay isang karakter, 1934 01:16:48,520 --> 01:16:50,965 at gusto mong malaman, OK, ano na digit na ay na? 1935 01:16:50,965 --> 01:16:53,540 1936 01:16:53,540 --> 01:16:54,910 Oo, maaari mo, oo. 1937 01:16:54,910 --> 01:16:55,900 Kaya kung ano na digit na ay na? 1938 01:16:55,900 --> 01:16:59,550 Maaari mong ibawas 0 mula dito, ngunit kailangang ibawas 0, ang character. 1939 01:16:59,550 --> 01:17:01,425 >> At kung saan ang ilang mga tao makakuha ng tripped up, ang mga ito ay 1940 01:17:01,425 --> 01:17:04,260 tulad ng, OK, mahusay, kailangan kong malaman ang mga halaga ASCII para sa pagsusulit? 1941 01:17:04,260 --> 01:17:06,218 Hindi, gawin mo talagang hindi kailangan mong malaman ang mga ASCII 1942 01:17:06,218 --> 01:17:09,520 mga halaga ng, tulad ng, lowercase isang, uppercase A, zero. 1943 01:17:09,520 --> 01:17:12,060 >> Rob: Walang dahilan upang kailanman ilagay ito sa impostor sheet. 1944 01:17:12,060 --> 01:17:14,226 >> DAVIN: Talagang hindi -aaksaya ng iyong space na may ito. 1945 01:17:14,226 --> 01:17:18,090 Maaari mong literally-- sa halip lamang ng pagsabi 48, tulad ng karapatan up 1946 01:17:18,090 --> 01:17:24,630 doon, iyon ay katumbas ng sinasabi ng isa, isa kudlit, 1947 01:17:24,630 --> 01:17:27,680 tulad ng iyon, ang eksaktong pareho. 1948 01:17:27,680 --> 01:17:34,106 >> Rob: maaari ka nang mag-isip ng ito bilang if-- Diyos, kailangan ko ang aking, 1949 01:17:34,106 --> 01:17:37,490 oops-- maaari mong halos isipin na ito parang mayroon kaming isang bagay tulad na hash 1950 01:17:37,490 --> 01:17:39,755 tukuyin ang 0 bilang 48. 1951 01:17:39,755 --> 01:17:41,320 1952 01:17:41,320 --> 01:17:42,030 Iyon ay hindi gagana. 1953 01:17:42,030 --> 01:17:45,502 Ngunit sa tingin ng mga ito bilang nag-iisang quote 0 single quote, at para sa lahat ng mga character. 1954 01:17:45,502 --> 01:17:47,960 Isipin ito sa bilang isang pare-pareho na Kinakatawan ng halaga na ASCII. 1955 01:17:47,960 --> 01:17:49,080 >> DAVIN: Oo. 1956 01:17:49,080 --> 01:17:52,820 OK, kaya sa unang pagkakataon sa pamamagitan ng, kaya may 76-- kaya sa unang pagkakataon sa pamamagitan ng, 1957 01:17:52,820 --> 01:17:57,260 ito ay lamang ng character 7 minus ng character na 0, 1958 01:17:57,260 --> 01:18:00,420 at ang mga ito ay pitong integers-- na rin, ang mga 1959 01:18:00,420 --> 01:18:04,030 ay pitong puwang ang layo mula sa bawat iba pang mga sa tsart ASCII o anumang. 1960 01:18:04,030 --> 01:18:06,770 Kaya na ang nangyayari upang bumalik sa isang int ng 7. 1961 01:18:06,770 --> 01:18:08,720 Kaya ngayon, halagang katumbas 7. 1962 01:18:08,720 --> 01:18:10,830 >> OK, na rin, ang tumalon ipaalam sa ito para sa loop muli. 1963 01:18:10,830 --> 01:18:13,010 OK, ngayon ito halagang beses 10. 1964 01:18:13,010 --> 01:18:15,800 Kaya ikaw ay epektibong paggalaw sa 7 sa kaliwa. 1965 01:18:15,800 --> 01:18:17,542 Ay na magkaroon ng kahulugan? 1966 01:18:17,542 --> 01:18:19,250 Ikaw ay epektibo gumagalaw ito sa kaliwa. 1967 01:18:19,250 --> 01:18:21,790 >> At pagkatapos mong add-- ito ay magiging 6 minus 0. 1968 01:18:21,790 --> 01:18:22,650 Iyon ay 6. 1969 01:18:22,650 --> 01:18:24,752 Kaya ito ay magiging 70 plus 6. 1970 01:18:24,752 --> 01:18:25,996 76, na iyong numero. 1971 01:18:25,996 --> 01:18:28,370 Kaya hindi alintana ng kung ano ang numero Nagbigay ako sa iyo, ito ay mabagal lamang 1972 01:18:28,370 --> 01:18:31,610 pagpunta sa shift ang mas malaking halaga sa kaliwa, 1 factor ng 10 1973 01:18:31,610 --> 01:18:35,525 bawat oras sa para sa loop, at pagkatapos ay idagdag sa bilang kinakailangan. 1974 01:18:35,525 --> 01:18:37,350 1975 01:18:37,350 --> 01:18:37,865 >> Sa likod? 1976 01:18:37,865 --> 01:18:40,240 MAG-AARAL: Hindi namin kailangang gawin anumang-check in sa program? 1977 01:18:40,240 --> 01:18:41,580 1978 01:18:41,580 --> 01:18:44,302 >> Rob: Kaya ngayon bilang ng pagtingin pupunta para sa programa, 1979 01:18:44,302 --> 01:18:46,510 Gusto naming sabihin sa iyo ang kaakit-akit magkano ang kailangan mong suriin. 1980 01:18:46,510 --> 01:18:48,670 Kung hindi namin masasabi sa iyo anumang bagay, at pagkatapos ay sa pangkalahatan 1981 01:18:48,670 --> 01:18:50,320 ipagpalagay na mayroon ka upang suriin ang karamihan sa mga bagay. 1982 01:18:50,320 --> 01:18:54,772 Tulad ng maaaring iyo, upang maging ligtas lamang, mo dapat marahil tingnan hey, ay walang bisa s? 1983 01:18:54,772 --> 01:18:56,230 Pagkatapos ay wala akong mga ideya kung ano ang upang bumalik. 1984 01:18:56,230 --> 01:18:58,814 Ngunit nais naming sabihin sa iyo ang ganitong uri ng bagay. 1985 01:18:58,814 --> 01:18:59,480 0, hindi ko alam. 1986 01:18:59,480 --> 01:19:02,786 >> DAVIN: At bakit gusto mong upang suriin kung s ay katumbas ng null? 1987 01:19:02,786 --> 01:19:03,660 MAG-AARAL: [hindi marinig]. 1988 01:19:03,660 --> 01:19:04,880 DAVIN: Dahil char bituin. 1989 01:19:04,880 --> 01:19:05,510 Ito ay isang pointer. 1990 01:19:05,510 --> 01:19:09,240 Kaya isang perpektong katanggap-tanggap pagpapahayag, maaari akong sabihin, OK, 1991 01:19:09,240 --> 01:19:11,917 s ay katumbas null, sapagkat ito maaaring maging isang pointer sa null. 1992 01:19:11,917 --> 01:19:14,250 Kaya sa tuwing mayroon kang mga payo sa iyong path sa ganito, 1993 01:19:14,250 --> 01:19:15,420 dapat mong malamang suriin. 1994 01:19:15,420 --> 01:19:18,461 Dahil kung hindi mo suriin na, at pagkatapos ay pumunta sa iyo pagkatapos ay sa iyong para sa loop, 1995 01:19:18,461 --> 01:19:20,100 at doing-- ka sumibad pababa. 1996 01:19:20,100 --> 01:19:21,980 1997 01:19:21,980 --> 01:19:22,920 Sumibad pababa. 1998 01:19:22,920 --> 01:19:23,860 >> Rob: Paumanhin, hindi iyon ito. 1999 01:19:23,860 --> 01:19:25,860 >> DAVIN: At kaya, tulad ng, kung ito ay walang bisa, at pagkatapos ay sa iyo 2000 01:19:25,860 --> 01:19:28,267 gawin ito, kung ano ang error pupunta ka ba upang makakuha? 2001 01:19:28,267 --> 01:19:29,850 MAG-AARAL: ka ng pagpunta makakuha ng isang hanay kasalanan. 2002 01:19:29,850 --> 01:19:31,250 DAVIN: ka ng pagpunta sa itakda pagkukulang, kanan, dahil ikaw ay 2003 01:19:31,250 --> 01:19:32,616 sinusubukang i-index sa null. 2004 01:19:32,616 --> 01:19:35,240 Kaya ka pagpunta sa subukan na i-index sa memory na hindi mo pag-aari. 2005 01:19:35,240 --> 01:19:39,550 Kaya ito, kung ito ay walang bisa, at gagawin mo ito, kakailanganin mong cycle. 2006 01:19:39,550 --> 01:19:43,656 >> Rob: tingin din ako sa pagsusulit kung saan hiniling namin ang tanong na ito, sabihin namin sa iyo 2007 01:19:43,656 --> 01:19:45,655 na maaari mo lamang ipinapalagay ito ay isang positibong numero. 2008 01:19:45,655 --> 01:19:48,270 Dahil atoi ay inaasahan ding upang pangasiwaan ang mga negatibong numero, 2009 01:19:48,270 --> 01:19:49,686 kaya magkakaroon ka ng sa mga espesyal na kaso. 2010 01:19:49,686 --> 01:19:53,080 Uy, ay ang unang character ng gitling, kung saan, OK, 2011 01:19:53,080 --> 01:19:54,839 ngayon ito ay isang negatibong integer. 2012 01:19:54,839 --> 01:19:56,380 Sasabihin namin sa iyo ang mga uri ng mga bagay. 2013 01:19:56,380 --> 01:19:58,005 Sasabihin namin sa iyo kung ano ang kailangan mo upang mahawakan. 2014 01:19:58,005 --> 01:19:59,310 DAVIN: Oo. 2015 01:19:59,310 --> 01:20:02,530 Kaya ako bang maaari have-- ilang mga tao kung nagsimula ka ng pagtingin sa lumang pagsusulit, 2016 01:20:02,530 --> 01:20:03,900 Nakita mo na ang sterln. 2017 01:20:03,900 --> 01:20:05,120 Iyon ay isang sikat na isa. 2018 01:20:05,120 --> 01:20:09,790 At sa tingin ko sa sterln, nagkaroon ka na gawin ang check para sa null, ang return 2019 01:20:09,790 --> 01:20:10,950 0 o isang bagay tulad na. 2020 01:20:10,950 --> 01:20:11,940 Tulad ng, nagkaroon ka upang tingnan ang mga null. 2021 01:20:11,940 --> 01:20:14,230 At kung hindi mo ginawa, na ay tumuturo off sa pagsusulit. 2022 01:20:14,230 --> 01:20:16,750 2023 01:20:16,750 --> 01:20:19,500 Kaya pa rin, ang lahat huwag mag-OK sa atoi? 2024 01:20:19,500 --> 01:20:21,112 2025 01:20:21,112 --> 01:20:22,820 Kahit sinong gusto ba sa pumunta muli sa paglipas ng mga bahagi? 2026 01:20:22,820 --> 01:20:23,815 2027 01:20:23,815 --> 01:20:25,565 Rob: Oh oo, sa palagay ko sabihin mo rin kami sa iyo 2028 01:20:25,565 --> 01:20:28,565 maaaring ipagpalagay na ang lahat ng bagay na is-- talaga sila naglalagay ka ng isang numero, 2029 01:20:28,565 --> 01:20:32,821 na hindi mo kailangang mag-alala tungkol sa, tulad ng, mga titik na nasa loob ng string, kaya. 2030 01:20:32,821 --> 01:20:33,320 DAVIN: Oo. 2031 01:20:33,320 --> 01:20:33,922 Oo? 2032 01:20:33,922 --> 01:20:35,713 MAG-AARAL: Maaari kang pumunta sa ibabaw ng isa pang beses kapag 2033 01:20:35,713 --> 01:20:37,860 gumamit ka ng double quote at solong quote? 2034 01:20:37,860 --> 01:20:41,290 >> DAVIN: Oo naman, kaya double quote, napaka lamang, ay double quotes ay mga string. 2035 01:20:41,290 --> 01:20:43,370 Kaya kung double quote sa iyo anumang bagay, na isang string. 2036 01:20:43,370 --> 01:20:48,270 Kaya, tulad ng, kung mayroon akong ito 0 paglipas dito, at ginawa ko ito, na isang string. 2037 01:20:48,270 --> 01:20:50,060 Iyon ay hindi na isang character. 2038 01:20:50,060 --> 01:20:54,816 Kaya hindi ko mahanap ang halagang ito sa aking ASCII chart, dahil ito ay isang string, oo. 2039 01:20:54,816 --> 01:20:57,770 2040 01:20:57,770 --> 01:20:59,480 >> OK, ang anumang iba pang mga tanong? 2041 01:20:59,480 --> 01:21:00,405 Oo? 2042 01:21:00,405 --> 01:21:02,345 >> MAG-AARAL: Kaya ikaw ay nasagot na ito, 2043 01:21:02,345 --> 01:21:05,255 ngunit tulad ng, kapag kami ay talagang pagsulat na ito sa pagsusulit, 2044 01:21:05,255 --> 01:21:08,165 nais mo sa amin upang isulat sa slashes zeroes [hindi marinig]? 2045 01:21:08,165 --> 01:21:11,041 2046 01:21:11,041 --> 01:21:11,540 DAVIN: Hindi. 2047 01:21:11,540 --> 01:21:13,800 Ang tanong ay dapat mong maglagay ng slash sa pamamagitan ng mga zero 2048 01:21:13,800 --> 01:21:14,890 upang ipahiwatig kung ang mga ito ay zero? 2049 01:21:14,890 --> 01:21:15,890 Hindi, ipapakita namin malaman ito. 2050 01:21:15,890 --> 01:21:16,940 2051 01:21:16,940 --> 01:21:19,530 Oo, salamat, ang mga ito ay mabuti. 2052 01:21:19,530 --> 01:21:20,860 OK, kahit ano? 2053 01:21:20,860 --> 01:21:25,060 Gusto ba ng sinuman to-- kaya ako sa tingin tumakbo kami ng kaunti sa paglipas ng panahon. 2054 01:21:25,060 --> 01:21:27,305 Huwag nais mong makita ang isa pa, o? 2055 01:21:27,305 --> 01:21:28,096 MAG-AARAL: RandomInt. 2056 01:21:28,096 --> 01:21:29,230 2057 01:21:29,230 --> 01:21:30,750 >> DAVIN: RandomInt, OK, eksakto. 2058 01:21:30,750 --> 01:21:32,975 Kaya sabihin gawin RandomInt. 2059 01:21:32,975 --> 01:21:34,395 2060 01:21:34,395 --> 01:21:35,270 Makikita kong gawin ito sa dito. 2061 01:21:35,270 --> 01:21:36,770 2062 01:21:36,770 --> 01:21:39,210 Kaya RandomInt ay talagang mas simple. 2063 01:21:39,210 --> 01:21:43,578 Sa tingin ko atoi ay marahil ang hardest isa na tinanong natin sa nakaraang taon. 2064 01:21:43,578 --> 01:21:44,453 MAG-AARAL: [hindi marinig]. 2065 01:21:44,453 --> 01:21:46,660 2066 01:21:46,660 --> 01:21:47,161 >> DAVIN: Ano? 2067 01:21:47,161 --> 01:21:49,493 Rob: akong nakikitang kung ito ay uri ng matitingnan mula sa mahigit dito. 2068 01:21:49,493 --> 01:21:50,040 DAVIN: ito ba? 2069 01:21:50,040 --> 01:21:52,500 Rob: Hindi sa tingin ko ito going-- tingin ko ito ay pagpunta sa tumakas sa kanan. 2070 01:21:52,500 --> 01:21:53,791 DAVIN: OK, kaya ako makakakita gawin ang isang ito. 2071 01:21:53,791 --> 01:21:56,250 At pagkatapos ay ilagay mo lamang ito sa screen. 2072 01:21:56,250 --> 01:21:57,150 >> Rob: Lahat ng karapatan. 2073 01:21:57,150 --> 01:21:58,190 >> DAVIN: Gusto mong maging ang aking mga manunulat? 2074 01:21:58,190 --> 01:21:58,600 >> Rob: Oo. 2075 01:21:58,600 --> 01:21:59,100 >> DAVIN: Nice. 2076 01:21:59,100 --> 01:22:01,210 2077 01:22:01,210 --> 01:22:02,727 OK, maaari ko bang burahin ito? 2078 01:22:02,727 --> 01:22:04,188 >> MAG-AARAL: Oo. 2079 01:22:04,188 --> 01:22:05,162 >> DAVIN: Iyon ang dahilan kung kaya mahirap. 2080 01:22:05,162 --> 01:22:10,032 2081 01:22:10,032 --> 01:22:12,062 (Pagkanta) kang ginagawa kung ano ang iyong ginagawa. 2082 01:22:12,062 --> 01:22:14,454 At ginagawa kung ano ang hindi mo gusto. 2083 01:22:14,454 --> 01:22:14,954 Lahat ng karapatan. 2084 01:22:14,954 --> 01:22:19,790 2085 01:22:19,790 --> 01:22:22,930 >> OK, kung natatandaan ko nang tama, sa ang pagsusulit sa RandomInt ay tulad, 2086 01:22:22,930 --> 01:22:26,190 OK, pupunta ako upang bigyan ka ng dalawang numero, tulad ng isang at b. 2087 01:22:26,190 --> 01:22:30,380 At gusto ko sa iyo na bigyan ako ng RandomInt sa pagitan ng mga numero. 2088 01:22:30,380 --> 01:22:33,440 Kaya RandomInt ay pagpunta magsagawa ng dalawang numbers-- 2089 01:22:33,440 --> 01:22:41,690 kaya RandomInt-- at ito ay pagpunta upang bumalik sa isang int. 2090 01:22:41,690 --> 01:22:42,930 >> Kaya kung ano ang halaga ng pagbabalik? 2091 01:22:42,930 --> 01:22:44,151 Ko lang sinabi sa iyo. 2092 01:22:44,151 --> 01:22:44,650 Int, i-right? 2093 01:22:44,650 --> 01:22:46,400 2094 01:22:46,400 --> 01:22:49,260 Tulad nito, at pagkatapos ito ay pagpunta sa gawin ang dalawang ints. 2095 01:22:49,260 --> 01:22:56,301 Kaya ito ay pagpunta sa tumagal int isang at int b, tulad ng iyon. 2096 01:22:56,301 --> 01:22:58,217 Kaya kung ano RandomInt ay pagpunta sa gawin ito nangyayari 2097 01:22:58,217 --> 01:23:02,440 upang bumalik sa ilang mga random na halaga sa pagitan ng dalawang mga halaga. 2098 01:23:02,440 --> 01:23:05,140 Kaya ito ay magiging mas malaki kaysa sa isang, mas mababa sa b. 2099 01:23:05,140 --> 01:23:09,020 Kaya sa tingin ko maaari mong malamang na ipinapalagay na ng ang mas maliit sa dalawang mga halaga. 2100 01:23:09,020 --> 01:23:12,210 Kaya kung kami ay pagharap sa randomness, kung ano ang function na 2101 01:23:12,210 --> 01:23:14,825 na namin nakita na Binibigyan kami ng random na mga bagay? 2102 01:23:14,825 --> 01:23:15,450 MAG-AARAL: Drand. 2103 01:23:15,450 --> 01:23:16,506 DAVIN: Drand, eksakto. 2104 01:23:16,506 --> 01:23:18,630 Kaya na iyong pupuntahan marahil nais na gamitin ang iyong drand. 2105 01:23:18,630 --> 01:23:19,940 2106 01:23:19,940 --> 01:23:29,160 Kaya maaari mong sabihin int random, at kami ay lamang ito sinasabi ay katumbas ng 0 ngayon. 2107 01:23:29,160 --> 01:23:30,170 2108 01:23:30,170 --> 01:23:38,690 At sila kami ng pagpunta sa sabihin, OK, random equals drand 48. 2109 01:23:38,690 --> 01:23:39,747 2110 01:23:39,747 --> 01:23:40,830 At kung ano ay bumalik ito? 2111 01:23:40,830 --> 01:23:43,742 Ano ang function na ito magbibigay sa iyo? 2112 01:23:43,742 --> 01:23:45,610 >> MAG-AARAL: Sa pagitan ng 0 at 1. 2113 01:23:45,610 --> 01:23:47,870 >> DAVIN: Oo, sa pagitan ng 0 at 1. 2114 01:23:47,870 --> 01:23:48,890 Kaya ito ay pagpunta sa be-- 2115 01:23:48,890 --> 01:23:51,070 >> Rob: At ito is-- tingin ko Gusto naming sabihin sa iyo na ito. 2116 01:23:51,070 --> 01:23:52,670 Tulad ng, maaari mong gamitin drand 48. 2117 01:23:52,670 --> 01:23:54,350 Maaari mong i-verify ito sa mga nakaraang pagsusulit. 2118 01:23:54,350 --> 01:23:56,720 Ngunit marahil naming sabihin sa iyo Maaaring gamitin drand 48, na 2119 01:23:56,720 --> 01:23:58,790 ay nagbabalik ng float sa pagitan ng 0 at 1. 2120 01:23:58,790 --> 01:24:00,830 >> DAVIN: Oo, oo, ako medyo sigurado sa pagsusulit 2121 01:24:00,830 --> 01:24:03,860 sinasabi nito marahil nais na gumamit ng drand, oo. 2122 01:24:03,860 --> 01:24:07,041 Kaya ito ang nangyayari upang bumalik ang ilang mga halaga sa pagitan ng 0 at 1. 2123 01:24:07,041 --> 01:24:08,790 At pagkatapos ay kung ano ang pagpunta sa nais na gawin? 2124 01:24:08,790 --> 01:24:16,360 Well, na nais mong i-multiply by-- maghintay, sa palagay ko ito na tulad nito, paumanhin. 2125 01:24:16,360 --> 01:24:18,018 Kukunin ko na lang gawin ito. 2126 01:24:18,018 --> 01:24:19,410 Hindi ko alam. 2127 01:24:19,410 --> 01:24:22,240 >> Kaya b minus a. 2128 01:24:22,240 --> 01:24:23,310 2129 01:24:23,310 --> 01:24:24,490 Kaya bakit b minus isang? 2130 01:24:24,490 --> 01:24:26,110 2131 01:24:26,110 --> 01:24:30,490 Kaya sabihin nating drand nagbibigay sa iyo ng likod isang int-- OK, lang Magtatagal ako na ang bahala, 2132 01:24:30,490 --> 01:24:33,380 kaya pati na rin ng. 2133 01:24:33,380 --> 01:24:36,130 Kaya kung ano does-- y ay b minus a. 2134 01:24:36,130 --> 01:24:40,670 Kaya sabihin nating na drand nagbibigay sa iyo ng likod ang maximum na halaga ito ng dati posibleng 2135 01:24:40,670 --> 01:24:41,410 magbibigay sa iyo. 2136 01:24:41,410 --> 01:24:42,409 Ano ang na magiging? 2137 01:24:42,409 --> 01:24:43,010 MAG-AARAL: 1. 2138 01:24:43,010 --> 01:24:44,430 >> DAVIN: 1, tama? 2139 01:24:44,430 --> 01:24:47,880 Kaya kung ito ay 1, at ikaw ay -multiply ito sa pamamagitan ng b minus ng, 2140 01:24:47,880 --> 01:24:50,110 na rin, ito lamang ang pagkakaiba sa pagitan ng minus A. 2141 01:24:50,110 --> 01:24:52,870 At kung pagkatapos ay idagdag mo na bumalik sa isang, iyon ay kung ano? 2142 01:24:52,870 --> 01:24:54,290 2143 01:24:54,290 --> 01:24:55,180 Talaga Ito ay b. 2144 01:24:55,180 --> 01:24:56,435 2145 01:24:56,435 --> 01:24:57,310 Ay na magkaroon ng kahulugan? 2146 01:24:57,310 --> 01:24:57,851 >> MAG-AARAL: Oo. 2147 01:24:57,851 --> 01:24:59,480 2148 01:24:59,480 --> 01:25:02,170 >> DAVIN: Kaya kung ito ang maximum na Pinahahalagahan maaari itong posibleng maging, 2149 01:25:02,170 --> 01:25:03,175 ito ay magiging 1. 2150 01:25:03,175 --> 01:25:04,122 2151 01:25:04,122 --> 01:25:06,330 At pagkatapos ay ito lamang ang pagkakaiba sa pagitan ng dalawang. 2152 01:25:06,330 --> 01:25:11,410 Idagdag sa, kaya ito ay pagpunta sa bumalik random. 2153 01:25:11,410 --> 01:25:15,000 2154 01:25:15,000 --> 01:25:18,620 At sa sulok kasong iyon drand nagbibigay sa iyo ng bumalik 1, 2155 01:25:18,620 --> 01:25:20,970 random na lang ay epektibo ay b. 2156 01:25:20,970 --> 01:25:22,700 Ngunit iyon ang maximum na maaari itong maging. 2157 01:25:22,700 --> 01:25:27,420 Kaya kung ito ay magiging mas mababa sa iyon, kaya sabihin nating na tulad nito 0.9, 2158 01:25:27,420 --> 01:25:31,080 kaya pagkatapos ay 0.9 beses b minus ng ay magiging mas mababa 2159 01:25:31,080 --> 01:25:33,230 kaysa sa pagkakaiba sa pagitan b minus a. 2160 01:25:33,230 --> 01:25:35,830 >> At pagkatapos ay kung kang magdagdag ng na sa sa isang, pagkatapos ay halaga na hindi 2161 01:25:35,830 --> 01:25:38,986 magiging mas malaki kaysa sa isang, dahil nagdadagdag ka ng isang bagay sa ito, 2162 01:25:38,986 --> 01:25:40,360 ngunit ito ay magiging mas mababa kaysa b. 2163 01:25:40,360 --> 01:25:41,430 2164 01:25:41,430 --> 01:25:44,420 Kaya ka pagpunta upang makakuha ng isang random numero, dahil ka sa pagtawag drand. 2165 01:25:44,420 --> 01:25:48,000 At na ribete, na random na numero ay magiging isang lugar sa pagitan ng isang 2166 01:25:48,000 --> 01:25:49,342 at b. 2167 01:25:49,342 --> 01:25:50,780 Ay na magkaroon ng kahulugan? 2168 01:25:50,780 --> 01:25:52,990 >> Rob: lamang sa ilagay ito sa kongkreto numero, kaya 2169 01:25:52,990 --> 01:25:55,450 sabihin nating gusto naming pumili ng isang random na numero sa pagitan ng 7 at 10. 2170 01:25:55,450 --> 01:25:56,960 Kaya b minus isang ay ang aming hanay. 2171 01:25:56,960 --> 01:26:00,150 Kaya mayroong isang hanay ng tatlong numero gusto naming pumili mula sa. 2172 01:26:00,150 --> 01:26:03,290 At pagkatapos ay i-multiply na sa pagitan ng 0 at 1 1, 2173 01:26:03,290 --> 01:26:07,430 kung na pagkatapos ay nagbibigay sa amin ng some-- sabihin nating na nagbibigay sa amin ng 1.5. 2174 01:26:07,430 --> 01:26:10,670 >> Pagkatapos ay 1.5, nais naming pumunta 7-10. 2175 01:26:10,670 --> 01:26:14,470 Kaya 1.5 plus 7 pinagsasama-amin pabalik sa aming mga 7-10 na saklaw. 2176 01:26:14,470 --> 01:26:17,580 At pagkatapos ay namin ang pag-iimbak nito sa loob ng isang integer, kaya pinutol pababa sa 8. 2177 01:26:17,580 --> 01:26:18,790 At pagkatapos ay bumalik lang namin iyon. 2178 01:26:18,790 --> 01:26:21,310 Kaya b minus isang ay ang aming hanay. 2179 01:26:21,310 --> 01:26:25,770 isang shift up ito sa numero ng na gusto naming sa loob ng saklaw na iyon. 2180 01:26:25,770 --> 01:26:30,540 Kaya sa pagitan ng 7 at 10, at pagkatapos ay namin makakabalik kung ano ang hahantong kami sa. 2181 01:26:30,540 --> 01:26:32,684 >> DAVIN: Oo, mabait. 2182 01:26:32,684 --> 01:26:34,470 >> Rob: Salamat sa iyo. 2183 01:26:34,470 --> 01:26:35,628 >> DAVIN: Oo, kung ano ang up? 2184 01:26:35,628 --> 01:26:39,746 >> MAG-AARAL: Gawin tumakbo namin ito sa anumang uri ng Error ASCII kapag we're-- kung drand ay 2185 01:26:39,746 --> 01:26:40,996 pagbabalik ng isang float [hindi marinig]. 2186 01:26:40,996 --> 01:26:42,470 2187 01:26:42,470 --> 01:26:45,360 >> Rob: Kaya tulad ng sinabi Rob, dahil random ay hindi isang int, 2188 01:26:45,360 --> 01:26:47,080 kaya drand ay magiging isang float. 2189 01:26:47,080 --> 01:26:48,470 Kaya at pagkatapos ay i-multiply ito out. 2190 01:26:48,470 --> 01:26:50,507 At maaari kang makakuha ng ilang uri ng mga numero ng float. 2191 01:26:50,507 --> 01:26:51,840 At pagkatapos nito pupuntahan pungusan. 2192 01:26:51,840 --> 01:26:52,339 >> MAG-AARAL: OK. 2193 01:26:52,339 --> 01:26:53,019 DAVIN: Oo. 2194 01:26:53,019 --> 01:26:56,060 Rob: At kung ang compiler ay upang bigyan ng babala sa iyo, tulad ng, pagkawala ng katumpakan, 2195 01:26:56,060 --> 01:26:58,986 itinapon lamang sa isang int sa doon, at pagkatapos ito ay mabuti. 2196 01:26:58,986 --> 01:27:00,398 2197 01:27:00,398 --> 01:27:00,898 DAVIN: Oo? 2198 01:27:00,898 --> 01:27:02,332 2199 01:27:02,332 --> 01:27:04,722 >> MAG-AARAL: Gusto ito ay may parehong posibilidad ng pagkuha, 2200 01:27:04,722 --> 01:27:06,156 tulad ng, b o isang [hindi marinig]? 2201 01:27:06,156 --> 01:27:08,080 2202 01:27:08,080 --> 01:27:10,980 >> Rob: Kaya is-- talaga ako wondering-- ay dapat RandomInt 2203 01:27:10,980 --> 01:27:14,362 upang maging isang numero mula sa isang mas mababa kaysa b? 2204 01:27:14,362 --> 01:27:16,820 Tulad ng, kung ito ay sa pagitan ng 7 at 10, ano ang mga posibilidad? 2205 01:27:16,820 --> 01:27:18,454 7, 8, at 9, o 7, 8, 9, 10? 2206 01:27:18,454 --> 01:27:19,120 DAVIN: ko makalimutan. 2207 01:27:19,120 --> 01:27:19,880 Sa problema set-- 2208 01:27:19,880 --> 01:27:20,570 >> Rob: tingin ko ito ay 7, 8, 9. 2209 01:27:20,570 --> 01:27:22,785 >> DAVIN: Ito partikular na sabi ng isang tao kasama at isa ng eksklusibong. 2210 01:27:22,785 --> 01:27:23,110 >> Rob: Oo. 2211 01:27:23,110 --> 01:27:23,670 >> DAVIN: Ngunit don't-- ko ako not-- 2212 01:27:23,670 --> 01:27:25,878 >> Rob: Kaya sa tingin ko ang mga ito ay hindi kasama, kung saan, 2213 01:27:25,878 --> 01:27:28,152 mayroong isang katumbas posibilidad ng 7, 8, at 9. 2214 01:27:28,152 --> 01:27:29,360 Walang posibilidad ng 10. 2215 01:27:29,360 --> 01:27:31,770 2216 01:27:31,770 --> 01:27:32,270 DAVIN: Oo? 2217 01:27:32,270 --> 01:27:33,395 MAG-AARAL: Mayroon akong tanong. 2218 01:27:33,395 --> 01:27:38,090 Gusto naming tukuyin ang isang function Ibinabalik ng hindi isang halaga, ngunit isang array. 2219 01:27:38,090 --> 01:27:41,020 Pagkatapos ay ano ang magiging bumalik pagkatapos ng syntax? 2220 01:27:41,020 --> 01:27:44,604 >> DAVIN: OK, kaya pagkatapos mo would-- pagkatapos ng pagbabalik? 2221 01:27:44,604 --> 01:27:47,020 Kaya sabihin nating ay ipinahayag isang array sa isang lugar hanggang doon. 2222 01:27:47,020 --> 01:27:49,708 Pagkatapos ay gusto mong bumalik lamang ang pangalan ng array. 2223 01:27:49,708 --> 01:27:50,676 >> MAG-AARAL: OK, salamat sa iyo. 2224 01:27:50,676 --> 01:27:51,718 Pagkatapos ay bumalik lamang sa a-- 2225 01:27:51,718 --> 01:27:52,759 DAVIN: Oh maghintay, kaya paumanhin. 2226 01:27:52,759 --> 01:27:54,620 Ang tanong ay kung paano huwag kang bumalik sa isang array. 2227 01:27:54,620 --> 01:27:56,170 >> Rob: Kahit na ito ay hindi magagawa ay ipinahayag na isang array 2228 01:27:56,170 --> 01:27:57,260 sa stack o anumang bagay tulad na. 2229 01:27:57,260 --> 01:27:59,510 Ito ay kailangang maging isang bagay malloced, dahil malloc 2230 01:27:59,510 --> 01:28:01,610 ay kung paano makakakuha ka sa paligid awtomatikong paglalaan ng memory. 2231 01:28:01,610 --> 01:28:02,109 >> DAVIN: Oo. 2232 01:28:02,109 --> 01:28:03,433 2233 01:28:03,433 --> 01:28:04,933 Rob: Paano mo makakuha ng sa paligid ng lokal na saklaw. 2234 01:28:04,933 --> 01:28:09,670 2235 01:28:09,670 --> 01:28:11,550 >> DAVIN: Ngunit paano mo ito gagawin bumalik lang name-- nito 2236 01:28:11,550 --> 01:28:17,890 >> MAG-AARAL: [hindi marinig] ito ay hindi isa halaga, halimbawa, dalawang mga numero, kaya 2237 01:28:17,890 --> 01:28:18,390 [Hindi marinig]. 2238 01:28:18,390 --> 01:28:19,590 >> DAVIN: Hindi mo maaaring ibalik ang maramihang mga numero. 2239 01:28:19,590 --> 01:28:20,850 Maaari mong hindi, tulad ng, return-- 2240 01:28:20,850 --> 01:28:23,630 >> MAG-AARAL: usapan ko ang tungkol sa mga bumabalik isang array o isang bagay tulad na. 2241 01:28:23,630 --> 01:28:26,050 >> DAVIN: Oo, kaya ang tanong ay Maaari ko bang isauli ang maramihang mga halaga. 2242 01:28:26,050 --> 01:28:27,460 Hindi mo maaaring ibalik ang maramihang mga halaga. 2243 01:28:27,460 --> 01:28:30,270 Maaari mong hindi, tulad ng, bumalik ng isang pagkatapos ay bumalik b o isang bagay tulad na. 2244 01:28:30,270 --> 01:28:32,710 Dahil pagkatapos mong bumalik, mo bumalik sa labas ng function. 2245 01:28:32,710 --> 01:28:35,790 At pagkatapos ay ang function ay tapos na, at tulad ng sinabi Rob, ay nasa stack. 2246 01:28:35,790 --> 01:28:38,260 >> Kaya ang lahat ng memory na lang ang nakakakuha ibalik sa computer. 2247 01:28:38,260 --> 01:28:40,025 Ang lahat ay makakakuha ng nakalimutan, talaga. 2248 01:28:40,025 --> 01:28:41,480 2249 01:28:41,480 --> 01:28:44,430 Kaya kung nais mong bumalik ng maramihang mga halaga, kailangan mong bumalik ng isang array, 2250 01:28:44,430 --> 01:28:45,971 At ang paraan gagawin mo na mallocing. 2251 01:28:45,971 --> 01:28:48,780 At pagkatapos ay gusto mong bumalik x tulad na. 2252 01:28:48,780 --> 01:28:50,280 Talaga, bumalik ka lang ang pangalan. 2253 01:28:50,280 --> 01:28:51,620 At kapag bumalik ka isang bagay na tulad nito, ikaw ay 2254 01:28:51,620 --> 01:28:53,200 hindi tunay na bumabalik na ang halaga. 2255 01:28:53,200 --> 01:28:55,430 >> Kaya sabihin nating naka-imbak ang mga halaga sa isang array. 2256 01:28:55,430 --> 01:28:57,910 Hindi ka talaga bumabalik na mga halaga iyon. 2257 01:28:57,910 --> 01:29:01,515 Tulad ng, kung ibinalik ko ang isang int, ako talagang bumabalik na mga kopya ng mga halaga. 2258 01:29:01,515 --> 01:29:02,017 2259 01:29:02,017 --> 01:29:03,850 Ngunit kung i ay upang bumalik isang bagay na tulad nito, 2260 01:29:03,850 --> 01:29:06,450 Ako pagbabalik ng isang reference sa mga halagang iyon. 2261 01:29:06,450 --> 01:29:09,090 Kaya ako bumabalik, talaga, isang memory address sa halaga. 2262 01:29:09,090 --> 01:29:10,079 Ay na magkaroon ng kahulugan? 2263 01:29:10,079 --> 01:29:10,620 MAG-AARAL: Oo. 2264 01:29:10,620 --> 01:29:11,120 DAVIN: Nice. 2265 01:29:11,120 --> 01:29:12,760 2266 01:29:12,760 --> 01:29:13,410 Oo? 2267 01:29:13,410 --> 01:29:15,430 >> MAG-AARAL: Kapag handa ka gamit drand sa paglipas dito, 2268 01:29:15,430 --> 01:29:17,660 huwag kang magkaroon ng upang ilagay ang srand bago iyon? 2269 01:29:17,660 --> 01:29:20,320 >> DAVIN: Hindi, hindi, hindi ko sa tingin. 2270 01:29:20,320 --> 01:29:23,040 >> Rob: Oo, kaya ang mayroon kayo upang sabihin ng anumang bagay tungkol sa srand? 2271 01:29:23,040 --> 01:29:26,900 Ang default ng hindi ka na kailanman sinasabi srand sa lahat ay gagawin lamang srand ng null. 2272 01:29:26,900 --> 01:29:29,350 Kaya drand sa sarili nitong kalooban trabaho. 2273 01:29:29,350 --> 01:29:33,759 At ito ay awtomatikong Buto sa sa kasalukuyang panahon, ay kung ano ang ginagamit nito. 2274 01:29:33,759 --> 01:29:35,175 2275 01:29:35,175 --> 01:29:35,675 DAVIN: Oo? 2276 01:29:35,675 --> 01:29:40,950 MAG-AARAL: Gusto mo ba [hindi marinig] kasama ang mga numero? 2277 01:29:40,950 --> 01:29:42,570 DAVIN: Oo, magagawa mo na. 2278 01:29:42,570 --> 01:29:46,770 MAG-AARAL: Kaya maaari mo sabihin, tulad ng, 4 na beses 2. 2279 01:29:46,770 --> 01:29:50,280 Ang bagay ay, hindi ka maaaring ipagpalagay pagkatapos ay sa isang int ay apat na bytes. 2280 01:29:50,280 --> 01:29:51,020 Ang only-- 2281 01:29:51,020 --> 01:29:53,830 >> DAVIN: Ibig kong sabihin, para sa mga pagsusulit magagawa mo na. 2282 01:29:53,830 --> 01:29:54,830 [LAUGHS] 2283 01:29:54,830 --> 01:29:55,780 >> Rob: mm, hindi. 2284 01:29:55,780 --> 01:29:56,780 DAVIN: Oo, yes magagawa mo na. 2285 01:29:56,780 --> 01:30:00,197 Kung hilingin nila sa iyo kung gaano kalaki ang isang int ay, Hindi mo maaaring, tulad ng, apat o walong. 2286 01:30:00,197 --> 01:30:02,030 Rob: Oh, kaya kung ang tanong ay partikular, 2287 01:30:02,030 --> 01:30:04,857 tulad ng, kung ito ay isang problema sa coding, dapat mong sabihin ang laki ng int. 2288 01:30:04,857 --> 01:30:06,690 Kung ito ay isang talahanayan, o sinasabi nito kung gaano karaming mga byte, 2289 01:30:06,690 --> 01:30:08,808 hindi mo dapat punuin ang laki ng ints. 2290 01:30:08,808 --> 01:30:11,278 >> ESTUDYANTE: [LAUGHS] 2291 01:30:11,278 --> 01:30:18,210 2292 01:30:18,210 --> 01:30:20,580 >> DAVIN: I-right, kaya kung bakit ay laki ng int mahalaga dito? 2293 01:30:20,580 --> 01:30:23,085 Kaya tulad ng, kung namin pagpunta sa 32-bit processor o isang bagay tulad na, 2294 01:30:23,085 --> 01:30:24,300 pagkatapos ito ay magiging apat na bytes. 2295 01:30:24,300 --> 01:30:26,342 Ngunit sa ilan sa mga mas bagong mga bagay-bagay, maaaring ito ay kung ano? 2296 01:30:26,342 --> 01:30:27,383 Ito ay maaaring maging walong, tama? 2297 01:30:27,383 --> 01:30:30,550 Kaya this-- kung kamakailan mo lamang na hard code apat, pagkatapos ay sa ilang mga machine, ito ay gumagana. 2298 01:30:30,550 --> 01:30:32,180 Ang ilang mga machine, hindi ito gagana. 2299 01:30:32,180 --> 01:30:35,270 Ngunit kung sa pagsusulit kami ay tulad ng kung gaano kalaki ang isang int? 2300 01:30:35,270 --> 01:30:35,770 Ilagay ang apat. 2301 01:30:35,770 --> 01:30:38,710 2302 01:30:38,710 --> 01:30:39,210 Rob: I-right. 2303 01:30:39,210 --> 01:30:39,790 DAVIN: Oo? 2304 01:30:39,790 --> 01:30:43,192 MAG-AARAL: Kaya dahil kami ay deklarasyon [Hindi marinig] sa loob ng isang function, 2305 01:30:43,192 --> 01:30:45,622 dapat ilagay namin 3 loob na pag-andar? 2306 01:30:45,622 --> 01:30:46,907 O maaari itong naming gamitin sa labas? 2307 01:30:46,907 --> 01:30:48,740 DAVIN: Maaari mo itong gamitin labas na function. 2308 01:30:48,740 --> 01:30:49,890 Kaya humihiling siya ng libre. 2309 01:30:49,890 --> 01:30:51,700 >> MAG-AARAL: Mawalan ng track ng kung saan [hindi marinig]. 2310 01:30:51,700 --> 01:30:54,720 >> Rob: Oh, ang libreng ay hindi happen-- na bahagi ng magic ng malloc 2311 01:30:54,720 --> 01:30:57,220 ay na ikaw ay hindi Pinaghihigpitan sa mga lokal na saklaw. 2312 01:30:57,220 --> 01:31:00,700 Mayroon kang ganap na kontrol sa kung gaano katagal live ang iyong mga variable. 2313 01:31:00,700 --> 01:31:05,380 Kaya tinatawag naming malloc dito, maaari itong maging isang ganap na nakahiwalay function. 2314 01:31:05,380 --> 01:31:08,670 Maaaring maging 10 na oras sa ibang pagkakataon na sa wakas kami tatawag sa libre. 2315 01:31:08,670 --> 01:31:11,764 >> DAVIN: Kaya halimbawa, tulad ng, sa ilang linggo mula ngayon kapag sa wakas ka 2316 01:31:11,764 --> 01:31:13,680 gawin ang iyong speller diksyunaryo psets, na iyong pupuntahan 2317 01:31:13,680 --> 01:31:16,410 na magkaroon ng ilang mga pag-andar na lumilikha tonelada ng mga node. 2318 01:31:16,410 --> 01:31:18,630 Kaya ka mallocing tonelada ng mga node sa function na ito. 2319 01:31:18,630 --> 01:31:20,670 At pagkatapos ay sa ibang pagkakataon sa isang hiwalay na function, ikaw ay 2320 01:31:20,670 --> 01:31:22,440 pagpunta sa nais upang magbakante lahat ng mga node. 2321 01:31:22,440 --> 01:31:25,740 Kaya maaari mong literal na pumasa lamang sa magbakante ng pointer, kaya isang memory address 2322 01:31:25,740 --> 01:31:26,684 sa kung ano ang iyong malloced. 2323 01:31:26,684 --> 01:31:27,600 At iyon ay magiging multa. 2324 01:31:27,600 --> 01:31:29,725 Hindi mo na kailangang magbakante, tulad ng, sa parehong pag-andar. 2325 01:31:29,725 --> 01:31:30,449 Oo? 2326 01:31:30,449 --> 01:31:36,197 >> MAG-AARAL: Kaya ang isang malloc variable [hindi marinig] sa labas? 2327 01:31:36,197 --> 01:31:37,384 Iyan ba kung ano ang iyong sinasabi sa iyo? 2328 01:31:37,384 --> 01:31:38,300 DAVIN: Maghintay, sabihin na? 2329 01:31:38,300 --> 01:31:38,800 Sorry. 2330 01:31:38,800 --> 01:31:42,300 >> MAG-AARAL: Kung ang isang malloc variable ay maaaring maging libre saanman sa code, 2331 01:31:42,300 --> 01:31:44,800 pagkatapos ay maaari silang ma-access saanman sa code? 2332 01:31:44,800 --> 01:31:45,800 Maaari ninyo bang itago ang mga ito lokal? 2333 01:31:45,800 --> 01:31:47,880 >> DAVIN: Oh, tinanong niya, tulad ng, ang variable, like-- 2334 01:31:47,880 --> 01:31:51,300 2335 01:31:51,300 --> 01:31:55,510 >> Rob: Kaya kailangan mo pa ring may ilang mga uri ng sanggunian 2336 01:31:55,510 --> 01:31:57,220 upang i-block ang malloc ng mga memory. 2337 01:31:57,220 --> 01:31:58,540 Kaya dito, kami ay bumabalik x. 2338 01:31:58,540 --> 01:31:59,040 MAG-AARAL: Oh. 2339 01:31:59,040 --> 01:32:01,920 Rob: Kung hindi namin ginawa bumalik x dito, at ito ay walang bisa lamang, 2340 01:32:01,920 --> 01:32:04,550 pagkatapos ay namin ay walang access sa ang pointer na malloced, 2341 01:32:04,550 --> 01:32:05,920 at ito ay leaked memory. 2342 01:32:05,920 --> 01:32:06,690 >> MAG-AARAL: OK. 2343 01:32:06,690 --> 01:32:10,010 >> DAVIN: Kaya tulad ng, sabihin nating sa iyo Mayroon na ito, tulad ng, dito mismo. 2344 01:32:10,010 --> 01:32:10,510 Rob: Hindi. 2345 01:32:10,510 --> 01:32:13,430 DAVIN: Sa aking pangunahing pag-andar, hindi ko makakaya tawagan lamang ang x at maging, tulad ng, OK, 2346 01:32:13,430 --> 01:32:14,645 sa function na ito, ginawa ko ito. 2347 01:32:14,645 --> 01:32:14,960 >> Rob: I-right. 2348 01:32:14,960 --> 01:32:17,790 >> DAVIN: Kaya Pupunta ako sa tumawag sa x sa, tulad ng, ang mga pangunahing o isang bagay tulad na. 2349 01:32:17,790 --> 01:32:18,540 Hindi mo maaaring gawin iyon. 2350 01:32:18,540 --> 01:32:19,600 Na iyong pupuntahan upang magbalik ng bagay. 2351 01:32:19,600 --> 01:32:21,000 Ngunit ano ang iyong pagpunta sa bumalik? 2352 01:32:21,000 --> 01:32:22,130 Na iyong pupuntahan upang magbalik ng memory address. 2353 01:32:22,130 --> 01:32:25,130 At dahil bumalik ka ng memory address, na maaaring ma-access sa ibang lugar. 2354 01:32:25,130 --> 01:32:27,262 2355 01:32:27,262 --> 01:32:28,255 Anumang higit pang mga tanong? 2356 01:32:28,255 --> 01:32:28,755 Oo? 2357 01:32:28,755 --> 01:32:31,213 >> MAG-AARAL: ba ang pag-andar sa itaas pagiging tseke para sa [hindi marinig]? 2358 01:32:31,213 --> 01:32:33,270 2359 01:32:33,270 --> 01:32:35,005 >> DAVIN: Bakit hindi ko kailangang gawin iyon? 2360 01:32:35,005 --> 01:32:35,880 MAG-AARAL: [hindi marinig]. 2361 01:32:35,880 --> 01:32:37,755 DAVIN: Dahil ikaw ay Hindi mallocing kahit ano. 2362 01:32:37,755 --> 01:32:39,640 Kaya not-- oo, ito ay Hindi gusto ng isang string s. 2363 01:32:39,640 --> 01:32:41,160 Ito ay isang pointer sa isang lugar. 2364 01:32:41,160 --> 01:32:42,951 Ang mga ito ay lamang ang mga halaga. 2365 01:32:42,951 --> 01:32:43,450 MAG-AARAL: OK. 2366 01:32:43,450 --> 01:32:43,949 DAVIN: Oo. 2367 01:32:43,949 --> 01:32:47,600 2368 01:32:47,600 --> 01:32:48,470 Ano pa? 2369 01:32:48,470 --> 01:32:48,970 Rob: Oo? 2370 01:32:48,970 --> 01:32:50,386 MAG-AARAL: Ngunit kapag [hindi marinig]? 2371 01:32:50,386 --> 01:32:55,050 2372 01:32:55,050 --> 01:32:58,690 >> Rob: Kaya upang magbakante ang memorya, gusto naming sabihin dito. 2373 01:32:58,690 --> 01:33:01,350 Kaya x ay ang aming pointer sa ang bloke ng memorya. 2374 01:33:01,350 --> 01:33:02,845 Magbakante namin na pointer. 2375 01:33:02,845 --> 01:33:04,470 At gusto hindi namin kinakailangang gawin ito dito. 2376 01:33:04,470 --> 01:33:05,390 Maaari naming gawin ito kahit saan. 2377 01:33:05,390 --> 01:33:10,400 Pero tumawag ka lamang libreng on isang bagay na malloc babalik. 2378 01:33:10,400 --> 01:33:12,940 Kaya malloc, narito, ibinalik kung ano ang naka-imbak sa x. 2379 01:33:12,940 --> 01:33:14,802 Kaya maaari naming tawagan ang libreng on x. 2380 01:33:14,802 --> 01:33:18,730 2381 01:33:18,730 --> 01:33:20,556 Anumang huling tanong? 2382 01:33:20,556 --> 01:33:21,701 >> DAVIN: Anumang huling tanong? 2383 01:33:21,701 --> 01:33:22,200 Oo? 2384 01:33:22,200 --> 01:33:25,152 >> MAG-AARAL: Paumanhin, maaari mong muling ipaliwanag kung bakit nais mong magbakante doon? 2385 01:33:25,152 --> 01:33:26,630 Bakit [hindi marinig]? 2386 01:33:26,630 --> 01:33:27,774 >> DAVIN: Para dito? 2387 01:33:27,774 --> 01:33:29,109 >> MAG-AARAL: Oo, tulad ng karapatan pagkatapos. 2388 01:33:29,109 --> 01:33:30,900 DAVIN: mo marahil ayaw ng libreng dito. 2389 01:33:30,900 --> 01:33:31,630 Rob: marahil kang gagawin hindi. 2390 01:33:31,630 --> 01:33:33,060 DAVIN: Oo, na ito ay wala. 2391 01:33:33,060 --> 01:33:35,220 Ito ay, tulad ng, lumikha ng memory, gawin ang mga bagay-bagay na ito, 2392 01:33:35,220 --> 01:33:37,390 at pagkatapos ay agad-agad kalimutan ang tungkol dito, oo. 2393 01:33:37,390 --> 01:33:39,850 >> Rob: Ngunit maaari naming gawin, gaya ng, in dito para sa ilang mga kadahilanan. 2394 01:33:39,850 --> 01:33:43,902 Maaari naming sabihin int star y ay katumbas ng pagbabalik ng array. 2395 01:33:43,902 --> 01:33:47,900 Gawin ang ilang mga bagay-bagay na may y, siguro i-print ang mga nilalaman. 2396 01:33:47,900 --> 01:33:49,350 At pagkatapos ay, sa wakas, tapos na kami. 2397 01:33:49,350 --> 01:33:50,626 Maaari naming magbakante y. 2398 01:33:50,626 --> 01:33:51,501 MAG-AARAL: [hindi marinig]. 2399 01:33:51,501 --> 01:33:57,839 2400 01:33:57,839 --> 01:33:59,005 DAVIN: Dapat ba akong mag-scroll pababa? 2401 01:33:59,005 --> 01:34:00,445 Salamat. 2402 01:34:00,445 --> 01:34:00,945 Rob: Nice. 2403 01:34:00,945 --> 01:34:02,400 2404 01:34:02,400 --> 01:34:03,646 >> DAVIN: OK, na ito. 2405 01:34:03,646 --> 01:34:04,520 Rob: Lahat ng karapatan, mabuti. 2406 01:34:04,520 --> 01:34:05,070 Good luck. 2407 01:34:05,070 --> 01:34:06,800 >> DAVIN: Kung mayroon kang mga katanungan, mag-email sa amin. 2408 01:34:06,800 --> 01:34:08,670 Good luck. 2409 01:34:08,670 --> 01:34:10,283