1 00:00:00,000 --> 00:00:11,320 2 00:00:11,320 --> 00:00:13,260 >> DAVID Malan: Sveiki, un welcome atpakaļ uz CS50. 3 00:00:13,260 --> 00:00:14,860 Tātad, tas ir beigām, no četrām nedēļām. 4 00:00:14,860 --> 00:00:16,680 Tikai viens paziņojums pirmās. 5 00:00:16,680 --> 00:00:19,600 Tā saukto piekto pirmdiena ir nāk klajā šo nāk pirmdiena. 6 00:00:19,600 --> 00:00:22,800 Šī ir iespēja, lai mainītu no SAT / UNSAT uz burtu pakāpē, vai no 7 00:00:22,800 --> 00:00:24,130 vēstule pakāpes SAT / UNSAT. 8 00:00:24,130 --> 00:00:27,130 Kaitinoši, ka process nav nepieciešama paraksts, jo jums ir jāaizpilda 9 00:00:27,130 --> 00:00:28,770 veic vienu no šiem rozā pievienot / piliens formas. 10 00:00:28,770 --> 00:00:31,680 >> Jo tehniski, SAT / UNSAT versiju un burtu pakāpes versija 11 00:00:31,680 --> 00:00:33,320 ir atšķirīgas katalogu numuriem. 12 00:00:33,320 --> 00:00:34,240 Bet nav liels darījumu. 13 00:00:34,240 --> 00:00:36,620 Vienkārši nākt pie manis vai Rob vai Lauren jebkurā brīdī. 14 00:00:36,620 --> 00:00:39,550 Vai e-pastu mums, ja jums nav sava veida ar dokumentiem, jums ir nepieciešams šodien, un mēs 15 00:00:39,550 --> 00:00:43,410 būs pārliecināti, lai palīdzētu jums veikt aprūpi, ka pirms pirmdien. 16 00:00:43,410 --> 00:00:45,780 >> Labi, tāpēc šodien - 17 00:00:45,780 --> 00:00:47,630 patiesībā, tur ir atbalss mazliet. 18 00:00:47,630 --> 00:00:51,070 Mēs varam tonis mani mazliet? 19 00:00:51,070 --> 00:00:51,730 Labi. 20 00:00:51,730 --> 00:00:54,850 Tātad šodien, mēs ieviest tēmu pazīstams kā norādes. 21 00:00:54,850 --> 00:00:57,770 Un es atzīstu, ka šis ir viens no sarežģītākas tēmas, kas mums ir tendence 22 00:00:57,770 --> 00:01:00,960 aptver šajā klasē, vai tiešām jebkāda ievadkurss, kas izmanto C. 23 00:01:00,960 --> 00:01:05,510 >> Bet ņemt manu vārdu par to, jo īpaši ja jūsu prāts jūtas mazliet vairāk smilga 24 00:01:05,510 --> 00:01:07,100 šodien un dažu nedēļu laikā nākt. 25 00:01:07,100 --> 00:01:10,340 Tas nav uzrādīts jūs saņemat kāds ir šis sliktāk tas tikai nozīmē, ka 26 00:01:10,340 --> 00:01:13,360 tas ir īpaši sarežģīta tēma ka man sola, dažas nedēļas 27 00:01:13,360 --> 00:01:17,610 līdz ar to, kas šķiet pārāk uzkrītoši vienkārši retrospektīvi. 28 00:01:17,610 --> 00:01:18,720 >> Es joprojām atceros, līdz pat šai dienai. 29 00:01:18,720 --> 00:01:22,190 Es sēdēju Elliott ēdamzāle, sēžot blakus manam TF Nishat Mehta, 30 00:01:22,190 --> 00:01:24,070 kurš bija par Elliott mājas iedzīvotājs. 31 00:01:24,070 --> 00:01:26,340 Un kādu iemeslu dēļ, tas temats vienkārši klikšķiem. 32 00:01:26,340 --> 00:01:29,430 Kas ir teikt, ka arī es cīnījos ar to kādu laiku, bet es 33 00:01:29,430 --> 00:01:33,610 darīšu visu iespējamo, lai palīdzētu izvairīties no šāda cīņa ar tēmu, kas galu galā 34 00:01:33,610 --> 00:01:34,580 ir diezgan spēcīgs. 35 00:01:34,580 --> 00:01:37,350 >> Patiesībā, viens no jautājumiem, mēs apspriestu pēdējās nedēļās, lai nāk, ir, ka 36 00:01:37,350 --> 00:01:41,130 par drošību, un kā jūs faktiski var izmantot mašīnas veidos 37 00:01:41,130 --> 00:01:42,320 kas netika paredzēti. 38 00:01:42,320 --> 00:01:45,850 Un tie exploitations parasti rezultāts bugs, kļūdas, kas mums 39 00:01:45,850 --> 00:01:49,740 cilvēki dara, ko nesaprot, kādu pamatā esošā īstenošanu 40 00:01:49,740 --> 00:01:52,250 detaļas, caur kuru programmas tiek veiktas. 41 00:01:52,250 --> 00:01:55,410 >> Tagad, lai padarītu to, šķiet, visas lietotājam draudzīgs, es domāju, ka man spēlēt 10 42 00:01:55,410 --> 00:01:59,680 otrais preview par maz claymation skaitlis nosaukts mīkstās, kas bija vērsta uz 43 00:01:59,680 --> 00:02:03,020 dzīve, ko draugs mūsējie Stenfordas, profesors Niks Parlante. 44 00:02:03,020 --> 00:02:06,753 Tātad, ļaujiet man sniegt jums šo teaser no mīkstās šeit. 45 00:02:06,753 --> 00:02:09,520 >> [VIDEO PLAYBACK] 46 00:02:09,520 --> 00:02:10,380 >> -Hei, mīkstās. 47 00:02:10,380 --> 00:02:11,050 Mosties. 48 00:02:11,050 --> 00:02:13,610 Ir pienācis laiks, lai rādītāja fun. 49 00:02:13,610 --> 00:02:14,741 >> -Kas tas ir? 50 00:02:14,741 --> 00:02:16,440 Uzziniet par norādes? 51 00:02:16,440 --> 00:02:17,928 Ak, goodie. 52 00:02:17,928 --> 00:02:18,920 >> [END VIDEO PLAYBACK] 53 00:02:18,920 --> 00:02:20,670 >> DAVID Malan: Tas ir Stanford datorzinātnes. 54 00:02:20,670 --> 00:02:23,194 Tātad vairāk par to, lai nāk. 55 00:02:23,194 --> 00:02:24,930 >> [Aplausi] 56 00:02:24,930 --> 00:02:26,660 >> DAVID Malan: Atvainojiet, Nick. 57 00:02:26,660 --> 00:02:30,680 >> Tāpēc atgādinām, ka pēdējo reizi mēs beidzās tas tiešām aizraujošs cliffhanger 58 00:02:30,680 --> 00:02:32,960 kad šī funkcija vienkārši nestrādāja. 59 00:02:32,960 --> 00:02:34,960 Vismaz intuitīvi, tā uzskatīja tāpat kā tai vajadzētu strādāt. 60 00:02:34,960 --> 00:02:37,600 Vienkārši pārnešana vērtības no diviem veseliem skaitļiem. 61 00:02:37,600 --> 00:02:40,915 Bet atceros, ka tad, kad mēs izdrukāts sākotnējās vērtības pamata, vienā un 62 00:02:40,915 --> 00:02:44,210 divi, tie joprojām ir viens un divi un ne divi un viens. 63 00:02:44,210 --> 00:02:46,070 >> Tātad, ļaujiet man faktiski pāriet pār ierīci. 64 00:02:46,070 --> 00:02:50,180 Un es uzrakstīju uz augšu mazliet skeleta kodeksa iepriekš šeit, kur es apgalvot, ka x 65 00:02:50,180 --> 00:02:52,500 būs 1, y būs 2. 66 00:02:52,500 --> 00:02:54,810 Es pēc tam izdrukāt gan viņu vērtības ar drukas f. 67 00:02:54,810 --> 00:02:57,540 >> Es pēc tam jāpieprasa šeit lejā, ka mēs ejam, lai mijmaiņas tiem. 68 00:02:57,540 --> 00:03:00,800 Es atstāju tukšumu šeit, lai mēs aizpildīt šodien tikai brīdi. 69 00:03:00,800 --> 00:03:03,380 Tad, es esmu gatavojas apgalvot, ka divi mainīgie ir samainīti. 70 00:03:03,380 --> 00:03:04,770 Tad es esmu gatavojas drukāt tos no jauna. 71 00:03:04,770 --> 00:03:07,090 Un tā, cerams, es būtu jāsaredz 1, 2. 72 00:03:07,090 --> 00:03:07,380 2, 1. 73 00:03:07,380 --> 00:03:09,830 Tas ir super vienkārši Mērķis tiesības tagad. 74 00:03:09,830 --> 00:03:12,430 >> Tātad, kā mēs iet par pārnešana divi mainīgie? 75 00:03:12,430 --> 00:03:17,220 Nu, ja es ierosinu šeit, ka šie kausi varētu pārstāvēt atmiņu datorā. 76 00:03:17,220 --> 00:03:19,070 Tas ir maz kodumi, šis Ir vēl dažas kodumi. 77 00:03:19,070 --> 00:03:23,260 Vai mēs esam brīvprātīgie nāk uz augšu, un samaisa mums daži dzērieni, ja pazīstami? 78 00:03:23,260 --> 00:03:23,920 Nāciet uz augšu. 79 00:03:23,920 --> 00:03:24,815 Kāds ir Jūsu vārds? 80 00:03:24,815 --> 00:03:25,260 >> JESS: Jess. 81 00:03:25,260 --> 00:03:25,690 >> DAVID Malan: Jess? 82 00:03:25,690 --> 00:03:26,540 Nāciet uz augšu, Jess. 83 00:03:26,540 --> 00:03:29,180 Ja jums nav prātā, mums ir jāuzsāk Google par jums Stikla lai mēs varētu 84 00:03:29,180 --> 00:03:30,430 iemūžinātu šo. 85 00:03:30,430 --> 00:03:32,800 86 00:03:32,800 --> 00:03:34,670 Labi, stikls. 87 00:03:34,670 --> 00:03:37,250 Ierakstītu video. 88 00:03:37,250 --> 00:03:43,103 Un Labi, mēs esam labi iet ar Jess šeit. 89 00:03:43,103 --> 00:03:43,810 Labi. 90 00:03:43,810 --> 00:03:45,120 Priecājos ar jums iepazīties. 91 00:03:45,120 --> 00:03:47,720 >> Tātad, ko es gribētu, lai jūs darīt šeit - ja jūs varētu, diezgan ātri - 92 00:03:47,720 --> 00:03:51,040 vienkārši izlej mums pusglāzi apelsīnu sulas un puse glāzi piena, 93 00:03:51,040 --> 00:03:55,710 pārstāv efektīvi skaitļus 1 vienā tasē un 2 citā čempionātā. 94 00:03:55,710 --> 00:04:01,380 95 00:04:01,380 --> 00:04:02,630 >> Tas būs labs kadrus. 96 00:04:02,630 --> 00:04:04,910 97 00:04:04,910 --> 00:04:05,860 >> JESS: Atvainojiet. 98 00:04:05,860 --> 00:04:06,330 >> DAVID Malan: Nē, nē. 99 00:04:06,330 --> 00:04:08,703 Tas ir OK. 100 00:04:08,703 --> 00:04:10,120 Nice. 101 00:04:10,120 --> 00:04:12,950 Labi, tāpēc mums ir četri baiti vērts apelsīnu sulas. 102 00:04:12,950 --> 00:04:14,460 Mēs to nosauca vērtību 1. 103 00:04:14,460 --> 00:04:16,579 Tagad vēl četri baiti vērts piena. 104 00:04:16,579 --> 00:04:18,519 Sauksim to vērtība 2. 105 00:04:18,519 --> 00:04:20,440 Tātad, x un y, attiecīgi. 106 00:04:20,440 --> 00:04:23,450 >> Labi, tāpēc tagad, ja uzdevums pie rokas - jums, Jess, pie visiem 107 00:04:23,450 --> 00:04:24,270 no saviem klasesbiedriem - 108 00:04:24,270 --> 00:04:28,510 ir swap vērtības x un y šāda ka mēs vēlamies, apelsīnu sulu 109 00:04:28,510 --> 00:04:32,070 cits kauss un šajā čempionātā piens, kā varētu jums - pirms jūs faktiski darīt 110 00:04:32,070 --> 00:04:34,020 tā - iet par to izdarīt? 111 00:04:34,020 --> 00:04:35,220 >> Labi, gudrs lēmums. 112 00:04:35,220 --> 00:04:36,340 Tātad jums ir nepieciešams mazliet vairāk atmiņas. 113 00:04:36,340 --> 00:04:38,190 Tā ļauj piešķirt pagaidu kauss, ja Jums gribas. 114 00:04:38,190 --> 00:04:40,540 Un tagad doties uz mijmaiņas x un y. 115 00:04:40,540 --> 00:04:52,950 116 00:04:52,950 --> 00:04:53,530 >> Excellent. 117 00:04:53,530 --> 00:04:54,420 Tik ļoti labi darīts. 118 00:04:54,420 --> 00:04:55,670 Thank you so much, Jess. 119 00:04:55,670 --> 00:04:59,520 120 00:04:59,520 --> 00:05:00,020 Lūdzu. 121 00:05:00,020 --> 00:05:01,950 Maz suvenīru. 122 00:05:01,950 --> 00:05:04,350 >> Labi, tā acīmredzot, super vienkārša ideja. 123 00:05:04,350 --> 00:05:07,500 Pilnīgi intuitīvu, ka mums ir nepieciešams mazliet vairāk uzglabāšanas telpa - šajā formā, 124 00:05:07,500 --> 00:05:09,750 kauss - ja mēs tiešām gribam mijmaiņas šos divus mainīgos. 125 00:05:09,750 --> 00:05:11,110 Tātad, pieņemsim darīt tieši to. 126 00:05:11,110 --> 00:05:14,330 Šeit starp, kur es varu pieprasīt es esmu gatavojas darīt kādu pārnešana, es ņemšu 127 00:05:14,330 --> 00:05:15,720 iet uz priekšu un atzīt temp. 128 00:05:15,720 --> 00:05:17,980 Un es noteikti tā ir vienāds ar, teiksim, x. 129 00:05:17,980 --> 00:05:21,110 >> Tad es esmu gatavojas mainīt vērtību x tāpat kā Jess bija šeit ar 130 00:05:21,110 --> 00:05:23,200 pienu un apelsīnu sula līdz būt vienāds ar y. 131 00:05:23,200 --> 00:05:27,460 Un es esmu gatavojas mainīt y ir vienāds līdz ne x, jo tagad mēs varētu būt 132 00:05:27,460 --> 00:05:29,530 iestrēdzis pa apli, bet gan temp. 133 00:05:29,530 --> 00:05:33,170 Kur es laiku - vai ja Jess uz laiku nodot apelsīnu sulu 134 00:05:33,170 --> 00:05:35,460 pirms clobbering ka tasi ar pienu. 135 00:05:35,460 --> 00:05:37,250 >> Tātad, ļaujiet man iet uz priekšu tagad un veikt to. 136 00:05:37,250 --> 00:05:39,210 To sauc noswap.c. 137 00:05:39,210 --> 00:05:41,190 Un tagad ļaujiet man palaist nav swap. 138 00:05:41,190 --> 00:05:43,910 Un tiešām es redzu, ja es paplašināt logs mazliet, ka 139 00:05:43,910 --> 00:05:45,160 x ir 1, y ir 2. 140 00:05:45,160 --> 00:05:47,230 Un tad x ir 2, y ir 1. 141 00:05:47,230 --> 00:05:51,910 >> Bet atcerēties, ka pirmdien mēs darījām lietas nedaudz savādāk, kurā es 142 00:05:51,910 --> 00:05:56,760 vietā īsteno palīgs funkciju, ja jūs, kas faktiski tika anulēts. 143 00:05:56,760 --> 00:05:58,010 Es to sauca swap. 144 00:05:58,010 --> 00:06:01,600 Man bija tā divus parametrus, un es aicināju viņiem, un es aicināju viņus b. 145 00:06:01,600 --> 00:06:04,380 >> Atklāti sakot, es varētu viņiem piezvanīt x un y. 146 00:06:04,380 --> 00:06:06,040 Tur nekas apstāšanās mani no darot to. 147 00:06:06,040 --> 00:06:08,140 Bet es teiktu, tas ir, tad nedaudz neskaidrs. 148 00:06:08,140 --> 00:06:11,910 Tāpēc, ka atgādināt par pirmdiena, ka mēs apgalvoja, ka šie parametri bija 149 00:06:11,910 --> 00:06:13,650 kopijas vērtībām pagājis collas 150 00:06:13,650 --> 00:06:15,640 Tātad tas tikai virtuves ar savu prātā, es domāju, ka, ja jūs izmantojat 151 00:06:15,640 --> 00:06:17,370 tieši tie paši mainīgie. 152 00:06:17,370 --> 00:06:20,150 >> Tāpēc es ņemšu vietā viņiem piezvanīt un b, tikai skaidrības labad. 153 00:06:20,150 --> 00:06:21,840 Bet mēs varētu saukt viņus visvairāk kaut ko mēs gribam. 154 00:06:21,840 --> 00:06:26,280 Un es esmu gatavojas kopēt un ielīmēt faktiski šis kods no tur augšā 155 00:06:26,280 --> 00:06:27,170 uz leju šeit. 156 00:06:27,170 --> 00:06:29,110 Tāpēc, ka es redzēju, ka tas darbojas. 157 00:06:29,110 --> 00:06:30,790 Tātad tas ir diezgan labā formā. 158 00:06:30,790 --> 00:06:37,390 Un es ņemšu mainīt savu x ar, manu x lai, mana y b un manu Y b. 159 00:06:37,390 --> 00:06:39,130 >> Tātad, citiem vārdiem sakot, tieši tādu pašu loģiku. 160 00:06:39,130 --> 00:06:40,850 Tieši tas pats, kas Jess darīja. 161 00:06:40,850 --> 00:06:44,350 Un tad viena lieta, kas man ir jādara augšu Šeit, protams, tagad ir atsaukties uz šo 162 00:06:44,350 --> 00:06:45,990 funkciju, vai arī nosaukt šo funkciju. 163 00:06:45,990 --> 00:06:50,430 Tāpēc es aicinu šo funkciju ar divām ieejas, x un y, un hit Save. 164 00:06:50,430 --> 00:06:52,300 >> Labi, tāpēc būtiski tas pats. 165 00:06:52,300 --> 00:06:55,570 Patiesībā, es esmu, iespējams, veikuši programmu nevajadzīgi sarežģī 166 00:06:55,570 --> 00:07:00,820 rakstot funkciju, kas ir tikai aizņem daži sešas rindas kods bet man 167 00:07:00,820 --> 00:07:02,970 iepriekš ir īstenojušas tas ir tikai trīs. 168 00:07:02,970 --> 00:07:06,230 >> Tātad, ļaujiet man iet uz priekšu tagad pārtaisīt tas, nav nekādas swap. 169 00:07:06,230 --> 00:07:07,920 Labi, es ieskrūvē šeit. 170 00:07:07,920 --> 00:07:11,290 Tas būtu kļūda, ka jūs varētu redzēt arvien biežāk kā savu 171 00:07:11,290 --> 00:07:12,380 programmas iegūtu vairāk sarežģītu. 172 00:07:12,380 --> 00:07:13,470 Bet tur ir viegli noteikt. 173 00:07:13,470 --> 00:07:15,650 Ļaujiet man ritināt atpakaļ uz augšu šeit. 174 00:07:15,650 --> 00:07:18,190 >> Un, kas ir pirmā kļūda, es esmu redzēt? 175 00:07:18,190 --> 00:07:19,520 Netieši deklarācija. 176 00:07:19,520 --> 00:07:21,466 Ko tas parasti nozīmē? 177 00:07:21,466 --> 00:07:22,830 Ak, es aizmirsu prototipu. 178 00:07:22,830 --> 00:07:26,900 Es aizmirsu mācīt kompilatoru, ka mijmaiņas gatavojas pastāvēt, pat ja viņš 179 00:07:26,900 --> 00:07:28,920 neeksistē pašā sākumā Programmas. 180 00:07:28,920 --> 00:07:35,780 Tāpēc es esmu tikai gatavojas teikt par spēkā neesošu, swap, int, int b, semikols. 181 00:07:35,780 --> 00:07:37,280 >> Tāpēc es neesmu gatavojas reimplement to. 182 00:07:37,280 --> 00:07:39,140 Bet tagad tas atbilst to, kas ir uz leju šeit. 183 00:07:39,140 --> 00:07:42,530 Un paziņojums, par semikolu trūkums šeit, kas nav vajadzīgs, ja 184 00:07:42,530 --> 00:07:43,200 īstenošanai. 185 00:07:43,200 --> 00:07:46,010 >> Tātad, ļaujiet man pārtaisīt to, nav nekādas swap. 186 00:07:46,010 --> 00:07:46,910 Daudz labāk forma. 187 00:07:46,910 --> 00:07:48,130 Palaist nav swap. 188 00:07:48,130 --> 00:07:48,740 Un damn it. 189 00:07:48,740 --> 00:07:51,650 Tagad mēs esam atpakaļ, kur mēs bijām pirmdien, ja lieta nav swap. 190 00:07:51,650 --> 00:07:55,410 >> Un, kas ir intuitīvs izskaidrojums , kāpēc tas tā ir? 191 00:07:55,410 --> 00:07:56,380 Yeah? 192 00:07:56,380 --> 00:07:57,630 >> STUDENTU: [nedzirdama]. 193 00:07:57,630 --> 00:08:04,140 194 00:08:04,140 --> 00:08:05,230 >> DAVID Malan: Tieši tā. 195 00:08:05,230 --> 00:08:07,330 Tik un b ir kopijas, x un y. 196 00:08:07,330 --> 00:08:10,680 Un patiesībā, jebkurā laikā jūs esat bijis zvana funkciju, līdz šim, ka 197 00:08:10,680 --> 00:08:12,540 iet mainīgie, piemēram, Ints - 198 00:08:12,540 --> 00:08:14,470 tāpat kā mijmaiņas sagaida šeit - 199 00:08:14,470 --> 00:08:16,270 jums puiši ir iet kopijās. 200 00:08:16,270 --> 00:08:19,150 >> Tagad, tas nozīmē, ka tas aizņem mazliet laika, split otro, lai 201 00:08:19,150 --> 00:08:23,270 Dators kopēt biti no viena mainīgs vērā no citu bitiem. 202 00:08:23,270 --> 00:08:24,610 Bet tas nav tik liels darījumu. 203 00:08:24,610 --> 00:08:25,920 Bet viņi tomēr kopiju. 204 00:08:25,920 --> 00:08:30,020 >> Un tāpēc tagad, saistībā ar swap, Es esmu patiešām veiksmīgi 205 00:08:30,020 --> 00:08:31,180 mainot a un b. 206 00:08:31,180 --> 00:08:33,000 Faktiski, pieņemsim do ātri vesels saprāts pārbaude. 207 00:08:33,000 --> 00:08:36,830 Drukāt f ir% i, jaunā līnija. 208 00:08:36,830 --> 00:08:38,770 Un pieņemsim spraudni. 209 00:08:38,770 --> 00:08:41,830 Tagad pieņemsim darīt to pašu ar b. 210 00:08:41,830 --> 00:08:43,640 Un pieņemsim darīt to pašu šeit. 211 00:08:43,640 --> 00:08:47,260 >> Un tagad, ļaujiet man kopēt tās pašas līnijas atkal apakšā funkciju 212 00:08:47,260 --> 00:08:51,250 Pēc maniem trim virzieniem interesanti varētu būt izpildīts, un 213 00:08:51,250 --> 00:08:53,270 drukāt un b vēlreiz. 214 00:08:53,270 --> 00:08:56,030 Tātad tagad pieņemsim to, nav nekādas swap. 215 00:08:56,030 --> 00:08:58,430 Ļaujiet man termināļa logu mazliet garāks, lai mēs varētu redzēt 216 00:08:58,430 --> 00:08:59,520 vairāk par to uzreiz. 217 00:08:59,520 --> 00:09:00,860 >> Un palaist bez swap. 218 00:09:00,860 --> 00:09:04,000 x ir 1, y ir 2. ir 1, b ir 2. 219 00:09:04,000 --> 00:09:06,070 Un pēc tam, ir 2, b ir 1. 220 00:09:06,070 --> 00:09:09,390 Tātad tas strādā, tāpat kā Jess darīja šeit iekšpusē swap. 221 00:09:09,390 --> 00:09:13,090 Bet, protams, tas nekādi neietekmē par situāciju galveno mainīgo. 222 00:09:13,090 --> 00:09:15,360 >> Tātad mēs redzējām triks kurā mēs varētu noteikt šo, labi? 223 00:09:15,360 --> 00:09:19,560 Kad esat saskaras ar šo tvēruma jautājums, jūs varētu vienkārši punt un padarīt x 224 00:09:19,560 --> 00:09:22,400 un y kādi mainīgie vietā? 225 00:09:22,400 --> 00:09:23,390 >> Jūs varētu padarīt tās pasaules. 226 00:09:23,390 --> 00:09:27,560 Viņus pašā augšā no faila kā mēs, pat tad, ja spēle 15. 227 00:09:27,560 --> 00:09:28,890 Mēs izmantojam globālo mainīgo. 228 00:09:28,890 --> 00:09:32,420 Bet saistībā ar spēli 15, tas ir saprātīgi, lai būtu pasaules 229 00:09:32,420 --> 00:09:37,170 mainīgajam pārstāv kuģa, jo gada 15.c veselums ir visu 230 00:09:37,170 --> 00:09:38,650 par īstenojot šo spēli. 231 00:09:38,650 --> 00:09:41,470 Tas, ko fails eksistē darīt. 232 00:09:41,470 --> 00:09:44,170 >> Bet šajā gadījumā šeit, es esmu zvana funkciju swap. 233 00:09:44,170 --> 00:09:45,380 Es gribu, lai mijmaiņas diviem mainīgajiem. 234 00:09:45,380 --> 00:09:48,950 Un tas jāsāk justies vienkārši apliets Ja risinājums, lai visas mūsu 235 00:09:48,950 --> 00:09:51,300 problēmas, ja mēs uzskriet jomu jautājumiem, ir padarīt to pasaulē. 236 00:09:51,300 --> 00:09:54,730 Tāpēc, ka ļoti ātri, mūsu programma ir gatavojas kļūt diezgan haoss. 237 00:09:54,730 --> 00:09:57,760 Un mēs to izdarījām, ļoti taupīgi kā rezultātā 15.c. 238 00:09:57,760 --> 00:10:00,470 >> Bet izrādās, tur ir labāks veids vispār. 239 00:10:00,470 --> 00:10:05,600 Ļaujiet man tiešām iet atpakaļ un izdzēst drukāt F s, tikai, lai vienkāršotu šo kodu. 240 00:10:05,600 --> 00:10:09,160 Un ļaujiet man ieteikt, ka tas, protams, ir slikti. 241 00:10:09,160 --> 00:10:15,990 Bet, ja es tā vietā pievienot dažas zvaigznītes un zvaigznes, es varu tā vietā pārvērst šo 242 00:10:15,990 --> 00:10:18,670 funkcija, vienā, kas ir faktiski darbojas. 243 00:10:18,670 --> 00:10:25,020 >> Tātad, ļaujiet man atgriezties šeit un jāatzīst, pasakot zvaigznītes vienmēr ir grūti, 244 00:10:25,020 --> 00:10:26,170 tāpēc es saku zvaigznes. 245 00:10:26,170 --> 00:10:27,660 Es ņemšu tikai fess līdz šo vienu. 246 00:10:27,660 --> 00:10:28,190 Labi. 247 00:10:28,190 --> 00:10:30,190 Un tagad, ko es esmu gatavojas darīt tā vietā? 248 00:10:30,190 --> 00:10:34,130 >> Tātad, pirmkārt, es esmu gatavojas, lai precizētu ka tā vietā, lai iet int stājas 249 00:10:34,130 --> 00:10:37,980 swap funkcija, es esmu vietā gada teiksiet int zvaigzni. 250 00:10:37,980 --> 00:10:39,170 Tagad, ko tas zvaigzne liecina? 251 00:10:39,170 --> 00:10:41,970 Tas ir, ka jēdziens ir rādītājs, ka Mīkstās, claymation raksturs, bija 252 00:10:41,970 --> 00:10:43,465 atsaucoties uz brīdi atpakaļ. 253 00:10:43,465 --> 00:10:47,610 >> Tātad, ja mēs sakām, int zvaigzne, nozīmē, tagad tas ir tas, ka nav būs 254 00:10:47,610 --> 00:10:49,110 pieņemts pēc tā vērtības. 255 00:10:49,110 --> 00:10:50,350 Tas nav gatavojas kopēt collas 256 00:10:50,350 --> 00:10:54,700 Drīzāk adrese ir būs pagājis collas 257 00:10:54,700 --> 00:10:57,840 >> Tātad, atgādināt, ka iekšpusē datora ir visai ķekars atmiņas, pretējā 258 00:10:57,840 --> 00:10:58,760 pazīstams kā RAM. 259 00:10:58,760 --> 00:11:00,520 Un tas RAM ir tikai Visa ķekars baitu. 260 00:11:00,520 --> 00:11:03,320 Tātad, ja jūsu Mac vai jūsu dators ir divi gigabaiti, jums ir 2 261 00:11:03,320 --> 00:11:05,760 miljardu baiti atmiņas. 262 00:11:05,760 --> 00:11:08,440 >> Tagad pieņemsim tikai pieņemt, ka tikai saglabātu lietas jauki un kārtīgi, mēs 263 00:11:08,440 --> 00:11:09,450 piešķirt adresi - 264 00:11:09,450 --> 00:11:10,170 numurs - 265 00:11:10,170 --> 00:11:12,270 uz katru baitu RAM savā datorā. 266 00:11:12,270 --> 00:11:15,410 Pati pirmā baits 2 tiem miljardi ir par nulli. 267 00:11:15,410 --> 00:11:18,572 Nākamā ir baitu numur viens, numurs divi, visu ceļu uz augšu, dot dot 268 00:11:18,572 --> 00:11:20,530 punkts, līdz aptuveni 2 miljardiem. 269 00:11:20,530 --> 00:11:23,640 >> Tātad jūs varat skaits, baitu atmiņas datorā. 270 00:11:23,640 --> 00:11:26,460 Tātad, pieņemsim, ka tas, ko mēs domājam ar adresi. 271 00:11:26,460 --> 00:11:31,360 Tātad, kad es redzu int star, kas notiek, kas nonāca maiņas darījuma tagad ir 272 00:11:31,360 --> 00:11:32,830 adrese. 273 00:11:32,830 --> 00:11:37,150 Nav tā vērtība, bet neatkarīgi no tā pasta adrese ir, tā teikt - 274 00:11:37,150 --> 00:11:38,810 tā atrašanās vietu RAM. 275 00:11:38,810 --> 00:11:41,250 >> Un līdzīgi aprēķina b, es esmu gatavojas teikt to pašu. 276 00:11:41,250 --> 00:11:42,720 Int, zvaigzne, b. 277 00:11:42,720 --> 00:11:46,350 Kā malā, tehniski zvaigzne varētu iet citās vietās. 278 00:11:46,350 --> 00:11:50,140 Bet mēs standartizēt zvaigzne pagaidām pa labi blakus uz datu tipa. 279 00:11:50,140 --> 00:11:54,080 >> Tātad mijmaiņas paraksts tagad nozīmē, dod man adresi int, un zvanu 280 00:11:54,080 --> 00:11:55,400 ka adrese. 281 00:11:55,400 --> 00:11:58,690 Un dod man vēl vienu adresi int un aicinu šo adresi b. 282 00:11:58,690 --> 00:12:01,120 >> Bet tagad mans kods šeit ir jāmaina. 283 00:12:01,120 --> 00:12:03,470 Jo, ja es apliecinu int temp - 284 00:12:03,470 --> 00:12:05,580 , kas ir vēl int tipa - 285 00:12:05,580 --> 00:12:08,700 bet es glabāt tā, kāda veida vērtības? 286 00:12:08,700 --> 00:12:12,870 Lai būtu skaidrs, es esmu liekot ar kodu, kā rakstīts tieši tagad? 287 00:12:12,870 --> 00:12:14,360 >> Es esmu liekot atrašanās vietu. 288 00:12:14,360 --> 00:12:16,500 Bet man nav rūp vieta tagad, labi? 289 00:12:16,500 --> 00:12:21,940 Temp pastāv tikai Jess "trešo kausu pastāvēja, kādam mērķim? 290 00:12:21,940 --> 00:12:23,090 Lai saglabātu vērtību. 291 00:12:23,090 --> 00:12:24,830 Pienu vai apelsīnu sulu. 292 00:12:24,830 --> 00:12:28,520 Nav faktiski uzglabāt adresi vai nu no tām lietām, kas jūtas 293 00:12:28,520 --> 00:12:31,200 nedaudz muļķīgi, jo tas ir reāls pasaules konteksts anyway. 294 00:12:31,200 --> 00:12:34,990 >> Tik tiešām, ko es gribu, lai temp ir ne adrese, bet 295 00:12:34,990 --> 00:12:36,180 saturu. 296 00:12:36,180 --> 00:12:41,930 Tātad, ja ir skaitlis, piemēram, 123, tas ir 123 baitu atmiņas, kas tikko 297 00:12:41,930 --> 00:12:45,090 notiek, ir okupācijas, ka vērtība kas notiek, ir okupācijas. 298 00:12:45,090 --> 00:12:49,040 >> Ja es gribu iet uz šo adresi, Man jāsaka star. 299 00:12:49,040 --> 00:12:52,610 Tāpat, ja man bija, lai mainītu to, kas ir norādītajā adresē, es varu mainīt 300 00:12:52,610 --> 00:12:53,570 tas, lai sāktu. 301 00:12:53,570 --> 00:12:58,185 Ja es gribu, lai saglabātu to, kas ir pie vieta ar to, kas konkrētajā vietā 302 00:12:58,185 --> 00:13:02,180 pie b, b star star. 303 00:13:02,180 --> 00:13:05,340 >> Tātad, īsi sakot, pat ja tas nav gluži grimst vēl - un es negaidu 304 00:13:05,340 --> 00:13:06,560 ka tas būtu tik ātri - 305 00:13:06,560 --> 00:13:11,100 saprast, ka viss, ko es daru, ir apzīmētāju šīs zvaigznes uz maniem mainīgajiem, 306 00:13:11,100 --> 00:13:13,350 sakot nesagrāb vērtības. 307 00:13:13,350 --> 00:13:14,520 Nemaina vērtības. 308 00:13:14,520 --> 00:13:17,600 Bet, dodieties uz šīm adresēm un iegūt vērtību. 309 00:13:17,600 --> 00:13:21,430 Iet uz šo adresi un pārmaiņām vērtību tur. 310 00:13:21,430 --> 00:13:25,500 >> Tātad, tagad ļaujiet man ritiniet atpakaļ uz augšu uz augšu, tikai noteikt šo līniju šeit, lai 311 00:13:25,500 --> 00:13:27,690 mainīt prototipu, lai atbilstu. 312 00:13:27,690 --> 00:13:30,280 Bet man tagad jādara viena cita lieta. 313 00:13:30,280 --> 00:13:35,500 Intuitīvi, ja es esmu mainījies veidus argumentu, ka mijmaiņas gaida, 314 00:13:35,500 --> 00:13:37,245 Kas vēl man ir nepieciešams, lai mainīt manu kodu? 315 00:13:37,245 --> 00:13:39,750 316 00:13:39,750 --> 00:13:40,840 >> Kad es zvanu swap. 317 00:13:40,840 --> 00:13:43,340 Jo tieši tagad, ko esmu Es iet apmainīt vēl? 318 00:13:43,340 --> 00:13:47,450 Vērtība x un y vērtība, vai pienu un apelsīnu sulu. 319 00:13:47,450 --> 00:13:48,510 Bet es nevēlos to darīt. 320 00:13:48,510 --> 00:13:51,060 Es nevis gribu iet kādā? 321 00:13:51,060 --> 00:13:53,050 No x izvietojums un atrašanās vieta y. 322 00:13:53,050 --> 00:13:55,300 Kādas ir viņu pasta adreses, tā runāt. 323 00:13:55,300 --> 00:13:57,600 >> Tātad, lai to izdarītu, tur ir zīme &. 324 00:13:57,600 --> 00:13:59,260 Ampersand veida izklausās adresi. 325 00:13:59,260 --> 00:14:03,240 tā n, zīme &, adrese no x, un y adrese. 326 00:14:03,240 --> 00:14:06,790 Tātad, tas ir apzināts, ka mēs izmantojam ampersands kad zvana funkciju, 327 00:14:06,790 --> 00:14:10,230 un zvaigznes, deklarējot, un, ja Īstenojot funkciju. 328 00:14:10,230 --> 00:14:14,220 >> Un tikai domā par & zīmi, jo adresi uzņēmējam, un kā zvaigzne 329 00:14:14,220 --> 00:14:15,490 iet uz turieni operators - 330 00:14:15,490 --> 00:14:18,640 vai, precīzāk, dereference operators. 331 00:14:18,640 --> 00:14:23,480 Tātad, tas ir visai daudz vārdu tikai teikt, ka tagad, cerams, mijmaiņas notiek 332 00:14:23,480 --> 00:14:24,440 ir pareizs. 333 00:14:24,440 --> 00:14:26,550 >> Ļaujiet man iet uz priekšu un darīt - 334 00:14:26,550 --> 00:14:30,940 pieņemsim faktiski pārdēvēt failu, citādi šī programma joprojām var saukt ne swap. 335 00:14:30,940 --> 00:14:33,240 Es apgalvot, ka mēs to saucam swap.c tagad. 336 00:14:33,240 --> 00:14:35,670 Tāpēc pārliecinieties, swap. 337 00:14:35,670 --> 00:14:37,520 Dot, slīpsvītra, swap. 338 00:14:37,520 --> 00:14:40,210 >> Un tagad patiešām, x ir 1, y ir 2. 339 00:14:40,210 --> 00:14:44,040 Un pēc tam, x ir 2, y ir viens. 340 00:14:44,040 --> 00:14:46,500 Nu pieņemsim redzēt, ja mēs nevaram izdarīt mazliet savādāk, kā to, kas ir 341 00:14:46,500 --> 00:14:47,180 notiek šeit. 342 00:14:47,180 --> 00:14:51,250 Pirmkārt, ļaujiet man tuvinātu mūsu zīmēšanas ekrānu šeit. 343 00:14:51,250 --> 00:14:54,160 Un ļaujiet man piedāvāt uz brīdi - un kad es izdarīt šeit tiks atspoguļota 344 00:14:54,160 --> 00:14:58,660 tur tagad - ļaujiet man ieteikt, ka šeit ir viss ķekars atmiņā vai 345 00:14:58,660 --> 00:15:00,540 RAM, iekšpusē mana datora. 346 00:15:00,540 --> 00:15:04,140 >> Un tas būs kodums numurs, teiksim, 1. 347 00:15:04,140 --> 00:15:05,720 Tas būs baiti numurs 2. 348 00:15:05,720 --> 00:15:08,220 Un es darīšu visu ķekars vairāk, un tad ķekars dot dot punktiem, lai 349 00:15:08,220 --> 00:15:10,880 norāda, ka tur ir 2 miljardi no šīm lietām. 350 00:15:10,880 --> 00:15:13,520 4, 5, un tā tālāk. 351 00:15:13,520 --> 00:15:17,055 >> Tātad tur ir pirmie pieci baiti no mana datora atmiņā. 352 00:15:17,055 --> 00:15:17,560 Visas tiesības? 353 00:15:17,560 --> 00:15:19,060 Ļoti nedaudzi no 2 miljardi. 354 00:15:19,060 --> 00:15:21,120 Bet tagad es esmu gatavojas ierosināt punktu. 355 00:15:21,120 --> 00:15:27,490 Es esmu gatavojas ierosināt x gatavojas saglabāt numuru 1, un y ir iet 356 00:15:27,490 --> 00:15:29,690 saglabāt numuru 2. 357 00:15:29,690 --> 00:15:35,000 Un ļaujiet man iet uz priekšu tagad pārstāv šīs vērtības šādi. 358 00:15:35,000 --> 00:15:41,510 >> Darīsim to šādi. 359 00:15:41,510 --> 00:15:42,870 Dodiet man tikai vienu sekundi. 360 00:15:42,870 --> 00:15:44,150 Vienu sekundi. 361 00:15:44,150 --> 00:15:45,680 Labi. 362 00:15:45,680 --> 00:15:47,560 Es gribu, lai tas maz - 363 00:15:47,560 --> 00:15:50,440 pieņemsim darīt atkal. 364 00:15:50,440 --> 00:15:53,250 Citādi es esmu gatavojas un izmantojot tie paši skaitļi, nejauši, 365 00:15:53,250 --> 00:15:54,230 vairākas reizes. 366 00:15:54,230 --> 00:15:57,320 >> Tik vienkārši tāpēc mums ir dažādi skaitļi runāt par to, sauksim šo baitu 367 00:15:57,320 --> 00:16:03,391 numurs 123, 124, 125, 126, un dot dot dot. 368 00:16:03,391 --> 00:16:08,400 Un ļaujiet man apgalvot tagad, ka es esmu gatavojas ielieciet vērtību 1 šeit, un vērtību 2 369 00:16:08,400 --> 00:16:11,990 Šeit, citādi zināma kā x un y. 370 00:16:11,990 --> 00:16:15,300 Tātad, tas tikai tā notiek, ka tas ir x, tas ir y. 371 00:16:15,300 --> 00:16:18,180 >> Un tikai ar kādu nejaušības, datoru, operētājsistēmu, 372 00:16:18,180 --> 00:16:21,890 gadījās likt x atrašanās vietā numuru 123. 373 00:16:21,890 --> 00:16:25,590 Un y beidzās pie 124 vietā - 374 00:16:25,590 --> 00:16:26,330 damn it. 375 00:16:26,330 --> 00:16:28,700 Man bija jānosaka šo. 376 00:16:28,700 --> 00:16:34,040 Ak, cilvēks, es tiešām gribu darīt? 377 00:16:34,040 --> 00:16:37,340 Jā, es gribu, lai atrisinātu šo un b pareizi par šo šodien. 378 00:16:37,340 --> 00:16:39,950 Atvainojiet, jauns šajā. 379 00:16:39,950 --> 00:16:45,020 >> 127, 131, un es negribēju būt šī sarežģīta, bet kāpēc es nomainu 380 00:16:45,020 --> 00:16:46,340 skaitļi tur? 381 00:16:46,340 --> 00:16:48,360 Tāpēc, ka es vēlos, Ints, lai faktiski ir četri baiti. 382 00:16:48,360 --> 00:16:49,810 Tātad, pieņemsim būt super anālais par to. 383 00:16:49,810 --> 00:16:53,800 Tā ka, ja 1 notiek, ir jārisina 123, 2 būs pēc adreses 384 00:16:53,800 --> 00:16:55,730 127, jo tas ir tikai 4 byes prom. 385 00:16:55,730 --> 00:16:56,210 Tas arī viss. 386 00:16:56,210 --> 00:16:58,640 Un mēs aizmirstam par visiem citas adreses pasaulē. 387 00:16:58,640 --> 00:17:03,320 >> Tātad x ir pie 123 atrašanās vietu, y ir pie 127 vietā. 388 00:17:03,320 --> 00:17:05,770 Un tagad, ko darīt, es tiešām gribu darīt? 389 00:17:05,770 --> 00:17:10,099 Kad es zvanu mijmaiņas tagad, kas ir patiesībā notiek? 390 00:17:10,099 --> 00:17:14,920 Nu, kad es zvanu mijmaiņas, es esmu dodas, no x adrese un y adrese. 391 00:17:14,920 --> 00:17:18,540 Tā, piemēram, ja šīs divas detaļas Papīra tagad pārstāv divas 392 00:17:18,540 --> 00:17:23,510 argumenti un b swap, ko es esmu gatavojas rakstīt par pirmā no tām, 393 00:17:23,510 --> 00:17:27,720 ko es esmu gatavojas aicināt atsaukties kā? 394 00:17:27,720 --> 00:17:30,610 >> Tieši tā, 123. 395 00:17:30,610 --> 00:17:31,905 Tāpēc šī es pretenziju ir. 396 00:17:31,905 --> 00:17:32,955 Tas ir parametrs. 397 00:17:32,955 --> 00:17:35,856 Es esmu liekot adresi x tur. 398 00:17:35,856 --> 00:17:38,152 >> Kas tas ir? 399 00:17:38,152 --> 00:17:40,890 >> Kas tas ir? 400 00:17:40,890 --> 00:17:41,190 >> Nē, nē. 401 00:17:41,190 --> 00:17:41,720 Tas ir OK. 402 00:17:41,720 --> 00:17:42,570 Joprojām ir labs, joprojām ir labs. 403 00:17:42,570 --> 00:17:43,530 Tātad, tas ir. 404 00:17:43,530 --> 00:17:46,240 Un tagad uz otro papīra, tas būs b, un to, ko es esmu 405 00:17:46,240 --> 00:17:49,010 būs rakstot uz šis gabals papīra? 406 00:17:49,010 --> 00:17:50,080 127. 407 00:17:50,080 --> 00:17:53,720 >> Tātad vienīgā lieta, kas ir mainījies kopš Mūsu iepriekšējais stāsta šim stāstam ir, 408 00:17:53,720 --> 00:17:58,590 nevis burtiski 1 un 2, es esmu gatavojas iet uz 123 un 127. 409 00:17:58,590 --> 00:18:02,130 Un es esmu tagad gatavojas īstenot šos iekšā Šīs kastes, labi? 410 00:18:02,130 --> 00:18:04,640 Tā, ka melnā kaste tagad veido swap funkcija. 411 00:18:04,640 --> 00:18:07,230 >> Tikmēr, pieņemsim tagad ir kāds, īstenot mijmaiņas funkciju. 412 00:18:07,230 --> 00:18:09,090 Vai kāds šeit gribētu veikt brīvprātīgo darbu? 413 00:18:09,090 --> 00:18:09,560 Nāciet uz augšu. 414 00:18:09,560 --> 00:18:11,080 Kāds ir Jūsu vārds? 415 00:18:11,080 --> 00:18:11,460 Charlie. 416 00:18:11,460 --> 00:18:12,080 Visas tiesības, Charlie. 417 00:18:12,080 --> 00:18:14,810 Nāciet uz augšu. 418 00:18:14,810 --> 00:18:17,310 >> Tātad Charlie gatavojas spēlēt loma mūsu melnā kaste. 419 00:18:17,310 --> 00:18:21,460 Un Charlie, ko es gribētu, lai jūs darīt tagad ir īstenot mijmaiņas tādā veidā 420 00:18:21,460 --> 00:18:25,320 ka, ņemot vērā šīs abas adreses, jūs tiešām dodas 421 00:18:25,320 --> 00:18:26,330 lai mainītu vērtības. 422 00:18:26,330 --> 00:18:28,290 Un es čuksti auss kā vadīt TV šeit. 423 00:18:28,290 --> 00:18:29,930 >> Tik iet uz priekšu, un jūs esat melnā kaste. 424 00:18:29,930 --> 00:18:30,920 Reach tur. 425 00:18:30,920 --> 00:18:34,054 Kādas vērtības jūs redzēt, un Kādas vērtības, Jūsuprāt, b? 426 00:18:34,054 --> 00:18:36,740 >> CHARLIE: ir 123 un b ir 127. 427 00:18:36,740 --> 00:18:37,530 >> DAVID Malan: Labi, tieši tā. 428 00:18:37,530 --> 00:18:38,940 Tagad pauze tur tikai brīdi. 429 00:18:38,940 --> 00:18:41,680 Pirmā lieta, jūs gatavojas darīt tagad, saskaņā ar kodu -, kas 430 00:18:41,680 --> 00:18:43,220 Es tagad uzvilkt uz ekrāna - 431 00:18:43,220 --> 00:18:46,750 būs piešķirt nedaudz bitu atmiņas sauc temp. 432 00:18:46,750 --> 00:18:48,850 Tāpēc es esmu gatavojas iet uz priekšu un jums šo atmiņu. 433 00:18:48,850 --> 00:18:52,210 >> Tātad tas būs trešā mainīga ka jums ir pieejamas 434 00:18:52,210 --> 00:18:54,080 jūs sauc temp. 435 00:18:54,080 --> 00:18:57,120 Un ko jūs gatavojas rakstīt par temp papīra? 436 00:18:57,120 --> 00:19:02,524 437 00:19:02,524 --> 00:19:03,470 >> CHARLIE: Pointers, vai ne? 438 00:19:03,470 --> 00:19:04,790 >> DAVID Malan: Labi, labi ne vienmēr norādes. 439 00:19:04,790 --> 00:19:07,230 Tātad līnija kods, kas es esmu uzsvēra labajā pusē, 440 00:19:07,230 --> 00:19:07,900 sāksim tur. 441 00:19:07,900 --> 00:19:08,890 Tā saka zvaigzne. 442 00:19:08,890 --> 00:19:11,670 Tā ir šobrīd glabāšanai numuru 123. 443 00:19:11,670 --> 00:19:16,660 Un tikai intuitīvi, ko bija zvaigzne 123 nozīmē? 444 00:19:16,660 --> 00:19:21,630 >> Bet īpaši, ja ir 123, zvaigzne nozīmē ko? 445 00:19:21,630 --> 00:19:22,560 Vērtība. 446 00:19:22,560 --> 00:19:24,580 Vai vairāk pagadās, iet uz turieni. 447 00:19:24,580 --> 00:19:28,620 Tātad, ļaujiet man piedāvāt, ka, turot uz Jūsu rokas, iet uz priekšu un ārstēt, ka 448 00:19:28,620 --> 00:19:29,430 it kā tas ir plāns. 449 00:19:29,430 --> 00:19:32,940 Un staigāt sevi vairāk nekā uz datora atmiņu, un mūs atrast to, kas ir 450 00:19:32,940 --> 00:19:36,520 pie 123 vietā. 451 00:19:36,520 --> 00:19:37,720 Tieši tā. 452 00:19:37,720 --> 00:19:41,100 >> Tātad mēs redzam pie 123 vietā ir tas, kas, protams? 453 00:19:41,100 --> 00:19:44,240 Labi, lai to vērtība tagad jūs esat gatavojas nodot temp? 454 00:19:44,240 --> 00:19:44,750 Tieši tā. 455 00:19:44,750 --> 00:19:45,600 Tik iet uz priekšu un darīt to. 456 00:19:45,600 --> 00:19:51,280 Un rakstīt numuru 1 uz gabals papīru, kas pašlaik nosaukumu temp. 457 00:19:51,280 --> 00:19:53,540 >> Un tagad nākamais solis, kas jūs gatavojas īstenot 458 00:19:53,540 --> 00:19:54,310 būs ko. 459 00:19:54,310 --> 00:19:57,820 Labi, labajā pusē nākamais rindā kods ir zvaigzne b. b, no 460 00:19:57,820 --> 00:19:59,260 Protams, veikalos adresi. 461 00:19:59,260 --> 00:20:02,270 Kas risina 127. 462 00:20:02,270 --> 00:20:06,620 Star b nozīmē to, ko, nejauši runā? 463 00:20:06,620 --> 00:20:08,700 >> Iet uz šo vietu. 464 00:20:08,700 --> 00:20:14,988 Tik iet uz priekšu un atrast mums, kas ir pie 127 vietā. 465 00:20:14,988 --> 00:20:15,480 Labi. 466 00:20:15,480 --> 00:20:19,170 Protams, 127 vietā, joprojām ir vērtība 2. 467 00:20:19,170 --> 00:20:24,060 Tātad, ko jūs gatavojas tagad veikalā at kāds ir tajā vietā? 468 00:20:24,060 --> 00:20:26,860 Tātad zvaigžņu līdzeklis doties uz vietu ar. 469 00:20:26,860 --> 00:20:29,770 Kas ir vieta? 470 00:20:29,770 --> 00:20:30,430 >> Tieši tā. 471 00:20:30,430 --> 00:20:34,190 Tāpēc tagad, ja jūs vēlaties mainīt kas ir šajā vietā - 472 00:20:34,190 --> 00:20:36,470 Es iešu uz priekšu un palaist dzēšgumija ir šeit. 473 00:20:36,470 --> 00:20:37,760 Un tagad nodot to atpakaļ uz birstīti. 474 00:20:37,760 --> 00:20:42,190 Ko numuru jūs gatavojas rakstīt šajā tukšajā ailē tagad? 475 00:20:42,190 --> 00:20:42,850 >> Tieši tā. 476 00:20:42,850 --> 00:20:46,470 Tātad šī koda līnijas, lai būtu skaidrs - let mani apturējis, ko Charlie dara un 477 00:20:46,470 --> 00:20:51,730 norāda šeit, ko viņš ir tikai darīts, ir iestrādāt šo lodziņu 123 vietā 478 00:20:51,730 --> 00:20:55,150 vērtība, kas bija iepriekš pie b. 479 00:20:55,150 --> 00:20:59,140 Un tāpēc mēs esam tagad ir īstenoti patiešām Šī otrajā rindā kodu. 480 00:20:59,140 --> 00:21:01,920 >> Tagad diemžēl, tur ir vēl viena līnija paliek. 481 00:21:01,920 --> 00:21:04,900 Tagad to, kas ir temp, burtiski? 482 00:21:04,900 --> 00:21:06,200 Tas ir acīmredzami numur viens. 483 00:21:06,200 --> 00:21:07,020 Tas nav adrese. 484 00:21:07,020 --> 00:21:09,380 Tas ir tikai skaitlis, veida mainās no vienas nedēļas. 485 00:21:09,380 --> 00:21:13,520 >> Un tagad, kad jūs sakāt zvaigzne b, tas nozīmē, ka iet uz adresi B, kas ir no 486 00:21:13,520 --> 00:21:15,090 kurss šeit. 487 00:21:15,090 --> 00:21:16,020 Tātad, kad jūs tur nokļūt - 488 00:21:16,020 --> 00:21:18,320 Es iešu uz priekšu un dzēst to, kas patiesībā tur - un ko jūs 489 00:21:18,320 --> 00:21:20,820 gatavojas rakstīt tagad atrašanās 127? 490 00:21:20,820 --> 00:21:22,010 >> CHARLIE: Temp, kas ir viens. 491 00:21:22,010 --> 00:21:23,430 >> DAVID Malan: Temp, kas ir viens. 492 00:21:23,430 --> 00:21:25,670 Un kas notiek ar temp beigās? 493 00:21:25,670 --> 00:21:26,600 Nu, mēs īsti nezinām. 494 00:21:26,600 --> 00:21:27,420 Mums nav īsti aprūpi. 495 00:21:27,420 --> 00:21:31,090 Katru reizi, kad mēs esam ieviesuši funkciju līdz šim, visi vietējie mainīgie jums ir 496 00:21:31,090 --> 00:21:31,890 tiešām vietējie. 497 00:21:31,890 --> 00:21:33,060 Un viņi vienkārši pazūd. 498 00:21:33,060 --> 00:21:35,040 Viņi atgūt pārmaksāto darbības sistēma galu galā. 499 00:21:35,040 --> 00:21:39,800 >> Tātad fakts, ka temp joprojām ir vērtība 1 ir sava veida fundamentāli 500 00:21:39,800 --> 00:21:41,150 neinteresanti mums. 501 00:21:41,150 --> 00:21:43,100 Labi, tāpēc kārta aplausi ja mēs varētu par Čārliju. 502 00:21:43,100 --> 00:21:46,400 Ļoti labi darīts. 503 00:21:46,400 --> 00:21:51,520 >> Labi, lai to, kas vēl nav tas nozīmē, ka mēs varam darīt? 504 00:21:51,520 --> 00:21:54,400 Tātad izrādās, ka mēs esam bijuši stāsta dažus baltos melus 505 00:21:54,400 --> 00:21:55,540 jau ilgu laiku. 506 00:21:55,540 --> 00:21:59,990 Patiešām, izrādās, ka virkni, visu laiku, nav patiešām 507 00:21:59,990 --> 00:22:02,190 rakstzīmju secība per se. 508 00:22:02,190 --> 00:22:03,980 Tā veida ir tā, ka intuitīvi. 509 00:22:03,980 --> 00:22:08,270 >> Bet tehniski runājot, virkne ir datu tips, kas mēs būtu deklarējuši iekšpusē 510 00:22:08,270 --> 00:22:12,170 CS50 bibliotēkas vienkāršot pasauli dažu pirmo nedēļu klasē. 511 00:22:12,170 --> 00:22:20,130 Kas virkne tiešām ir adrese par raksturu kaut kur RAM. 512 00:22:20,130 --> 00:22:25,530 Virkne ir patiešām skaitlis, piemēram, 123 vai 127, kas notiek, lai norobežotu 513 00:22:25,530 --> 00:22:28,420 kur virkne sākas datora atmiņā. 514 00:22:28,420 --> 00:22:31,870 >> Bet tas neatspoguļo string, per se, pati. 515 00:22:31,870 --> 00:22:33,460 Un mēs varam redzēt to, kā šādi. 516 00:22:33,460 --> 00:22:35,980 Ļaujiet man iet uz priekšu un atvērt daži kodu, kas ir viens 517 00:22:35,980 --> 00:22:38,340 šodienas pirmkodu piemēri. 518 00:22:38,340 --> 00:22:42,225 Un es iešu uz priekšu un atvērt augšu, teiksim, salīdziniet-0.c. 519 00:22:42,225 --> 00:22:44,830 520 00:22:44,830 --> 00:22:48,790 Tas ir viegli rati programma, kas notiek , kas īsteno šādi. 521 00:22:48,790 --> 00:22:49,040 >> Pirmais. 522 00:22:49,040 --> 00:22:50,420 Es esmu gatavojas teikt kaut ko. 523 00:22:50,420 --> 00:22:52,660 Tad es iešu uz priekšu un saņemt string no lietotāja 524 00:22:52,660 --> 00:22:53,750 šajā nākamajā rindā. 525 00:22:53,750 --> 00:22:55,370 Tad es esmu gatavojas teikt to vēlreiz. 526 00:22:55,370 --> 00:22:57,540 Tad es esmu gatavojas saņemt otru string no lietotāja. 527 00:22:57,540 --> 00:23:00,390 >> Un paziņojums, es esmu rādīt vienu no virknes mainīgo sauc s, un 528 00:23:00,390 --> 00:23:03,040 Vēl viens no šiem stīgas ar mainīgo sauc t. 529 00:23:03,040 --> 00:23:07,480 Un tagad es esmu gatavojas pieprasīt, ļoti loģiski, ka, ja s vienāds vienāds t, 530 00:23:07,480 --> 00:23:08,940 virknes ir vienādas. 531 00:23:08,940 --> 00:23:09,970 Rakstot to pašu. 532 00:23:09,970 --> 00:23:11,830 Else, ka stīgas ir nav tas pats. 533 00:23:11,830 --> 00:23:15,440 >> Galu galā, ja mēs ieeja two Ints, divi simboli, divi pludiņi, divi divvietīgi, kāds no 534 00:23:15,440 --> 00:23:18,400 datu tipi, mēs esam runājuši par Līdz šim, lai salīdzinātu tos - 535 00:23:18,400 --> 00:23:22,070 atceros, mēs ļoti skaidri, bet pirms ka jums nav darīt, jo 536 00:23:22,070 --> 00:23:25,840 viens vienādības zīmi, protams, ir cesiju operators. 537 00:23:25,840 --> 00:23:26,820 Tā, ka būtu kļūda. 538 00:23:26,820 --> 00:23:29,260 >> Mēs izmantojam vienlīdzīgu vienādības zīmi, kas tiešām salīdzina 539 00:23:29,260 --> 00:23:31,050 lietas, par patiesu līdztiesību. 540 00:23:31,050 --> 00:23:32,275 Bet es apgalvo, tas ir buggy. 541 00:23:32,275 --> 00:23:37,400 Ja es iet uz priekšu un darīt salīdzināt nullei, un tad dot slash salīdzināt nulli. 542 00:23:37,400 --> 00:23:39,700 Un es rakstīt, teiksim, sveiki. 543 00:23:39,700 --> 00:23:41,590 Un tad teiksim sveiki atkal. 544 00:23:41,590 --> 00:23:46,040 Burtiski tas pats, dators norādēm es drukāti dažādas lietas. 545 00:23:46,040 --> 00:23:47,640 >> Tagad varbūt es vienkārši nepareizi uzrakstīta kaut ko. 546 00:23:47,640 --> 00:23:49,910 Es rakstīt mans vārds šoreiz. 547 00:23:49,910 --> 00:23:52,580 Es domāju, sveiki. 548 00:23:52,580 --> 00:23:54,770 Sveiki. 549 00:23:54,770 --> 00:23:57,360 Tas ir atšķirīgs katru reizi. 550 00:23:57,360 --> 00:23:58,430 >> Nu, kāpēc tā? 551 00:23:58,430 --> 00:24:00,140 Kas īsti notiek zem pārsega? 552 00:24:00,140 --> 00:24:03,270 Nu, to, kas īsti notiek zem pārsegs ir virkne, tad 553 00:24:03,270 --> 00:24:07,410 Es drukāti tajā pirmo reizi, piemēram ir vārds sveiki, protams. 554 00:24:07,410 --> 00:24:11,660 Bet, ja mēs pārstāvam to zem pārsegs, atgādināt, ka 555 00:24:11,660 --> 00:24:13,470 virkne ir masīva. 556 00:24:13,470 --> 00:24:15,040 Un mēs jau teicām, cik agrāk. 557 00:24:15,040 --> 00:24:20,200 >> Tātad, ja es izdarīju, ka masīvu, piemēram, tas, es esmu gatavojas pārstāvēt kaut ko pavisam 558 00:24:20,200 --> 00:24:23,030 līdzīgs tam, ko mēs darījām pirms brīža. 559 00:24:23,030 --> 00:24:25,390 Un tur tiešām kaut kas īpašs šeit, too. 560 00:24:25,390 --> 00:24:28,090 Ko mēs nosakām, tika pie beigām katru string? 561 00:24:28,090 --> 00:24:30,760 Jā, šis slīpsvītru nulle, kas ir tikai veids, kā pārstāvēt, 562 00:24:30,760 --> 00:24:33,610 burtiski, 00000000. 563 00:24:33,610 --> 00:24:35,680 Astoņi 0 biti pēc kārtas. 564 00:24:35,680 --> 00:24:37,610 >> Es nezinu, godīgi sakot, kas ir pēc tam. 565 00:24:37,610 --> 00:24:40,090 Tas ir tikai ķekars vairāk RAM iekšpusē mana datora. 566 00:24:40,090 --> 00:24:40,970 Bet tas ir masīvs. 567 00:24:40,970 --> 00:24:42,260 Mēs runājām par masīvu agrāk. 568 00:24:42,260 --> 00:24:45,010 Un mēs parasti runājam par blokiem kā vieta nulle, 569 00:24:45,010 --> 00:24:46,580 tad viens, tad divi. 570 00:24:46,580 --> 00:24:47,950 Bet tas ir tikai ērtības. 571 00:24:47,950 --> 00:24:49,380 Un tas ir pilnīgi relatīvs. 572 00:24:49,380 --> 00:24:53,010 >> Kad jūs faktiski kļūst atmiņas no dators, tas ir, protams, jebkura 573 00:24:53,010 --> 00:24:55,450 2 miljardi daži nepāra baiti, iespējams. 574 00:24:55,450 --> 00:24:59,100 Tik tiešām zem motora pārsega, visu šo laiku, jā. 575 00:24:59,100 --> 00:25:01,670 Tas varētu ļoti labi būt kronšteins nulle. 576 00:25:01,670 --> 00:25:04,780 Bet, ja jūs rakt vēl dziļāk zem pārsegs, kas ir patiešām 577 00:25:04,780 --> 00:25:07,000 pievērsties numuru 123. 578 00:25:07,000 --> 00:25:09,150 Tas ir adrese 124. 579 00:25:09,150 --> 00:25:11,040 Tas ir adrese 125. 580 00:25:11,040 --> 00:25:12,540 >> Un man nav screw up šo laiku. 581 00:25:12,540 --> 00:25:15,840 Tie ir tagad viens baiti izņemot kāda iemesla dēļ? 582 00:25:15,840 --> 00:25:17,930 Cik liela ir char? 583 00:25:17,930 --> 00:25:19,170 Simbols ir tikai viens baits. 584 00:25:19,170 --> 00:25:20,570 Int parasti ir četri baiti. 585 00:25:20,570 --> 00:25:24,850 Tātad, tāpēc es to 123, 127, 131 un tā tālāk. 586 00:25:24,850 --> 00:25:27,560 Tagad es varu saglabāt math vienkāršāku un vienkārši darīt plus 1. 587 00:25:27,560 --> 00:25:30,510 Un tagad tas ir to, kas īsti notiek par zem motora pārsega. 588 00:25:30,510 --> 00:25:37,760 >> Tātad, ja jūs atzīt kaut kas līdzīgs šim, string s, tas ir faktiski - 589 00:25:37,760 --> 00:25:39,170 izrādās - 590 00:25:39,170 --> 00:25:41,190 char zvaigzne. 591 00:25:41,190 --> 00:25:44,640 Zvaigzne, protams, nozīmē, adresi, aka rādītājs. 592 00:25:44,640 --> 00:25:46,200 Tātad, tas ir adrese kaut ko. 593 00:25:46,200 --> 00:25:47,510 Kas tas ir adrese? 594 00:25:47,510 --> 00:25:47,760 >> Nu - 595 00:25:47,760 --> 00:25:51,680 Es esmu vienīgais, kurš var redzēt ļoti svarīgs jautājums es esmu padarot, vai domājat, ka 596 00:25:51,680 --> 00:25:52,560 Es esmu padarot. 597 00:25:52,560 --> 00:25:55,270 Tātad string - 598 00:25:55,270 --> 00:25:57,180 skumji ir tas, man ir monitors labi tur, kur es 599 00:25:57,180 --> 00:25:58,100 varēja redzēt, ka. 600 00:25:58,100 --> 00:26:00,990 >> Labi, tāpēc virkne s ir tas, ko Man paziņoja iepriekš. 601 00:26:00,990 --> 00:26:04,600 Bet izrādās, pateicoties nedaudz burvju CS50 bibliotēkā, tas viss 602 00:26:04,600 --> 00:26:08,780 laiks string ir burtiski ir char zvaigzne. 603 00:26:08,780 --> 00:26:11,310 Zvaigzne atkal nozīmē rādītāju vai adrese. 604 00:26:11,310 --> 00:26:14,180 Fakts, ka tā ir papildinošiem Vārds char nozīmē, ka ir 605 00:26:14,180 --> 00:26:15,970 adrese raksturs. 606 00:26:15,970 --> 00:26:23,100 >> Tātad, ja saņem virkne sauc, un es tipa in H-E-L-L-O, ierosināt tagad to, ko ir iegūt 607 00:26:23,100 --> 00:26:27,330 stīgu burtiski atgriežas visus šoreiz, lai gan mēs esam samērā 608 00:26:27,330 --> 00:26:29,980 pārspīlēti pasauli? 609 00:26:29,980 --> 00:26:33,310 Kāda saņemt virkne reāli atpakaļ, jo tā atgriešanās vērtību? 610 00:26:33,310 --> 00:26:35,830 611 00:26:35,830 --> 00:26:38,720 >> 123 Šajā gadījumā, piemēram. 612 00:26:38,720 --> 00:26:42,630 Mēs esam jau iepriekš teica, ka saņem virkni vienkārši atgriež string, secība 613 00:26:42,630 --> 00:26:43,300 rakstzīmes. 614 00:26:43,300 --> 00:26:44,790 Bet tas ir mazliet baltu meli. 615 00:26:44,790 --> 00:26:48,010 Veids, kā iegūt virkne tiešām strādā zem motora pārsega tas izpaužas 616 00:26:48,010 --> 00:26:48,930 string no lietotāja. 617 00:26:48,930 --> 00:26:51,530 Tā plops rakstzīmes, ka viņš vai viņa veidi atmiņā. 618 00:26:51,530 --> 00:26:54,680 Tas liek slīpsvītru nulli beigās no tiem rakstzīmju secību. 619 00:26:54,680 --> 00:26:57,310 >> Bet tad ko tas saņem virkni burtiski atgriezties? 620 00:26:57,310 --> 00:27:02,710 Tā burtiski atgriež adresi Pati pirmā baiti RAM, ka 621 00:27:02,710 --> 00:27:04,130 tas izmanto šim spēka. 622 00:27:04,130 --> 00:27:07,500 Un izrādās, ka vienkārši nosūtot viena adrese no 623 00:27:07,500 --> 00:27:12,120 pirmais raksturs virknē, kas ir pietiekama, lai atrastu datus par visu 624 00:27:12,120 --> 00:27:12,630 string. 625 00:27:12,630 --> 00:27:16,930 >> Citiem vārdiem sakot, iegūt stīgu nav atgriezties 123 un 124 un 125. 626 00:27:16,930 --> 00:27:19,950 Tas nav man garš saraksts no visiem bytes ka 627 00:27:19,950 --> 00:27:20,740 mans string izmanto. 628 00:27:20,740 --> 00:27:22,670 Jo viens, viņi visi atpakaļ atpakaļ. 629 00:27:22,670 --> 00:27:28,160 Un divi, pamatojoties uz pirmo adresi, es var izdomāt, kur virkne beidzas. 630 00:27:28,160 --> 00:27:29,910 Kā? 631 00:27:29,910 --> 00:27:33,490 >> Īpašais null raksturs, Slīpsvītru nulli beigās. 632 00:27:33,490 --> 00:27:35,430 Tātad, citiem vārdiem sakot, ja jums iet apkārt - 633 00:27:35,430 --> 00:27:36,530 iekšpusē mainīgo lielumu - 634 00:27:36,530 --> 00:27:41,300 adresi char, un jūs uzņematies ka beigās jebkuru rakstzīmju virkni, kāds 635 00:27:41,300 --> 00:27:45,040 rakstzīmju secība, kā mēs, cilvēki domā par stīgas, ja jūs pieņemt, ka 636 00:27:45,040 --> 00:27:48,600 gada beigās šādu virkni tur ir slīpsvītru nulle, tu esi zelta. 637 00:27:48,600 --> 00:27:52,430 Tāpēc, ka jūs vienmēr varat atrast auklas galā un. 638 00:27:52,430 --> 00:27:54,870 >> Tagad to, kas īsti tad notiek uz šīs programmas? 639 00:27:54,870 --> 00:27:59,990 Kāpēc šī programma, salīdzināt-0.c, buggy? 640 00:27:59,990 --> 00:28:01,690 Kas faktiski tiek salīdzināta? 641 00:28:01,690 --> 00:28:02,420 Yeah? 642 00:28:02,420 --> 00:28:05,000 >> STUDENTU: [nedzirdama]. 643 00:28:05,000 --> 00:28:05,730 >> DAVID Malan: Tieši tā. 644 00:28:05,730 --> 00:28:08,350 Tas salīdzinot vietas no stīgas. 645 00:28:08,350 --> 00:28:12,420 Tātad, ja lietotājs ir ievadījis sveiki vienu reizi, kā es to izdarīju, atmiņas varētu nonākt 646 00:28:12,420 --> 00:28:13,430 meklē kā šis. 647 00:28:13,430 --> 00:28:18,210 Ja lietotājs, tad veidi sveiki atkal, bet zvanot saņemt virkni atkal, c ir 648 00:28:18,210 --> 00:28:21,800 nav īpaši gudrs, ja jūs mācīt tas ir gudrs, rakstot kodu. 649 00:28:21,800 --> 00:28:22,430 >> C - 650 00:28:22,430 --> 00:28:23,860 un datori vispār - 651 00:28:23,860 --> 00:28:27,370 ja jūs ierakstiet vārdu sveiki atkal, jūs zināt, ko jūs gatavojas saņemt. 652 00:28:27,370 --> 00:28:31,480 Jūs esat tikai gatavojas iegūt otru masīvs atmiņas, ka, jā, gadās būt 653 00:28:31,480 --> 00:28:35,510 glabāšanai H-E-L-L-O un tā tālāk. 654 00:28:35,510 --> 00:28:38,240 >> Tas skatīsies pašu mums cilvēkiem, bet šī adrese 655 00:28:38,240 --> 00:28:39,460 varētu būt 123. 656 00:28:39,460 --> 00:28:42,470 Tas var tikai tik gadīties, ka operētājsistēma ir daži pieejami 657 00:28:42,470 --> 00:28:45,430 telpas, piemēram, uz atrašanās vietu - 658 00:28:45,430 --> 00:28:49,820 teiksim kaut ko patvaļīgi, piemēram, tas ir vieta 200. 659 00:28:49,820 --> 00:28:51,620 Un tas ir vieta 201. 660 00:28:51,620 --> 00:28:53,060 Un tas ir vieta 202. 661 00:28:53,060 --> 00:28:55,730 Mums nav ne jausmas, kur, kas ir būs atmiņā. 662 00:28:55,730 --> 00:28:59,110 >> Bet ko tas nozīmē, ir tas, kas ir būs jāuzglabā galu galā s? 663 00:28:59,110 --> 00:29:00,750 Numuru 123. 664 00:29:00,750 --> 00:29:04,860 Kas notiek, jāuzglabā t, Šajā patvaļīgu piemēram? 665 00:29:04,860 --> 00:29:06,300 Numuru 200. 666 00:29:06,300 --> 00:29:11,410 Un tas viss nozīmē, tad ir acīmredzami, 123 nav vienāds ar 200. 667 00:29:11,410 --> 00:29:14,940 Un tā tas, ja nosacījums nekad novērtē kā patiess. 668 00:29:14,940 --> 00:29:18,430 Jo get virkne ir, izmantojot dažādas gabalos atmiņas katru reizi. 669 00:29:18,430 --> 00:29:20,360 >> Tagad mēs varam redzēt to vēlreiz Citā piemērā. 670 00:29:20,360 --> 00:29:23,764 Ļaujiet man iet uz priekšu un atvērt kopēt-0.c. 671 00:29:23,764 --> 00:29:28,770 Man apgalvo, ka šis piemērs ir gatavojas mēģināt - bet nespēj - lai kopētu divas virknes 672 00:29:28,770 --> 00:29:29,910 šādi. 673 00:29:29,910 --> 00:29:31,730 >> Es esmu gatavojas teikt kaut ko lietotājam. 674 00:29:31,730 --> 00:29:34,490 Es esmu tam gatavojas saņemt stīgu un to sauc s. 675 00:29:34,490 --> 00:29:36,400 Un tagad, es daru šo pārbaudi šeit. 676 00:29:36,400 --> 00:29:37,990 Mēs minēja šo, kamēr atpakaļ. 677 00:29:37,990 --> 00:29:42,490 Bet, kad varētu saņemt stīgu atgriezties null, citu īpašo raksturu, vai īpašu 678 00:29:42,490 --> 00:29:45,050 simbols, teiksim. 679 00:29:45,050 --> 00:29:45,900 Ja tas ir no atmiņas. 680 00:29:45,900 --> 00:29:48,970 >> Piemēram, ja lietotājs ir patiešām ir sarežģīta un veidi šausmīgs 681 00:29:48,970 --> 00:29:51,220 rakstzīmju skaits pie tastatūru un hits Enter. 682 00:29:51,220 --> 00:29:54,580 Ja tas rakstzīmju skaits vienkārši nevar iederēties RAM kāda traks 683 00:29:54,580 --> 00:29:57,820 iemesla dēļ arī saņemt virkni varētu ļoti labi atgriezties null. 684 00:29:57,820 --> 00:30:01,080 >> Vai, ja jūsu programma pati par sevi dara daudz citas lietas, un tur ir tikai 685 00:30:01,080 --> 00:30:03,790 Nepietiek atmiņas, lai get virknes lai gūtu panākumus, tas var beigties 686 00:30:03,790 --> 00:30:05,240 līdz atgriežas null. 687 00:30:05,240 --> 00:30:07,160 Bet būsim precīzāki par to, kas tas ir. 688 00:30:07,160 --> 00:30:10,280 Kas ir s spēlētājs datu tips tiešām? 689 00:30:10,280 --> 00:30:11,610 Char zvaigzne. 690 00:30:11,610 --> 00:30:14,560 >> Tātad izrādās, tagad mēs varam mizas atpakaļ slāni null. 691 00:30:14,560 --> 00:30:17,500 Izrādās, null, ir - jā, protams, īpašs simbols. 692 00:30:17,500 --> 00:30:19,190 Bet kas tas īsti? 693 00:30:19,190 --> 00:30:25,220 Tiešām, nulle ir tikai simbols, kas mums cilvēki izmanto, lai pārstāvētu nulli, kā arī. 694 00:30:25,220 --> 00:30:29,010 >> Tātad no C autoriem, un datoriem kopumā, nolēma gadus atpakaļ 695 00:30:29,010 --> 00:30:30,010 , ka jūs zināt, ko. 696 00:30:30,010 --> 00:30:34,850 Kāpēc nav mēs nodrošinātu, ka neviens lietotājs dati ir nekad, nekad, nekad 697 00:30:34,850 --> 00:30:36,730 uzglabāt bye nulli? 698 00:30:36,730 --> 00:30:39,610 Faktiski, pat manā patvaļīgā piemērā pirms, es nesākās numerācijas 699 00:30:39,610 --> 00:30:40,390 baiti pie nulles. 700 00:30:40,390 --> 00:30:41,540 Es sāku vienā. 701 00:30:41,540 --> 00:30:44,950 Tā kā es zināju, ka cilvēki visā pasaulē nolēma rezervēt nulles 702 00:30:44,950 --> 00:30:47,970 baitu ikvienā RAM kā kaut kas īpašs. 703 00:30:47,970 --> 00:30:52,020 >> Iemesls ir, jebkurā laikā vēlaties signāls, ka kaut kas ir nogājis greizi 704 00:30:52,020 --> 00:30:55,960 attiecībā uz adresēm, tu atgriezies null - citādi zināma kā nulli - 705 00:30:55,960 --> 00:30:59,410 un, jo jūs zināt, ka tur nav legit datu nulles adreses, nepārprotami 706 00:30:59,410 --> 00:31:00,400 tas nozīmē, ka kļūda. 707 00:31:00,400 --> 00:31:04,080 Un tas ir iemesls, kāpēc mēs, pēc tradīcijas, pārbaudiet for null un atgriešanās kaut ko 708 00:31:04,080 --> 00:31:06,260 kā viens šādos gadījumos. 709 00:31:06,260 --> 00:31:09,300 >> Tātad, ja mēs ritinātu uz leju tagad, tas ir vienkārši tad daži kļūdu pārbaude, tikai gadījumā, 710 00:31:09,300 --> 00:31:10,610 kaut kas nogāja greizi ar [? bail?] 711 00:31:10,610 --> 00:31:13,470 vispār un atmest programmu nosūtot sākumā. 712 00:31:13,470 --> 00:31:19,030 Šī līnija tagad var pārrakstīt jo tas, kas nozīmē ko? 713 00:31:19,030 --> 00:31:23,155 Kreisajā pusē, dod man vēl rādītājs, lai raksturu, un to sauc par t. 714 00:31:23,155 --> 00:31:26,935 Ko es glabāšanai iekšā t, balstoties par šo vienu rindiņu kodu? 715 00:31:26,935 --> 00:31:30,950 716 00:31:30,950 --> 00:31:32,170 >> Es esmu uzglabāšanas vietu. 717 00:31:32,170 --> 00:31:34,742 Konkrēti vieta tas bija s. 718 00:31:34,742 --> 00:31:39,000 Tātad, ja lietotājs ir ievadījis sveiki, un ka vispirms sveiki notiek, lai galu galā 719 00:31:39,000 --> 00:31:42,567 šeit, tad skaitlis 123 ir gatavojas atgriezties no get 720 00:31:42,567 --> 00:31:43,810 string un jāuzglabā - 721 00:31:43,810 --> 00:31:44,780 kā mēs teicām iepriekš - 722 00:31:44,780 --> 00:31:45,440 s. 723 00:31:45,440 --> 00:31:50,560 >> Kad es tagad paziņot citu rādītāju char, un to sauc par t, cik lielā skaitā ir 724 00:31:50,560 --> 00:31:53,940 burtiski dodas, lai galu galā t saskaņā ar rakstu? 725 00:31:53,940 --> 00:31:55,420 Tātad 123. 726 00:31:55,420 --> 00:32:00,310 >> Tātad tehniski tagad gan s un t ir norāda uz precīzu 727 00:32:00,310 --> 00:32:02,410 paši gabalos atmiņas. 728 00:32:02,410 --> 00:32:06,140 Tātad, paziņojums, ko es esmu gatavojas darīt tagad, lai pierādīt, ka šī programma ir buggy. 729 00:32:06,140 --> 00:32:08,820 >> Vispirms es esmu gatavojas pieprasīt, ar drukas f, gūstot 730 00:32:08,820 --> 00:32:10,080 kopiju virknes. 731 00:32:10,080 --> 00:32:11,660 Tad es esmu gatavojas darīt nedaudz kļūdu pārbaudi. 732 00:32:11,660 --> 00:32:12,160 Es esmu gatavojas, lai pārliecinātos. 733 00:32:12,160 --> 00:32:16,710 Pieņemsim, pārliecinieties, ka virkne t ir vismaz lielāka par nulli garumā, 734 00:32:16,710 --> 00:32:19,190 tāpēc tur ir dažas raksturs tur faktiski kapitalizēt. 735 00:32:19,190 --> 00:32:22,840 >> Un tad jūs varētu atcerēties šo no iepriekšējiem piemēriem. 736 00:32:22,840 --> 00:32:25,630 2 augšējais -, kas ir ctype.h failu. 737 00:32:25,630 --> 00:32:30,800 T kronšteins nulle dod man nulle raksturs stīgu t. 738 00:32:30,800 --> 00:32:34,360 Un 2 augšējo šīs pašas vērtības, no protams, pārvērš to par lielajiem burtiem. 739 00:32:34,360 --> 00:32:38,230 >> Tātad intuitīvi, tas uzsvērts līnija koda ir kapitalizēt pirmo reizi 740 00:32:38,230 --> 00:32:40,250 burtu t. 741 00:32:40,250 --> 00:32:44,485 Bet tas nav kapitalizēt, intuitīvi, pirmais burts s. 742 00:32:44,485 --> 00:32:48,130 Bet, ja jūs domāšana uz priekšu, ko es esmu par to, lai redzētu, kad es palaist šo programmu 743 00:32:48,130 --> 00:32:54,220 un izdrukāt gan oriģināls, s, un tā saukto kopija, t? 744 00:32:54,220 --> 00:32:55,350 >> Viņi faktiski būs tāds pats. 745 00:32:55,350 --> 00:32:56,600 Un kāpēc viņi būs tāds pats? 746 00:32:56,600 --> 00:32:58,970 747 00:32:58,970 --> 00:33:01,020 Viņi abi norādot uz tieši tas pats. 748 00:33:01,020 --> 00:33:01,610 Tātad, pieņemsim to izdarītu. 749 00:33:01,610 --> 00:33:03,160 >> Padarīt kopiju nulli. 750 00:33:03,160 --> 00:33:04,070 Tā apkopo OK. 751 00:33:04,070 --> 00:33:06,500 Ļaujiet man palaist kopiju nulli. 752 00:33:06,500 --> 00:33:10,110 Ļaujiet man rakstīt kaut ko līdzīgu sveiki in visi mazie tad hit Enter. 753 00:33:10,110 --> 00:33:16,520 Un tā apgalvo, ka gan sākotnējā s un kopija patiešām identiskas. 754 00:33:16,520 --> 00:33:17,920 >> Tātad, kas īsti notika šeit? 755 00:33:17,920 --> 00:33:20,100 Ļaujiet man ievilktu šo attēlu vienkārši lai pastāstītu stāstu 756 00:33:20,100 --> 00:33:21,340 nedaudz citādā veidā. 757 00:33:21,340 --> 00:33:26,060 Kas īsti notiek zem pārsegs, kad es deklarēt kaut ko līdzīgu 758 00:33:26,060 --> 00:33:30,410 char start s, vai string s, Es esmu kļūst rādītāju - 759 00:33:30,410 --> 00:33:33,090 kas notiek, ir četri baiti šajā CS50 ierīces 760 00:33:33,090 --> 00:33:34,410 un daudz datoriem. 761 00:33:34,410 --> 00:33:36,008 Un es esmu gatavojas nosaukt šo s. 762 00:33:36,008 --> 00:33:39,810 Un tas šobrīd ir kādu nezināmu vērtību. 763 00:33:39,810 --> 00:33:43,900 >> Kad jūs deklarēt mainīgo, ja vien jūs sevi nodot vērtību tur, kurš 764 00:33:43,900 --> 00:33:44,570 zina, kas ir tur. 765 00:33:44,570 --> 00:33:48,110 Tas varētu būt daži izlases secība biti no iepriekšējā izpildi. 766 00:33:48,110 --> 00:33:52,490 Tātad, kad es, manā līniju kodu saņemam stīgu, un pēc tam uzglabāt atgriešanos 767 00:33:52,490 --> 00:33:54,800 vērtība s get virkni kaut kā - 768 00:33:54,800 --> 00:33:58,520 un mēs galu galā pīlings atpakaļ, kā nokļūt stīgu darbi, kaut piešķir 769 00:33:58,520 --> 00:34:00,480 masīvs, kas, iespējams, izskatās mazliet kā šis. 770 00:34:00,480 --> 00:34:05,390 H-E-L-L-O, slīpsvītra nulle. 771 00:34:05,390 --> 00:34:09,510 >> Pieņemsim, ka tas ir adrese 123 tikai pirmās konsekvenci. 772 00:34:09,510 --> 00:34:13,000 Tātad iegūt stīgu atdevi, jo uzsvēra līnijas tur, tas atgriež 773 00:34:13,000 --> 00:34:15,000 numuru mēs teicām, 123. 774 00:34:15,000 --> 00:34:17,420 Tātad, kas īsti notiek iekšpusē s šeit? 775 00:34:17,420 --> 00:34:26,590 >> Nu, ko īsti iet iekšpusē no s ir 123. 776 00:34:26,590 --> 00:34:29,250 Bet atklāti sakot, es saņemu nedaudz sajaukt ar visu no šīm adresēm, 777 00:34:29,250 --> 00:34:30,320 visiem šiem patvaļīgu numuriem. 778 00:34:30,320 --> 00:34:32,290 123, 124, 127. 779 00:34:32,290 --> 00:34:34,570 Tātad, pieņemsim faktiski vienkāršot pasaule mazliet. 780 00:34:34,570 --> 00:34:38,800 >> Kad mēs runājam par norādes, godīgi sakot, lai mums cilvēkiem, kas heck rūpējas, kur 781 00:34:38,800 --> 00:34:39,870 lietas ir atmiņā? 782 00:34:39,870 --> 00:34:41,080 Tas ir pilnīgi patvaļīgi. 783 00:34:41,080 --> 00:34:43,370 Tas būs atkarīgs no tā, cik RAM lietotājs ir. 784 00:34:43,370 --> 00:34:46,590 Tas būs atkarīgs, kad dienā palaižot programmu, varbūt, un 785 00:34:46,590 --> 00:34:48,250 kāda ieejas lietotājam dod jums. 786 00:34:48,250 --> 00:34:50,060 Mēs esam mājokli nesvarīgas detaļas. 787 00:34:50,060 --> 00:34:54,230 >> Tātad, pieņemsim abstrakts prom un saka, ka, palaižot līnijas kodu, piemēram, tas, 788 00:34:54,230 --> 00:34:57,320 char zvaigzne s saņem peļņu vērtība get virknes. 789 00:34:57,320 --> 00:35:02,720 Kāpēc ne mēs nevis vienkārši izdarīt to, ko mēs saglabātu zvana rādītāju, it kā tas ir 790 00:35:02,720 --> 00:35:04,140 norādot uz kaut ko? 791 00:35:04,140 --> 00:35:07,000 Tāpēc es apgalvo, ka šobrīd ir atkarīgs tur ir rādītājs - 792 00:35:07,000 --> 00:35:08,480 zem motora pārsega, tas ir adrese. 793 00:35:08,480 --> 00:35:11,330 Bet tas ir tikai norādot uz pirmais baits in 794 00:35:11,330 --> 00:35:12,780 virkne, kas ir atdota. 795 00:35:12,780 --> 00:35:16,710 >> Ja es tagad atgriežas ar kodu šeit kas notiek šajā līnijā? 796 00:35:16,710 --> 00:35:20,020 Nu, šajā uzsvēra līnijā tagad, Es esmu paziņojot, acīmredzot vēl 797 00:35:20,020 --> 00:35:21,070 mainīgo sauc t. 798 00:35:21,070 --> 00:35:25,700 Bet tas ir arī rādītājs, tāpēc es esmu gatavojas izdarīt to, kas, teorētiski, precīzu 799 00:35:25,700 --> 00:35:26,710 vienāda izmēra kaste. 800 00:35:26,710 --> 00:35:28,160 Un es esmu gatavojas, lai izsauktu to t. 801 00:35:28,160 --> 00:35:33,500 >> Un tagad, ja mēs ejam atpakaļ uz kodu vēlreiz, kad es glabāt s iekšpusē t, 802 00:35:33,500 --> 00:35:36,920 ko es esmu tehniski liekot iekšā t? 803 00:35:36,920 --> 00:35:39,350 Nu tehniski, tas bija skaitlis 123. 804 00:35:39,350 --> 00:35:42,270 Tik tiešām es būtu rakstiski numuru 123 tur. 805 00:35:42,270 --> 00:35:43,900 Bet pieņemsim ņemt to augstāka līmeņa. 806 00:35:43,900 --> 00:35:48,090 t, ja tas ir tikai rādītājs, intuitīvi, ir tikai to. 807 00:35:48,090 --> 00:35:49,800 Tas ir viss, kas ir glabājas tur. 808 00:35:49,800 --> 00:35:54,970 >> Tāpēc tagad pēdējos interesantas līnijas koda, kad es tiešām iet par 809 00:35:54,970 --> 00:36:00,680 kapitalizējot nulles raksturu t, kas notiek? 810 00:36:00,680 --> 00:36:06,310 Nu, t kronšteinu nulle tagad norāda lai kāda rakstura, iespējams? 811 00:36:06,310 --> 00:36:07,460 >> Tas norāda uz h. 812 00:36:07,460 --> 00:36:08,870 Jo t bracket nulles - 813 00:36:08,870 --> 00:36:12,490 atceros, tas ir vecs sintakse. t kronšteins nulle nozīmē tikai tad, ja t ir virkne, t 814 00:36:12,490 --> 00:36:15,590 kronšteins nulle nozīmē, kļūst nulles raksturu šajā izturību. 815 00:36:15,590 --> 00:36:18,650 Tātad, ko tas īsti nozīmē ir iet uz šo masīvs - 816 00:36:18,650 --> 00:36:21,520 un jā, tas varētu būt 123, tas varētu būt 124. 817 00:36:21,520 --> 00:36:22,790 Bet tas viss ir relatīvs, atcerēties. 818 00:36:22,790 --> 00:36:25,640 Ikreiz, kad runājam par masīvu, mums ir priekšrocība runāt par 819 00:36:25,640 --> 00:36:27,000 relatīvie rādītāji. 820 00:36:27,000 --> 00:36:31,120 >> Un tāpēc tagad mēs varam tikai pieņemt, ka t kronšteins nulle ir h. 821 00:36:31,120 --> 00:36:35,090 Tātad, ja es aicinu 2 augšējā par to, kas tas ir īsti dara ir kapitalizēt 822 00:36:35,090 --> 00:36:38,290 mazo h uz lielo burtu H Bet, protams, to, kas ir s? 823 00:36:38,290 --> 00:36:41,010 Tas norāda uz to pašu darn virkni. 824 00:36:41,010 --> 00:36:44,200 >> Tātad tas ir viss, kas ir noticis Šajā kodu līdz šim. 825 00:36:44,200 --> 00:36:45,960 Tātad, kāda ir tad secinājums? 826 00:36:45,960 --> 00:36:48,300 Kā mēs varam noteikt šīs divas problēmas? 827 00:36:48,300 --> 00:36:50,870 Kā mēs salīdzināt ar faktisko stīgas? 828 00:36:50,870 --> 00:36:53,720 >> Nu intuitīvi, kā būtu jūs iet par salīdzinot divas 829 00:36:53,720 --> 00:36:55,090 stīgas patiesu līdztiesību? 830 00:36:55,090 --> 00:36:58,920 831 00:36:58,920 --> 00:37:00,750 >> Ko tas nozīmē, ja divi stīgas ir vienādas? 832 00:37:00,750 --> 00:37:04,330 Protams, nav, ka viņu adreses ir vienāds atmiņā, jo tas ir zems 833 00:37:04,330 --> 00:37:06,590 līmeņa īstenošanas detaļas. 834 00:37:06,590 --> 00:37:08,360 Visi simboli ir vienādi. 835 00:37:08,360 --> 00:37:12,810 Tātad, ļaujiet man piedāvāt, un ļaujiet man iepazīstināt no compare.c vienas versijas 836 00:37:12,810 --> 00:37:14,970 šeit, lai salīdzinātu-1.c. 837 00:37:14,970 --> 00:37:19,590 >> Ļaujiet man ieteikt, ka mēs joprojām saņemt rādītājs sauc s, un ar tā veikala 838 00:37:19,590 --> 00:37:20,610 atgriešanās vērtību get virknes. 839 00:37:20,610 --> 00:37:21,750 Darīsim to pašu ar t. 840 00:37:21,750 --> 00:37:23,230 Tātad, neviens no koda ir atšķirīgs. 841 00:37:23,230 --> 00:37:25,420 Es esmu gatavojas pievienot nedaudz vairāk kļūdu pārbaudi tagad. 842 00:37:25,420 --> 00:37:29,390 Tāpēc tagad, ka mēs esam sava veida atplēšot tas slāņiem CS50, ko virkne 843 00:37:29,390 --> 00:37:33,520 patiesībā ir, mums ir jābūt daudz anālais par pārliecinoties, ka mums nav ļaunprātīgi 844 00:37:33,520 --> 00:37:35,330 nederīgs vērtības, piemēram, Null. 845 00:37:35,330 --> 00:37:36,440 >> Tāpēc es esmu tikai gatavojas pārbaudīt. 846 00:37:36,440 --> 00:37:41,490 Ja s nav vienāds ar null, un t nav vienlīdzīgas null, tas nozīmē, ka mēs esam OK. 847 00:37:41,490 --> 00:37:44,460 Get stīgu nav screw up kļūst kāda no šīm stīgas. 848 00:37:44,460 --> 00:37:51,270 Un jūs varat, iespējams, domāju, tagad, ko tas STR CMP iespējams darīt? 849 00:37:51,270 --> 00:37:52,000 String salīdzināt. 850 00:37:52,000 --> 00:37:55,470 >> Tātad, ja jūs esat programmu java iepriekš, tas ir kā vienāds metodi 851 00:37:55,470 --> 00:37:56,490 stīgu klasē. 852 00:37:56,490 --> 00:37:57,890 Bet par tiem no jums, kas ir ne programmēt pirms, 853 00:37:57,890 --> 00:37:59,320 tas ir tikai c funkcija. 854 00:37:59,320 --> 00:38:02,180 Tas notiek, lai nāk failu ar nosaukumu string.h. 855 00:38:02,180 --> 00:38:03,830 Tas ir, ja tas ir deklarēts. 856 00:38:03,830 --> 00:38:05,110 >> Un stīgu salīdzināt - 857 00:38:05,110 --> 00:38:07,530 Es tiešām aizmirst tās izmantojumu, bet nekad prātā, ka. 858 00:38:07,530 --> 00:38:10,470 Atgādināt, ka mēs varam darīt Vīrietis, samaisa salīdzināt. 859 00:38:10,470 --> 00:38:12,590 Un tas notiek, lai atvērtu Linux programmētāji rokasgrāmata. 860 00:38:12,590 --> 00:38:14,060 Un tas ir, atklāti sakot, mazliet noslēpumains. 861 00:38:14,060 --> 00:38:15,270 Bet es šeit redzu, ka yep. 862 00:38:15,270 --> 00:38:17,570 Man ir arī string.h. 863 00:38:17,570 --> 00:38:20,590 >> Un tas saka šeit ar nosaukumu " string salīdzināt funkcija salīdzina 864 00:38:20,590 --> 00:38:24,560 abas virknes S1 un S2 "Un. S1 un S2 acīmredzami ir divi 865 00:38:24,560 --> 00:38:26,120 argumenti pagājis collas 866 00:38:26,120 --> 00:38:28,650 Man nav īsti atcerēties, ko const ir, bet tagad paziņojums - 867 00:38:28,650 --> 00:38:31,480 un Jums var būt redzējis šo jau tad, kad Jūs esat izmantot cilvēks lapas, ja jūs 868 00:38:31,480 --> 00:38:32,390 to visu - 869 00:38:32,390 --> 00:38:36,220 ka char zvaigzne ir tikai sinonīms ar auklu. 870 00:38:36,220 --> 00:38:40,440 >> Tātad, tas salīdzina divas virknes, S1 un S2, un tas atgriež veselu skaitli, mazāk 871 00:38:40,440 --> 00:38:44,930 par vai vienāda ar vai lielāka par nulli ja S1 ir konstatēts, attiecīgi, lai būtu 872 00:38:44,930 --> 00:38:47,450 mazāk nekā, vai spēles, vai būt lielāks nekā S2. 873 00:38:47,450 --> 00:38:51,220 Tas ir tikai ļoti sarežģīts veids, kā pateikt ka virkne salīdzināt peļņu 874 00:38:51,220 --> 00:38:55,760 nulle, ja divas stīgas ir intuitīvi identiski, rakstzīme 875 00:38:55,760 --> 00:38:57,120 rakstzīme raksturs. 876 00:38:57,120 --> 00:38:59,970 >> Tā atgriež negatīvu skaitli, ja s, alfabētiski, ir paredzēts 877 00:38:59,970 --> 00:39:01,010 ierasties t. 878 00:39:01,010 --> 00:39:05,300 Vai atgriež pozitīvu skaitli, ja s ir paredzēts nākt pēc t 879 00:39:05,300 --> 00:39:06,170 alfabētiskā secībā. 880 00:39:06,170 --> 00:39:08,360 Tātad ar šo vienkāršo funkciju, varētu Jūs, piemēram, šķirot 881 00:39:08,360 --> 00:39:09,770 Visa ķekars vārdu? 882 00:39:09,770 --> 00:39:13,984 >> Tātad šo jauno versiju, es esmu gatavojas iet uz priekšu un veikt compare1. 883 00:39:13,984 --> 00:39:15,750 Dot slīpsvītra salīdzināt vienu. 884 00:39:15,750 --> 00:39:18,030 Es ierakstiet sveiki visās mazajiem burtiem. 885 00:39:18,030 --> 00:39:20,300 Es esmu gatavojas rakstīt sveiki visās mazos vēlreiz. 886 00:39:20,300 --> 00:39:23,340 Un par laimi, tagad saprot, Es drukāti to pašu. 887 00:39:23,340 --> 00:39:27,520 >> Tajā pašā laikā, ja es rakstīt sveiki ar mazajiem lietu un HELLO ar lielajiem burtiem un 888 00:39:27,520 --> 00:39:29,710 salīdzināt tos, es drukāti dažādas lietas. 889 00:39:29,710 --> 00:39:32,530 Jo ne tikai ir adreses dažādi, bet mēs esam salīdzinot 890 00:39:32,530 --> 00:39:35,350 dažādas rakstzīmes atkal un atkal. 891 00:39:35,350 --> 00:39:37,320 >> Nu iesim un noteikt vienu Otra problēma tagad. 892 00:39:37,320 --> 00:39:41,590 Ļaujiet man atvērt ar vienu versiju kopija, kas tagad risina 893 00:39:41,590 --> 00:39:42,900 šis jautājums ir šāds. 894 00:39:42,900 --> 00:39:45,650 Un tas viens ir skatīsies nedaudz sarežģītāka. 895 00:39:45,650 --> 00:39:49,320 Bet, ja jūs domājat par to, ko problēma mums nepieciešams, lai atrisinātu, cerams, tas būs 896 00:39:49,320 --> 00:39:51,870 skaidrs tikai brīdi tagad. 897 00:39:51,870 --> 00:39:57,280 >> Tātad, šī pirmā rinda, palija sākums t, kas lajs izteiksmē varētu kāds ieteikt 898 00:39:57,280 --> 00:39:59,450 Ko tas līnija šeit nozīmē? 899 00:39:59,450 --> 00:40:01,050 Char zvaigzne t, kas ir tas dara? 900 00:40:01,050 --> 00:40:06,660 901 00:40:06,660 --> 00:40:07,210 >> Labs. 902 00:40:07,210 --> 00:40:09,500 Izveidot rādītāju uz dažām vietas atmiņā. 903 00:40:09,500 --> 00:40:10,930 Un ļaujiet man noslīpēt mazliet. 904 00:40:10,930 --> 00:40:17,180 Deklarē mainīgo, kas saglabās adrese daži char atmiņā, tikko 905 00:40:17,180 --> 00:40:18,480 lai būtu nedaudz vairāk atbilstošu. 906 00:40:18,480 --> 00:40:21,210 >> Labi, tāpēc tagad labajā pusē, es esmu nekad neesmu redzējis kādu no šīm funkcijām 907 00:40:21,210 --> 00:40:22,660 pirms malloc. 908 00:40:22,660 --> 00:40:26,980 Bet ko var tas nozīmē? 909 00:40:26,980 --> 00:40:28,050 Sadali atmiņas. 910 00:40:28,050 --> 00:40:29,410 Atmiņas sadalījumu. 911 00:40:29,410 --> 00:40:33,050 >> Tātad izrādās, līdz šim, mēs nav īsti bijis spēcīgs veids 912 00:40:33,050 --> 00:40:36,210 lūdzot operētājsistēmu, iedodiet man dažas atmiņas. 913 00:40:36,210 --> 00:40:39,980 Drīzāk, mums tagad ir tā saucamā funkcija malloc, kas dara tieši tā. 914 00:40:39,980 --> 00:40:42,960 Pat ja tas ir mazliet uzmanību tieši tagad, ievērosiet, ka 915 00:40:42,960 --> 00:40:46,200 starp abām iekavās ir tikai būs vairāki. 916 00:40:46,200 --> 00:40:48,510 Kur es esmu ievadījis attiecīgo zīmes var būt vairāki. 917 00:40:48,510 --> 00:40:51,020 >> Un tas skaitlis nozīmē, man 10 baiti. 918 00:40:51,020 --> 00:40:52,320 Dodiet man 20 baiti. 919 00:40:52,320 --> 00:40:53,820 Dodiet man 100 baiti. 920 00:40:53,820 --> 00:40:56,500 Un malloc darīs visu iespējamo, lai lūgt operētājsistēmu - 921 00:40:56,500 --> 00:40:57,630 Linux, šajā gadījumā - 922 00:40:57,630 --> 00:40:59,630 hey, ir viņu 100 baiti RAM pieejams? 923 00:40:59,630 --> 00:41:04,320 Ja tā, tad atgriezīsies tie baiti man ar atgriežoties adresi, kuru no 924 00:41:04,320 --> 00:41:06,610 šie baiti, varbūt? 925 00:41:06,610 --> 00:41:07,610 Ļoti pirmais. 926 00:41:07,610 --> 00:41:10,460 >> Tātad arī šeit - un tas ir dominējošais C, jebkurā laikā jūs esat 927 00:41:10,460 --> 00:41:11,680 nodarbojas ar adresēm? 928 00:41:11,680 --> 00:41:15,830 Jūs esat gandrīz vienmēr nodarbojas ar Pirmā šāda adrese, nav svarīgi, cik liels 929 00:41:15,830 --> 00:41:19,490 rieciens atmiņas jums tiek nodotas atpakaļ, lai runāt. 930 00:41:19,490 --> 00:41:20,880 >> Tātad, pieņemsim ienirt šeit. 931 00:41:20,880 --> 00:41:23,940 Es cenšos, lai sadalītu to, kā daudzi baiti, tieši tā? 932 00:41:23,940 --> 00:41:24,080 Labi. 933 00:41:24,080 --> 00:41:26,090 Virknes garums s - pieņemsim do konkrētu piemēru. 934 00:41:26,090 --> 00:41:30,700 Ja u ir sveiki, H-E-L-L-O, kas ir virknes garums s, protams? 935 00:41:30,700 --> 00:41:32,010 Tātad, tas ir pieci. 936 00:41:32,010 --> 00:41:34,590 Bet es esmu dara plus 1 par to, kāpēc? 937 00:41:34,590 --> 00:41:37,700 Kāpēc es vēlos sešas baiti piecu vietā? 938 00:41:37,700 --> 00:41:38,790 Null raksturs. 939 00:41:38,790 --> 00:41:41,210 >> Es nevēlos atstāt off šo īpašu null raksturs. 940 00:41:41,210 --> 00:41:45,160 Jo, ja es drīkstu kopiju Sveiki un tikai do H-E-L-L-O, bet man nav iekļauti 941 00:41:45,160 --> 00:41:50,160 ka īpašo raksturu, dators varētu būt, nejauši, slīpsvītru 942 00:41:50,160 --> 00:41:51,730 nullei tur par mani. 943 00:41:51,730 --> 00:41:55,570 Un tāpēc, ja es cenšos izdomāt garums kopiju, es varētu domāt, ka 944 00:41:55,570 --> 00:41:59,360 tas ir 20 rakstzīmes garš, vai miljons rakstzīmēm, ja es tikai nekad nenotiks 945 00:41:59,360 --> 00:42:01,050 lai sasniegtu slīpsvītru nulli. 946 00:42:01,050 --> 00:42:05,780 >> Tāpēc mums ir seši baiti uzglabāt H-E-L-L-O, slīpsvītra nulle. 947 00:42:05,780 --> 00:42:07,870 Un tad tas ir tikai līdz būt super Anal. 948 00:42:07,870 --> 00:42:10,700 Pieņemsim, ka es aizmirst to, ko no char izmērs ir. 949 00:42:10,700 --> 00:42:12,020 Mēs pastāvīgi sakot, tas ir viens baits. 950 00:42:12,020 --> 00:42:12,860 Un tas parasti ir. 951 00:42:12,860 --> 00:42:15,425 Teorētiski tas varētu būt kaut kas atšķirīgs, par citu Mac vai 952 00:42:15,425 --> 00:42:16,250 atšķirīgs PC. 953 00:42:16,250 --> 00:42:19,650 >> Tātad izrādās, tur ir šis operators sauc sizeof ka, ja jūs nodot to uz 954 00:42:19,650 --> 00:42:22,680 nosaukums datu tipu - piemēram, char, vai int, vai peldēt - 955 00:42:22,680 --> 00:42:26,930 tas jums pateiks, dinamiski, cik baiti char aizņem par šo 956 00:42:26,930 --> 00:42:28,090 konkrētu datoru. 957 00:42:28,090 --> 00:42:31,360 >> Tātad, tas ir faktiski tikai kā saka reizes 1 vai 958 00:42:31,360 --> 00:42:32,440 reizes neko. 959 00:42:32,440 --> 00:42:36,340 Bet es to daru tikai, lai būtu super anālais, ka tikai gadījumā, ja char atšķiras 960 00:42:36,340 --> 00:42:40,610 datorā, salīdzinot ar manējo, šādā veidā matemātika ir vienmēr gatavojas pārbaudīt. 961 00:42:40,610 --> 00:42:43,720 >> Visbeidzot, noteikti šeit es pārbaudīt null, , kas vienmēr ir laba prakse - atkal, 962 00:42:43,720 --> 00:42:44,920 jebkurā laikā, mēs esam nodarbojas ar rādītājiem. 963 00:42:44,920 --> 00:42:47,520 Ja malloc nevarēja dot mani seši byes - kas ir 964 00:42:47,520 --> 00:42:49,210 Maz ticams, taču tikai gadījumā - 965 00:42:49,210 --> 00:42:50,730 atgriezties vienu uzreiz. 966 00:42:50,730 --> 00:42:53,290 Un tagad, iet uz priekšu un kopēt string šādi. 967 00:42:53,290 --> 00:42:57,240 Un tas ir pazīstams sintaksi, lai arī citā lomā. 968 00:42:57,240 --> 00:43:01,210 >> Es iešu uz priekšu un iegūt virkni no s garumu un uzglabāt to n. 969 00:43:01,210 --> 00:43:06,620 Es esmu tam gatavojas atkārtot no i vienāds nulles līdz un ieskaitot N, 970 00:43:06,620 --> 00:43:08,410 lielāks par vai vienāds ar. 971 00:43:08,410 --> 00:43:13,540 Tā, ka uz katra atkārtojuma, man kārtējā raksturs s, kas i- 972 00:43:13,540 --> 00:43:15,380 raksturu t. 973 00:43:15,380 --> 00:43:18,190 >> Tātad, kas īsti notiek zem pārsegs šeit? 974 00:43:18,190 --> 00:43:22,140 Nu ja tas, piemēram, ir s - 975 00:43:22,140 --> 00:43:26,400 un es ir ievadījis vārdu H-E-L-L-O un tur slīpsvītru nulle. 976 00:43:26,400 --> 00:43:29,020 Un atkal, tas ir s norādot šeit. 977 00:43:29,020 --> 00:43:30,830 Un šeit nu ir t. 978 00:43:30,830 --> 00:43:34,860 >> Un tas ir vērsta tagad kopiju atmiņas, vai ne? 979 00:43:34,860 --> 00:43:37,340 Malloc man ir devis visu rieciens atmiņas. 980 00:43:37,340 --> 00:43:41,440 Es nezinu, sākotnēji, kas ir jebkurā no šīm vietām. 981 00:43:41,440 --> 00:43:44,340 Tāpēc es esmu gatavojas domāt par šiem, kā viss ķekars jautājuma zīmes. 982 00:43:44,340 --> 00:43:50,190 >> Bet, tiklīdz es sāku looping no nulles uz augšu pa garumu, S, T 983 00:43:50,190 --> 00:43:52,790 kronšteins nulle un t bracket 1 - 984 00:43:52,790 --> 00:43:55,080 un es nolikšu šo tagad pie griestiem - 985 00:43:55,080 --> 00:44:04,190 t kronšteins nulle un s kronšteins nulle nozīmē ka es esmu būs kopēšanu 986 00:44:04,190 --> 00:44:09,875 iteratīvi h šeit, E-L-L-O. Plus, jo man bija plus 987 00:44:09,875 --> 00:44:12,370 1, slīpsvītru nulle. 988 00:44:12,370 --> 00:44:19,060 >> Tāpēc tagad, ja salīdzināt-1.c, galu galā, ja es izdrukāt 989 00:44:19,060 --> 00:44:24,760 kapitalizācija t, mums vajadzētu redzēt, ka s ir nemainīgs. 990 00:44:24,760 --> 00:44:26,090 Ļaujiet man iet uz priekšu tagad darīt. 991 00:44:26,090 --> 00:44:28,630 Tātad, lai copy1. 992 00:44:28,630 --> 00:44:30,860 Dot slīpsvītra copy1. 993 00:44:30,860 --> 00:44:33,670 Es esmu gatavojas rakstīt sveiki, Enter. 994 00:44:33,670 --> 00:44:37,430 Un tagad paziņojums, tikai kopiju ir kapitalizēti. 995 00:44:37,430 --> 00:44:40,890 Jo man patiešām ir divi gabalos atmiņas. 996 00:44:40,890 --> 00:44:44,390 >> Diemžēl, jūs varat darīt daži diezgan slikti un diezgan bīstamas lietas šeit. 997 00:44:44,390 --> 00:44:49,290 Ļaujiet man uzvilkt piemēru šeit tagad, kas dod mums piemēru, daži 998 00:44:49,290 --> 00:44:51,540 dažādas līnijas. 999 00:44:51,540 --> 00:44:56,040 Tik vienkārši intuitīvi šeit, pirmā līnija koda, int zvaigzne x, deklarē 1000 00:44:56,040 --> 00:44:57,340 mainīgo sauc x. 1001 00:44:57,340 --> 00:44:58,810 Un, kas ir datu tips Šī mainīgā? 1002 00:44:58,810 --> 00:45:01,820 1003 00:45:01,820 --> 00:45:04,290 Kas ir datu tips šim mainīgajam? 1004 00:45:04,290 --> 00:45:06,980 Tas nebija cliffhanger. 1005 00:45:06,980 --> 00:45:08,350 >> Datu tips ir int zvaigzne. 1006 00:45:08,350 --> 00:45:12,600 Tātad, ko tas nozīmē? x būs uzglabāt adresi int. 1007 00:45:12,600 --> 00:45:13,520 Vienkārši. 1008 00:45:13,520 --> 00:45:16,220 Y gatavojas glabāt adresi int. 1009 00:45:16,220 --> 00:45:18,390 Kāds ir trešais rindā koda dara tur? 1010 00:45:18,390 --> 00:45:21,850 Tas piešķirot cik baiti, visticamāk? 1011 00:45:21,850 --> 00:45:22,350 Četri. 1012 00:45:22,350 --> 00:45:25,460 Sakarā ar izmēru int ir kopumā četri, malloc no četriem sniedz 1013 00:45:25,460 --> 00:45:29,950 mani atpakaļ adresi rieciens atmiņa, no, kuru bytes vispirms ir 1014 00:45:29,950 --> 00:45:32,110 uzglabā tagad x. 1015 00:45:32,110 --> 00:45:34,410 >> Tagad mēs esam pārvietojas nedaudz ātrāk. 1016 00:45:34,410 --> 00:45:35,760 Star x nozīmē ko? 1017 00:45:35,760 --> 00:45:38,480 1018 00:45:38,480 --> 00:45:42,590 Tas nozīmē iet uz šo adresi un īstenot to, ko skaitu tur? 1019 00:45:42,590 --> 00:45:43,870 Put numur 42 tur. 1020 00:45:43,870 --> 00:45:47,590 Star y nozīmē iet ar to, kas ir pie y un nodot numuru 13 tur. 1021 00:45:47,590 --> 00:45:48,600 >> Bet pagaidiet minūti. 1022 00:45:48,600 --> 00:45:51,640 Kas ir y šobrīd? 1023 00:45:51,640 --> 00:45:54,950 Kāda adrese ir y uzglabāšana? 1024 00:45:54,950 --> 00:45:55,770 Mēs nezinām, vai ne? 1025 00:45:55,770 --> 00:45:59,230 Mēs nekad vienreiz izmantot uzdevumu operators iesaistot y. 1026 00:45:59,230 --> 00:46:03,370 Tātad y kas deklarēti otrajā rindā kods ir tikai daži atkritumu vērtību, liela 1027 00:46:03,370 --> 00:46:04,760 jautājuma zīme, lai runāt. 1028 00:46:04,760 --> 00:46:07,230 Tas varētu būt vērsta nejauši kaut ko atmiņā, kas 1029 00:46:07,230 --> 00:46:08,340 parasti ir slikti. 1030 00:46:08,340 --> 00:46:13,540 >> Tātad, tiklīdz mēs hit šīs līnijas tur, star y vienāds 13, kaut ko sliktu, 1031 00:46:13,540 --> 00:46:17,220 kaut kas ļoti slikts ir aptuveni notikt ar mīkstās. 1032 00:46:17,220 --> 00:46:25,810 Tātad, pieņemsim redzēt, kas notiek, lai galu galā kas notiek ar Binky šeit, šajā brīdī 1033 00:46:25,810 --> 00:46:26,200 vai arī tā izskatās. 1034 00:46:26,200 --> 00:46:26,490 >> [VIDEO PLAYBACK] 1035 00:46:26,490 --> 00:46:26,745 >> -Hei, mīkstās. 1036 00:46:26,745 --> 00:46:27,000 Mosties. 1037 00:46:27,000 --> 00:46:29,296 Ir pienācis laiks, lai rādītāja fun. 1038 00:46:29,296 --> 00:46:30,680 >> -Kas tas ir? 1039 00:46:30,680 --> 00:46:31,980 Uzziniet par norādes? 1040 00:46:31,980 --> 00:46:34,010 Ak, goodie. 1041 00:46:34,010 --> 00:46:37,220 >> -Nu, lai sāktu, es domāju, mēs esam būs nepieciešama pāris norādes. 1042 00:46:37,220 --> 00:46:37,930 >> -Labi. 1043 00:46:37,930 --> 00:46:41,650 Šis kods piešķir divas norādes kas var norādīt uz veseliem skaitļiem. 1044 00:46:41,650 --> 00:46:43,760 >> -Labi, labi, es redzu divas norādes. 1045 00:46:43,760 --> 00:46:45,850 Bet tie nav, šķiet, ir norādot uz kaut ko. 1046 00:46:45,850 --> 00:46:46,490 >> -Tas ir labi. 1047 00:46:46,490 --> 00:46:48,630 Sākotnēji, norādes nav norāda uz kaut ko. 1048 00:46:48,630 --> 00:46:51,700 Lietas, tie norāda uz sauc pointees, un to izveidošanas ir 1049 00:46:51,700 --> 00:46:52,850 atsevišķa solis. 1050 00:46:52,850 --> 00:46:53,740 >> -Ak, labi, labi. 1051 00:46:53,740 --> 00:46:54,500 Es zināju, ka. 1052 00:46:54,500 --> 00:46:56,270 Par pointees ir atsevišķi. 1053 00:46:56,270 --> 00:46:58,553 Tātad, kā jūs piešķirt pointee? 1054 00:46:58,553 --> 00:46:59,480 >> -Labi. 1055 00:46:59,480 --> 00:47:03,707 Nu, šis kods piešķir jaunu skaitļu pointee, un šī daļa nosaka x 1056 00:47:03,707 --> 00:47:05,520 norādīt uz to. 1057 00:47:05,520 --> 00:47:06,760 >> -Hei, kas izskatās labāk. 1058 00:47:06,760 --> 00:47:08,520 Tātad, lai to kaut ko darīt. 1059 00:47:08,520 --> 00:47:09,530 >> -Labi. 1060 00:47:09,530 --> 00:47:14,110 Es dereference rādītāju x uzglabāt skaitlis 42 savā pointee. 1061 00:47:14,110 --> 00:47:17,660 Par šo triks, man būs nepieciešams savu burvju zizlis no dereferencing. 1062 00:47:17,660 --> 00:47:20,695 >> -Jūsu burvju nūjiņa no dereferencing? 1063 00:47:20,695 --> 00:47:22,632 Uh, tas ir lieliski. 1064 00:47:22,632 --> 00:47:24,620 >> -Tas ir tas kods izskatās. 1065 00:47:24,620 --> 00:47:27,526 Es ņemšu tikai izveidot numuru, un - 1066 00:47:27,526 --> 00:47:28,250 >> -Hei, paskaties. 1067 00:47:28,250 --> 00:47:29,680 Tur tas notiek. 1068 00:47:29,680 --> 00:47:34,520 Šādi rīkojoties ar dereference par x šādi bultiņas, lai piekļūtu savu pointee. 1069 00:47:34,520 --> 00:47:36,690 Šajā gadījumā, lai saglabātu 42, kas tur. 1070 00:47:36,690 --> 00:47:40,890 Hei, mēģināt to izmantot, lai saglabātu numuru 13 caur otru rādītāju, y. 1071 00:47:40,890 --> 00:47:42,125 >> -Labi. 1072 00:47:42,125 --> 00:47:46,810 Es ņemšu tikai iet pa šeit y un get skaitlis 13, kas izveidota. 1073 00:47:46,810 --> 00:47:50,890 Un tad paņem zizli no dereferencing un vienkārši - 1074 00:47:50,890 --> 00:47:52,430 Eh! 1075 00:47:52,430 --> 00:47:53,030 >> -Ak, hey. 1076 00:47:53,030 --> 00:47:54,610 Tas nestrādāja. 1077 00:47:54,610 --> 00:47:58,200 Teiksim, mīkstās, es nedomāju, ka dereferencing y ir laba ideja, 1078 00:47:58,200 --> 00:48:01,370 tāpēc izveido pointee ir atsevišķs solis. 1079 00:48:01,370 --> 00:48:03,460 Un es nedomāju, ka mēs kādreiz darīja. 1080 00:48:03,460 --> 00:48:03,810 >> -Hmm. 1081 00:48:03,810 --> 00:48:05,160 Labs punkts. 1082 00:48:05,160 --> 00:48:07,410 >> -Jā, mēs piešķīra rādītāja y. 1083 00:48:07,410 --> 00:48:10,045 Bet mēs nekad iestatīt tā, lai norāda uz pointee. 1084 00:48:10,045 --> 00:48:10,490 >> -Hmm. 1085 00:48:10,490 --> 00:48:12,170 Ļoti uzmanīgs. 1086 00:48:12,170 --> 00:48:13,790 >> -Hei, jūs meklējat labi tur, mīkstās. 1087 00:48:13,790 --> 00:48:16,920 Vai jūs varat salabot, lai vec punkti uz to pašu pointee as X? 1088 00:48:16,920 --> 00:48:17,810 >> -Protams. 1089 00:48:17,810 --> 00:48:20,300 Es izmantot savu burvju nūjiņu, par rādītājs uzdevumu. 1090 00:48:20,300 --> 00:48:22,240 >> -Vai tas būs problēmas, piemēram, pirms? 1091 00:48:22,240 --> 00:48:22,665 >> -Nē. 1092 00:48:22,665 --> 00:48:24,300 Tas nav pieskarties pointees. 1093 00:48:24,300 --> 00:48:27,880 Tas tikai maina vienu rādītāju norādīt uz to pašu kā cita. 1094 00:48:27,880 --> 00:48:28,970 >> -Ak, es redzu. 1095 00:48:28,970 --> 00:48:31,730 Tagad y norāda uz tajā pašā vietā kā x. 1096 00:48:31,730 --> 00:48:32,450 Tik jāgaida. 1097 00:48:32,450 --> 00:48:33,490 Tagad y ir fiksēts. 1098 00:48:33,490 --> 00:48:34,630 Tā ir pointee. 1099 00:48:34,630 --> 00:48:36,520 Tātad jūs varat izmēģināt zizli gada dereferencing atkal 1100 00:48:36,520 --> 00:48:39,200 nosūtīt 13 pāri. 1101 00:48:39,200 --> 00:48:39,840 >> -Labi. 1102 00:48:39,840 --> 00:48:41,570 Šeit iet. 1103 00:48:41,570 --> 00:48:42,870 >> -Hei, paskaties uz to. 1104 00:48:42,870 --> 00:48:44,320 Tagad dereferencing darbus y. 1105 00:48:44,320 --> 00:48:47,020 Un tāpēc, ka norādes tiek daloties ka viens pointee, viņi 1106 00:48:47,020 --> 00:48:48,585 gan redzēt 13. 1107 00:48:48,585 --> 00:48:49,040 >> -Jā. 1108 00:48:49,040 --> 00:48:49,670 Sharing. 1109 00:48:49,670 --> 00:48:50,380 Neatkarīgi. 1110 00:48:50,380 --> 00:48:52,290 Tātad mēs ejam pārslēgtos vietām tagad? 1111 00:48:52,290 --> 00:48:52,970 >> -Ak, paskaties. 1112 00:48:52,970 --> 00:48:54,150 Mēs esam no laika. 1113 00:48:54,150 --> 00:48:55,200 >> -Bet - 1114 00:48:55,200 --> 00:48:57,060 >> -Tikai atceraties trīs rādītājs noteikumiem. 1115 00:48:57,060 --> 00:49:00,100 Numur viens, pamatstruktūra ir tas, ka jums ir rādītājs. 1116 00:49:00,100 --> 00:49:02,170 Un tas norāda vairāk nekā uz pointee. 1117 00:49:02,170 --> 00:49:04,160 Bet rādītājs un pointee ir atsevišķi. 1118 00:49:04,160 --> 00:49:06,460 Un kopējā kļūda ir izveidot rādītāju, bet 1119 00:49:06,460 --> 00:49:08,540 aizmirsis dota pointee. 1120 00:49:08,540 --> 00:49:12,460 >> Numurs divi, rādītājs dereferencing sākas gada rādītāja, un šādi tās 1121 00:49:12,460 --> 00:49:14,570 arrow vairāk, lai piekļūtu savu pointee. 1122 00:49:14,570 --> 00:49:18,640 Kā mēs visi zinām, tas darbojas tikai tad, ja ir pointee, kas izpaužas atpakaļ uz 1123 00:49:18,640 --> 00:49:19,790 noteikums numur viens. 1124 00:49:19,790 --> 00:49:23,670 >> Numuru trīs, rādītājs uzdevums aizņem viens rādītājs un izmaiņas to norādīt uz 1125 00:49:23,670 --> 00:49:25,850 pats pointee kā cits rādītājs. 1126 00:49:25,850 --> 00:49:27,840 Tātad, pēc uzdevuma, divas norādes būs 1127 00:49:27,840 --> 00:49:29,430 norāda uz to pašu pointee. 1128 00:49:29,430 --> 00:49:31,600 Dažreiz tas ir sauc par koplietošanu. 1129 00:49:31,600 --> 00:49:33,430 Un tas viss notiek ar to, tiešām. 1130 00:49:33,430 --> 00:49:33,840 Bye bye tagad. 1131 00:49:33,840 --> 00:49:34,300 >> [END VIDEO PLAYBACK] 1132 00:49:34,300 --> 00:49:36,940 >> DAVID Malan: Tik daudz par norādes, vairāk mīkstās nākamajā nedēļā. 1133 00:49:36,940 --> 00:49:38,190 Mēs tiksimies pirmdien. 1134 00:49:38,190 --> 00:49:42,187