1 00:00:00,000 --> 00:00:03,269 >> [Predvaja glasba] 2 00:00:03,269 --> 00:00:05,391 3 00:00:05,391 --> 00:00:06,640 CAMILLE REKHSON: Živjo, vsi. 4 00:00:06,640 --> 00:00:10,120 Dobrodošli na CS50 kvizu nič seja pregled. 5 00:00:10,120 --> 00:00:10,770 Sem Camille. 6 00:00:10,770 --> 00:00:13,140 In bom, da bo tam čez nekaj temah z vami 7 00:00:13,140 --> 00:00:16,890 danes fantje, da vam pomaga pripravo na kviz. 8 00:00:16,890 --> 00:00:20,840 Torej, tukaj je naš neizčrpen seznam tem boste 9 00:00:20,840 --> 00:00:23,210 morajo biti seznanjeni z za kviz. 10 00:00:23,210 --> 00:00:25,740 Ti so bili neposredno iz učnega načrta. 11 00:00:25,740 --> 00:00:26,990 Vem, da se zdi, kot veliko. 12 00:00:26,990 --> 00:00:30,870 Ampak verjemi mi, ste se naučili vse te stvari v zadnjih nekaj tednih. 13 00:00:30,870 --> 00:00:33,210 >> Torej bomo zagotovo se dogaja čez veliko teh danes. 14 00:00:33,210 --> 00:00:35,825 Ampak tudi trajalo nekaj časa na vaši lastna pregledati te stvari. 15 00:00:35,825 --> 00:00:38,450 In če niste bili seznanjeni z kaj nekatere od teh stvari so, 16 00:00:38,450 --> 00:00:42,400 poskrbite, da boste vprašati, eden izmed nas. 17 00:00:42,400 --> 00:00:45,985 Tudi za uradni besedo na kviz, pojdite na to povezavo. 18 00:00:45,985 --> 00:00:48,860 To bo imelo vse podatke, pri kateri sobi boste morali iti v, 19 00:00:48,860 --> 00:00:52,960 razideta po abecedi, in tudi nekaj nasvetov o tem, kaj materialov 20 00:00:52,960 --> 00:00:56,470 morate biti študira, in kakšne vrste kviz vprašanja, ki jih lahko pričakujemo. 21 00:00:56,470 --> 00:01:01,090 Torej, se prepričajte, da preverite, ali ven. 22 00:01:01,090 --> 00:01:03,810 >> Prav tako je nekaj nasvetov za takrat, ko vas se pripravljajo za izpit. 23 00:01:03,810 --> 00:01:05,730 Vadite kodiranje na papirju. 24 00:01:05,730 --> 00:01:09,280 Vem, da ste gotten navajeni, da preverjanje IDE za vaše napake za vas, 25 00:01:09,280 --> 00:01:12,280 in it's-- ko ste ga tipkanje up, to je malo drugačen kot ob 26 00:01:12,280 --> 00:01:13,113 pisati stvari. 27 00:01:13,113 --> 00:01:14,560 Torej vaditi delaš nekaj kodiranja. 28 00:01:14,560 --> 00:01:17,910 Nekaj ​​dobrih funkcije za opravljanje početje so strlen in atoi, 29 00:01:17,910 --> 00:01:20,450 vidim, če lahko napišete tistih, ki se izvajajo na svoje. 30 00:01:20,450 --> 00:01:21,970 Bodite seznanjeni s problemom nizov. 31 00:01:21,970 --> 00:01:24,200 Večina let obstajajo Vprašanja, ki se nanašajo 32 00:01:24,200 --> 00:01:25,700 za nekaj problemov nastavljena materiala. 33 00:01:25,700 --> 00:01:30,480 Zato poskrbite, da boste razumeli kako narediti vse problemskih sklopov v. 34 00:01:30,480 --> 00:01:35,240 >> Poskusite početje nekaterih starih kvizov pod 75 minut časovne omejitve. 35 00:01:35,240 --> 00:01:37,290 Veliko kvizov lahko nekako dolgo. 36 00:01:37,290 --> 00:01:39,680 Torej, to je dober način, da bi sami nekaj prakse, 37 00:01:39,680 --> 00:01:41,650 in kako dolgo bo vas, in kako vam 38 00:01:41,650 --> 00:01:45,360 bi moral razdeliti svoj čas, da poskrbite, boste končali vse do konca. 39 00:01:45,360 --> 00:01:49,690 In tudi, boste dobili eno stran, dvostranski referenčna lista 40 00:01:49,690 --> 00:01:52,962 da lahko napišete karkoli si želijo na uporabljati v kvizu. 41 00:01:52,962 --> 00:01:54,670 Torej, če ste ustvarjanju da je, da je tudi 42 00:01:54,670 --> 00:01:57,860 res odličen način, da študija, ker boste nekako se pregleduje stvari 43 00:01:57,860 --> 00:01:59,610 kot ste ga pisno. 44 00:01:59,610 --> 00:02:05,421 >> Torej vsa splošna vprašanja o kviz, ali kako to deluje? 45 00:02:05,421 --> 00:02:05,921 Ja. 46 00:02:05,921 --> 00:02:09,167 >> OBČINSTVO: Bo, da seznam tem ki ste jo pravkar pokazala voljo, da nas 47 00:02:09,167 --> 00:02:09,820 na spletu? 48 00:02:09,820 --> 00:02:12,736 >> CAMILLE REKHSON: Ta celoten diapozitiv Predstava bo objavljen na spletni strani. 49 00:02:12,736 --> 00:02:16,040 Tudi video današnjega pregleda seja bo na spletni strani. 50 00:02:16,040 --> 00:02:19,250 Torej, ne skrbite preveč o pisanjem stvari navzdol v celotnem besedilu. 51 00:02:19,250 --> 00:02:20,437 Vse bo tam. 52 00:02:20,437 --> 00:02:21,270 Vsa druga vprašanja? 53 00:02:21,270 --> 00:02:23,810 54 00:02:23,810 --> 00:02:26,960 OK, začnimo. 55 00:02:26,960 --> 00:02:30,860 >> Torej, ena stvar, da so seznanjeni z je različne vrste podatkov in velikost 56 00:02:30,860 --> 00:02:32,486 ki jih bodo vzeli na. 57 00:02:32,486 --> 00:02:35,360 To je lahko tudi velika stvar, da napišite na vašem referenčnem stanja, 58 00:02:35,360 --> 00:02:37,240 Samo poskrbite, da boste zapomniti vse te. 59 00:02:37,240 --> 00:02:39,200 Ampak-- tako črke so 1 bajt. 60 00:02:39,200 --> 00:02:40,700 Ints so 4 bajte. 61 00:02:40,700 --> 00:02:44,450 Dolgo, dolgo, kar je v bistvu bolj Prostor za celo število, je 8 bajtov. 62 00:02:44,450 --> 00:02:46,560 Plovec je 4 bajte. 63 00:02:46,560 --> 00:02:50,620 Dvojno, ki v bistvu vam daje več prostora za shranjevanje plovec, je 8 bajtov. 64 00:02:50,620 --> 00:02:54,210 In potem kazalec je tudi 8 bajtov. 65 00:02:54,210 --> 00:02:56,270 Vsa vprašanja o teh? 66 00:02:56,270 --> 00:03:00,380 67 00:03:00,380 --> 00:03:05,580 >> Torej, binarna je še ena tema, ki smo jih zajeti malo ta semester. 68 00:03:05,580 --> 00:03:07,910 Torej, dajmo narediti nekaj vadite s pretvorbo 69 00:03:07,910 --> 00:03:10,000 med binarno in decimalke. 70 00:03:10,000 --> 00:03:13,950 Torej ima kdo kakšno idejo, kaj da prvi bi bilo? 71 00:03:13,950 --> 00:03:32,840 72 00:03:32,840 --> 00:03:34,860 Kdorkoli? 73 00:03:34,860 --> 00:03:36,270 Ja, to je 42. 74 00:03:36,270 --> 00:03:39,200 Torej, če se spomnite, vsak od krajev v binarno 75 00:03:39,200 --> 00:03:41,860 je v bistvu kot 2 na oblast, ta kraj je. 76 00:03:41,860 --> 00:03:43,750 >> Tako da prvi lokaciji je 2 do 0 moči. 77 00:03:43,750 --> 00:03:46,710 In imamo 0 tam, tako da nič ne obstaja. 78 00:03:46,710 --> 00:03:48,700 Naslednji kraj je med 2 in prva moč. 79 00:03:48,700 --> 00:03:51,220 In imamo 1 tam, tako da je v bistvu 2. 80 00:03:51,220 --> 00:03:53,642 Naslednji kraj je od 2 do drugi, ki je 4. 81 00:03:53,642 --> 00:03:54,850 Nimamo ničesar tam. 82 00:03:54,850 --> 00:03:59,390 Naslednji kraj več kot 2 do tretji, kar bi bilo 8. 83 00:03:59,390 --> 00:04:02,230 In mi imamo eno tam. 84 00:04:02,230 --> 00:04:03,470 In smo nadaljuj. 85 00:04:03,470 --> 00:04:07,720 Da last-- najdlje do leva je, če imamo 32. 86 00:04:07,720 --> 00:04:13,437 In tako smo v bistvu imeli 32 plus 8 plus 2, da bi dobili 42. 87 00:04:13,437 --> 00:04:14,020 Kakšno vprašanje? 88 00:04:14,020 --> 00:04:15,820 >> OBČINSTVO: Kaj je indeks za? 89 00:04:15,820 --> 00:04:17,399 >> CAMILLE REKHSON: indeks v bistvu nam pove, da je binarno. 90 00:04:17,399 --> 00:04:18,230 Torej, tam je 2 tam. 91 00:04:18,230 --> 00:04:20,579 Če ne bi bilo like-- v naslednjem eno, ali ko smo pretvorbo decimalko 92 00:04:20,579 --> 00:04:24,350 za binarno, tam je 10 nam kaže, da ta številka je prvotno decimalko. 93 00:04:24,350 --> 00:04:25,194 >> OBČINSTVO: Hvala. 94 00:04:25,194 --> 00:04:26,110 >> CAMILLE REKHSON: Ja. 95 00:04:26,110 --> 00:04:28,790 Vsa druga vprašanja na tem enem? 96 00:04:28,790 --> 00:04:31,110 OK, tako da poskusimo naslednji ena potem, decimalno na binarno. 97 00:04:31,110 --> 00:04:35,034 Torej ob 50 in dajanje, da je v binarno. 98 00:04:35,034 --> 00:04:35,950 Kako bi to naredil? 99 00:04:35,950 --> 00:04:44,331 100 00:04:44,331 --> 00:04:45,317 Ja. 101 00:04:45,317 --> 00:04:49,754 >> OBČINSTVO: 110.010. 102 00:04:49,754 --> 00:04:50,760 >> CAMILLE REKHSON: Da. 103 00:04:50,760 --> 00:04:54,410 Torej one-- enostaven način, da razmišljajo o pretvorbo iz decimalnega v binarno 104 00:04:54,410 --> 00:04:57,950 je to-- pogosto pomaga, da napišete kaj različne pristojnosti 2 so. 105 00:04:57,950 --> 00:05:01,460 In potem gredo skozi njo, in videli karkoli bila najvišja od teh 106 00:05:01,460 --> 00:05:05,320 je, da lahko dajo v na decimalno število, ne da bi nad njim. 107 00:05:05,320 --> 00:05:09,040 >> Torej v tem primeru, eden izmed pooblastila 2 je 32. 108 00:05:09,040 --> 00:05:10,560 Torej 32 gre v 50. 109 00:05:10,560 --> 00:05:14,100 Vendar pa bi v naslednjem vklopu biti 64, ki očitno ne sodi v 50. 110 00:05:14,100 --> 00:05:16,343 Torej najvišja imamo je 32. 111 00:05:16,343 --> 00:05:17,343 Naslednji ena do 16. 112 00:05:17,343 --> 00:05:20,140 In 32 plus 16 je le 48. 113 00:05:20,140 --> 00:05:21,350 Tako, da še vedno sodi v 50. 114 00:05:21,350 --> 00:05:22,722 Torej imamo 1 v obeh teh. 115 00:05:22,722 --> 00:05:25,180 In potem, če vedno gremo dol, edina stvar, moramo levo 116 00:05:25,180 --> 00:05:27,510 je 2 več, da bi dobili od 48 do 50. 117 00:05:27,510 --> 00:05:31,860 Torej imamo 1 v takem položaju, in 0 v zadnjem položaju. 118 00:05:31,860 --> 00:05:35,371 Ker ni nič v z 2 do 0-th mestu. 119 00:05:35,371 --> 00:05:37,120 Vprašanja o pretvorbi decimalno za dvokomponentne? 120 00:05:37,120 --> 00:05:40,830 121 00:05:40,830 --> 00:05:44,100 >> Torej, zdaj poskusimo počne nekateri binarni dodatek. 122 00:05:44,100 --> 00:05:47,235 Kako, ko boste dodali teh dveh gor? 123 00:05:47,235 --> 00:05:47,735 Ja. 124 00:05:47,735 --> 00:05:51,130 >> OBČINSTVO: 11100. 125 00:05:51,130 --> 00:05:52,110 >> CAMILLE REKHSON: Da. 126 00:05:52,110 --> 00:05:55,540 Tako početje dodatek v binarno je precej zelo podobno kot to počne na decimalko. 127 00:05:55,540 --> 00:05:59,390 Razen če imate dve 1 je bitje seštevati, 1 plus 1 je 2, 128 00:05:59,390 --> 00:06:02,980 ampak 2 v binarno 1 0. 129 00:06:02,980 --> 00:06:07,090 Tako da boste morali nositi 1, in obdržati ki ga nosi za tiste par stolpcev. 130 00:06:07,090 --> 00:06:10,260 In razen, da samo dodati običajno. 131 00:06:10,260 --> 00:06:13,125 Vsa vprašanja glede tega? 132 00:06:13,125 --> 00:06:13,625 Ja. 133 00:06:13,625 --> 00:06:16,487 >> OBČINSTVO: Oprostite, kaj je zadnji kraj? 134 00:06:16,487 --> 00:06:18,475 Tam je šest številk. 135 00:06:18,475 --> 00:06:23,260 Torej skrajni levi stolpec, kakšno vrednost je to? 136 00:06:23,260 --> 00:06:24,760 CAMILLE REKHSON: Na tej spodnji enega? 137 00:06:24,760 --> 00:06:26,340 OBČINSTVO: Na vrh enega, za 50. 138 00:06:26,340 --> 00:06:27,340 CAMILLE REKHSON: Za 50? 139 00:06:27,340 --> 00:06:29,040 Oh, tako da je skrajni levi je ena 32. 140 00:06:29,040 --> 00:06:29,760 >> OBČINSTVO: 32? 141 00:06:29,760 --> 00:06:36,770 >> CAMILLE REKHSON: Ja, tako da bi je 32, 16, nato pa 8, 4, 2, 0-- ali 1. 142 00:06:36,770 --> 00:06:39,380 No, to je 2 na Ničti, ki je 1. 143 00:06:39,380 --> 00:06:41,110 Ja. 144 00:06:41,110 --> 00:06:43,834 Vsa ostala vprašanja o tem? 145 00:06:43,834 --> 00:06:47,420 OK, potem pa bomo storili malo s šestnajstiško. 146 00:06:47,420 --> 00:06:49,570 Torej, to je lahko malo manj znano, 147 00:06:49,570 --> 00:06:51,680 ker vem, da smo naredili veliko več z binarno. 148 00:06:51,680 --> 00:06:54,050 Ampak res dober način za pomislite šestnajstiškem 149 00:06:54,050 --> 00:06:57,540 je, da se razbije binarno Številka v 4 bitni koščkih. 150 00:06:57,540 --> 00:07:00,950 Ker vsaka 4 bitov binarno število je v bistvu 151 00:07:00,950 --> 00:07:04,560 ena od številk šestnajstiškem zapisu. 152 00:07:04,560 --> 00:07:07,420 >> Torej, če imamo to prvo, imamo v osnovi osem 1 jev. 153 00:07:07,420 --> 00:07:08,620 Torej tiste, ki se lahko razdeli up-- 154 00:07:08,620 --> 00:07:09,600 >> OBČINSTVO: 255. 155 00:07:09,600 --> 00:07:10,933 >> CAMILLE REKHSON: Ponovite. 156 00:07:10,933 --> 00:07:13,772 OBČINSTVO: 255 v decimalni, ali 0xFF v šestnajstiški. 157 00:07:13,772 --> 00:07:14,980 CAMILLE REKHSON: Ja, res je. 158 00:07:14,980 --> 00:07:18,860 Torej, če si razdeliti, da gor v dve 4-bitnih koščkih, 159 00:07:18,860 --> 00:07:20,950 smo v bistvu imeli štiri nize 1. 160 00:07:20,950 --> 00:07:22,880 Ki je maximum-- bistvu najvišja 161 00:07:22,880 --> 00:07:24,329 bomo lahko dobili s 4-bitov v binarno. 162 00:07:24,329 --> 00:07:27,120 In največ, kar smo lahko dobili za da je v šestnajstiškem bi bila F. 163 00:07:27,120 --> 00:07:30,290 Tako bi imeli dva F-jev. 164 00:07:30,290 --> 00:07:31,800 Vsa vprašanja glede tega? 165 00:07:31,800 --> 00:07:32,490 Ja? 166 00:07:32,490 --> 00:07:35,184 >> OBČINSTVO: Ali lahko ponovite. 167 00:07:35,184 --> 00:07:36,100 CAMILLE REKHSON: Seveda. 168 00:07:36,100 --> 00:07:39,160 Torej vsak, v bistvu, kraj šestnajstiškem je 169 00:07:39,160 --> 00:07:42,570 enakovreden 4-bite binarnega. 170 00:07:42,570 --> 00:07:46,830 Torej je najlažji način za to je, da ga razbije v 4-bitni kose. 171 00:07:46,830 --> 00:07:48,690 Torej, v tem primeru imamo osem 1 jev. 172 00:07:48,690 --> 00:07:51,010 Torej, če smo razdelili tistim, v dve 4-bitnih koščkih, 173 00:07:51,010 --> 00:07:54,350 bi imeli dva niza štirih 1-ih. 174 00:07:54,350 --> 00:07:57,181 In vsak od tistih je enakovredna F. 175 00:07:57,181 --> 00:07:58,930 Če menite, da about-- Vem, da so naši možgani 176 00:07:58,930 --> 00:08:00,415 vrsta žično razmišljati več skozi decimalko, 177 00:08:00,415 --> 00:08:01,831 ker to je tisto, kar sva nekoč. 178 00:08:01,831 --> 00:08:06,030 Torej en način, da bi lahko o njej mislijo kot štiri 1 je enaka 15 v decimalni. 179 00:08:06,030 --> 00:08:12,960 In 15 v šestnajstiškem F. Torej, to je še en način, si lahko zamislite skozenj. 180 00:08:12,960 --> 00:08:13,459 Ja. 181 00:08:13,459 --> 00:08:14,790 >> OBČINSTVO: Kaj je 0x za? 182 00:08:14,790 --> 00:08:18,240 >> CAMILLE REKHSON: The 0x pomeni, da je v šestnajstiškem zapisu. 183 00:08:18,240 --> 00:08:21,900 Torej smo pravkar dal, da predpona tam običajno. 184 00:08:21,900 --> 00:08:24,396 Druga vprašanja o tem. 185 00:08:24,396 --> 00:08:27,100 OK, tako da poskusimo dogaja drugi način pa. 186 00:08:27,100 --> 00:08:28,712 V tem primeru smo have-- žal? 187 00:08:28,712 --> 00:08:29,628 OBČINSTVO: [neslišno]. 188 00:08:29,628 --> 00:08:32,095 189 00:08:32,095 --> 00:08:33,720 CAMILLE REKHSON: Gremo v binarno. 190 00:08:33,720 --> 00:08:36,039 Torej, gre v drugo smer. 191 00:08:36,039 --> 00:08:42,090 Toda v tem primeru imamo 5 in A. Torej, če razmišljamo o tem, 192 00:08:42,090 --> 00:08:46,260 če sta vsak izmed those-- receptorjem 5 in A tako dogaja, da predstavljajo 4-bitni kos, 193 00:08:46,260 --> 00:08:49,003 kako bi rekli, 5 v binarno? 194 00:08:49,003 --> 00:08:51,120 >> OBČINSTVO: 0101. 195 00:08:51,120 --> 00:08:53,100 >> CAMILLE REKHSON: Ja, tako da je 0101 del. 196 00:08:53,100 --> 00:08:55,250 In potem, kako bi rekli A in-- 197 00:08:55,250 --> 00:08:56,910 >> OBČINSTVO: 10. 198 00:08:56,910 --> 00:08:58,243 CAMILLE REKHSON: Recimo it-- žal? 199 00:08:58,243 --> 00:08:58,990 OBČINSTVO: 10. 200 00:08:58,990 --> 00:09:02,052 CAMILLE REKHSON: Ja, tako da je drugi del. 201 00:09:02,052 --> 00:09:04,010 In potem, če si dal ti dve skupaj, to je 202 00:09:04,010 --> 00:09:06,440 kako dobiš polno binarni za šestnajstiški. 203 00:09:06,440 --> 00:09:06,940 Ja? 204 00:09:06,940 --> 00:09:10,620 >> OBČINSTVO: Da bi vedeli, da je A 1010, moraš zapomniti? 205 00:09:10,620 --> 00:09:12,460 Ali lahko like-- 206 00:09:12,460 --> 00:09:14,380 >> CAMILLE REKHSON: Torej, če tako you-- differe-- 207 00:09:14,380 --> 00:09:16,790 ko ste šli skozi binarni, v bistvu binarno 208 00:09:16,790 --> 00:09:20,550 ima 0 do 9 in nato preko F svojih 16 stvari. 209 00:09:20,550 --> 00:09:25,420 Torej, če je vse tja od 0 do 9-- če you-- 9 in nato, v bistvu 210 00:09:25,420 --> 00:09:29,640 če smo pretvorili, da decimalno, A bi bilo, kot 10, bi B biti kot 11. 211 00:09:29,640 --> 00:09:35,616 In če mislite, da približno binarni 1010 je 8 in 2, 212 00:09:35,616 --> 00:09:37,990 ker tisti, sta dva kraji, ki dodajo do 10, ki 213 00:09:37,990 --> 00:09:41,820 je točno tisto, A je enakovredna. 214 00:09:41,820 --> 00:09:45,114 Torej, to je nekako enostavno način, da razmišljajo o tem. 215 00:09:45,114 --> 00:09:46,405 Druga vprašanja o šestnajstiškem. 216 00:09:46,405 --> 00:09:50,510 217 00:09:50,510 --> 00:09:56,870 >> OK, zdaj gremo, da sprejmejo poglej na operaterje bitni. 218 00:09:56,870 --> 00:09:58,882 Torej ti lahko zagotovo prišel na kvizu. 219 00:09:58,882 --> 00:10:00,590 Vem, da imamo ne delal z njimi veliko. 220 00:10:00,590 --> 00:10:02,756 Vendar smo le, da bo naredil malo pregled teh. 221 00:10:02,756 --> 00:10:05,490 Torej, upam, da ti bo malo bolj seznanjeni s tabo. 222 00:10:05,490 --> 00:10:10,220 Torej šest bitni operaterji da smo so naštete tukaj. 223 00:10:10,220 --> 00:10:13,340 In so nam manipulirati Posamezne bitov. 224 00:10:13,340 --> 00:10:16,676 Torej IN operaterja je ena ampersand. 225 00:10:16,676 --> 00:10:18,550 Ne mešaj, da se z dvojno ampersand, 226 00:10:18,550 --> 00:10:21,840 kar je logično, da je nam omogoča primerjavo dveh stvari. 227 00:10:21,840 --> 00:10:25,860 >> Enotni IN je, kako smo lahko manipulira stvari bitni. 228 00:10:25,860 --> 00:10:29,910 Torej, to nam daje rezultat 1, če tako od argumentov, da smo primerjali 229 00:10:29,910 --> 00:10:32,440 sta nam je isti ali so 1. 230 00:10:32,440 --> 00:10:39,370 In navpično bar, OR, bo nam 1, če je 1 vsaj eden izmed njih. 231 00:10:39,370 --> 00:10:41,460 Torej v bistvu točno kaj beseda pomeni. 232 00:10:41,460 --> 00:10:46,640 In, če sta dve bitov 1, 1 in 1 nam daje 1. 233 00:10:46,640 --> 00:10:51,769 Toda z ali, če je 0 ali 1, ali 1 ali 1, v vsakem primeru, 234 00:10:51,769 --> 00:10:53,060 imamo 1, kot je eden izmed njih. 235 00:10:53,060 --> 00:10:54,101 Torej bi dobili 1. 236 00:10:54,101 --> 00:10:56,320 OBČINSTVO: Kaj misliš ki pravi, da daje 1? 237 00:10:56,320 --> 00:10:58,236 >> CAMILLE REKHSON: The rezultat. Nekako, kot ste vi 238 00:10:58,236 --> 00:11:05,060 would-- če si 0 in 1, je rezultat, da bi bilo 1-- ali 0 239 00:11:05,060 --> 00:11:08,920 in 1 z rezultatom da bi bilo 0, žal. 240 00:11:08,920 --> 00:11:12,190 Ja, to je nekako od rezultat ekspresije. 241 00:11:12,190 --> 00:11:16,520 In potem je ta strešica simbol je XOR ali ekskluzivni OR. 242 00:11:16,520 --> 00:11:21,920 Torej to pomeni, da samo eden ali natanko eden od dveh trditev je enak 1. 243 00:11:21,920 --> 00:11:24,210 In potem vam bo dal 1. 244 00:11:24,210 --> 00:11:27,370 >> Malo squiggly linija je operator NOT. 245 00:11:27,370 --> 00:11:31,940 Torej za razliko ostalo od njih, ki delujejo na par bitov, 246 00:11:31,940 --> 00:11:34,930 izvajalec ne traja le en bit, in jo bo flip. 247 00:11:34,930 --> 00:11:37,640 Torej, če ste give-- če vam NE 0, bi vam 1. 248 00:11:37,640 --> 00:11:40,248 In če ne boste 1, da bi vam 0. 249 00:11:40,248 --> 00:11:40,748 Ja? 250 00:11:40,748 --> 00:11:41,150 >> OBČINSTVO: Kakšna je razlika med ali z eno črto 251 00:11:41,150 --> 00:11:41,983 in ali z dvema? 252 00:11:41,983 --> 00:11:44,430 253 00:11:44,430 --> 00:11:46,930 CAMILLE REKHSON: Torej ALI z dve vrstici je logična ALI. 254 00:11:46,930 --> 00:11:52,430 Tako da je za primerjavo dve polni cela števila, ali dvo 255 00:11:52,430 --> 00:11:53,730 da vidim, če so stvari enake. 256 00:11:53,730 --> 00:11:58,340 Ali podobnih tem je ta enaka tem, ALI je to enaka tej vrsti stvar. 257 00:11:58,340 --> 00:12:04,090 Ker enotnega baru ali, je za početje stvari bitni. 258 00:12:04,090 --> 00:12:04,590 Ja. 259 00:12:04,590 --> 00:12:06,680 >> OBČINSTVO: Kaj misliš s bitni? 260 00:12:06,680 --> 00:12:10,330 >> CAMILLE REKHSON: Torej bitni deluje neposredno z bitov v binarno. 261 00:12:10,330 --> 00:12:11,596 >> OBČINSTVO: Oh, vidim. 262 00:12:11,596 --> 00:12:15,000 >> CAMILLE REKHSON: Ja, tako delajo z 0 in 1 je. 263 00:12:15,000 --> 00:12:18,310 Bomo naredili par primerov to potem, samo da to ni preveč zmedeno. 264 00:12:18,310 --> 00:12:20,970 In potem sta zadnja dva sta levi shift in desni premik. 265 00:12:20,970 --> 00:12:23,970 Ki so v bistvu dva manj kot znaki ali dve večji od znakov. 266 00:12:23,970 --> 00:12:26,294 In jih preusmerila na bit dane število mest 267 00:12:26,294 --> 00:12:27,710 da si ga dal v smeri. 268 00:12:27,710 --> 00:12:29,980 Tako da bi ga bodisi premik v levo ali v desno. 269 00:12:29,980 --> 00:12:30,480 Ja? 270 00:12:30,480 --> 00:12:32,470 OBČINSTVO: Kaj je skladnja za tek? 271 00:12:32,470 --> 00:12:33,950 >> CAMILLE REKHSON: Gremo gredo skozi primer na sekundo. 272 00:12:33,950 --> 00:12:35,680 Torej upam, da bo pomagalo. 273 00:12:35,680 --> 00:12:41,060 Vsa vprašanja v zvezi samo kaj je tu gor, before-- OK. 274 00:12:41,060 --> 00:12:43,821 Torej gredo skozi nekaj primerov. 275 00:12:43,821 --> 00:12:45,070 Začnimo z IN narave. 276 00:12:45,070 --> 00:12:47,880 Kaj bi dobili, če smo naredili 0 in 1? 277 00:12:47,880 --> 00:12:48,899 >> OBČINSTVO: 0. 278 00:12:48,899 --> 00:12:50,690 CAMILLE REKHSON: OK, in če smo naredili 1 in 1? 279 00:12:50,690 --> 00:12:51,622 OBČINSTVO: 1. 280 00:12:51,622 --> 00:12:54,490 CAMILLE REKHSON: Ja, Kaj pa, če smo naredili 0 ali eno? 281 00:12:54,490 --> 00:12:55,094 OBČINSTVO: 1. 282 00:12:55,094 --> 00:12:56,510 CAMILLE REKHSON: Kako približno 1 ali 1? 283 00:12:56,510 --> 00:12:57,404 OBČINSTVO: 1. 284 00:12:57,404 --> 00:13:00,410 CAMILLE REKHSON: OK, kaj pa 0 XOR 1? 285 00:13:00,410 --> 00:13:01,380 OBČINSTVO: 1. 286 00:13:01,380 --> 00:13:03,120 CAMILLE REKHSON: In 1 XOR 1? 287 00:13:03,120 --> 00:13:03,902 OBČINSTVO: 0. 288 00:13:03,902 --> 00:13:05,360 CAMILLE REKHSON: Ti fantje so dobri. 289 00:13:05,360 --> 00:13:06,510 Kako približno NE 0? 290 00:13:06,510 --> 00:13:07,265 >> OBČINSTVO: 1. 291 00:13:07,265 --> 00:13:08,390 CAMILLE REKHSON: In NE 1? 292 00:13:08,390 --> 00:13:09,602 OBČINSTVO: 0. 293 00:13:09,602 --> 00:13:12,810 CAMILLE REKHSON: OK, potem pa ta zadnja ena je malo ena s prestavljanjem. 294 00:13:12,810 --> 00:13:18,700 Torej, če smo sprva določen x, da je 8, in potem je y x premaknilo v levo 3, 295 00:13:18,700 --> 00:13:19,760 kaj bi to nam daje? 296 00:13:19,760 --> 00:13:20,676 >> OBČINSTVO: [neslišno]. 297 00:13:20,676 --> 00:13:22,817 298 00:13:22,817 --> 00:13:24,150 CAMILLE REKHSON: Ponovite. 299 00:13:24,150 --> 00:13:26,740 OBČINSTVO: [neslišno]. 300 00:13:26,740 --> 00:13:28,766 CAMILLE REKHSON: Torej, to pravzaprav nam daje 64. 301 00:13:28,766 --> 00:13:29,876 OBČINSTVO: [neslišno]. 302 00:13:29,876 --> 00:13:32,250 CAMILLE REKHSON: Torej, jaz sem samo dogaja, da je to napisal tu gor, 303 00:13:32,250 --> 00:13:34,700 tako da to naredi malo smisla. 304 00:13:34,700 --> 00:13:45,120 Če imamo 2 do 0, 2 na 1, 2 do 2, 2 do 3 se bo 8. 305 00:13:45,120 --> 00:13:52,380 In če hočemo to SHIFT 3 več bitov v levo, da bi bila 2 do 4, 306 00:13:52,380 --> 00:13:57,270 2 do 5, in 2 do 6 in 2 do 6, je 64. 307 00:13:57,270 --> 00:13:59,920 308 00:13:59,920 --> 00:14:01,110 Ali je to smiselno? 309 00:14:01,110 --> 00:14:05,291 310 00:14:05,291 --> 00:14:05,791 Da. 311 00:14:05,791 --> 00:14:08,725 >> Publika: Ali to premik vse je bilo 1 in 0 je v binarno število za the-- 312 00:14:08,725 --> 00:14:09,600 >> CAMILLE REKHSON: Da. 313 00:14:09,600 --> 00:14:12,150 314 00:14:12,150 --> 00:14:15,170 In vam ne bo treba skrbeti o kviz o teh negativna. 315 00:14:15,170 --> 00:14:19,510 Ne bomo se ukvarjajo z Negativni premiki na kakršenkoli način. 316 00:14:19,510 --> 00:14:24,070 Vsa druga vprašanja v zvezi s tem? 317 00:14:24,070 --> 00:14:24,570 Da. 318 00:14:24,570 --> 00:14:30,570 >> OBČINSTVO: Če je to premik v desno, je vse, kar wasn't-- ničesar, 319 00:14:30,570 --> 00:14:33,220 ni bil prvotno del stvari 0? 320 00:14:33,220 --> 00:14:37,110 >> CAMILLE REKHSON: Ja, bi si dodajte 0 jev na v izvirniku. 321 00:14:37,110 --> 00:14:38,110 Ja. 322 00:14:38,110 --> 00:14:41,540 >> OBČINSTVO: Torej, kaj je to 100 premaknilo v desno trikrat? 323 00:14:41,540 --> 00:14:43,290 CAMILLE REKHSON: 100 premaknilo na desno, 324 00:14:43,290 --> 00:14:46,057 tako da bi potrebovali vse 1 in 0 in jih le premik 325 00:14:46,057 --> 00:14:48,515 na desno, kolikorkrat si je za premik v desno. 326 00:14:48,515 --> 00:14:50,452 >> OBČINSTVO: [neslišno]? 327 00:14:50,452 --> 00:14:53,160 CAMILLE REKHSON: No, 100-- so govoriš 100 v binarni, 328 00:14:53,160 --> 00:14:53,910 ali 100 na decimalko? 329 00:14:53,910 --> 00:14:55,750 OBČINSTVO: Žal mi je, 100 v binarno. 330 00:14:55,750 --> 00:14:58,916 >> CAMILLE REKHSON: 100 v binarni, če jo prestavite na right-- 331 00:14:58,916 --> 00:15:01,040 Če premik v desno enkrat, bi postal 10. 332 00:15:01,040 --> 00:15:04,430 Če jo premakne v desno dvakrat, bi postal 001. 333 00:15:04,430 --> 00:15:07,590 In potem, če ga spet premika, si nekako izgubili malo. 334 00:15:07,590 --> 00:15:09,610 Ja, to je samo 0. 335 00:15:09,610 --> 00:15:12,140 Vsa ostala vprašanja o tem? 336 00:15:12,140 --> 00:15:12,835 Da. 337 00:15:12,835 --> 00:15:14,695 >> OBČINSTVO: Torej, potem postane 000. 338 00:15:14,695 --> 00:15:17,020 >> CAMILLE REKHSON: Da. 339 00:15:17,020 --> 00:15:22,150 OK, tako da gremo skozi malo ASCII matematike. 340 00:15:22,150 --> 00:15:25,120 Tako da lahko v bistvu znaki se obravnavajo kot cela števila 341 00:15:25,120 --> 00:15:28,290 ki temeljijo na njihovih ASCII vrednosti. 342 00:15:28,290 --> 00:15:35,250 Torej, če smo sedeli int enaka 65, int B je enaka plus 1, int znak C enaka 343 00:15:35,250 --> 00:15:39,565 D minus 1 in char D enaka 68, Kaj bi izpisal na dnu? 344 00:15:39,565 --> 00:15:46,150 345 00:15:46,150 --> 00:15:49,720 >> Torej, smo tiskanje these-- blagoslovi you-- smo 346 00:15:49,720 --> 00:15:53,520 tiskanje ti vse kot Chars na osnovi odstotka C. 347 00:15:53,520 --> 00:15:56,320 Tako da smo v bistvu tiskanje vrednost značaj vseh štirih 348 00:15:56,320 --> 00:15:58,600 teh spremenljivk. 349 00:15:58,600 --> 00:16:04,280 Kot namig, 65 je vrednost ASCII kapitala A. Mogoče je, da je pomagal. 350 00:16:04,280 --> 00:16:04,780 Kaj? 351 00:16:04,780 --> 00:16:05,530 >> OBČINSTVO: ABCD. 352 00:16:05,530 --> 00:16:07,780 >> CAMILLE REKHSON: Ja, tako to bi izpisal ravno 353 00:16:07,780 --> 00:16:10,290 ABCD saj smo postavili int A enaka vrednosti ASCII A. 354 00:16:10,290 --> 00:16:13,085 Torej, če smo natisnete da ven kot značaj, smo le dobili kapitalu, 355 00:16:13,085 --> 00:16:15,540 Plus 1 bi bil kapital B v ASCII. 356 00:16:15,540 --> 00:16:19,260 D minus 1 bi bil kapital C v ASCII. 357 00:16:19,260 --> 00:16:25,185 In 68 je vrednost ASCII D. vprašanj o ASCII? 358 00:16:25,185 --> 00:16:25,685 Da. 359 00:16:25,685 --> 00:16:31,370 >> OBČINSTVO: Torej, navednice A, ne, da se spremenite v ASCII? 360 00:16:31,370 --> 00:16:34,456 >> CAMILLE REKHSON: To je uses-- count-- enojne narekovaje A 361 00:16:34,456 --> 00:16:35,330 zaradi česar je znak. 362 00:16:35,330 --> 00:16:37,600 In če imate opravka z je število form-- 363 00:16:37,600 --> 00:16:40,320 tako da, ko, kot v tem primeru, da je obravnavajo kot int-- 364 00:16:40,320 --> 00:16:44,664 potem bi obravnavali z njo je vrednost ASCII. 365 00:16:44,664 --> 00:16:45,164 Da. 366 00:16:45,164 --> 00:16:50,060 >> OBČINSTVO: Ali vam priporočamo, da imamo ASCII referenčno mizo? 367 00:16:50,060 --> 00:16:51,900 >> CAMILLE REKHSON: Ne think-- 368 00:16:51,900 --> 00:16:54,720 >> OBČINSTVO: Ali bi samo to se ukvarjajo z njimi? 369 00:16:54,720 --> 00:16:56,210 >> CAMILLE REKHSON: Mislim, da smo bi to naredil z enostavno stvari. 370 00:16:56,210 --> 00:16:58,168 Jaz ne mislim, da bi bolelo navzdol pisati morda 371 00:16:58,168 --> 00:17:02,653 kaj kapital A in male črke A taki, samo kaj ti razponi se začenjajo z. 372 00:17:02,653 --> 00:17:05,819 Ampak jaz ne mislim, da boste morali sprejeti vse prostor postaviti celotno tabelo ASCII. 373 00:17:05,819 --> 00:17:06,803 Ja. 374 00:17:06,803 --> 00:17:09,755 >> OBČINSTVO: Kakšna je razlika med rekel int A in char C, 375 00:17:09,755 --> 00:17:12,720 kot si ti na vrhu? 376 00:17:12,720 --> 00:17:17,380 >> CAMILLE REKHSON: Torej, to je samo kako, da je shranjena v pomnilniku. 377 00:17:17,380 --> 00:17:20,010 Lahko pa je tako ali tako zdravljenje. 378 00:17:20,010 --> 00:17:23,274 Tako kot vidimo tukaj, delamo tisk od A kot značaja. 379 00:17:23,274 --> 00:17:24,690 OBČINSTVO: Torej, to je isto kot? 380 00:17:24,690 --> 00:17:25,606 CAMILLE REKHSON: Ja. 381 00:17:25,606 --> 00:17:28,030 382 00:17:28,030 --> 00:17:29,537 Vsa druga vprašanja? 383 00:17:29,537 --> 00:17:32,022 >> OBČINSTVO: Torej, odstotka C je rekel natisnete char? 384 00:17:32,022 --> 00:17:33,016 >> CAMILLE REKHSON: Da. 385 00:17:33,016 --> 00:17:35,501 >> OBČINSTVO: Torej, tudi če ima le bil opredeljen kot celo število, 386 00:17:35,501 --> 00:17:37,569 če skušamo natisne char kot 65 let, je would-- 387 00:17:37,569 --> 00:17:40,110 CAMILLE REKHSON: To bi šel v bistvu gre za ASCII grafikona 388 00:17:40,110 --> 00:17:42,990 in dobi ne glede znakov v ASCII grafikonu za to 65 let. 389 00:17:42,990 --> 00:17:43,840 >> OBČINSTVO: Hvala. 390 00:17:43,840 --> 00:17:44,756 >> CAMILLE REKHSON: Ja. 391 00:17:44,756 --> 00:17:45,445 Ja? 392 00:17:45,445 --> 00:17:50,620 >> OBČINSTVO: Torej, če ste naredili% I% I, % I% I, bi to samo print-- 393 00:17:50,620 --> 00:17:52,620 CAMILLE REKHSON: Ja, če si vse 4% mi je, da 394 00:17:52,620 --> 00:17:57,170 bi izpisal ASCII Vrednosti vseh štirih ti. 395 00:17:57,170 --> 00:17:59,483 Vsa druga vprašanja? 396 00:17:59,483 --> 00:18:06,310 OK, torej področje, v bistvu je to nam pomaga določiti, kje 397 00:18:06,310 --> 00:18:08,450 obstaja spremenljivka v vašem programu. 398 00:18:08,450 --> 00:18:11,910 Tako smo se pogovarjali o dveh različnih Vrste obsegu, globalno in lokalno. 399 00:18:11,910 --> 00:18:14,560 >> Če je spremenljivka globalno scoped, to pomeni, da si celoten program 400 00:18:14,560 --> 00:18:16,292 ima dostop do te spremenljivke. 401 00:18:16,292 --> 00:18:18,000 In če vas po vsem svetu Obseg spremenljivka, ki jih 402 00:18:18,000 --> 00:18:19,510 ga razglasi pred vaše glavno funkcijo. 403 00:18:19,510 --> 00:18:20,830 Torej je to storjeno pravico off kij. 404 00:18:20,830 --> 00:18:22,950 In potem vse tvoje Program lahko dostopate do njega. 405 00:18:22,950 --> 00:18:26,070 >> Če je to le lokalno scoped, da spremenljivka omejena na določeno regijo. 406 00:18:26,070 --> 00:18:29,705 Torej, če ste razglasi roku za zanke, samo, da je za zanke lahko dostopate do njega. 407 00:18:29,705 --> 00:18:31,580 Ali če izjavi, v roku specifična funkcija, 408 00:18:31,580 --> 00:18:34,940 samo to funkcijo lahko dostopate do njega. 409 00:18:34,940 --> 00:18:38,265 Vprašanja o obsegu. 410 00:18:38,265 --> 00:18:41,570 >> OK, tako da funkcija prototipov. 411 00:18:41,570 --> 00:18:45,360 V bistvu, ker C, ko se pripravlja, bere dol vrh. 412 00:18:45,360 --> 00:18:48,800 Če navedete funkcijo pozno v kodi, 413 00:18:48,800 --> 00:18:51,670 prevajalnik ne ve da obstaja to funkcijo. 414 00:18:51,670 --> 00:18:55,690 Torej, kaj bomo uporabili so prototipi, ki v bistvu povedati prevajalniku, 415 00:18:55,690 --> 00:18:58,710 ta funkcija obstaja, pojdite pogledati za to pozneje v kodeksu. 416 00:18:58,710 --> 00:19:00,900 Torej tako, da vam funkcija prototip 417 00:19:00,900 --> 00:19:03,020 je točno, kako začnete off pisanje funkcijo. 418 00:19:03,020 --> 00:19:05,310 Daš vrsto vračanja, ime funkcije 419 00:19:05,310 --> 00:19:08,930 in potem vsi argumenti da je ta funkcija traja. 420 00:19:08,930 --> 00:19:13,970 >> Torej, da pogled na hitro primer, v tem malimi in naše delovanje, da bomo s pomočjo tukaj 421 00:19:13,970 --> 00:19:15,340 je v bistvu funkcija kocka. 422 00:19:15,340 --> 00:19:19,170 Torej, pri čemer v celo število in vrnitvijo kocko te celo število. 423 00:19:19,170 --> 00:19:23,190 Torej, ker smo napisal, da je Funkcija pod glavno funkcijo, 424 00:19:23,190 --> 00:19:26,300 in želimo uporabiti proizvodnja that-- ali pa 425 00:19:26,300 --> 00:19:28,630 želite te funkcije V naše glavno funkcijo, 426 00:19:28,630 --> 00:19:31,980 smo dal svoj prototip pot Na vrhu našega programa. 427 00:19:31,980 --> 00:19:34,460 In potem, ko smo klic v naši glavno funkcijo, 428 00:19:34,460 --> 00:19:38,800 prevajalnik ve, da je ta funkcija napisal kasneje, in bo šel pogledati za to, 429 00:19:38,800 --> 00:19:40,910 in ga bo pravilno uporabljati. 430 00:19:40,910 --> 00:19:45,190 Vprašanja o prototipov? 431 00:19:45,190 --> 00:19:45,690 Da. 432 00:19:45,690 --> 00:19:46,940 >> OBČINSTVO: Torej, kaj je smisel? 433 00:19:46,940 --> 00:19:49,374 434 00:19:49,374 --> 00:19:50,915 Ne razumem smisla prototipov. 435 00:19:50,915 --> 00:19:52,820 Zakaj ne samo ga imate tam spodaj? 436 00:19:52,820 --> 00:19:54,903 >> CAMILLE REKHSON: No, če je tukaj, potem ko je 437 00:19:54,903 --> 00:19:57,020 prideš na linijo kocka x v glavno funkcijo, 438 00:19:57,020 --> 00:19:59,495 prevajalnik ne bo imel pojma, da funkcija kocka dejansko obstaja. 439 00:19:59,495 --> 00:20:01,310 >> OBČINSTVO: Ne morem si samo dal spredaj? 440 00:20:01,310 --> 00:20:02,350 >> CAMILLE REKHSON: To je bolje kodiranje praksa 441 00:20:02,350 --> 00:20:04,150 da ga v okviru svoje glavne funkcije. 442 00:20:04,150 --> 00:20:06,350 Torej, to je, zakaj bi mi narediti prototipov. 443 00:20:06,350 --> 00:20:07,680 Samo zato, ker, če vas imela veliko funkcij, 444 00:20:07,680 --> 00:20:10,180 da bi bilo res grdo, da prebrati skozi vseh teh funkcij 445 00:20:10,180 --> 00:20:12,030 Pred vami priti do mesa vašega programa. 446 00:20:12,030 --> 00:20:13,888 Ja, in boste imeli -Q- 447 00:20:13,888 --> 00:20:16,796 >> OBČINSTVO: Torej, se razglaša vaša spremenljivka na vrhu 448 00:20:16,796 --> 00:20:18,795 tako da lahko dostopate do njega, da bo globalna spremenljivka? 449 00:20:18,795 --> 00:20:21,119 Je, da podoben temu kjer je že na razglasitvi 450 00:20:21,119 --> 00:20:23,660 gor, tako da se ve, da to bo dostop do nje pozneje 451 00:20:23,660 --> 00:20:24,762 in ga lahko uporabite? 452 00:20:24,762 --> 00:20:26,146 >> CAMILLE REKHSON: Ja. 453 00:20:26,146 --> 00:20:26,646 Da. 454 00:20:26,646 --> 00:20:30,414 >> OBČINSTVO: Če the-- vsaka dodatna Funkcije, ki jih ustvarite ključ zunaj 455 00:20:30,414 --> 00:20:31,840 te stvari, or-- 456 00:20:31,840 --> 00:20:33,760 >> CAMILLE REKHSON: Ja, če ste nastanek druge functions-- Main 457 00:20:33,760 --> 00:20:36,385 Sam je function-- tako da, če ste ustvarili druge funkcije, 458 00:20:36,385 --> 00:20:37,555 morajo biti zunaj. 459 00:20:37,555 --> 00:20:38,055 Ja? 460 00:20:38,055 --> 00:20:39,734 >> OBČINSTVO: Kaj je odstotkov D? 461 00:20:39,734 --> 00:20:42,150 CAMILLE REKHSON: Odstotek D ista stvar kot odstotek I. 462 00:20:42,150 --> 00:20:45,915 To se nanaša na celo število. 463 00:20:45,915 --> 00:20:47,895 Da. 464 00:20:47,895 --> 00:20:50,370 >> OBČINSTVO: Torej, kaj je int glavno delaš? 465 00:20:50,370 --> 00:20:51,724 Kaj je bilo, da je nična? 466 00:20:51,724 --> 00:20:53,890 CAMILLE REKHSON: Void pravi je potrebno v nobenem argumentov. 467 00:20:53,890 --> 00:20:55,320 OBČINSTVO: [neslišno]. 468 00:20:55,320 --> 00:20:57,570 CAMILLE REKHSON: Lahko govori malo glasneje, žal? 469 00:20:57,570 --> 00:21:00,153 OBČINSTVO: Ja, žal mi je, zakaj je storil daš izničijo za prvo, 470 00:21:00,153 --> 00:21:02,297 in nato int vhod za drugo? 471 00:21:02,297 --> 00:21:04,720 472 00:21:04,720 --> 00:21:07,470 CAMILLE REKHSON: Oh, za dva different-- za glavno funkcijo 473 00:21:07,470 --> 00:21:09,290 v primerjavi z delovanjem kocke? 474 00:21:09,290 --> 00:21:13,360 Torej v glavno funkcijo, bomo uporabili nična, ker obstaja 475 00:21:13,360 --> 00:21:16,870 Ni parametri privedene v. 476 00:21:16,870 --> 00:21:19,425 Medtem ko je v kocki funkcija, imamo vhod. 477 00:21:19,425 --> 00:21:22,300 Zato je pravi int, vhod, ker obstajajo argumenti, da smo 478 00:21:22,300 --> 00:21:24,571 pri čemer se za poganjanje funkcijo. 479 00:21:24,571 --> 00:21:25,070 Ja. 480 00:21:25,070 --> 00:21:27,770 481 00:21:27,770 --> 00:21:30,464 Ali obstajajo vprašanja? 482 00:21:30,464 --> 00:21:34,520 >> V redu, nato pa hitro plavajočo vejico nenatančnost. 483 00:21:34,520 --> 00:21:37,200 Torej imamo neskončno mnogo realnih števil. 484 00:21:37,200 --> 00:21:38,950 Vendar pa obstajajo le končno število bitov 485 00:21:38,950 --> 00:21:42,880 da bomo lahko uporabite za prikaz tistih, številke, in jih predstavljajo. 486 00:21:42,880 --> 00:21:45,020 Torej smo na koncu z nekaj nejasnosti. 487 00:21:45,020 --> 00:21:49,190 In tvoje številke ne bo vedno povsem točno, kaj 488 00:21:49,190 --> 00:21:51,810 si mislijo, da so, ko ste ki se ukvarjajo s plavajočo vejico. 489 00:21:51,810 --> 00:21:53,650 To je samo nekaj, kar je dobro vedeti. 490 00:21:53,650 --> 00:21:56,628 Vprašanja o tem? 491 00:21:56,628 --> 00:21:59,610 Da. 492 00:21:59,610 --> 00:22:02,090 >> OBČINSTVO: Je to sklicuje na idejo bit prelivom 493 00:22:02,090 --> 00:22:03,089 da je v predavanju? 494 00:22:03,089 --> 00:22:06,080 Je bilo, da je nekaj, kar ločuje? 495 00:22:06,080 --> 00:22:09,650 >> CAMILLE REKHSON: Oni popolnoma ločeno, ja. 496 00:22:09,650 --> 00:22:11,160 OK super. 497 00:22:11,160 --> 00:22:16,369 498 00:22:16,369 --> 00:22:17,452 PULAK Goyal: Živjo, vsi. 499 00:22:17,452 --> 00:22:19,872 Moje ime je Pulak, in bom bo šel čez kazalci. 500 00:22:19,872 --> 00:22:23,260 501 00:22:23,260 --> 00:22:25,720 OK, tako da je prvi think o tem, kaj spomin izgleda. 502 00:22:25,720 --> 00:22:28,610 Torej, kot lahko vidite tukaj, smo vzeli spomin in smo ga razdelili 503 00:22:28,610 --> 00:22:30,090 v kup blokov. 504 00:22:30,090 --> 00:22:33,150 In smo reference vsak blok z naslovom, kajne? 505 00:22:33,150 --> 00:22:37,196 In ne kdo se spomnite, kakšne vrste Zapis, ki jih uporabljamo za označevanje naslov? 506 00:22:37,196 --> 00:22:38,510 >> OBČINSTVO: Šestnajstiški, 0X. 507 00:22:38,510 --> 00:22:39,510 >> PULAK Goyal: Šestnajstiški, kajne? 508 00:22:39,510 --> 00:22:41,509 Torej 0X pomeni, da smo govorimo o šestnajstiškem. 509 00:22:41,509 --> 00:22:45,740 510 00:22:45,740 --> 00:22:48,360 OK, kako bomo ustvarili kazalce? 511 00:22:48,360 --> 00:22:51,960 Torej vzamemo vrsto, smo dal it-- dodati zvezdico z njim, 512 00:22:51,960 --> 00:22:53,760 in nato dodamo ime spremenljivke. 513 00:22:53,760 --> 00:22:59,280 Tako so primeri, ki smo jih videli, so int zvezda x, char zvezda y, in plavajo začnete z. 514 00:22:59,280 --> 00:23:01,380 Torej, ko sem rekel, int zvezda x, lahko nekdo povej mi, 515 00:23:01,380 --> 00:23:03,965 kaj sem nekako govoriš tam? 516 00:23:03,965 --> 00:23:05,710 >> OBČINSTVO: Lokacija diska. 517 00:23:05,710 --> 00:23:06,890 >> PULAK Goyal: Oprostite, kaj? 518 00:23:06,890 --> 00:23:07,723 Lahko ponovite? 519 00:23:07,723 --> 00:23:09,250 OBČINSTVO: Lokacija diska. 520 00:23:09,250 --> 00:23:12,390 >> PULAK Goyal: Torej tako actually-- kaj Mislil sem, je, ko imamo int zvezda x, 521 00:23:12,390 --> 00:23:14,400 smo govoriš ustvarja kazalec, in 522 00:23:14,400 --> 00:23:17,130 lahko shranite naslov spremenljivka, ki je int, kajne? 523 00:23:17,130 --> 00:23:21,810 Torej z char zvezdicami y, smo ustvarili kazalec 524 00:23:21,810 --> 00:23:24,220 da lahko shranite naslov spremenljivke, ki je char. 525 00:23:24,220 --> 00:23:26,270 Tako da smisla za vsakogar? 526 00:23:26,270 --> 00:23:29,600 OK kul 527 00:23:29,600 --> 00:23:33,450 >> OK, torej s kazalci, obstajajo dve pomembni operacije lahko storimo. 528 00:23:33,450 --> 00:23:36,630 Tam je navajanje, in tam je Dereferenciranje. 529 00:23:36,630 --> 00:23:37,130 Ja? 530 00:23:37,130 --> 00:23:38,760 >> OBČINSTVO: Lahko greš malo počasneje? 531 00:23:38,760 --> 00:23:39,510 >> PULAK Goyal: Seveda. 532 00:23:39,510 --> 00:23:45,350 Ja, SO- ja, postavljajo vprašanja, kot sem šel skupaj, če you-- če kaj ni jasno. 533 00:23:45,350 --> 00:23:47,240 Tako smo navajanje in Dereferenciranje. 534 00:23:47,240 --> 00:23:51,680 Torej, če želite, da bi dobili naslov spremenljivke, nato pa uporabite 'znak. 535 00:23:51,680 --> 00:23:53,620 Torej, recimo, izjavil sem int x nekje. 536 00:23:53,620 --> 00:23:57,450 In želim, da bi dobili naslov, ki in jih poslati v, jaz bi naredil ampersand x. 537 00:23:57,450 --> 00:24:01,260 In če želite, da bi dobili Vrednost povezana s kazalcem, 538 00:24:01,260 --> 00:24:04,670 uporabljate razrešimo operater, ki je zvezda. 539 00:24:04,670 --> 00:24:08,570 >> Torej, recimo sem imel int zvezdicami x in Imel sem to kaže na nekaj. 540 00:24:08,570 --> 00:24:13,510 Če želim, da bi dobili vrednost tega, kar je kaže, da bi se jaz pač zvezda x. 541 00:24:13,510 --> 00:24:14,960 Je to jasno? 542 00:24:14,960 --> 00:24:16,390 Vsa vprašanja o tem? 543 00:24:16,390 --> 00:24:18,129 Ja. 544 00:24:18,129 --> 00:24:25,275 >> OBČINSTVO: Torej na splošno, vas ne bodo mogli storiti na x in zvezda 545 00:24:25,275 --> 00:24:27,135 x z enako x. 546 00:24:27,135 --> 00:24:28,740 Je to pravilno? 547 00:24:28,740 --> 00:24:31,800 Ker če je x spremenljivka, potem imate 548 00:24:31,800 --> 00:24:35,980 storiti na x, da bi dobili, da je kazalec. 549 00:24:35,980 --> 00:24:40,810 Ampak, če je x kazalec, potem morate storiti zvezda x, da bi dobili spremenljivko. 550 00:24:40,810 --> 00:24:43,240 >> PULAK Goyal: Ja, tako da je Vprašanje je bilo o tem, kdaj 551 00:24:43,240 --> 00:24:45,750 ne bomo uporabili star-- kadar bi uporabili zvezda, 552 00:24:45,750 --> 00:24:47,470 in ko bomo uporabili ampersand, in lahko smo 553 00:24:47,470 --> 00:24:49,160 uporabljate z isto vrsto spremenljivke? 554 00:24:49,160 --> 00:24:51,810 Torej ponavadi, če imate, na primer, int x, 555 00:24:51,810 --> 00:24:55,170 bi se predvsem z uporabo ampersand dobiti naslov, ki. 556 00:24:55,170 --> 00:24:58,220 Ker to ne pomeni, da Občutek, da Priklanjanje v x. 557 00:24:58,220 --> 00:25:04,220 Ker, če bi imeli int zvezda x, ki ste jo uporabljali delovanje razrešimo 558 00:25:04,220 --> 00:25:07,910 ker bi bilo nesmiselno za uporabo pri x v tem primeru. 559 00:25:07,910 --> 00:25:09,582 Ali je to smiselno? 560 00:25:09,582 --> 00:25:13,192 >> OBČINSTVO: Torej, ne morete in nato kazalec? 561 00:25:13,192 --> 00:25:14,900 PULAK Goyal: Torej si tehnično, dejansko 562 00:25:14,900 --> 00:25:16,870 lahko storite 'znak za kazalec. 563 00:25:16,870 --> 00:25:18,984 Ampak to je iz nje Obseg tega razreda. 564 00:25:18,984 --> 00:25:21,900 Za purpose-- za svoje fante " namene, ko imate kazalce, 565 00:25:21,900 --> 00:25:25,191 želite uporabiti operaterja razrešimo da bi dobili vrednost, povezano s tem. 566 00:25:25,191 --> 00:25:27,380 In če imate redno spremenljivke, kot int x, 567 00:25:27,380 --> 00:25:31,410 želite uporabiti 'znak operater, da bi dobili naslov za to. 568 00:25:31,410 --> 00:25:31,910 V REDU? 569 00:25:31,910 --> 00:25:35,670 570 00:25:35,670 --> 00:25:38,850 >> OK, tako da je pogled na kazalce in kaj se dogaja pod pokrovom. 571 00:25:38,850 --> 00:25:42,640 Torej prva stvar, ki sem tu deklarirana int x enak 5. 572 00:25:42,640 --> 00:25:48,460 Naslov te spremenljivke je 0x04, vrednost je 5. 573 00:25:48,460 --> 00:25:52,940 Torej, da vidimo, kaj se zgodi z naslednjo vrstico. 574 00:25:52,940 --> 00:25:55,130 Torej, zdaj smo se razglasi kazalec. 575 00:25:55,130 --> 00:26:01,450 Njen naslov je 0x08, in njene vrednost je naslov x. 576 00:26:01,450 --> 00:26:05,220 Ali to smiselno za vsakogar? 577 00:26:05,220 --> 00:26:06,507 Vsa vprašanja o tem? 578 00:26:06,507 --> 00:26:09,130 579 00:26:09,130 --> 00:26:13,080 >> OK, zdaj pa poglejmo, kaj se zgodi z naslednjo vrstico. 580 00:26:13,080 --> 00:26:18,140 Torej s tem v naslednjo vrstico, imamo naslov kopija pa 0x10, 581 00:26:18,140 --> 00:26:20,780 in njegova vrednost je 5. 582 00:26:20,780 --> 00:26:23,570 Torej razlog, da imamo pet je rečeno, smo razrešimo 583 00:26:23,570 --> 00:26:26,740 kazalec, ki smo ga razglasila int zvezdo. 584 00:26:26,740 --> 00:26:35,797 In tako je went-- ko smo dereference njej, je rekel, OK, kaj je v 0x04 avtomatu. 585 00:26:35,797 --> 00:26:36,630 In je šlo za to. 586 00:26:36,630 --> 00:26:40,785 In kaj je x x0-- 0x04, vrednost je 5. 587 00:26:40,785 --> 00:26:41,660 Ali to smiselno? 588 00:26:41,660 --> 00:26:42,334 Ja? 589 00:26:42,334 --> 00:26:50,090 >> OBČINSTVO: Zakaj je naslov kopija je le 4 bajte nad x kazalcem? 590 00:26:50,090 --> 00:26:52,318 >> PULAK Goyal: Ja, to je napaka on-- 591 00:26:52,318 --> 00:26:55,304 >> CAMILLE REKHSON: Torej, ja, spomnim To je zapisano v šestnajstiški obliki. 592 00:26:55,304 --> 00:26:56,220 PULAK Goyal: Oh, ja. 593 00:26:56,220 --> 00:26:58,615 CAMILLE REKHSON: Torej, to je dejansko 8 in nato 16 594 00:26:58,615 --> 00:27:00,960 ker smo rekli, da je kazalec, ne pozabite, 595 00:27:00,960 --> 00:27:05,330 v našem IDE se bo dolg 8 bajtov. 596 00:27:05,330 --> 00:27:06,080 PULAK Goyal: Ja. 597 00:27:06,080 --> 00:27:09,160 598 00:27:09,160 --> 00:27:12,540 Torej, samo da bo jasno, kazalci so dolg 8 bajtov. 599 00:27:12,540 --> 00:27:14,160 Int je 4 bajte. 600 00:27:14,160 --> 00:27:18,380 Torej, razlog, zakaj je kaj poskočila od 0x04 do 0x08 601 00:27:18,380 --> 00:27:20,980 je zato, ker smo imeli na narediti skok 8 bajtov. 602 00:27:20,980 --> 00:27:24,396 In potem for-- od Kopija je samo int, 603 00:27:24,396 --> 00:27:26,020 to je 4 bajte, kar je polovica od 8 bajtov. 604 00:27:26,020 --> 00:27:29,970 Tako smo samo skoči na 0x10, ki je dva od 0x08. 605 00:27:29,970 --> 00:27:33,100 606 00:27:33,100 --> 00:27:34,570 Vsa druga vprašanja? 607 00:27:34,570 --> 00:27:36,850 OK, let's-- ja? 608 00:27:36,850 --> 00:27:39,245 >> OBČINSTVO: Zakaj ni vrednost int kopijo 609 00:27:39,245 --> 00:27:45,000 Samo the-- zakaj je 5 namesto 0x04? 610 00:27:45,000 --> 00:27:46,270 >> PULAK Goyal: OK, zakaj je 5? 611 00:27:46,270 --> 00:27:51,600 OK, tako da, ko the-- tako da je prvi razmišljati o tem, v smislu vrste. 612 00:27:51,600 --> 00:27:55,600 Torej, jaz pravim int kopijo je enak kazalec zvezda. 613 00:27:55,600 --> 00:27:57,490 Torej, kaj je tip kazalca? 614 00:27:57,490 --> 00:27:59,310 To je int zvezda. 615 00:27:59,310 --> 00:28:03,850 In ko sem dereference, da tip postane int. 616 00:28:03,850 --> 00:28:06,570 Torej, kaj pričakujemo, da shranite Tu je pravzaprav int. 617 00:28:06,570 --> 00:28:07,965 Ali to smiselno? 618 00:28:07,965 --> 00:28:09,090 OBČINSTVO: Seveda, malo. 619 00:28:09,090 --> 00:28:11,465 PULAK Goyal: Torej ponavadi, ko misliš, da v zvezi z vrstami, 620 00:28:11,465 --> 00:28:15,607 da vam pomaga razumeti, kaj je Tip vrednosti, da bi morala tja. 621 00:28:15,607 --> 00:28:17,940 Torej lahko ponavadi izključuje Veliko teh skupnih napak 622 00:28:17,940 --> 00:28:21,790 z razmišljanjem v smislu vrste. 623 00:28:21,790 --> 00:28:23,612 Naj gredo skozi malo več diapozitivov. 624 00:28:23,612 --> 00:28:26,070 In bomo lahko dobili odgovore na dodatna vprašanja Konec odseka kazalca. 625 00:28:26,070 --> 00:28:28,910 626 00:28:28,910 --> 00:28:32,290 OK, tako da imamo hroščat programa tukaj. 627 00:28:32,290 --> 00:28:35,460 In tako ne anyone-- lahko nekdo povej me, kaj je narobe s tem programom? 628 00:28:35,460 --> 00:28:39,000 629 00:28:39,000 --> 00:28:40,820 Dobro, kaj smo pričakuje, da tu ne 630 00:28:40,820 --> 00:28:44,520 is-- kaj želimo narediti je prevzeti variabilno int x 631 00:28:44,520 --> 00:28:48,350 in nato it-- da bo enaka 5 namesto 3 in nato natisnete to. 632 00:28:48,350 --> 00:28:49,640 Ampak to se ne dogaja. 633 00:28:49,640 --> 00:28:50,950 Mi lahko kdo pove, zakaj? 634 00:28:50,950 --> 00:28:51,934 Ja? 635 00:28:51,934 --> 00:28:54,840 >> OBČINSTVO: Ko je funkcija to_five traja x, kot je to argument, 636 00:28:54,840 --> 00:28:58,130 ne sprejme x sebi, ampak namesto ustvari kopijo a, nje. 637 00:28:58,130 --> 00:29:00,115 In tvori operacije na to. 638 00:29:00,115 --> 00:29:02,614 Ampak zaradi tega, kar ne spremeniti dejansko vrednost x. 639 00:29:02,614 --> 00:29:03,970 Ker ste [neslišno]. 640 00:29:03,970 --> 00:29:07,950 >> PULAK Goyal: Right, desno, tako da, ko pravimo 641 00:29:07,950 --> 00:29:10,100 funkcija to_five, kaj delamo je razmišljal, 642 00:29:10,100 --> 00:29:12,550 daj mi kopijo vrednost za to funkcijo. 643 00:29:12,550 --> 00:29:16,010 Ta funkcija, nato pa se bo in delaš nekaj manipulacij. 644 00:29:16,010 --> 00:29:21,260 Toda, ko se vrne, to je zdaj ven področja glavne funkcije tukaj. 645 00:29:21,260 --> 00:29:24,750 In tako x je še vedno v bistvu enako 3, in tiskamo 3. 646 00:29:24,750 --> 00:29:26,445 OK, tako da je videti, kako se to zgodi. 647 00:29:26,445 --> 00:29:29,430 648 00:29:29,430 --> 00:29:31,180 >> OK, tako da ni nič izjavil. 649 00:29:31,180 --> 00:29:34,490 Potem, tukaj, x je enak 3. 650 00:29:34,490 --> 00:29:40,820 In zdaj je is-- na položaju dva, je a še ne v področje. 651 00:29:40,820 --> 00:29:46,790 In zdaj gremo na položaj tri, kjer zdaj prevzame vrednost od 3. 652 00:29:46,790 --> 00:29:49,380 Ob štirih smo zdaj spremenili a do 5. 653 00:29:49,380 --> 00:29:53,290 Toda zdaj, ko smo skok nazaj pet, ki je izjava tisk, 654 00:29:53,290 --> 00:29:55,380 je a zdaj zunaj obsega. 655 00:29:55,380 --> 00:29:57,450 X pa je vedno enaka 3. 656 00:29:57,450 --> 00:29:59,700 Ali je to smiselno za vsakogar? 657 00:29:59,700 --> 00:30:03,010 OK, tako da zdaj kaj je govoril o tem, kako moremo uporabiti napotke, da popraviti to. 658 00:30:03,010 --> 00:30:06,140 Ima kdo kakšno idejo, kako smo To lahko popravite s pomočjo nasvetov? 659 00:30:06,140 --> 00:30:08,710 660 00:30:08,710 --> 00:30:11,490 >> OBČINSTVO: Vzameš v int zvezda namesto notr za to_five. 661 00:30:11,490 --> 00:30:12,530 >> PULAK Goyal: Oprostite, bi lahko govorite? 662 00:30:12,530 --> 00:30:15,266 >> OBČINSTVO: Vzameš v int zvezda namesto notr za to_five. 663 00:30:15,266 --> 00:30:16,140 PULAK Goyal: OK, ja. 664 00:30:16,140 --> 00:30:20,250 Torej, kaj je pass-- namesto menjavanja samo vrednost, dajmo jo prenese z referenco. 665 00:30:20,250 --> 00:30:21,690 Ta nova funkcija, kajne? 666 00:30:21,690 --> 00:30:25,210 In tako ob prehodu naslov, smo lahko storite manipulacije na naslov. 667 00:30:25,210 --> 00:30:27,400 In tako smo v resnici, dejansko spreminja x. 668 00:30:27,400 --> 00:30:30,570 Torej, da vidimo, kako to deluje. 669 00:30:30,570 --> 00:30:32,950 >> OK, tako da v tem primeru smo to določen. 670 00:30:32,950 --> 00:30:38,000 Spremenili smo naš podpis od to_five vzeti v int 671 00:30:38,000 --> 00:30:40,540 zvezda namesto samo int tukaj. 672 00:30:40,540 --> 00:30:45,470 Potem smo dereference to A in dodeliti 5 do njega. 673 00:30:45,470 --> 00:30:48,090 In zdaj bo to, v resnici, natisnite 5. 674 00:30:48,090 --> 00:30:51,960 Torej, da vidimo, kako se koraki delajo tukaj. 675 00:30:51,960 --> 00:30:55,200 >> Torej s prvim korakom, nič še ni razglašena. 676 00:30:55,200 --> 00:31:00,140 Torej tukaj, z drugim korakom, smo omenjeni x je enako 3, 677 00:31:00,140 --> 00:31:03,970 vendar je še vedno zunaj obsega. 678 00:31:03,970 --> 00:31:08,100 Zdaj pa ga je tretji vrstici, imamo x je vedno enaka tri. 679 00:31:08,100 --> 00:31:14,150 In zdaj smo opravili in-- kaj je shranjeni na zdaj naslov x. 680 00:31:14,150 --> 00:31:16,760 Ali, da je smiselno, da vsakdo, kako smo dobili to? 681 00:31:16,760 --> 00:31:21,470 Dobro, imamo amper-- to je, kako smo opravili tudi ampersand x funkciji 682 00:31:21,470 --> 00:31:23,040 to_five. 683 00:31:23,040 --> 00:31:30,330 In potem v naslednjo vrstico, kaj storimo, je, da smo dereference a. 684 00:31:30,330 --> 00:31:36,120 >> In Dereferenciranje A, smo sposobni spremenite vrednost x od 3 do 5. 685 00:31:36,120 --> 00:31:38,560 Ker x živi na tem naslovu 0x12. 686 00:31:38,560 --> 00:31:42,440 687 00:31:42,440 --> 00:31:45,810 In nato, na koncu, ko smo se vrnili nazaj na glavno, 688 00:31:45,810 --> 00:31:50,570 čeprav je zdaj to iz Področje, ki smo jih dejansko spremenila x. 689 00:31:50,570 --> 00:31:51,570 In to je 5. 690 00:31:51,570 --> 00:31:55,160 Vsa vprašanja v zvezi s tem? 691 00:31:55,160 --> 00:31:56,036 Ja? 692 00:31:56,036 --> 00:31:58,185 >> OBČINSTVO: Mi lahko poveste, kaj je bilo ampersand x? 693 00:31:58,185 --> 00:32:00,004 Mislil sem ampersand bil všeč in. 694 00:32:00,004 --> 00:32:03,480 695 00:32:03,480 --> 00:32:07,210 >> PULAK Goyal: Ja, zato smo uporabili enako Simbol za veliko različnih stvari. 696 00:32:07,210 --> 00:32:11,470 Torej, tukaj, ko have-- v V tem primeru, ko imaš, 697 00:32:11,470 --> 00:32:19,380 Jaz tako guess-- v tem primeru, ko je imate opravka s kazalci, 698 00:32:19,380 --> 00:32:23,640 Ko si dal 'znak spredaj za notr, spremenljivo notr, ali char, 699 00:32:23,640 --> 00:32:28,609 ali tok, kaj praviš je, daj mi naslov tega. 700 00:32:28,609 --> 00:32:31,900 Ampak tisto, kar je bilo v mislih, ko drug Da bi uporabili 'znak je, recimo, 701 00:32:31,900 --> 00:32:33,180 v if stavku. 702 00:32:33,180 --> 00:32:39,256 Imate res, in nekatere spremenljivke da oceni, do neke logičnim, 703 00:32:39,256 --> 00:32:41,380 in nekatere druge spremenljivke da potrdi nekaj Boolean 704 00:32:41,380 --> 00:32:42,880 in želite, da bi dobili, in da. 705 00:32:42,880 --> 00:32:44,552 Potem bi uporabili 'znak. 706 00:32:44,552 --> 00:32:47,510 SPEAKER 1: Ja, samo danes, ki smo jih govoril o treh različnih uporab 707 00:32:47,510 --> 00:32:48,250 od ampersand. 708 00:32:48,250 --> 00:32:51,040 Imamo dva ampersands, ki je kaj je Pulak pravkar opisal. 709 00:32:51,040 --> 00:32:53,420 Imamo eno 'znak, ki je tisto, Camille je opisano 710 00:32:53,420 --> 00:32:54,897 prej, ki je eden ampersand. 711 00:32:54,897 --> 00:32:56,685 In to je za bitni IN. 712 00:32:56,685 --> 00:32:59,640 In opazil, da sta pogojno in-- ali, žal, 713 00:32:59,640 --> 00:33:04,180 logični IN in bitni IN, tisti, imate dve številki, kajne? 714 00:33:04,180 --> 00:33:07,354 Nekaj, kar je bilo ampersand ampersand nekaj, 715 00:33:07,354 --> 00:33:09,350 nekaj ampersand nekaj. 716 00:33:09,350 --> 00:33:13,862 Tukaj, ko imamo samo 'znak nekaj, da je Dereferenciranje. 717 00:33:13,862 --> 00:33:15,830 >> PULAK Goyal: Ja, super vprašanje. 718 00:33:15,830 --> 00:33:16,677 Ja. 719 00:33:16,677 --> 00:33:21,150 >> OBČINSTVO: Zakaj je v skladu 5a in zvezda je postala N / A? 720 00:33:21,150 --> 00:33:25,520 Zakaj ne samo nekako obdrži Enake vrednosti iz prejšnje vrstice? 721 00:33:25,520 --> 00:33:28,000 >> PULAK Goyal: Ker smo zapustili funkcijo. 722 00:33:28,000 --> 00:33:30,894 In kaj torej happens-- tako what-- zdaj smo 723 00:33:30,894 --> 00:33:33,060 iz področja uporabe te funkcije, kaj se zgodi, dejansko 724 00:33:33,060 --> 00:33:37,770 je tistih, ki so odstranjeni iz spomina. 725 00:33:37,770 --> 00:33:38,808 Ja. 726 00:33:38,808 --> 00:33:42,982 >> OBČINSTVO: Med 3 ali 4 zvezdico enaka 5. 727 00:33:42,982 --> 00:33:43,690 PULAK Goyal: Da. 728 00:33:43,690 --> 00:33:45,575 OBČINSTVO: Kaj to točno pomenijo? 729 00:33:45,575 --> 00:33:46,950 PULAK Goyal: Kaj to pomeni? 730 00:33:46,950 --> 00:33:47,380 OBČINSTVO: Ja. 731 00:33:47,380 --> 00:33:49,088 PULAK Goyal: Torej Vprašanje je bilo, kaj je 732 00:33:49,088 --> 00:33:52,300 that-- kaj počnete na spletu ko rečemo, zvezda je enak 5? 733 00:33:52,300 --> 00:33:55,210 Torej spomnite Star Operater dereference. 734 00:33:55,210 --> 00:33:58,640 Torej če se v tem primeru, je kazalec. 735 00:33:58,640 --> 00:34:00,030 To je int zvezda. 736 00:34:00,030 --> 00:34:03,710 Torej, ko smo dereference stranski z zvezdo, kaj smo govoriš 737 00:34:03,710 --> 00:34:11,250 je, pojdite na karkoli, se shranijo v naslov, shranjen v a-- tako take-- tako da, 738 00:34:11,250 --> 00:34:13,280 zdaj, ima nekaj naslov shranjena v njej. 739 00:34:13,280 --> 00:34:19,920 Pojdi tja, kjer ta naslov točke do in zdaj spremeniti karkoli, da je pet. 740 00:34:19,920 --> 00:34:20,420 Ja. 741 00:34:20,420 --> 00:34:23,390 >> OBČINSTVO: Lahko rečeš je na enostavnejši način? 742 00:34:23,390 --> 00:34:27,360 Spremenite naslov do 5. 743 00:34:27,360 --> 00:34:31,070 >> PULAK Goyal: Nismo spreminjanje naslov do 5. 744 00:34:31,070 --> 00:34:36,340 A ima nekaj naslovov v njem, ki je naslov spremenljivke obresti. 745 00:34:36,340 --> 00:34:39,570 In kaj smo govoriš ko smo dereference je, 746 00:34:39,570 --> 00:34:42,630 Zdaj želimo change-- smo zdaj navajanje 747 00:34:42,630 --> 00:34:45,135 Obrestna spremenljivka neposredno. 748 00:34:45,135 --> 00:34:48,499 Ali je to smiselno? 749 00:34:48,499 --> 00:34:52,280 >> SPEAKER 1: Drug način, da razmišljajo o je go-- tako da je naslov. 750 00:34:52,280 --> 00:34:55,310 Zvezda pravi, iti, da obravnavati in pogled na svojo vrednost. 751 00:34:55,310 --> 00:34:58,000 In zdaj je njegova vrednost do 5. 752 00:34:58,000 --> 00:35:00,920 Tako pravi, pojdite na naslov x, ki 753 00:35:00,920 --> 00:35:05,720 se bo tisto, kar je shranjeno v A, in jo spremenite v 5. 754 00:35:05,720 --> 00:35:06,470 PULAK Goyal: Ja? 755 00:35:06,470 --> 00:35:10,817 OBČINSTVO: Torej je položaj, kjer kazalec se dogaja, naslov. 756 00:35:10,817 --> 00:35:14,270 Vendar je vrednost dodeljena vrednost, ki temelji na naslovu. 757 00:35:14,270 --> 00:35:15,020 PULAK Goyal: Ja. 758 00:35:15,020 --> 00:35:18,076 759 00:35:18,076 --> 00:35:19,367 Vsa druga vprašanja v zvezi s tem? 760 00:35:19,367 --> 00:35:22,774 761 00:35:22,774 --> 00:35:23,940 OBČINSTVO: Imam vprašanje. 762 00:35:23,940 --> 00:35:25,664 PULAK Goyal: Ja, žal. 763 00:35:25,664 --> 00:35:30,324 OBČINSTVO: Torej, ko store-- tako če praviš [neslišno] a. 764 00:35:30,324 --> 00:35:31,032 PULAK Goyal: Da. 765 00:35:31,032 --> 00:35:34,448 OBČINSTVO: Ali imate na shranjujte X z ampersand? 766 00:35:34,448 --> 00:35:37,376 Zakaj ne moreš samo reči x pred svojim int [neslišno]? 767 00:35:37,376 --> 00:35:40,562 768 00:35:40,562 --> 00:35:41,270 PULAK Goyal: SO- 769 00:35:41,270 --> 00:35:42,090 OBČINSTVO: [neslišno]. 770 00:35:42,090 --> 00:35:43,673 PULAK Goyal: Torej je tvoj question-- oh. 771 00:35:43,673 --> 00:35:47,160 772 00:35:47,160 --> 00:35:51,300 Torej, vaše vprašanje je, zakaj ne more we-- na funkcijo to_five, zakaj ne moremo 773 00:35:51,300 --> 00:35:52,590 samo opraviti x, kajne? 774 00:35:52,590 --> 00:35:53,570 >> OBČINSTVO: Right. 775 00:35:53,570 --> 00:35:59,570 >> PULAK Goyal: OK, ja, tako da je to zopet sega v naše razprave o vrstah. 776 00:35:59,570 --> 00:36:06,080 Tako da je funkcija to_five zdaj Pričakoval tip int zvezde. 777 00:36:06,080 --> 00:36:07,660 Torej, kaj je tip x? 778 00:36:07,660 --> 00:36:09,800 X je samo int. 779 00:36:09,800 --> 00:36:13,530 Toda kaj je ta funkcija pričakuje, da je int zvezda. 780 00:36:13,530 --> 00:36:16,910 Zato se pričakuje spremenljivko, ki ima naslov je shranjena v njej. 781 00:36:16,910 --> 00:36:20,250 Torej, to je, kako you-- dal ampersand, in tako, da je 782 00:36:20,250 --> 00:36:22,560 kako se peljemo v naslov, ki je now-- 783 00:36:22,560 --> 00:36:25,120 in da je razlaga, ki kot int zvezda, ja. 784 00:36:25,120 --> 00:36:26,700 Great vprašanje. 785 00:36:26,700 --> 00:36:29,300 Vsa ostala vprašanja o tem? 786 00:36:29,300 --> 00:36:29,800 OK kul. 787 00:36:29,800 --> 00:36:32,870 788 00:36:32,870 --> 00:36:37,020 >> OK, sedaj pa se pogovorimo okoli kazalca aritmetiki. 789 00:36:37,020 --> 00:36:40,050 Torej, tukaj, dodajanje in odštevanjem i prilagodi kazalec 790 00:36:40,050 --> 00:36:43,950 s i-krat velikosti tip kazalca bajtov. 791 00:36:43,950 --> 00:36:46,170 Torej, si oglejmo, kako to izgleda. 792 00:36:46,170 --> 00:36:49,640 Torej, tukaj smo razglasila int x enak 5. 793 00:36:49,640 --> 00:36:56,120 In zdaj bomo razglasi kazalec y, in se peljemo v naslovu x tam. 794 00:36:56,120 --> 00:36:58,910 Torej imamo to. 795 00:36:58,910 --> 00:37:01,005 Torej je x shranjena na 0x04. 796 00:37:01,005 --> 00:37:03,960 Torej, zdaj y je enak tistemu. 797 00:37:03,960 --> 00:37:12,260 In mi lahko nekdo pove, kaj si mislijo se bo zgodilo, ko bomo y plus enak 1? 798 00:37:12,260 --> 00:37:19,100 799 00:37:19,100 --> 00:37:19,771 Ja? 800 00:37:19,771 --> 00:37:24,010 >> OBČINSTVO: Bo spremenite 0 krat 0 8? 801 00:37:24,010 --> 00:37:25,342 >> PULAK Goyal: Velikost in type-- 802 00:37:25,342 --> 00:37:27,789 >> OBČINSTVO: ste se gibljejo naslov. 803 00:37:27,789 --> 00:37:29,080 PULAK Goyal: Ja to was-- ja. 804 00:37:29,080 --> 00:37:31,130 SO- desno. 805 00:37:31,130 --> 00:37:33,110 Torej bo to spremenilo na 0x08. 806 00:37:33,110 --> 00:37:38,750 In because-- tako da bi to uporabili Formula, 1-krat večja od velikosti kazalca 807 00:37:38,750 --> 00:37:42,354 in kazalci so size-- 808 00:37:42,354 --> 00:37:44,050 >> [ŠTUDENTI žuborenje] 809 00:37:44,050 --> 00:37:45,190 >> PULAK Goyal: Right. 810 00:37:45,190 --> 00:37:46,150 >> [ŠTUDENTI žuborenje] 811 00:37:46,150 --> 00:37:49,230 >> SPEAKER 1: Tako je tip, ki kazalec točk to-- 812 00:37:49,230 --> 00:37:51,862 >> PULAK Goyal: Je, ja, Ja, to je 4 bajte. 813 00:37:51,862 --> 00:37:53,930 >> SPEAKER 1: Torej Ints so 4 bajte. 814 00:37:53,930 --> 00:38:01,260 >> PULAK Goyal: Torej, če smo a-- dajmo rekli smo izjavil, mislim, char. 815 00:38:01,260 --> 00:38:06,830 Kaj bi that-- tako recimo mi imajo char x enaka ali nečesa. 816 00:38:06,830 --> 00:38:14,400 In smo imeli naslov, ki na 0x04, kaj bi y plus je enaka 1 pa zdaj? 817 00:38:14,400 --> 00:38:14,960 Oprosti, kaj? 818 00:38:14,960 --> 00:38:16,099 >> OBČINSTVO: 0x05. 819 00:38:16,099 --> 00:38:17,140 PULAK Goyal: 0x05, desno. 820 00:38:17,140 --> 00:38:18,520 Ali so vsi videli, da je? 821 00:38:18,520 --> 00:38:20,212 OK, zdaj pa recimo, da je plovec. 822 00:38:20,212 --> 00:38:20,962 Kaj bi se zgodilo? 823 00:38:20,962 --> 00:38:25,210 824 00:38:25,210 --> 00:38:26,130 Kdorkoli? 825 00:38:26,130 --> 00:38:28,066 Torej boje so, koliko bajtov? 826 00:38:28,066 --> 00:38:28,860 >> OBČINSTVO: 4 bajte. 827 00:38:28,860 --> 00:38:29,651 >> PULAK Goyal: Right. 828 00:38:29,651 --> 00:38:32,661 Tako da bi bilo isto, kot je ta. 829 00:38:32,661 --> 00:38:33,160 Cool. 830 00:38:33,160 --> 00:38:36,230 831 00:38:36,230 --> 00:38:40,180 OK, zdaj pa se pogovorimo o kazalci in nizi. 832 00:38:40,180 --> 00:38:44,210 Torej, da ste videli to na prejšnja dva p določa, 833 00:38:44,210 --> 00:38:48,570 kjer bomo lahko treat-- tako nizi in kazalci niso ista stvar. 834 00:38:48,570 --> 00:38:51,170 Vendar smo lahko zdravi nizi kot kazalci. 835 00:38:51,170 --> 00:38:55,550 Torej, tukaj imamo ta niz tod ki ima tri reže. 836 00:38:55,550 --> 00:38:57,570 V prvem slot-- mi še ena, dva, tri. 837 00:38:57,570 --> 00:39:00,930 >> Torej, če we--, da bomo lahko dodelite da z besedami, imamo niz, 838 00:39:00,930 --> 00:39:02,080 dereference da. 839 00:39:02,080 --> 00:39:04,579 In potem, ko smo razrešimo da je, kaj smo pravzaprav počne 840 00:39:04,579 --> 00:39:05,910 je na isto odprtino. 841 00:39:05,910 --> 00:39:09,230 Torej zvezda matrika enaka 1. 842 00:39:09,230 --> 00:39:11,020 Mi could- kako bi pišemo that-- kaj je 843 00:39:11,020 --> 00:39:13,404 nadomestni način, da bi lahko napisali, da je? 844 00:39:13,404 --> 00:39:14,840 >> OBČINSTVO: Array 0 je enaka 1. 845 00:39:14,840 --> 00:39:17,100 >> PULAK Goyal: Točno, pa vsi vidijo, da je? 846 00:39:17,100 --> 00:39:18,320 Torej isto stvar s tukaj. 847 00:39:18,320 --> 00:39:24,060 Torej, če imamo niz plus 1, smo tako even-- do-- 848 00:39:24,060 --> 00:39:28,890 ne pozabite, z aritmetično, da smo samo govori, ko delamo plus 1 849 00:39:28,890 --> 00:39:32,120 ali pa preiti s 4 bajte, kajne. 850 00:39:32,120 --> 00:39:33,170 Ali so vsi videli, da je? 851 00:39:33,170 --> 00:39:35,753 In tisti strani, ko smo razrešimo da smo lahko nastavite, da na 2. 852 00:39:35,753 --> 00:39:37,710 In to je, kako smo postavili Naslednji blok 2. 853 00:39:37,710 --> 00:39:41,640 In tako nadomestni način za pisanje da bi tudi niz nosilec 854 00:39:41,640 --> 00:39:44,436 0 konzola enaka 1. 855 00:39:44,436 --> 00:39:47,070 >> OBČINSTVO: Ali potrebujemo oklepaje? 856 00:39:47,070 --> 00:39:50,840 >> PULAK Goyal: Ja, ker ste Dereferenciranje celotno količino 857 00:39:50,840 --> 00:39:53,460 matrika plus 1. 858 00:39:53,460 --> 00:39:56,829 OK, in ista stvar za paleto plus 2. 859 00:39:56,829 --> 00:39:57,870 Vsa vprašanja v zvezi s tem? 860 00:39:57,870 --> 00:39:58,369 Ja. 861 00:39:58,369 --> 00:40:01,340 OBČINSTVO: Torej matrika je samodejno nastavi na 0? 862 00:40:01,340 --> 00:40:03,054 >> PULAK Goyal: Array is-- žal, kaj? 863 00:40:03,054 --> 00:40:03,962 >> OBČINSTVO: Array 0. 864 00:40:03,962 --> 00:40:07,140 Naslov matrike je samo 0. 865 00:40:07,140 --> 00:40:10,200 >> PULAK Goyal: Torej, vprašanje je, je naslov niza le 0? 866 00:40:10,200 --> 00:40:11,950 Torej, ne, matrika ima nekaj naslov. 867 00:40:11,950 --> 00:40:14,930 Torej, ko smo dereference njej, that's-- tako da si lahko zamislite about-- 868 00:40:14,930 --> 00:40:18,230 dobesedno kot kazalec ki kaže na začetku matrike. 869 00:40:18,230 --> 00:40:19,390 Tako da ima nekaj naslov. 870 00:40:19,390 --> 00:40:20,580 Ne vemo, kaj je to. 871 00:40:20,580 --> 00:40:24,170 Toda, ko smo dereference njej, vemo da je začetek array. 872 00:40:24,170 --> 00:40:25,980 In tako, ko gremo s 1, smo šele premikanje 873 00:40:25,980 --> 00:40:29,090 relativna, kjer je bila ta naslov. 874 00:40:29,090 --> 00:40:30,480 Vsa druga vprašanja? 875 00:40:30,480 --> 00:40:31,419 Ja? 876 00:40:31,419 --> 00:40:35,559 >> OBČINSTVO: Torej, če vam Niz nosilec plus 1-- 877 00:40:35,559 --> 00:40:37,350 PULAK Goyal: Žal mi je, I-- lahko govorite? 878 00:40:37,350 --> 00:40:41,174 OBČINSTVO: Ja, če vam Niz bracket [neslišno]. 879 00:40:41,174 --> 00:40:45,227 Torej, če si dal pointer-- 880 00:40:45,227 --> 00:40:46,810 PULAK Goyal: Oprostite, jaz vas ne sliši. 881 00:40:46,810 --> 00:40:48,100 Lahko pa še enkrat rečem? 882 00:40:48,100 --> 00:40:49,470 >> OBČINSTVO: Ti si v redu. 883 00:40:49,470 --> 00:40:50,870 >> PULAK Goyal: OK, žal. 884 00:40:50,870 --> 00:40:51,420 OK kul. 885 00:40:51,420 --> 00:40:52,200 Any-- ja. 886 00:40:52,200 --> 00:40:55,710 Ko gredo v matriki nosilec, tako da boste 3-- 887 00:40:55,710 --> 00:40:56,570 >> PULAK Goyal: Ja. 888 00:40:56,570 --> 00:40:59,832 >> OBČINSTVO: --isn't there-- ne bi je štiri pike kot 0, 1, 2 in 3? 889 00:40:59,832 --> 00:41:02,630 Zakaj se ne int paleto 2? 890 00:41:02,630 --> 00:41:07,850 >> PULAK Goyal: No, tako preprosto je konvencija od C is-- ko izjavljamo array, 891 00:41:07,850 --> 00:41:12,010 we-- številko smo dal tam je, koliko slotov želimo. 892 00:41:12,010 --> 00:41:16,970 Toda indeksi polja so pravzaprav matrika 0, matrika 1 in nizi 2. 893 00:41:16,970 --> 00:41:19,780 Torej, to je samo konvencija o tem, kako smo razglasitvi nize. 894 00:41:19,780 --> 00:41:20,880 Ja, vsa druga vprašanja? 895 00:41:20,880 --> 00:41:21,380 Ja. 896 00:41:21,380 --> 00:41:23,750 OBČINSTVO: Torej smo še vedno govorimo o kazalci, kajne? 897 00:41:23,750 --> 00:41:24,500 PULAK Goyal: Ja. 898 00:41:24,500 --> 00:41:28,600 OBČINSTVO: Bi lahko še vedno zvezda za matrika 0 je enaka 1? 899 00:41:28,600 --> 00:41:32,870 PULAK Goyal: Ne, ne, SO- OK, tako da je bilo vprašanje lahko 900 00:41:32,870 --> 00:41:37,370 si naredil zvezda nizi nosilec nič, potem pa reči, da je enak 1. 901 00:41:37,370 --> 00:41:40,000 Torej, ne, kaj smo govoriš tukaj je, da bomo lahko think-- 902 00:41:40,000 --> 00:41:42,600 moremo obravnavati nizi kot kazalci. 903 00:41:42,600 --> 00:41:44,970 Tako smo have-- kaj smo rekel je, imamo dva načina 904 00:41:44,970 --> 00:41:47,370 zdaj sklicevanje na istem bloku. 905 00:41:47,370 --> 00:41:52,270 Torej doing-- če imate paleto nič, vrsta, ki je sedaj int. 906 00:41:52,270 --> 00:41:55,264 In če ste vzeli zvezdo, da dobiš neveljaven stvar. 907 00:41:55,264 --> 00:41:57,680 Torej, kaj smo govoriš tukaj, je obstajata dve nadomestni načini 908 00:41:57,680 --> 00:41:59,100 sklicevati na istem bloku. 909 00:41:59,100 --> 00:42:01,860 Lahko bodisi narediti niz bracket 0 je enaka 1. 910 00:42:01,860 --> 00:42:06,420 Ali lahko naredite razrešimo matrika, in ima to enak 0. 911 00:42:06,420 --> 00:42:08,621 Torej samo dva načina počne isto stvar. 912 00:42:08,621 --> 00:42:09,120 Ja. 913 00:42:09,120 --> 00:42:15,270 >> OBČINSTVO: Zakaj ni velikost int 1 dodati to-- 914 00:42:15,270 --> 00:42:17,650 >> PULAK Goyal: Velikost int 1. 915 00:42:17,650 --> 00:42:19,900 >> OBČINSTVO: Ker je to premikanje eno off. 916 00:42:19,900 --> 00:42:23,620 >> PULAK Goyal: Ker je to samo način C deluje. 917 00:42:23,620 --> 00:42:26,460 To je samo način kazalec aritmetično je definirano. 918 00:42:26,460 --> 00:42:27,854 To bo trajalo kazalec. 919 00:42:27,854 --> 00:42:30,020 In potem karkoli dodati z njim, bo to število pomnožite 920 00:42:30,020 --> 00:42:34,770 z velikostjo karkoli kazalec trgovina je, ja. 921 00:42:34,770 --> 00:42:35,480 Ja. 922 00:42:35,480 --> 00:42:39,595 >> OBČINSTVO: Torej praviš, da lahko zdravljenje kazalci in nizi enaki, 923 00:42:39,595 --> 00:42:40,720 ampak da oni so drugačni. 924 00:42:40,720 --> 00:42:41,950 Torej, kaj jih naredi drugačen? 925 00:42:41,950 --> 00:42:45,070 Kaj ne moremo storiti z ena, druge pa ne? 926 00:42:45,070 --> 00:42:52,390 >> PULAK Goyal: Za ta razred, mislim it's-- kaj you-- storiti 927 00:42:52,390 --> 00:42:56,270 >> SPEAKER 1: Torej, we-- OK, tako, za Na primer, če ste dodeliti pomnilnika 928 00:42:56,270 --> 00:42:59,680 in imate kazalec celo število, npr. 929 00:42:59,680 --> 00:43:01,890 Če si se potrudil, da začnete početje kazalec aritmetično 930 00:43:01,890 --> 00:43:05,890 in presegajo količino pomnilnika, ki vam dodelijo, boš naletite na napake. 931 00:43:05,890 --> 00:43:08,250 Vemo, z nizi, smo rekli pred časom, OK, sem 932 00:43:08,250 --> 00:43:11,400 želite allocate-- to v bistvu pravi, želim dodeliti 933 00:43:11,400 --> 00:43:13,490 dovolj prostora za tri cela števila. 934 00:43:13,490 --> 00:43:17,820 In tako zdaj smo lahko zdravi pomnilnika, kot če imamo vse tri od teh števil. 935 00:43:17,820 --> 00:43:19,460 Ali toliko smisla? 936 00:43:19,460 --> 00:43:22,042 >> PULAK Goyal: Ja. 937 00:43:22,042 --> 00:43:22,542 Ja. 938 00:43:22,542 --> 00:43:24,778 >> OBČINSTVO: Torej zvezda matrika, je, da je dodeljevanje 1 939 00:43:24,778 --> 00:43:26,657 k 0 indeksom matrike? 940 00:43:26,657 --> 00:43:27,365 PULAK Goyal: Da. 941 00:43:27,365 --> 00:43:31,160 942 00:43:31,160 --> 00:43:34,439 >> OBČINSTVO: Torej, kaj je po Naslednji dve vrstici v smislu the-- I 943 00:43:34,439 --> 00:43:36,980 Razumemo, da skušate Za uporabo kazalca aritmetično tod 944 00:43:36,980 --> 00:43:39,355 ampak spet, jaz ne razumem kaj kazalec aritmetična je. 945 00:43:39,355 --> 00:43:43,869 Torej matrika plus 1, ste pravijo, da ste zdaj 946 00:43:43,869 --> 00:43:47,540 dogaja, da bi rad govoril o Prvi indeks v matriki. 947 00:43:47,540 --> 00:43:50,050 >> PULAK Goyal: Right, in tako Razlog, da deluje, je matrika, 948 00:43:50,050 --> 00:43:52,970 Tukaj smo lahko zamislite kot int zvezda. 949 00:43:52,970 --> 00:43:56,110 In tako, ko bomo kazalec aritmetično na njej, se spomnite formulo kjer 950 00:43:56,110 --> 00:43:59,020 vzamemo the-- mislim karkoli trenutni naslov, 951 00:43:59,020 --> 00:44:02,100 in potem, ko smo dodali 1 z njim, smo dejansko 952 00:44:02,100 --> 00:44:06,620 pomnožimo 1 z velikostjo Stvar smo manipulirajo. 953 00:44:06,620 --> 00:44:09,090 Torej, v tem primeru, velikost notr. 954 00:44:09,090 --> 00:44:11,634 In potem smo ga premaknete naj ga, da je veliko. 955 00:44:11,634 --> 00:44:14,419 >> SPEAKER 1: Torej pretvarjamo imate b matrično zvezdo. 956 00:44:14,419 --> 00:44:15,335 PULAK Goyal: OK, ja. 957 00:44:15,335 --> 00:44:16,005 SPEAKER 1: Z roko. 958 00:44:16,005 --> 00:44:16,505 Pojdi tukaj. 959 00:44:16,505 --> 00:44:18,350 PULAK Goyal: Ali lahko just-- ja. 960 00:44:18,350 --> 00:44:23,660 Torej here-- OK, tako da matrika Na začenja, je ravno prav tukaj. 961 00:44:23,660 --> 00:44:29,155 Torej, ko smo dereference array, smo bili Samo nanaša na prvi blok tukaj. 962 00:44:29,155 --> 00:44:36,620 Toda zdaj, ko sem naredil paleto plus 1, ki is-- ta puščica je zdaj tukaj. 963 00:44:36,620 --> 00:44:38,250 Ali je to smiselno? 964 00:44:38,250 --> 00:44:46,690 Prav, ker ta blok je od velikosti int, ki je 4 bajte. 965 00:44:46,690 --> 00:44:53,540 In tako, kaj delamo, je, da smo gibljejo, da kazalec za 4 bajte več. 966 00:44:53,540 --> 00:44:56,080 Kadarkoli naredimo aritmetično na njej, bo vedno 967 00:44:56,080 --> 00:44:59,730 premakniti povečevalo za 4 bajte. 968 00:44:59,730 --> 00:45:01,902 Ker je to kot int zvezda. 969 00:45:01,902 --> 00:45:04,970 Ali to smiselno? 970 00:45:04,970 --> 00:45:05,470 V REDU. 971 00:45:05,470 --> 00:45:07,770 >> OBČINSTVO: So stvari, ki jih v matriki Bilo je 5 bajtov, sva ga premaknite 5 bytes-- 972 00:45:07,770 --> 00:45:10,853 >> PULAK Goyal: Right, tako da, če bomo imeli char zvezda, sva ga premaknete samo 1 bajt. 973 00:45:10,853 --> 00:45:13,670 Torej, v primeru char zvezd, to bi šele bilo, da se premaknete prevzel 1. 974 00:45:13,670 --> 00:45:15,420 OBČINSTVO: Da bi dobili Naslednji morate zvezdo. 975 00:45:15,420 --> 00:45:18,099 PULAK Goyal: Ja, ja, pa to smiselno? 976 00:45:18,099 --> 00:45:19,890 SPEAKER 1: Mi lahko klepetate o tem več kasneje. 977 00:45:19,890 --> 00:45:21,530 PULAK Goyal: Ja, ja, zagotovo. 978 00:45:21,530 --> 00:45:23,214 OK kul. 979 00:45:23,214 --> 00:45:24,630 Pojdimo v naslednjem poglavju. 980 00:45:24,630 --> 00:45:27,182 981 00:45:27,182 --> 00:45:28,140 SPEAKER 1: Oh, OK kul. 982 00:45:28,140 --> 00:45:29,205 Ja, to sem jaz. 983 00:45:29,205 --> 00:45:30,330 V redu, super. 984 00:45:30,330 --> 00:45:35,064 OK, kul, zdaj sva na malo Več splošnih informacij o spominu. 985 00:45:35,064 --> 00:45:37,730 Prav tako cenim dejstvo, da ti grejo precej hitro. 986 00:45:37,730 --> 00:45:40,230 To je veliko gradiva, da bi dobili skozi eno uro in pol. 987 00:45:40,230 --> 00:45:42,880 Ampak, če obstajajo kakršne koli vam teme želijo, da gredo bolj poglobljeno v, 988 00:45:42,880 --> 00:45:44,630 bomo imeli Uradne ure v tem tednu 989 00:45:44,630 --> 00:45:46,340 kjer lahko klepetate z nami ena na ena. 990 00:45:46,340 --> 00:45:49,240 Ali pa bi le prišel gor na konec in bomo klepetali o stvareh. 991 00:45:49,240 --> 00:45:52,130 In kot vedno, se počutijo prosimo, da postavljajo vprašanja. 992 00:45:52,130 --> 00:45:52,695 Awesome. 993 00:45:52,695 --> 00:45:55,820 Torej, tukaj je naša slika pomnilnika, ki smo videli v predavanju milijardo krat. 994 00:45:55,820 --> 00:45:58,610 In vemo, da je ta sveženj raste od spodaj navzgor 995 00:45:58,610 --> 00:46:00,214 in kup raste navzdol. 996 00:46:00,214 --> 00:46:03,380 In kakšna je razlika med stvarmi da smo ostali na kup in stvari 997 00:46:03,380 --> 00:46:05,981 da smo ostali na stack? 998 00:46:05,981 --> 00:46:07,397 Nekdo je vrgel nekaj tam. 999 00:46:07,397 --> 00:46:10,806 1000 00:46:10,806 --> 00:46:11,780 Ja. 1001 00:46:11,780 --> 00:46:14,215 >> OBČINSTVO: Je kup za stvari, ki so samo 1002 00:46:14,215 --> 00:46:18,095 minljivi spremenljivke, ki smo si samo razglasitvi uporabo določenih funkcij? 1003 00:46:18,095 --> 00:46:19,220 SPEAKER 1: Lepa, ja. 1004 00:46:19,220 --> 00:46:23,007 Torej, kadarkoli kje, kaj je pravijo, da smo v funkciji, 1005 00:46:23,007 --> 00:46:24,590 in imamo samo še nekaj lokalnih spremenljivk. 1006 00:46:24,590 --> 00:46:26,214 Tisti, ki se dogaja, da končajo na kupu. 1007 00:46:26,214 --> 00:46:30,020 Če pa pravimo malloc in dejansko dodeliti pomnilnika, 1008 00:46:30,020 --> 00:46:32,290 ki vedno prihaja iz kopice. 1009 00:46:32,290 --> 00:46:35,100 Torej, ja Zanimive? 1010 00:46:35,100 --> 00:46:38,672 >> In tako ne pozabite, da vsak spomin da si dodelijo uporabo malloc, 1011 00:46:38,672 --> 00:46:40,130 da se dogaja, da končajo na kupu. 1012 00:46:40,130 --> 00:46:42,019 In če ste pozabili brezplačno je, računalnik je 1013 00:46:42,019 --> 00:46:43,810 ne bo vedel, da je ste končali z njo. 1014 00:46:43,810 --> 00:46:45,560 Torej, to je le, da bo visi tam v spomin. 1015 00:46:45,560 --> 00:46:47,412 In ti si v bistvu pušča, da je spomin. 1016 00:46:47,412 --> 00:46:48,120 Ste ga izgubili. 1017 00:46:48,120 --> 00:46:51,840 Ker nikoli povedal računalnik, hej končam ga uporabljate, vas prosimo za uporabo, 1018 00:46:51,840 --> 00:46:53,632 dajo druge stvari tam. 1019 00:46:53,632 --> 00:46:54,470 Cool. 1020 00:46:54,470 --> 00:46:55,928 Vsa vprašanja tam? 1021 00:46:55,928 --> 00:46:56,428 Da. 1022 00:46:56,428 --> 00:46:58,808 >> OBČINSTVO: Torej kakšne spomina je kup? 1023 00:46:58,808 --> 00:46:59,974 Non dinamično krme, prenesla? 1024 00:46:59,974 --> 00:47:01,200 Kaj bi vam rečejo? 1025 00:47:01,200 --> 00:47:03,870 >> SPEAKER 1: Seveda, tako da boste lahko si o njej mislijo kot lokalne spremenljivke. 1026 00:47:03,870 --> 00:47:10,137 Dejanske klici funkcij se dogaja, da stack up. 1027 00:47:10,137 --> 00:47:10,720 Karkoli drugega? 1028 00:47:10,720 --> 00:47:11,220 Ja? 1029 00:47:11,220 --> 00:47:14,627 OBČINSTVO: Kako boste brezplačno pomnilnik, ki ga dodajo the-- 1030 00:47:14,627 --> 00:47:17,710 SPEAKER 1: Seveda, tako da, ko boste dodeliti spomin na kupu, pokličete malloc. 1031 00:47:17,710 --> 00:47:20,543 In tako potem vam daje nazaj kazalec na nek naslov v pomnilniku. 1032 00:47:20,543 --> 00:47:22,630 Tako pravijo, da si poklical, da je kazalec, kajne? 1033 00:47:22,630 --> 00:47:24,970 Potem si pravkar rekel brezplačno kazalec. 1034 00:47:24,970 --> 00:47:27,351 In da se sprosti pomnilnik. 1035 00:47:27,351 --> 00:47:27,850 Cool. 1036 00:47:27,850 --> 00:47:28,660 Druga vprašanja? 1037 00:47:28,660 --> 00:47:28,880 Da. 1038 00:47:28,880 --> 00:47:30,838 >> OBČINSTVO: Kaj počne dinamično dodeljen pomeni? 1039 00:47:30,838 --> 00:47:32,345 1040 00:47:32,345 --> 00:47:35,381 >> SPEAKER 1: Dinamično dodeljena pomeni, v okviru svojega programa. 1041 00:47:35,381 --> 00:47:37,630 Torej, če pokličete malloc v srednji vašega programa, 1042 00:47:37,630 --> 00:47:40,510 na začetku programa, ni pomnilnik dodeljen. 1043 00:47:40,510 --> 00:47:42,600 In kot je v računalniku korak s to oznako, 1044 00:47:42,600 --> 00:47:44,280 to se dogaja, dodeliti pomnilnika. 1045 00:47:44,280 --> 00:47:46,507 Torej, to je tisto, kar mislimo z dinamično. 1046 00:47:46,507 --> 00:47:47,090 Dobro vprašanje. 1047 00:47:47,090 --> 00:47:48,309 Ja? 1048 00:47:48,309 --> 00:47:50,809 OBČINSTVO: Ko definirate matrika z oglatimi oklepaji, 1049 00:47:50,809 --> 00:47:54,154 pa da še vedno [neslišno]? 1050 00:47:54,154 --> 00:47:55,570 SPEAKER 1: To je dobro vprašanje. 1051 00:47:55,570 --> 00:48:00,320 Mislim, da ko si razporediti array, dejansko postavlja na sklad. 1052 00:48:00,320 --> 00:48:03,008 Nisem pozitiven odnos da, tako da me ne citiram. 1053 00:48:03,008 --> 00:48:04,430 >> SPEAKER 2: Mislim it-- ja jo postavi na kupu. 1054 00:48:04,430 --> 00:48:05,763 >> SPEAKER 1: ga postavi na kupu. 1055 00:48:05,763 --> 00:48:07,044 OK, kul, potrjen. 1056 00:48:07,044 --> 00:48:07,710 Druga vprašanja? 1057 00:48:07,710 --> 00:48:08,030 Ja? 1058 00:48:08,030 --> 00:48:10,946 >> OBČINSTVO: Ko prenese malloc, ne računalnik samodejno 1059 00:48:10,946 --> 00:48:12,910 dodeliti pomnilnika za spremenljivke? 1060 00:48:12,910 --> 00:48:14,660 SPEAKER 1: Ja, za vaše lokalne spremenljivke, 1061 00:48:14,660 --> 00:48:16,724 samodejno postavi spomin na kupu. 1062 00:48:16,724 --> 00:48:18,640 OBČINSTVO: Torej, kaj je točka uporabo malloc? 1063 00:48:18,640 --> 00:48:19,840 SPEAKER 1: Kaj je točka uporabo malloc? 1064 00:48:19,840 --> 00:48:22,850 Tako smo videli kup primerov, kot so, na primer, z uporabo zamenjave, 1065 00:48:22,850 --> 00:48:25,690 kjer želimo obseg spremenljivka biti nekaj 1066 00:48:25,690 --> 00:48:27,940 več kot le njihovo funkcijo klica. 1067 00:48:27,940 --> 00:48:29,875 In želimo nekaj da bomo lahko podajaš 1068 00:48:29,875 --> 00:48:31,750 in da bomo lahko dostopate iz različnih krajev. 1069 00:48:31,750 --> 00:48:33,791 To je, če bi se želimo dal spomin na kupu. 1070 00:48:33,791 --> 00:48:37,835 Torej, da so vsi ti različni funkcije lahko dostopate do njega. 1071 00:48:37,835 --> 00:48:40,510 >> OBČINSTVO: Lahko si razložil? 1072 00:48:40,510 --> 00:48:44,770 >> SPEAKER 1: Torej, ena od možnosti, tako da is-- Vprašanje je bilo, lahko smo samo allocate-- 1073 00:48:44,770 --> 00:48:47,660 Žal, lahko razglasi Globalna spremenljivka, v bistvu. 1074 00:48:47,660 --> 00:48:48,560 To je ena od možnosti. 1075 00:48:48,560 --> 00:48:50,893 Vendar z veliko tistih, tistih ponavadi dobijo res grdo. 1076 00:48:50,893 --> 00:48:52,847 In smo na splošno mislim, navedene kot slabe zasnove. 1077 00:48:52,847 --> 00:48:53,821 Ja. 1078 00:48:53,821 --> 00:48:56,580 Cool, katera koli druga vprašanja? 1079 00:48:56,580 --> 00:48:57,140 Awesome. 1080 00:48:57,140 --> 00:48:58,789 OK, ki se gibljejo na. 1081 00:48:58,789 --> 00:49:00,580 Torej, to je pravzaprav kako dodeliti pomnilnika. 1082 00:49:00,580 --> 00:49:02,670 Pogovarjala sva se o tem malo. 1083 00:49:02,670 --> 00:49:04,240 Mi uporabljamo to funkcijo imenovan malloc. 1084 00:49:04,240 --> 00:49:07,850 In ti povem, koliko bajtov pomnilnik, tako da koliko bajtov na kup, 1085 00:49:07,850 --> 00:49:08,610 ti hočeš. 1086 00:49:08,610 --> 00:49:13,120 In to se dogaja, da se vrnete na naslov, tako kazalec, kos pomnilnika 1087 00:49:13,120 --> 00:49:14,500 da je to namenila za vas. 1088 00:49:14,500 --> 00:49:17,080 Torej je tip bo nična zvezda. 1089 00:49:17,080 --> 00:49:21,310 To se dogaja, da je kazalec na karkoli se boste odločili, da dajo noter. 1090 00:49:21,310 --> 00:49:23,530 Vsak čas pokličete malloc, smo že povedali 1091 00:49:23,530 --> 00:49:25,640 moraš sprostiti, zato smo nimajo spomin razpoka. 1092 00:49:25,640 --> 00:49:27,170 >> Kaj je druga stvar da vas absolutno 1093 00:49:27,170 --> 00:49:29,185 moraš narediti vsak Čas pokličete malloc? 1094 00:49:29,185 --> 00:49:31,210 1095 00:49:31,210 --> 00:49:32,210 OK, boste morali, da ga osvobodi. 1096 00:49:32,210 --> 00:49:34,010 Kaj je druga stvar? 1097 00:49:34,010 --> 00:49:35,890 Preverite za nično, lepo. 1098 00:49:35,890 --> 00:49:38,850 Torej, ja, to je pravica tam gor na krovu. 1099 00:49:38,850 --> 00:49:42,120 Če bi poskušali dodeliti spomin in ste brez spominskega levo, 1100 00:49:42,120 --> 00:49:44,940 Računalnik je reči, Jaz nimam nič, da bi vam. 1101 00:49:44,940 --> 00:49:47,650 In to vam daje nazaj null. 1102 00:49:47,650 --> 00:49:48,400 Vprašanja o tem? 1103 00:49:48,400 --> 00:49:49,290 Ja. 1104 00:49:49,290 --> 00:49:52,995 >> OBČINSTVO: Zakaj bi si kdaj želeli, da razglasi kazalec s posebno vrsto 1105 00:49:52,995 --> 00:49:56,329 ko lahko nična zvezda ročaj vse vrste kazalec nekako? 1106 00:49:56,329 --> 00:49:57,370 SPEAKER 1: Dobro vprašanje. 1107 00:49:57,370 --> 00:50:00,590 Zakaj bi rekli int zvezdo v nasprotju z izničijo zvezdo 1108 00:50:00,590 --> 00:50:03,740 ko lahko nična zvezda uredila vse? 1109 00:50:03,740 --> 00:50:06,390 Torej, ne želimo, da nikoli izrecno cast kazalce. 1110 00:50:06,390 --> 00:50:07,940 To je samo slaba praksa. 1111 00:50:07,940 --> 00:50:11,850 Ampak bomo govorili o int zvezdami prav tako kot razumevanje, 1112 00:50:11,850 --> 00:50:14,195 Ta kazalec na celo število. 1113 00:50:14,195 --> 00:50:14,850 >> OBČINSTVO: OK. 1114 00:50:14,850 --> 00:50:17,558 >> SPEAKER 1: Ja, in omogoča ste manipulirati vrednosti v njej 1115 00:50:17,558 --> 00:50:18,667 kot cela števila. 1116 00:50:18,667 --> 00:50:20,008 >> OBČINSTVO: Oh, v redu. 1117 00:50:20,008 --> 00:50:22,250 In neveljavne zvezda ne bi pustil to naredil? 1118 00:50:22,250 --> 00:50:25,070 >> SPEAKER 1: To je odvisno od kontekst Ja, zato ne skrbite 1119 00:50:25,070 --> 00:50:28,460 Ne skrbite preveč o vrsti tam. 1120 00:50:28,460 --> 00:50:32,620 Samo vem, da na splošno, malloc vrne kazalec na nekaj. 1121 00:50:32,620 --> 00:50:33,520 Dobro vprašanje. 1122 00:50:33,520 --> 00:50:37,260 >> OBČINSTVO: Zakaj se množijo je krat 10? [Neslišno]. 1123 00:50:37,260 --> 00:50:40,150 >> SPEAKER 1: Seveda, tako da sem bil samo početje naključno primer tukaj, kjer 1124 00:50:40,150 --> 00:50:42,840 Želel sem, da dodeli dovolj Prostor za shranjevanje 10 cela števila. 1125 00:50:42,840 --> 00:50:44,320 Samo naključna izbira. 1126 00:50:44,320 --> 00:50:45,250 Ja. 1127 00:50:45,250 --> 00:50:45,440 Ja, kaj se dogaja? 1128 00:50:45,440 --> 00:50:47,440 >> OBČINSTVO: Kaj morate storiti pomeni s preverjanjem null? 1129 00:50:47,440 --> 00:50:51,351 Ali želite, da preverite kazalec za nično ali knjižnične funkcije malloc? 1130 00:50:51,351 --> 00:50:52,350 SPEAKER 1: Ja, točno. 1131 00:50:52,350 --> 00:50:54,599 Torej, vprašanje je, kaj mislimo s pregledom, ki ga null? 1132 00:50:54,599 --> 00:50:57,880 Želimo to-- kadarkoli pravimo malloc in smo se vrnili kazalec, 1133 00:50:57,880 --> 00:51:01,110 želimo povedati, je kazalec enaka NULL? 1134 00:51:01,110 --> 00:51:02,610 Torej dobesedno PTR. 1135 00:51:02,610 --> 00:51:05,620 Je PTR enaka NULL. 1136 00:51:05,620 --> 00:51:06,958 Da. 1137 00:51:06,958 --> 00:51:08,832 OBČINSTVO: Torej, sem bil nekako sprašujete, če vas 1138 00:51:08,832 --> 00:51:14,013 inicializirati kazalec v knjižnične funkcije malloc, ne pa opozarjajo na začetku knjižnične funkcije malloc? 1139 00:51:14,013 --> 00:51:15,097 Ker če to je array-- 1140 00:51:15,097 --> 00:51:16,554 SPEAKER 1: To je odlično vprašanje. 1141 00:51:16,554 --> 00:51:19,200 Ja, če pokličete malloc je kazalec, da it-- recimo, 1142 00:51:19,200 --> 00:51:21,700 tako da tukaj smo dodelila 10 bajtov pomnilnika. 1143 00:51:21,700 --> 00:51:23,830 Torej, žal mi je, dovolj prostor za 10 celih števil, 1144 00:51:23,830 --> 00:51:28,220 bomo dobili naslov da prvi del pomnilnika. 1145 00:51:28,220 --> 00:51:29,880 To je dobro vprašanje. 1146 00:51:29,880 --> 00:51:30,481 Ja. 1147 00:51:30,481 --> 00:51:34,810 >> OBČINSTVO: Z dodelitvijo 10 razširjena cela števila, 1148 00:51:34,810 --> 00:51:38,177 bi ga lahko dejansko uporabili, da kazalec kot like-- skoraj 1149 00:51:38,177 --> 00:51:39,372 kot niz števil? 1150 00:51:39,372 --> 00:51:41,830 SPEAKER 1: Ja, tako da lahko jo uporabite kot niz celih števil? 1151 00:51:41,830 --> 00:51:45,970 Ja, točno, to je tisto, Pulak samo pokazala vam on-- nekaj drsi nazaj, 1152 00:51:45,970 --> 00:51:48,680 kjer smo rekli, v redu, to je res nekako of-- smo 1153 00:51:48,680 --> 00:51:50,805 Lahko si o njej mislijo kot Niz 10 števil. 1154 00:51:50,805 --> 00:51:52,222 To se zgodi le, da je na kupu. 1155 00:51:52,222 --> 00:51:54,971 OBČINSTVO: Ampak ti ne bi mogla dostop je z oglati oklepaj zapis? 1156 00:51:54,971 --> 00:51:58,220 SPEAKER 1: Vi dejansko lahko dostopate je z oglati oklepaj zapisu, ja. 1157 00:51:58,220 --> 00:52:00,221 Lahko jim obravnavati enako. 1158 00:52:00,221 --> 00:52:00,720 Da. 1159 00:52:00,720 --> 00:52:02,420 >> OBČINSTVO: Zakaj bi Pointer kdaj je ničen? 1160 00:52:02,420 --> 00:52:04,170 >> SPEAKER 1: Zakaj bi Pointer kdaj je ničen? 1161 00:52:04,170 --> 00:52:06,570 Če boste uporabili gor vse spomin na kupu. 1162 00:52:06,570 --> 00:52:09,141 Če je vaš program jedo up, jedo, jedo up spomin, 1163 00:52:09,141 --> 00:52:11,890 in ni nič levo, nato malloc se dogaja, da say-- če rečeš, 1164 00:52:11,890 --> 00:52:14,760 Hočem 100 več bajtov, to se dogaja reči, da nimam 100 bajtov. 1165 00:52:14,760 --> 00:52:15,740 Tukaj je nična. 1166 00:52:15,740 --> 00:52:18,780 To pomeni, da mi ni uspelo. 1167 00:52:18,780 --> 00:52:20,516 Da. 1168 00:52:20,516 --> 00:52:22,830 >> OBČINSTVO: V tem primeru, null nič, kajne? 1169 00:52:22,830 --> 00:52:24,110 >> SPEAKER 1: Ja, s tem, da primer, null nič. 1170 00:52:24,110 --> 00:52:24,943 Nimaš naslov. 1171 00:52:24,943 --> 00:52:28,065 Ni spomin. 1172 00:52:28,065 --> 00:52:31,500 Vse pravice, ki se gibljejo na. 1173 00:52:31,500 --> 00:52:34,976 OK, kaj je govoril zelo hitro o buffer overflow. 1174 00:52:34,976 --> 00:52:38,210 Kdaj lahko srečamo buffer overflow? 1175 00:52:38,210 --> 00:52:42,980 Recimo, da imamo a-- smo dodeli kos pomnilnika, 1176 00:52:42,980 --> 00:52:44,720 in bomo napisati niz v. 1177 00:52:44,720 --> 00:52:47,240 In bomo rekli, OK, bom dodeliti 1178 00:52:47,240 --> 00:52:49,320 dovolj prostora za šest znakov. 1179 00:52:49,320 --> 00:52:51,680 In jaz bom prosil uporabnik za nekaj vhod. 1180 00:52:51,680 --> 00:52:54,470 In inputi uporabnik, na primer, zdravo. 1181 00:52:54,470 --> 00:52:56,430 In da se popolnoma ujema globe, ker imamo 1182 00:52:56,430 --> 00:53:00,790 prostor za vse znake za zdravo, in null zaključni znak. 1183 00:53:00,790 --> 00:53:02,840 Veliko prostora, brez problema. 1184 00:53:02,840 --> 00:53:08,010 >> Kaj pa če damo priložnost za zlo uporabnik uporabljati naš program, 1185 00:53:08,010 --> 00:53:13,152 in ti tip v ne šest znakov, ali ne pet znakov, ampak milijon. 1186 00:53:13,152 --> 00:53:15,860 Vodijo tipkanje in tipkanje, in tipkanje, kaj se bo zgodilo? 1187 00:53:15,860 --> 00:53:18,220 Pa smo le daje Računalnik enough-- ali žal, 1188 00:53:18,220 --> 00:53:23,350 smo dali le ta niz dovolj prostora za 5 znakov. 1189 00:53:23,350 --> 00:53:28,300 Torej, bomo dobili nekaj podobnega to, kjer zlo oseba, ki je 1190 00:53:28,300 --> 00:53:31,750 tipkanje na vhodu lahko prepisati velikost pufra, 1191 00:53:31,750 --> 00:53:35,922 in lahko gredo dejansko mimo višini ki je bila prvotno dodeljena. 1192 00:53:35,922 --> 00:53:38,380 In potem, kaj lahko storite, je res zlo, kar lahko storite, 1193 00:53:38,380 --> 00:53:40,260 je prepisal naslov pošiljatelja. 1194 00:53:40,260 --> 00:53:42,010 Kar v bistvu pomeni, lahko nekako sprejme 1195 00:53:42,010 --> 00:53:45,110 kontrola obnašanja programa. 1196 00:53:45,110 --> 00:53:47,880 Torej, na zelo visoki ravni buffer overflow je, ko 1197 00:53:47,880 --> 00:53:49,960 vam dodeli neko količino pomnilnika. 1198 00:53:49,960 --> 00:53:53,060 In potem you-- to zato, ker ste ob vnos uporabnika ali kaj podobnega 1199 00:53:53,060 --> 00:53:57,190 kot that-- greš čez meje kaj ste prvotno dodeljena 1200 00:53:57,190 --> 00:53:59,955 in začnite mesijanski ki gre gor svoj program. 1201 00:53:59,955 --> 00:54:00,455 Ja? 1202 00:54:00,455 --> 00:54:03,220 >> OBČINSTVO: Zakaj ne bi, da je samo vrne napako segmentacije? 1203 00:54:03,220 --> 00:54:05,594 >> SPEAKER 1: Zakaj ne bi, da vrne napako segmentacije? 1204 00:54:05,594 --> 00:54:06,570 To je lahko. 1205 00:54:06,570 --> 00:54:10,030 Včasih prevajalnik ali Med enega od vaših runtime 1206 00:54:10,030 --> 00:54:11,430 se dejansko dogaja, da preverite to. 1207 00:54:11,430 --> 00:54:13,890 Če nekatere stvari se dogajajo, in to je nekako nižji ravni, 1208 00:54:13,890 --> 00:54:15,610 potem morate vedeti. 1209 00:54:15,610 --> 00:54:18,820 Ampak, če ne oblikujejo pravilno ti sistemi, 1210 00:54:18,820 --> 00:54:21,170 potem imate priložnost od ne-lov in samo 1211 00:54:21,170 --> 00:54:24,844 omogoča računalnik take-- zlo oseba za nadzor vaš računalnik. 1212 00:54:24,844 --> 00:54:25,344 Ja. 1213 00:54:25,344 --> 00:54:26,260 >> OBČINSTVO: [neslišno]? 1214 00:54:26,260 --> 00:54:28,934 1215 00:54:28,934 --> 00:54:29,600 SPEAKER 1: Seveda. 1216 00:54:29,600 --> 00:54:33,800 Oh, ko sem rekel, buffer, sem samo pomeni količino pomnilnika, ki ste jih dodeli. 1217 00:54:33,800 --> 00:54:39,090 Torej, tukaj sem rekel, oh, smo dodeljenih šest char-- dovolj prostora za šest znakov. 1218 00:54:39,090 --> 00:54:42,880 In sem poklical, da je moj buffer kjer sem lahko napisati podatke. 1219 00:54:42,880 --> 00:54:44,390 Ja. 1220 00:54:44,390 --> 00:54:46,791 Vsa ostala vprašanja o tem? 1221 00:54:46,791 --> 00:54:47,290 Ja. 1222 00:54:47,290 --> 00:54:49,150 >> OBČINSTVO: Kako ga ustaviti? 1223 00:54:49,150 --> 00:54:50,274 Kako ga ustaviti? 1224 00:54:50,274 --> 00:54:51,440 SPEAKER 1: Awesome vprašanje. 1225 00:54:51,440 --> 00:54:52,240 Kako ga ustaviti? 1226 00:54:52,240 --> 00:54:54,110 Kako preprečiti buffer overflow? 1227 00:54:54,110 --> 00:54:59,160 No, eden od načinov, da to storite, je nekaj podobnega GetString, kjer smo nenehno povečujejo 1228 00:54:59,160 --> 00:55:03,200 količina pomnilnika, da dodeli če uporabnik vnese veliko besedila. 1229 00:55:03,200 --> 00:55:07,570 Druga stvar je le, če vas želijo šest znakov, naredite hiter pregled. 1230 00:55:07,570 --> 00:55:11,220 Reci le vhod šest znakov. 1231 00:55:11,220 --> 00:55:12,444 Ja. 1232 00:55:12,444 --> 00:55:14,360 Torej, recimo, da ste bili delajo on-- gremo 1233 00:55:14,360 --> 00:55:16,985 iti na spletni stvari malo kasneje v course-- ampak dajmo 1234 00:55:16,985 --> 00:55:21,422 pravijo, delate na obrazcu, bi si samo omejiti, koliko bi izročil v. 1235 00:55:21,422 --> 00:55:22,378 Ja. 1236 00:55:22,378 --> 00:55:24,768 >> OBČINSTVO: GetString potegne spomin iz dimnika, kajne? 1237 00:55:24,768 --> 00:55:25,444 Samo, da pojasni? 1238 00:55:25,444 --> 00:55:26,485 SPEAKER 1: Še enkrat? 1239 00:55:26,485 --> 00:55:28,400 OBČINSTVO: Ali GetString bo spomin iz dimnika? 1240 00:55:28,400 --> 00:55:31,210 SPEAKER 1: Verjamem Getm-- get int je spomin iz kopice 1241 00:55:31,210 --> 00:55:32,911 ker zahteva Aloc. 1242 00:55:32,911 --> 00:55:33,452 OBČINSTVO: Oh. 1243 00:55:33,452 --> 00:55:33,951 V REDU. 1244 00:55:33,951 --> 00:55:35,750 SPEAKER 1: Ja, malloc in realloc. 1245 00:55:35,750 --> 00:55:37,120 Druga vprašanja? 1246 00:55:37,120 --> 00:55:37,803 Ja. 1247 00:55:37,803 --> 00:55:40,650 >> OBČINSTVO: Torej z opredelitvijo velikost pufersko 1248 00:55:40,650 --> 00:55:42,733 boste preprečili nekoga iz bi mogli injicirati kodo 1249 00:55:42,733 --> 00:55:45,700 da lahko drsi mimo [neslišno]. 1250 00:55:45,700 --> 00:55:48,130 >> SPEAKER 1: Torej, z opredelitvijo velikost pufra, 1251 00:55:48,130 --> 00:55:50,760 da ste rekel, OK, tukaj je, kako pomnilnika lahko uporabimo. 1252 00:55:50,760 --> 00:55:55,550 Če dovolite uporabniku, da napišete nad njim, potem boste zašli v težave. 1253 00:55:55,550 --> 00:55:57,930 Ima smisel. 1254 00:55:57,930 --> 00:55:59,370 Awesome. 1255 00:55:59,370 --> 00:56:00,640 Gremo skupaj. 1256 00:56:00,640 --> 00:56:02,320 V redu. 1257 00:56:02,320 --> 00:56:06,652 Ko že govorimo o napakah, tu so nekatera sporočila pogosta napaka 1258 00:56:06,652 --> 00:56:09,860 da bi odkrila, ko ste bili kodiranje, ki delajo na vaših sklopih problematike. 1259 00:56:09,860 --> 00:56:12,320 Dobra priložnost, da je eden od to kaže na kvizu 1260 00:56:12,320 --> 00:56:15,090 če so pretekle let znamenje. 1261 00:56:15,090 --> 00:56:17,580 Torej, odgovori so nekako tu gor na krovu. 1262 00:56:17,580 --> 00:56:19,510 Vendar vas prosimo, da kričati ven nekaj več. 1263 00:56:19,510 --> 00:56:21,280 >> Zakaj bi napaka segmentacijo zgodilo? 1264 00:56:21,280 --> 00:56:24,279 Zakaj ste morda dobili napako segmentacije Ko ste tekmovanje v teku svoj program? 1265 00:56:24,279 --> 00:56:26,760 1266 00:56:26,760 --> 00:56:28,230 >> OBČINSTVO: [neslišno]. 1267 00:56:28,230 --> 00:56:29,500 >> SPEAKER 1: Dobro. 1268 00:56:29,500 --> 00:56:32,820 Ja, če bomo poskušali dostop pomnilnika, ki je ne glede na nas. 1269 00:56:32,820 --> 00:56:34,610 Če bomo dereference null kazalec. 1270 00:56:34,610 --> 00:56:38,610 Na primer, če pravimo malloc, in pozabi, da preverite, če je nična, 1271 00:56:38,610 --> 00:56:42,250 in smo samo poskušali njegovo uporabo, računalnik je dogaja, da nam napako segmentacije. 1272 00:56:42,250 --> 00:56:42,750 Dobro. 1273 00:56:42,750 --> 00:56:46,680 Kaj pa implicitna Izjava funkcije? 1274 00:56:46,680 --> 00:56:48,589 Kaj to pomeni? 1275 00:56:48,589 --> 00:56:51,380 OBČINSTVO: Poizkušate uporabite Funkcija, ki ste jih niso opredeljeni. 1276 00:56:51,380 --> 00:56:52,130 SPEAKER 1: Dobro. 1277 00:56:52,130 --> 00:56:54,504 Skušate uporabiti funkcijo da niste določili. 1278 00:56:54,504 --> 00:56:56,000 Tako, da bi lahko bil eden od dveh stvari. 1279 00:56:56,000 --> 00:56:59,320 Mogoče je bilo tako kot na primer Camille ti pokazal prej. 1280 00:56:59,320 --> 00:57:02,330 In imate glavno funkcijo ki zahteva nekaj, kar ti kocka. 1281 00:57:02,330 --> 00:57:04,371 In recimo, da si pozabil napisati ta prototip. 1282 00:57:04,371 --> 00:57:07,540 Pozabil si povedati, hej računalnik, Imam to funkcijo imenovano kocko. 1283 00:57:07,540 --> 00:57:09,380 Boste videli kasneje. 1284 00:57:09,380 --> 00:57:12,440 Recimo, da si pozabil napisati Prototip, boste morda dobili to napako. 1285 00:57:12,440 --> 00:57:14,820 Druga stvar je, recimo, Ste že poskusili uporabiti printf, 1286 00:57:14,820 --> 00:57:16,880 in pozabil, da so standard knjižnica, 1287 00:57:16,880 --> 00:57:20,240 potem je reči implicitna Izjava funkcije. 1288 00:57:20,240 --> 00:57:22,800 In nazadnje, vendar ne najmanj pomembno, neprijavljeno identifikator. 1289 00:57:22,800 --> 00:57:23,300 Ja. 1290 00:57:23,300 --> 00:57:24,841 >> OBČINSTVO: Imaš obseg problema. 1291 00:57:24,841 --> 00:57:28,728 Tako kot morda skušate pokličite lokalno spremenljivko, ki je 1292 00:57:28,728 --> 00:57:30,884 v drugem vrste vrata. 1293 00:57:30,884 --> 00:57:33,550 SPEAKER 1: Velika, tako da, če imate spremenljivka, ki ni v obsegu, 1294 00:57:33,550 --> 00:57:36,890 in skušate uporabiti, boste dobili v težave. 1295 00:57:36,890 --> 00:57:40,960 In samo bolj na splošno, recimo ga skušate uporabiti, x, z vedno rekel int 1296 00:57:40,960 --> 00:57:45,140 x je enak 5, potem ste tekoč teči v težave. 1297 00:57:45,140 --> 00:57:47,640 Oprostite, vprašanja o tem? 1298 00:57:47,640 --> 00:57:49,330 Super, chugging desno skupaj. 1299 00:57:49,330 --> 00:57:55,692 >> OK, rekurzija, zakaj might-- Dovolite see-- Izgubil sem sch-- oh gremo, 1300 00:57:55,692 --> 00:57:57,400 Samo poskrbite, da sva približno po urniku. 1301 00:57:57,400 --> 00:57:59,060 V redu, v redu. 1302 00:57:59,060 --> 00:58:03,150 OK, rekurzija, splošna ideja rekurzije, rekurzivna funkcija 1303 00:58:03,150 --> 00:58:05,380 je funkcija, ki sebe imenuje. 1304 00:58:05,380 --> 00:58:08,170 OK, tako da je kaj sem pomeni s programsko zasnovo 1305 00:58:08,170 --> 00:58:11,130 pri čemer se funkcija klice. 1306 00:58:11,130 --> 00:58:16,210 Kaj bi bilo some-- kaj je dober razlog za uporabo rekurzije? 1307 00:58:16,210 --> 00:58:17,550 Ko bi bilo lahko koristno? 1308 00:58:17,550 --> 00:58:20,926 Ali kakšen program, ki res sama posoja rekurzije? 1309 00:58:20,926 --> 00:58:22,330 >> OBČINSTVO: Binarni iskanje. 1310 00:58:22,330 --> 00:58:25,500 >> SPEAKER 1: Binarni iskanje dovzetni za rekurzije, 1311 00:58:25,500 --> 00:58:29,060 ker imate ta problem, ki vas mogoče razčleniti na manjše koščke, 1312 00:58:29,060 --> 00:58:32,330 in neprekinjeno opravljanje enaka algoritma na njej. 1313 00:58:32,330 --> 00:58:37,790 To vodi k, v številnih primerih, bolj Elegantna kodo, ki je bolj natančen. 1314 00:58:37,790 --> 00:58:40,500 Pravkar smo na primer binarnega iskanja. 1315 00:58:40,500 --> 00:58:43,100 Drug primer je združiti vrste. 1316 00:58:43,100 --> 00:58:45,920 Včasih, ko si misliš o algoritem, kot faktorski, 1317 00:58:45,920 --> 00:58:47,410 to samo zdi rekurzivni, kajne? 1318 00:58:47,410 --> 00:58:52,440 Ker vemo, da je faktorski 5 je faktorski 4 krat 5. 1319 00:58:52,440 --> 00:58:56,080 In tako, ko ste nastavili težave na ta način, samo počuti rekurzivna. 1320 00:58:56,080 --> 00:58:58,530 Tako, da bi bila Odličen način, da jo pišejo. 1321 00:58:58,530 --> 00:58:59,425 Vprašanja? 1322 00:58:59,425 --> 00:59:00,395 Da. 1323 00:59:00,395 --> 00:59:01,850 >> OBČINSTVO: Kaj je osnovna? 1324 00:59:01,850 --> 00:59:02,770 >> SPEAKER 1: Oh, kaj je osnovna? 1325 00:59:02,770 --> 00:59:04,680 Rekel sem, da ne pozabite vključiti bazo primera. 1326 00:59:04,680 --> 00:59:07,690 Recimo, da smo pisno faktorski funkcija, 1327 00:59:07,690 --> 00:59:09,620 in smo počeli fakulteto 5. 1328 00:59:09,620 --> 00:59:12,352 In vemo fakulteto 5 je 5 krat faktorski dne 4., 1329 00:59:12,352 --> 00:59:13,310 bla, bla, bla, bla. 1330 00:59:13,310 --> 00:59:14,360 Kako vemo, kdaj je treba prenehati? 1331 00:59:14,360 --> 00:59:16,276 Kako vemo, da smo dejansko imajo številko? 1332 00:59:16,276 --> 00:59:20,180 Ker če bomo klical factorial, potem mi nikoli ne bi dobili odgovor, kajne? 1333 00:59:20,180 --> 00:59:24,470 Torej, ko ne vemo, kako stop na primer faktorski. 1334 00:59:24,470 --> 00:59:25,460 Vsakdo, ja. 1335 00:59:25,460 --> 00:59:27,764 >> OBČINSTVO: Ko je 1 factorial 1. 1336 00:59:27,764 --> 00:59:28,430 SPEAKER 1: Dobro. 1337 00:59:28,430 --> 00:59:29,530 Torej vemo. 1338 00:59:29,530 --> 00:59:33,400 Mi lahko samo po sebi umevno, da 1 faktorski enak 1. 1339 00:59:33,400 --> 00:59:36,570 Torej, če bomo prišli do točke, ko smo kličeš fakulteto na 1, 1340 00:59:36,570 --> 00:59:38,050 samo pojdi naprej in se vrniti 1. 1341 00:59:38,050 --> 00:59:39,180 In to je tvoja osnovna. 1342 00:59:39,180 --> 00:59:45,040 Ker vemo, ko smo zadeli, da je in bomo vedno hit, da bomo never-- 1343 00:59:45,040 --> 00:59:48,800 ne bomo kar naprej dogaja vedno. 1344 00:59:48,800 --> 00:59:50,700 Vsa druga vprašanja o rekurzije? 1345 00:59:50,700 --> 00:59:51,630 Da. 1346 00:59:51,630 --> 00:59:54,420 >> OBČINSTVO: Torej, ko se vrnete 1, le samodejno 1347 00:59:54,420 --> 00:59:56,290 bo ustavil program, kajne? 1348 00:59:56,290 --> 00:59:59,390 >> SPEAKER 1: Ja, tako ko ti pokličite donos 1, if-- recimo, 1349 00:59:59,390 --> 01:00:04,480 recimo faktorsko 2 klicev faktorski po 1, faktorsko od 1 1350 01:00:04,480 --> 01:00:06,120 bo samo vrniti 1. 1351 01:00:06,120 --> 01:00:12,790 In zdaj bo faktorski dne 2. reči, OK, 2 krat 1 je 2, in se vrniti ta odgovor. 1352 01:00:12,790 --> 01:00:14,260 Da. 1353 01:00:14,260 --> 01:00:16,710 >> OBČINSTVO: Ali moramo skrbeti o obsegu v rekurzije 1354 01:00:16,710 --> 01:00:20,150 ko greš v algoritmu? 1355 01:00:20,150 --> 01:00:21,880 >> SPEAKER 1: Ah, ja. 1356 01:00:21,880 --> 01:00:25,060 Ja, moraš skrbeti Področje v okviru rekurzijska. 1357 01:00:25,060 --> 01:00:29,820 Torej le spremenljivke definirane v tej vožnji funkcije 1358 01:00:29,820 --> 01:00:32,170 se dogaja, da je koristen. 1359 01:00:32,170 --> 01:00:33,792 Ja, dobro vprašanje. 1360 01:00:33,792 --> 01:00:35,250 V redu, dajmo premikajo skupaj. 1361 01:00:35,250 --> 01:00:37,320 Ker imamo veliko Material priti skozi. 1362 01:00:37,320 --> 01:00:41,080 Ampak kot sem rekel, vas prosimo, da hit gor uradnih ur, ali pa nas po dejstvu. 1363 01:00:41,080 --> 01:00:42,850 >> To je samo res hitro slide. 1364 01:00:42,850 --> 01:00:45,150 Veliko smo se naučili o iskanja in vrste. 1365 01:00:45,150 --> 01:00:47,400 Prosim, prosim, prosim, Ti oddelki so na spletu, 1366 01:00:47,400 --> 01:00:51,240 Verjamem v cs50.net/quizzes~~pobj. 1367 01:00:51,240 --> 01:00:53,762 Torej pojdite to tabelo in ga dal na svojo oceno stanja, 1368 01:00:53,762 --> 01:00:55,470 saj ne bo vprašanje o tem. 1369 01:00:55,470 --> 01:00:56,682 Prosim, ne dobijo to narobe. 1370 01:00:56,682 --> 01:00:58,390 Samo zelo hitro, kaj to grafikon pomeni, 1371 01:00:58,390 --> 01:01:04,370 se govori o Big O, kar vemo da je zgornja meja za algoritmov 1372 01:01:04,370 --> 01:01:05,150 čas teče. 1373 01:01:05,150 --> 01:01:08,080 In imamo omega, ki je bo spodnja meja 1374 01:01:08,080 --> 01:01:10,290 AN algoritmov izvajanja. 1375 01:01:10,290 --> 01:01:10,840 V REDU? 1376 01:01:10,840 --> 01:01:12,480 >> OBČINSTVO: [neslišno]. 1377 01:01:12,480 --> 01:01:12,800 >> SPEAKER 1: Ja, kaj je zadnja stvar? 1378 01:01:12,800 --> 01:01:13,380 Kaj je theta? 1379 01:01:13,380 --> 01:01:16,850 To je, če we-- bomo le mar v tem razredu v primeru 1380 01:01:16,850 --> 01:01:19,381 kjer naša zgornja meja in naša spodnja meja sta enaka. 1381 01:01:19,381 --> 01:01:22,005 Ja, to je edini čas, ko je dogaja, da pridejo v tem razredu. 1382 01:01:22,005 --> 01:01:23,320 OK, bom nadaljuj. 1383 01:01:23,320 --> 01:01:26,490 Če niste jemali vašo sliko Obljubim, da ti bo na spletu. 1384 01:01:26,490 --> 01:01:28,220 >> OK, super, konstruktov. 1385 01:01:28,220 --> 01:01:29,810 Zakaj bi mi želeli konstruktov? 1386 01:01:29,810 --> 01:01:34,110 Kaj je koristen razlog bomo morda želeli konstruktov. 1387 01:01:34,110 --> 01:01:36,277 Nekdo kričati nekaj ven. 1388 01:01:36,277 --> 01:01:38,110 No, kaj je pogled na Primer na krovu. 1389 01:01:38,110 --> 01:01:41,090 Recimo, da imamo opravka pri vseh teh študentov. 1390 01:01:41,090 --> 01:01:44,900 Če smo kar program za CS50, obstajajo kot 800 ljudi. 1391 01:01:44,900 --> 01:01:47,890 Moramo write-- bomo potrebno ravnati veliko informacij 1392 01:01:47,890 --> 01:01:49,020 glede študentov. 1393 01:01:49,020 --> 01:01:50,990 Bilo bi lepo, če smo lahko nekako skupine 1394 01:01:50,990 --> 01:01:54,460 this-- vse informacije, ki ima opraviti s posebnim študent 1395 01:01:54,460 --> 01:01:56,027 v eno vrsto podatkov. 1396 01:01:56,027 --> 01:01:58,360 Vendar vemo, da ni podatkov tip klical, Student, kajne? 1397 01:01:58,360 --> 01:02:01,890 Imamo celo število, imamo float, imamo niz, ali zoglenel zvezdo, 1398 01:02:01,890 --> 01:02:03,920 vendar nimamo, študenta. 1399 01:02:03,920 --> 01:02:08,680 >> Tako smo lahko naredite, je pravzaprav neke vrste opredeliti naša lastna konstrukcija, pokličite ga študent, 1400 01:02:08,680 --> 01:02:12,440 in bomo lahko povezali nekaj različna področja s tem struct. 1401 01:02:12,440 --> 01:02:14,410 Torej, v tem primeru, kaj je pravijo, da imamo študenta. 1402 01:02:14,410 --> 01:02:17,350 In stvari, ki jih skrbi o sta študent ID številka 1403 01:02:17,350 --> 01:02:19,500 in študenta ime. 1404 01:02:19,500 --> 01:02:24,175 In zdaj smo lahko povežemo ID in to ime z dano študenta. 1405 01:02:24,175 --> 01:02:25,300 Torej, poglejmo nekaj primerov. 1406 01:02:25,300 --> 01:02:28,860 1407 01:02:28,860 --> 01:02:33,490 >> OK, tako da tukaj sem rekel, OK, dajmo pravijo, želimo, da bi študent. 1408 01:02:33,490 --> 01:02:35,050 Kličem ga študent 1. 1409 01:02:35,050 --> 01:02:38,850 In njegova identifikacijska številka, v V tem primeru bomo lahko dostopate 1410 01:02:38,850 --> 01:02:45,200 s samo delaš ime študenta dot polje želimo dostopati. 1411 01:02:45,200 --> 01:02:49,110 Torej, to se dogaja, da samo se študent 1 pika ID, in smo si zadali, da enaka 1. 1412 01:02:49,110 --> 01:02:52,300 Saj se spomnite, smo rekli, da ID se bo celo število. 1413 01:02:52,300 --> 01:02:56,540 In zelo podobno, lahko rečemo, to ime študenta se bo Davin, 1414 01:02:56,540 --> 01:02:57,760 npr. 1415 01:02:57,760 --> 01:03:01,420 Tako smo lahko le dostop polje iz struct uporabo te pika. 1416 01:03:01,420 --> 01:03:03,098 Vprašanja o tem? 1417 01:03:03,098 --> 01:03:03,598 Ja. 1418 01:03:03,598 --> 01:03:05,582 >> OBČINSTVO: Ali obstaja način zaščititi svoje spremenljivke? 1419 01:03:05,582 --> 01:03:08,560 Ali obstaja način, da zaščitite spremenljivk ne bi zunaj dostopen? 1420 01:03:08,560 --> 01:03:10,726 >> SPEAKER 1: Je torej nekako zaščititi svoje spremenljivke 1421 01:03:10,726 --> 01:03:12,680 ne bi zunaj dostopen? 1422 01:03:12,680 --> 01:03:13,750 Ne v obsegu CS50. 1423 01:03:13,750 --> 01:03:16,680 1424 01:03:16,680 --> 01:03:17,977 Druga vprašanja? 1425 01:03:17,977 --> 01:03:18,476 Ja. 1426 01:03:18,476 --> 01:03:18,942 >> OBČINSTVO: Kaj je typedef struct? 1427 01:03:18,942 --> 01:03:20,192 Kaj pomeni vsaka komponenta pomeni? 1428 01:03:20,192 --> 01:03:22,937 1429 01:03:22,937 --> 01:03:24,520 SPEAKER 1: Ah, kaj je typedef struct? 1430 01:03:24,520 --> 01:03:26,240 Kaj vsako komponento pomeni tega fanta? 1431 01:03:26,240 --> 01:03:26,850 >> OBČINSTVO: Ja. 1432 01:03:26,850 --> 01:03:27,683 >> SPEAKER 1: OK, kul. 1433 01:03:27,683 --> 01:03:31,200 Torej, ta pravi, hej računalnik, sem želite ustvariti novo strukturo. 1434 01:03:31,200 --> 01:03:34,970 In bom, da se opredeli definicijo za to, tako da sem lahko uporabite 1435 01:03:34,970 --> 01:03:37,520 kot da bi bila vrsta celotnem mojem programu. 1436 01:03:37,520 --> 01:03:39,300 OK, zato želim, da se opredeli strukturo. 1437 01:03:39,300 --> 01:03:41,650 In jaz zdaj bo lahko jo uporabite kot vrsto. 1438 01:03:41,650 --> 01:03:43,400 In njeno ime je študent. 1439 01:03:43,400 --> 01:03:45,730 In tu so polja njegove. 1440 01:03:45,730 --> 01:03:48,130 >> OBČINSTVO: Tako je, da typedef struct [neslišno]? 1441 01:03:48,130 --> 01:03:50,592 1442 01:03:50,592 --> 01:03:53,800 SPEAKER 1: Če želite, da bi lahko uporabite to struct v vašem programu, 1443 01:03:53,800 --> 01:03:57,910 in v večini primerov v CS50 mi storiti, moramo reči tipa Def. 1444 01:03:57,910 --> 01:04:01,190 In da mu omogoča, da jo uporabljajo isto način, ki ga uporabljamo kot int ali float. 1445 01:04:01,190 --> 01:04:04,168 Računalnik bo Vedno vem, kaj je to. 1446 01:04:04,168 --> 01:04:04,668 Ja. 1447 01:04:04,668 --> 01:04:06,560 >> OBČINSTVO: Ali lahko napišemo to v glavi datoteke? 1448 01:04:06,560 --> 01:04:07,060 >> SPEAKER 1: Oh, oprostite. 1449 01:04:07,060 --> 01:04:08,600 Ali smo napisali to v glavi datoteke? 1450 01:04:08,600 --> 01:04:11,410 Lahko bi to napisali na vrhu Program, na vrhu c programa. 1451 01:04:11,410 --> 01:04:13,010 Ja, to bi bilo najbolj smiselno mesto za njo. 1452 01:04:13,010 --> 01:04:13,509 Nazaj tam. 1453 01:04:13,509 --> 01:04:15,704 PUBLIKA: Same vprašanje, tako da pred glavni? 1454 01:04:15,704 --> 01:04:18,870 SPEAKER 1: Pravica, boste morali, da je to nekje, da lahko vsakdo dostop do nje. 1455 01:04:18,870 --> 01:04:20,612 Torej, preden glavni v vašem primeru, ja. 1456 01:04:20,612 --> 01:04:23,820 OBČINSTVO: Ali obstaja razlika med dajanje študenta na vrhu in na dnu? 1457 01:04:23,820 --> 01:04:25,810 SPEAKER 1: Ah, obstaja Razlika med dajanjem študenta 1458 01:04:25,810 --> 01:04:26,840 na vrhu ali na dnu? 1459 01:04:26,840 --> 01:04:29,650 Let-- rešiti to vprašanje, in ko pridemo do povezanih seznamov, 1460 01:04:29,650 --> 01:04:31,020 bomo videli, da je v redu? 1461 01:04:31,020 --> 01:04:32,750 Torej imajo na, da je za eno sekundo. 1462 01:04:32,750 --> 01:04:37,080 Zadnja stvar, želim omeniti, je namesto s strukturo, 1463 01:04:37,080 --> 01:04:41,180 imamo kazalec na strukturo, moremo spremeniti naš zapis 1464 01:04:41,180 --> 01:04:42,480 da bo malo lepše. 1465 01:04:42,480 --> 01:04:45,810 >> Rečemo lahko, recimo, da imamo kazalec na študenta, ne pa samo 1466 01:04:45,810 --> 01:04:47,040 študent. 1467 01:04:47,040 --> 01:04:52,460 Če želimo dostop do polja, namesto tem dobro iti dereference kazalca, 1468 01:04:52,460 --> 01:04:54,100 in nato dostopate ime polja. 1469 01:04:54,100 --> 01:04:57,310 Ta zapis izgleda malo grdo z zvezdo v tem piko. 1470 01:04:57,310 --> 01:05:00,790 Popolnoma pravilna, ampak neke vrste čistejše način, da to storite, 1471 01:05:00,790 --> 01:05:03,280 je samo reči kazalec puščico ime. 1472 01:05:03,280 --> 01:05:11,460 In da je pravzaprav združuje Dereferenciranje in dostop v eni lepi simbol. 1473 01:05:11,460 --> 01:05:12,470 Vprašanja o tem? 1474 01:05:12,470 --> 01:05:13,760 >> OBČINSTVO: samo povem, da še enkrat. 1475 01:05:13,760 --> 01:05:14,480 >> SPEAKER 1: pravijo, da še enkrat. 1476 01:05:14,480 --> 01:05:16,021 >> OBČINSTVO: Točno to, kar ste pravkar povedali. 1477 01:05:16,021 --> 01:05:17,870 SPEAKER 1: Seveda, točno kaj pravkar sem rekel. 1478 01:05:17,870 --> 01:05:21,580 Če imamo kazalec na študenta namesto študenta samega, 1479 01:05:21,580 --> 01:05:25,410 smo can-- en način, da lahko dostopate do polje s dereference njem, in nato 1480 01:05:25,410 --> 01:05:27,110 Ime dostopne. 1481 01:05:27,110 --> 01:05:29,040 Drug, lepše način lahko to storite, kar je le 1482 01:05:29,040 --> 01:05:33,550 malo sintaktične sladkorja, je samo narediti kazalec puščico ime. 1483 01:05:33,550 --> 01:05:38,190 In to se dogaja, da se združujejo Dereferenciranje in dostopanje. 1484 01:05:38,190 --> 01:05:40,400 Ja, precej kul. 1485 01:05:40,400 --> 01:05:41,260 V redu. 1486 01:05:41,260 --> 01:05:44,390 >> Torej, kaj je govoril o drugem vprašanju. 1487 01:05:44,390 --> 01:05:46,520 Oglejmo skok do vozlišč, katero bomo uporabili 1488 01:05:46,520 --> 01:05:49,120 V povezane sezname v samo sekundo. 1489 01:05:49,120 --> 01:05:53,580 Torej, tukaj, boste opazili, da obstaja je beseda vozlišče tako na dnu, 1490 01:05:53,580 --> 01:05:55,160 ter na vrhu. 1491 01:05:55,160 --> 01:05:59,040 Prej, ko smo opredeljevanju študent, smo pravkar imeli študenta na dnu. 1492 01:05:59,040 --> 01:06:00,470 Nismo imeli študenta na vrhu. 1493 01:06:00,470 --> 01:06:01,902 Kdo ve zakaj, da bi lahko bilo? 1494 01:06:01,902 --> 01:06:02,860 Kakšna je razlika? 1495 01:06:02,860 --> 01:06:03,360 Ja. 1496 01:06:03,360 --> 01:06:06,212 OBČINSTVO: Torej ste uporabili vozlišče je definicija vozlišča, 1497 01:06:06,212 --> 01:06:08,254 tako da je rekurzivna stvar? 1498 01:06:08,254 --> 01:06:08,920 SPEAKER 1: Dobro. 1499 01:06:08,920 --> 01:06:13,230 Ja, moramo naše vozlišča imajo kazalec do drugih vozlišč. 1500 01:06:13,230 --> 01:06:17,640 Zato, ker bomo uporabili to vrsto preden je dejansko opredeljena, 1501 01:06:17,640 --> 01:06:20,613 ga moramo postaviti na vrh samo zato, da se ve, kaj je to. 1502 01:06:20,613 --> 01:06:22,446 OBČINSTVO: Torej smo še vedno potrebovala na dnu? 1503 01:06:22,446 --> 01:06:23,338 SPEAKER 1: Da. 1504 01:06:23,338 --> 01:06:24,754 SKUPINA: Torej vedno na dnu. 1505 01:06:24,754 --> 01:06:26,090 ZVOČNIKI 1: vedno na dnu. 1506 01:06:26,090 --> 01:06:29,410 Torej vse tvoje bo ga ima na dnu. 1507 01:06:29,410 --> 01:06:30,720 Vsa druga vprašanja? 1508 01:06:30,720 --> 01:06:33,511 Vse je v redu, tako da omogoča dejansko govoriti o povezana sezname res hitro. 1509 01:06:33,511 --> 01:06:36,510 Tako povezani seznami are-- smo jih uporabili namesto nizi v nekaterih primerih 1510 01:06:36,510 --> 01:06:40,030 ker vemo, da so nizi fiksna dolžina, ker so povezane sezname 1511 01:06:40,030 --> 01:06:42,670 bomo lahko rastejo in skrči, kot smo želeli. 1512 01:06:42,670 --> 01:06:45,790 Torej, to je primer, kaj vezavni seznam bi izgledal. 1513 01:06:45,790 --> 01:06:48,590 Kaj moramo videti je, vodja seznama. 1514 01:06:48,590 --> 01:06:50,330 Torej, če se seznam začne. 1515 01:06:50,330 --> 01:06:53,010 In potem je vozlišče, vsaka naknadno vozlišče, je 1516 01:06:53,010 --> 01:06:55,880 odgovorni za poznavanje kjer je naslednje vozlišče. 1517 01:06:55,880 --> 01:07:00,950 Torej, v tem primeru je vozlišče, ki shranjuje 1 Odgovoren je za vedo, kje je 3. 1518 01:07:00,950 --> 01:07:04,540 Oseba, ki shranjuje 3 odgovoren za vedo, kje je 9. 1519 01:07:04,540 --> 01:07:06,230 In 9 ni nikogar drugega, ki kaže na. 1520 01:07:06,230 --> 01:07:08,750 Konec seznama, tako da samo pravi null. 1521 01:07:08,750 --> 01:07:09,250 V REDU? 1522 01:07:09,250 --> 01:07:10,530 >> OBČINSTVO: Kaj je smisel tega? 1523 01:07:10,530 --> 01:07:11,480 >> SPEAKER 1: Kaj je smisel tega? 1524 01:07:11,480 --> 01:07:12,105 >> OBČINSTVO: Ja. 1525 01:07:12,105 --> 01:07:15,390 SPEAKER 1: Ker Dovolite pravijo, da imamo nekaj podatkov. 1526 01:07:15,390 --> 01:07:18,480 In ne vemo točno, kako veliko podatkov želimo pred časom. 1527 01:07:18,480 --> 01:07:22,479 Torej z vrsto, recimo, kje smo želijo, da računajo ljudem v prvi vrsti. 1528 01:07:22,479 --> 01:07:24,020 Verjetno se ne bo spremenilo. 1529 01:07:24,020 --> 01:07:28,120 Lahko samo rečem, OK, sem želijo paleto velikosti šest. 1530 01:07:28,120 --> 01:07:30,120 Toda, če hočemo kaj da se bo spremenilo. 1531 01:07:30,120 --> 01:07:32,900 >> Na primer, recimo, da sem bil težaven slediti študentov 1532 01:07:32,900 --> 01:07:35,330 ko pridejo v sobo za sejo pregledu. 1533 01:07:35,330 --> 01:07:38,420 Nimam pojma, koliko od vas ljudje se bodo prikazali. 1534 01:07:38,420 --> 01:07:43,094 Torej bi Želim podatkovno strukturo da sem lahko razširi in skrči. 1535 01:07:43,094 --> 01:07:45,510 Saj morda bo nekdo pustite, morda bo nekdo prišel. 1536 01:07:45,510 --> 01:07:48,386 In tako kadarkoli smo lahko dodate ali odstranite vozlišč. 1537 01:07:48,386 --> 01:07:49,771 Kul, super vprašanje. 1538 01:07:49,771 --> 01:07:50,270 Ja. 1539 01:07:50,270 --> 01:07:52,311 >> OBČINSTVO: Če lahko uporabljate nekaj podobnega GetString 1540 01:07:52,311 --> 01:07:55,750 ki ohranja najemnin dobiš več podatkov, kot jo potrebujete, zakaj morate to preveč? 1541 01:07:55,750 --> 01:07:57,625 >> SPEAKER 1: Zakaj bi jih uporabljate povezani seznam, kadar 1542 01:07:57,625 --> 01:07:59,440 lahko uporabite nekaj podobnega GetString? 1543 01:07:59,440 --> 01:08:01,640 To je dobro vprašanje. 1544 01:08:01,640 --> 01:08:04,240 Ne pozabite, da Get-- eno so padci od GetString 1545 01:08:04,240 --> 01:08:06,750 je, da nismo storili zelo dobro delo sprostitve ta pomnilnik, 1546 01:08:06,750 --> 01:08:09,320 in smo uvedli kup spomin razpoka v vaš program? 1547 01:08:09,320 --> 01:08:15,037 Lahko bi jo tudi sprejeti statično velika niz in ga hranite raste. 1548 01:08:15,037 --> 01:08:16,870 Ampak bi si moral najti novih krajev v spomin. 1549 01:08:16,870 --> 01:08:18,359 Treba bi bilo samo veliko režijske stroške. 1550 01:08:18,359 --> 01:08:21,050 >> Ena od lepih stvari o tem povezana Seznami v nasprotju z nizi, je nizi 1551 01:08:21,050 --> 01:08:22,830 so vsi na isti lokaciji v pomnilniku. 1552 01:08:22,830 --> 01:08:25,540 Mora biti stalno kose pomnilnika. 1553 01:08:25,540 --> 01:08:29,920 Ker je povezanih seznamov, 2 in 3, lahko popolnoma na različnih lokacijah. 1554 01:08:29,920 --> 01:08:31,880 Like 2 je tukaj, in 3 je tukaj. 1555 01:08:31,880 --> 01:08:34,421 In v kolikor imajo kazalec, da drug drugemu, da je v redu. 1556 01:08:34,421 --> 01:08:35,830 Vemo, da smo jih lahko našli. 1557 01:08:35,830 --> 01:08:37,084 Vprašanje tam? 1558 01:08:37,084 --> 01:08:40,563 >> OBČINSTVO: GetString je funkcija v knjižnici CS50, kajne? 1559 01:08:40,563 --> 01:08:42,060 To ne obstaja v dejanskih programov. 1560 01:08:42,060 --> 01:08:42,851 >> SPEAKER 1: Pravilno. 1561 01:08:42,851 --> 01:08:44,130 V redu, to je druga stvar. 1562 01:08:44,130 --> 01:08:47,210 GetString ne obstaja zunaj konteksta CS50. 1563 01:08:47,210 --> 01:08:47,710 Ja. 1564 01:08:47,710 --> 01:08:54,556 >> OBČINSTVO: Torej, ne dejstvo, da je dve bi bilo res daleč narazen, 1565 01:08:54,556 --> 01:08:59,859 ne, ki vplivajo na učinkovitost dostop do elementov na seznamu? 1566 01:08:59,859 --> 01:09:01,359 SPEAKER 1: To je veliko vprašanje. 1567 01:09:01,359 --> 01:09:04,278 Vprašanje je bilo, to ne vpliva učinkovitost dostop 1568 01:09:04,278 --> 01:09:05,819 ti različni elementi na seznamu. 1569 01:09:05,819 --> 01:09:06,930 Pravzaprav, ja. 1570 01:09:06,930 --> 01:09:09,569 Ker vemo if-- dovolimo pravijo želimo dostopati 1571 01:09:09,569 --> 01:09:14,520 drugi element matrike, poznamo moremo pač nizi nosilec 1, desno. 1572 01:09:14,520 --> 01:09:16,630 To se vedno dogaja, da biti isti lokaciji. 1573 01:09:16,630 --> 01:09:20,720 Toda, če želimo priti do tega 3, ne moremo kar reči, pojdi, da 3. 1574 01:09:20,720 --> 01:09:24,009 Moramo reči, OK, začnite pri začetek seznama 1575 01:09:24,009 --> 01:09:26,050 in zdaj imamo dejansko na sprehod skozi, dokler ne bomo 1576 01:09:26,050 --> 01:09:28,149 najti številke nas zanimajo. 1577 01:09:28,149 --> 01:09:30,790 >> Torej, v tem primeru rečemo, OK To je prva številka. 1578 01:09:30,790 --> 01:09:32,207 Torej v bistvu, da je indeks 0. 1579 01:09:32,207 --> 01:09:33,790 Zdaj moramo najti drugo številko. 1580 01:09:33,790 --> 01:09:34,740 To je indeks 1. 1581 01:09:34,740 --> 01:09:39,180 Tako da se dejansko dogaja to-- samo dostopu, se dogaja, da sprejmejo N časa. 1582 01:09:39,180 --> 01:09:42,027 Cool, big star N. Ja. 1583 01:09:42,027 --> 01:09:43,903 >> OBČINSTVO: Kaj so vsak seznamov? 1584 01:09:43,903 --> 01:09:45,401 So vsak nizi, ali kaj? 1585 01:09:45,401 --> 01:09:46,859 SPEAKER 1: To je odlično vprašanje. 1586 01:09:46,859 --> 01:09:48,950 Kaj sta vsak izmed strukture, ki sem pripravljena? 1587 01:09:48,950 --> 01:09:51,649 So vozlišča. 1588 01:09:51,649 --> 01:09:53,720 Tako da vsak od njih malo struktura ima dva dela. 1589 01:09:53,720 --> 01:09:55,264 Ima celo število, ki ima. 1590 01:09:55,264 --> 01:09:57,180 To je dejanski podatki da se je držite. 1591 01:09:57,180 --> 01:09:58,770 To je vrsta koristnih del. 1592 01:09:58,770 --> 01:10:00,820 In to je tisto, zaradi česar je povezani seznam, 1593 01:10:00,820 --> 01:10:03,690 ima kazalec na naslednje vozlišče. 1594 01:10:03,690 --> 01:10:05,260 Awesome vprašanje. 1595 01:10:05,260 --> 01:10:11,320 Vse je v redu, tako da je videti zelo Hitro poglej nekaj primerov, kaj 1596 01:10:11,320 --> 01:10:12,820 smo lahko naredite s povezanimi seznamov. 1597 01:10:12,820 --> 01:10:16,920 >> Torej, en zelo preprost primer je, Recimo, da želimo, da to iskanje. 1598 01:10:16,920 --> 01:10:20,240 Kakšno iskanju ne morejo delamo na povezanih seznamih? 1599 01:10:20,240 --> 01:10:21,150 >> OBČINSTVO: Binary. 1600 01:10:21,150 --> 01:10:21,900 >> SPEAKER 1: Binary. 1601 01:10:21,900 --> 01:10:23,408 Zakaj ne moremo uporabiti binarno iskanje? 1602 01:10:23,408 --> 01:10:25,181 >> OBČINSTVO: [neslišno]. 1603 01:10:25,181 --> 01:10:28,180 SPEAKER 1: Right, ker se z binarno iskanje, smo se morali sklicevati na dejstvo, 1604 01:10:28,180 --> 01:10:31,300 da bi lahko le skok v matriki na kateri koli točki. 1605 01:10:31,300 --> 01:10:33,420 Mi lahko samo rečem, pojdite na srednji element. 1606 01:10:33,420 --> 01:10:35,550 S tukaj, kot smo rekli malo prej, 1607 01:10:35,550 --> 01:10:37,270 ne moremo samo skočite na srednji element. 1608 01:10:37,270 --> 01:10:38,978 Da bi našli katero koli element, smo dejansko 1609 01:10:38,978 --> 01:10:40,780 hoditi skozi naš celoten seznam. 1610 01:10:40,780 --> 01:10:43,910 >> Torej, če smo želeli narediti iskanja, najboljše, kar lahko naredimo, je samo linearna iskanje. 1611 01:10:43,910 --> 01:10:45,910 Začnemo na čelu, smo check-- recimo smo 1612 01:10:45,910 --> 01:10:47,790 išče 9-- začnemo na čelu. 1613 01:10:47,790 --> 01:10:49,200 Pravimo, je to 9? 1614 01:10:49,200 --> 01:10:49,710 No. 1615 01:10:49,710 --> 01:10:50,430 Je to 9? 1616 01:10:50,430 --> 01:10:50,930 No. 1617 01:10:50,930 --> 01:10:51,620 Je to 9? 1618 01:10:51,620 --> 01:10:53,730 Ja, smo ga našli. 1619 01:10:53,730 --> 01:10:56,350 OK, to je to. 1620 01:10:56,350 --> 01:10:57,940 Tukaj je malo psevdo-kodo. 1621 01:10:57,940 --> 01:11:01,420 Bom zapustil to za vas fantje churn več sami, 1622 01:11:01,420 --> 01:11:04,370 samo zato, ker smo teče malo v stiski s časom. 1623 01:11:04,370 --> 01:11:05,610 >> Lets govoriti o vstavitvi. 1624 01:11:05,610 --> 01:11:08,644 Videli smo res kul demo to v predavanju, kjer smo rekli, 1625 01:11:08,644 --> 01:11:11,560 OK, imamo to povezano seznam, če vsakdo je obrnjena drug proti drugemu, 1626 01:11:11,560 --> 01:11:13,400 in nekdo pride na oder. 1627 01:11:13,400 --> 01:11:17,050 Kako vstaviti, da oseba v našem povezano seznamu? 1628 01:11:17,050 --> 01:11:20,150 No, napačen način, da to, kar je mislim, da kar smo videli prvič, 1629 01:11:20,150 --> 01:11:22,740 je, ko je oseba v spredaj samodejno 1630 01:11:22,740 --> 01:11:25,270 je opozoril na novo osebo. 1631 01:11:25,270 --> 01:11:29,057 In potem smo nekako opustili v drugi polovici seznama, kajne? 1632 01:11:29,057 --> 01:11:31,390 Ker ne vemo, kje je v pomnilniku več. 1633 01:11:31,390 --> 01:11:34,750 Torej biti zelo previdni glede Vrstni red, v katerem smo vstaviti stvari. 1634 01:11:34,750 --> 01:11:37,860 >> Torej, tukaj, recimo, da želimo čaka 1 na prednjem delu našem seznamu. 1635 01:11:37,860 --> 01:11:42,190 Najprej imamo 1 točko na Drugi element-- ali element 1636 01:11:42,190 --> 01:11:44,170 ki vsebuje 1. 1637 01:11:44,170 --> 01:11:47,210 Torej, bomo to storili, samo zato, da ne bomo boste izgubili drugo polovico. 1638 01:11:47,210 --> 01:11:51,020 In zdaj, bomo lahko imeli glavno točko 1. 1639 01:11:51,020 --> 01:11:52,930 Torej še enkrat, to je samo kot super visoki ravni. 1640 01:11:52,930 --> 01:11:55,290 To je, kako bi mi vstavili vozlišče. 1641 01:11:55,290 --> 01:11:57,337 Imamo veliko psevdo-koda here-- žal, 1642 01:11:57,337 --> 01:11:59,170 Ne vem, zakaj sem kliče psevdo-kodo. 1643 01:11:59,170 --> 01:12:00,350 To je dejanska koda. 1644 01:12:00,350 --> 01:12:02,570 Lahko greš pogledat kasneje. 1645 01:12:02,570 --> 01:12:04,870 >> V redu, je zelo quickly-- več vprašanj 1646 01:12:04,870 --> 01:12:07,120 na povezanih seznamih, preden sem premakniti na par drugih podatkov 1647 01:12:07,120 --> 01:12:08,450 strukture v naših zadnjih 10 minutah. 1648 01:12:08,450 --> 01:12:10,340 >> OBČINSTVO: Ali moramo zdaj kako jo napisati na test? 1649 01:12:10,340 --> 01:12:11,040 >> SPEAKER 1: Ali moramo vedeti, kako to-- 1650 01:12:11,040 --> 01:12:12,030 >> OBČINSTVO: Napišite na testu. 1651 01:12:12,030 --> 01:12:14,071 >> SPEAKER 1: Mi potrebujemo to-- ti bi morali biti pripravljeni 1652 01:12:14,071 --> 01:12:18,870 pisati, vložek, odstranite in iskanje povezanih seznamov na test. 1653 01:12:18,870 --> 01:12:21,480 To je nekaj, kar smo lahko pričakujemo, da narediš. 1654 01:12:21,480 --> 01:12:22,750 Pojdi nad njim. 1655 01:12:22,750 --> 01:12:26,460 Če imate kakršnakoli vprašanja o Koda, ustrelil svojo TF e-pošto, 1656 01:12:26,460 --> 01:12:27,750 prišli do uradnih ur. 1657 01:12:27,750 --> 01:12:30,041 Še vedno je veliko časa za študij, ne skrbi. 1658 01:12:30,041 --> 01:12:32,290 Vse je v redu, vsak drugi Vprašanja o povezanih seznamih? 1659 01:12:32,290 --> 01:12:32,986 Da. 1660 01:12:32,986 --> 01:12:37,360 >> OBČINSTVO: Torej, če ne uporabljate kazalec, da gredo na eno na desni 1661 01:12:37,360 --> 01:12:41,308 Preden uporabite kazalec za tista na levi, ki je 1662 01:12:41,308 --> 01:12:43,211 ekvivalent brisanje vse, kajne? 1663 01:12:43,211 --> 01:12:43,877 SPEAKER 1: Ja. 1664 01:12:43,877 --> 01:12:44,820 OBČINSTVO: [neslišno]. 1665 01:12:44,820 --> 01:12:47,570 SPEAKER 1: Pravica, saj ne moremo razumem, da je v resnici še slabše. 1666 01:12:47,570 --> 01:12:50,690 Ker ne samo, da ne vemo, kje je, ne moremo več uporabljati, 1667 01:12:50,690 --> 01:12:53,580 ampak we've-- nisva sprostiti ta spomin več. 1668 01:12:53,580 --> 01:12:58,570 Torej, to je samo visi okoli in ne koristno, saj nam ga ne more najti. 1669 01:12:58,570 --> 01:12:59,580 Ja, kul vprašanje. 1670 01:12:59,580 --> 01:13:01,280 >> Vse je v redu, kaj je govoril o skladih. 1671 01:13:01,280 --> 01:13:03,230 Zelo hitro smo videli nizov. 1672 01:13:03,230 --> 01:13:06,280 So prvi v zadnji od podatkovne strukture. 1673 01:13:06,280 --> 01:13:10,664 Zato menimo, da od nizov v Annenberg pladnjev kjer smo odvodnikom stvari na vrhu. 1674 01:13:10,664 --> 01:13:12,580 In če boš pridi pladenj, ste 1675 01:13:12,580 --> 01:13:15,870 Vedno bo trajalo eno na vrh, ki je najbolj recently-- 1676 01:13:15,870 --> 01:13:18,840 ki je stvar, ki jo najbolj Nedavno čaka na vrhu kupa. 1677 01:13:18,840 --> 01:13:22,680 Torej si lahko nekako razmišljati o tovrstnih vizualni, ko razmišljate o nizov. 1678 01:13:22,680 --> 01:13:26,010 In potem smo izstrelil nekaj off vrhu kupa. 1679 01:13:26,010 --> 01:13:29,850 >> Če bomo are-- oh, in besede, ki jih uporabite, ko govorimo o teh podatkov 1680 01:13:29,850 --> 01:13:32,680 strukture je običajno, če bomo dal nekaj na sklad, 1681 01:13:32,680 --> 01:13:34,550 rečemo, da smo ga potiska na sklad. 1682 01:13:34,550 --> 01:13:38,450 In če vzamemo nekaj off stack, smo rekli, smo živahen off kup. 1683 01:13:38,450 --> 01:13:41,470 Če boste za izvajanje stack-- ki sem definitivno 1684 01:13:41,470 --> 01:13:44,840 Priporočamo vam, da poskusite out-- ste bodo želeli slediti, 1685 01:13:44,840 --> 01:13:46,669 recimo, da ste z uporabo niz. 1686 01:13:46,669 --> 01:13:48,960 Vem, da v predavanju smo se pogovarjali o uporabi tako nize 1687 01:13:48,960 --> 01:13:51,120 ali so povezana sezname za izvedbo dimnika. 1688 01:13:51,120 --> 01:13:53,490 Če uporabljate matrika, morate keep-- 1689 01:13:53,490 --> 01:13:56,750 Izgovor me-- moramo slediti velikosti in zmogljivosti. 1690 01:13:56,750 --> 01:14:00,820 Torej največjega števila da lahko naša kup držite. 1691 01:14:00,820 --> 01:14:03,240 Vprašanja o skladih? 1692 01:14:03,240 --> 01:14:05,657 >> OBČINSTVO: Kakšna je razlika med velikostjo in zmogljivostjo? 1693 01:14:05,657 --> 01:14:08,573 SPEAKER 1: Razlika med velikost in zmogljivost, super vprašanje. 1694 01:14:08,573 --> 01:14:10,330 Torej, recimo, da smo uporabo array, in smo 1695 01:14:10,330 --> 01:14:13,340 namenijo dovolj prostora za 10 števil. 1696 01:14:13,340 --> 01:14:15,050 In začnemo zapolniti, da gor. 1697 01:14:15,050 --> 01:14:17,330 In smo potiskanje stvari naprej, in smo pop stvari off. 1698 01:14:17,330 --> 01:14:21,060 Želimo, da spremljate največ Število moremo imeti, da je zmogljivost. 1699 01:14:21,060 --> 01:14:24,790 In želimo, da spremljate Sedanje število imamo, da je velikost. 1700 01:14:24,790 --> 01:14:26,530 Dobro vprašanje. 1701 01:14:26,530 --> 01:14:28,720 Vse ostalo na kupe? 1702 01:14:28,720 --> 01:14:31,260 Vse je v redu, kaj je govoril o presenečenje, čakalnih vrst. 1703 01:14:31,260 --> 01:14:37,034 >> Za razliko od nizov, ki so prvič v lanskem ven, to so prvi noter, prvi ven. 1704 01:14:37,034 --> 01:14:38,450 Torej, to je like-- pomislite črto. 1705 01:14:38,450 --> 01:14:41,530 Pomislite obloge gor na Apple Trgovina priti ne glede na izdelek. 1706 01:14:41,530 --> 01:14:44,540 In prva oseba, ki je v skladu smeli biti prva oseba, ki je pomagal. 1707 01:14:44,540 --> 01:14:48,270 Torej prva stvar, ki jo je potisnilo je To je prva stvar, ki je izstrelil. 1708 01:14:48,270 --> 01:14:49,460 Cool? 1709 01:14:49,460 --> 01:14:52,890 Zelo similarly-- Oh, besede, ki bomo uporabili namesto pritiskom in pop-- 1710 01:14:52,890 --> 01:14:55,060 ki sem se uporabljajo, Sem sorry-- je, da smo rekli, 1711 01:14:55,060 --> 01:14:58,170 če smo dajanje nekaj v čakalne vrste, smo rekli, da enqueued. 1712 01:14:58,170 --> 01:15:00,795 Če bomo ob nekaj iz čakalne vrste, rečemo dequeued. 1713 01:15:00,795 --> 01:15:01,950 To. 1714 01:15:01,950 --> 01:15:05,454 Jaz se lahko izgovorijo tiste narobe, ampak boste dobili idejo. 1715 01:15:05,454 --> 01:15:08,370 In potem spet, tako kot nizov, če smo izvedbenih to kot niz, 1716 01:15:08,370 --> 01:15:12,350 moramo slediti od velikost, zmogljivost in glava. 1717 01:15:12,350 --> 01:15:13,570 Kaj mislim s glavi? 1718 01:15:13,570 --> 01:15:15,278 Zakaj moramo ohraniti tir glave? 1719 01:15:15,278 --> 01:15:18,549 1720 01:15:18,549 --> 01:15:21,685 >> OBČINSTVO: Ker to je, če začetek vašega seznama je. 1721 01:15:21,685 --> 01:15:24,810 SPEAKER 1: Ja, v bistvu je glava kjer je začetek našega čakalne vrste je. 1722 01:15:24,810 --> 01:15:29,460 Ker vemo, za razliko od nizov, which-- Bom poskusil pri soočanju s to way-- 1723 01:15:29,460 --> 01:15:33,570 vemo, da je vedno dogaja, da skrči na ta način in rastejo na ta način. 1724 01:15:33,570 --> 01:15:37,840 Čakalne vrste, ljudje pridejo na koncu in pustite od začetka, 1725 01:15:37,840 --> 01:15:40,620 zato moramo slediti kje je začetek. 1726 01:15:40,620 --> 01:15:43,540 To je tisto, kar mislim da moramo slediti, kje je glava. 1727 01:15:43,540 --> 01:15:45,190 Cool? 1728 01:15:45,190 --> 01:15:46,440 V redu. 1729 01:15:46,440 --> 01:15:49,250 Osem minut, par več teme, lahko to storimo. 1730 01:15:49,250 --> 01:15:51,240 >> Vredu, razpršena tabela. 1731 01:15:51,240 --> 01:15:53,095 Zelo na kratko smo se pogovarjali o hash tabel. 1732 01:15:53,095 --> 01:15:55,720 Za kviz, morate samo jih razumeti na visoki ravni. 1733 01:15:55,720 --> 01:15:58,330 Osnovna ideja je, da imajo te podatke. 1734 01:15:58,330 --> 01:16:02,570 In želimo dostopati do njega v času, ki je hitreje kot nekaj podobnega povezan 1735 01:16:02,570 --> 01:16:03,070 seznam. 1736 01:16:03,070 --> 01:16:05,290 Ker smo rekli, če bi bili iskanjem prek povezanega seznama, 1737 01:16:05,290 --> 01:16:06,248 da bi lahko N časa. 1738 01:16:06,248 --> 01:16:08,810 Tudi dostop mogoč N čas v povezanem seznamu. 1739 01:16:08,810 --> 01:16:12,930 Hash tabele nam pot, da bomo lahko hitrejši dostop do stvari, in še več 1740 01:16:12,930 --> 01:16:16,970 hitro iskanje za stvari, brez imajo omejitve matrike 1741 01:16:16,970 --> 01:16:19,030 kjer smo fiksno velikost. 1742 01:16:19,030 --> 01:16:23,950 >> Zato mislimo, strukture podatkov, kadar, kjer smo ga v strukturi podatkov 1743 01:16:23,950 --> 01:16:26,620 je odvisna od tega čarobno razpršilna funkcija. 1744 01:16:26,620 --> 01:16:30,630 Torej, v tem primeru, čarobni hash funkcija je samo ob besedo, 1745 01:16:30,630 --> 01:16:34,027 preverjanje, kaj je prva črka je, in potem samo sortiranje po abecedi. 1746 01:16:34,027 --> 01:16:36,110 Tako smo v bistvu jih je dala v različne segmente. 1747 01:16:36,110 --> 01:16:39,510 Ko smo videli banano, smo rekli, OK, kaj je dal v vedro B. 1748 01:16:39,510 --> 01:16:41,820 Ko vidimo Apple, kaj je ga dal v vedro A. 1749 01:16:41,820 --> 01:16:44,744 Če bomo videli marelice, kaj je dal v vedro A. 1750 01:16:44,744 --> 01:16:45,600 V REDU? 1751 01:16:45,600 --> 01:16:51,090 >> Tako, da sem iskali for-- I Ne vem, kaj je drugo sadje? 1752 01:16:51,090 --> 01:16:52,920 Recimo, da sem iskal oranžne. 1753 01:16:52,920 --> 01:16:55,340 Kje naj iščem? 1754 01:16:55,340 --> 01:16:56,420 V O vedro. 1755 01:16:56,420 --> 01:17:01,450 Ja, tam je samo eno mesto da oranžna lahko, OK? 1756 01:17:01,450 --> 01:17:05,370 Torej sem že prej povedal, kaj se zgodi if-- dobro sem rekel prej, 1757 01:17:05,370 --> 01:17:10,030 recimo, da damo marelično in-- vendar sem res obravnavala dejstvo, da, oh ne, 1758 01:17:10,030 --> 01:17:14,990 če bi bil jaz dal jagodami in, da je dogaja, da v nasprotju z banano. 1759 01:17:14,990 --> 01:17:20,160 Kjer smo jo dali, če obstaja že nekaj v naši mizi? 1760 01:17:20,160 --> 01:17:22,760 No, imamo nekaj možnosti. 1761 01:17:22,760 --> 01:17:26,160 >> Možnost številka ena je linearna sondiranje, kar v bistvu pomeni, 1762 01:17:26,160 --> 01:17:28,690 recimo, da želim, da bi poskušali dal jagodami, in vidim, oh ne, 1763 01:17:28,690 --> 01:17:31,170 Banane so že tam, Pravkar sem rekel, v redu, naj 1764 01:17:31,170 --> 01:17:33,810 me poglej za naslednjo prosto mesto. 1765 01:17:33,810 --> 01:17:36,744 Zato sem hodil dol, sem rekel, oh, ni nič v D vedro. 1766 01:17:36,744 --> 01:17:39,410 Ne morem razmišljati o vseh sadežev ki se začnejo s črko D, 1767 01:17:39,410 --> 01:17:41,620 tako da sem le, da bo dal jagodami tam. 1768 01:17:41,620 --> 01:17:42,650 Durian. 1769 01:17:42,650 --> 01:17:44,590 OK, saj obstaja nič v še tam, 1770 01:17:44,590 --> 01:17:47,020 Jaz lahko tudi preprosto uporabite ta spot. 1771 01:17:47,020 --> 01:17:48,805 Kaj je pomanjkljivost, da je? 1772 01:17:48,805 --> 01:17:49,300 >> OBČINSTVO: To je v okvari. 1773 01:17:49,300 --> 01:17:50,008 >> SPEAKER 1: Oprostite? 1774 01:17:50,008 --> 01:17:51,280 OBČINSTVO: To je v okvari. 1775 01:17:51,280 --> 01:17:53,113 >> SPEAKER 1: To je out-- V redu, morda bomo na koncu 1776 01:17:53,113 --> 01:17:56,380 s stvarmi, ki niso in-- shranjeni v vedra na poti 1777 01:17:56,380 --> 01:17:57,790 da pričakujemo, da bo. 1778 01:17:57,790 --> 01:18:00,670 Torej, če bomo iskali za jagodami, preden smo rekli, 1779 01:18:00,670 --> 01:18:02,000 oh bomo lahko ogledate v eno vedro. 1780 01:18:02,000 --> 01:18:03,650 To je lahko samo v eno vedro. 1781 01:18:03,650 --> 01:18:07,380 Toda zdaj, res, da bi se lahko v vseh vedra, kajne? 1782 01:18:07,380 --> 01:18:10,400 >> OK, tukaj je še ena možnost, ločen chaining-- 1783 01:18:10,400 --> 01:18:16,630 ki je ideja, da greva uporabiti malo kasneje v P nastavljeno 5. 1784 01:18:16,630 --> 01:18:19,340 Namesto samo še en prostor v posamezne segmente, 1785 01:18:19,340 --> 01:18:23,610 zakaj ne bi imeli vsako vedro da je kazalec na povezanem seznamu? 1786 01:18:23,610 --> 01:18:28,570 Kje smo rekli, v redu, da je vedro za vse, ki se začne z A. 1787 01:18:28,570 --> 01:18:31,990 In tam je le, da bo biti povezan seznam sadja, ki se začnejo z A. 1788 01:18:31,990 --> 01:18:36,240 Torej, če bomo dobili novo sadje, recimo smo get-- smo avokado, imamo jabolko, 1789 01:18:36,240 --> 01:18:39,530 recimo, da smo dobili marelice, kako bi dal na seznam? 1790 01:18:39,530 --> 01:18:43,330 No, mi bi iti v vedro 0, in bi samo jo vstavite v našem všeč seznamu 1791 01:18:43,330 --> 01:18:45,320 enostavno, kot to. 1792 01:18:45,320 --> 01:18:47,160 >> Sedaj sem vedno rekel vedro. 1793 01:18:47,160 --> 01:18:49,470 Mi bi to izvajala na več načinov. 1794 01:18:49,470 --> 01:18:52,040 Ena tipičen način, da se ta vrsta slike kažejo, 1795 01:18:52,040 --> 01:18:55,580 je mogoče ob niz kazalci na povezanih seznamov. 1796 01:18:55,580 --> 01:18:58,174 To je en način bomo lahko izvajati razpršene tabele. 1797 01:18:58,174 --> 01:19:01,090 OBČINSTVO: Bi potrebovali drugo Seznam saj banana in jagodičja so ven 1798 01:19:01,090 --> 01:19:01,591 naročila? 1799 01:19:01,591 --> 01:19:03,298 SPEAKER 1: Bi si need-- ah, bi si 1800 01:19:03,298 --> 01:19:06,310 Potrebujemo drug seznam, ker je banana in jagodičja so v okvari? 1801 01:19:06,310 --> 01:19:09,880 V tem primeru je naša hash funkcija, ki nam pove, kam stvari 1802 01:19:09,880 --> 01:19:11,647 ne skrbi drugem pismu. 1803 01:19:11,647 --> 01:19:14,730 Ne skrbi alphabetizing, pa skrbi samo o prvem pismu. 1804 01:19:14,730 --> 01:19:15,672 Vprašanje? 1805 01:19:15,672 --> 01:19:18,947 >> OBČINSTVO: Kaj je definicija, ki funkcija, in kaj to izgleda? 1806 01:19:18,947 --> 01:19:19,780 SPEAKER 1: Ah, dobro. 1807 01:19:19,780 --> 01:19:22,450 OK, tako da nam ni treba skrbite preveč za ta kviz. 1808 01:19:22,450 --> 01:19:23,700 Tako da nisem dal v diapozitivih. 1809 01:19:23,700 --> 01:19:26,320 Bomo uvesti z njim za P nastavite 5. 1810 01:19:26,320 --> 01:19:31,520 Ampak v bistvu, se pravi, podan nov element, kjer bi jaz dal? 1811 01:19:31,520 --> 01:19:35,450 Ali pa, recimo, Iščem element, kjer bi to bilo? 1812 01:19:35,450 --> 01:19:37,860 Ja, veliko vprašanje. 1813 01:19:37,860 --> 01:19:40,870 >> OK, zelo hitro, drevesa in poskuša. 1814 01:19:40,870 --> 01:19:44,779 Tako drevo je le vsaka vrsta organizirane strukture podatkov. 1815 01:19:44,779 --> 01:19:47,820 In bomo videli veliko slik da bo to super jasno. 1816 01:19:47,820 --> 01:19:51,180 In trie, kar smo videli v razredu, je zelo posebna vrsta drevesa 1817 01:19:51,180 --> 01:19:53,440 ki v bistvu deluje kot hash tabele na več ravneh. 1818 01:19:53,440 --> 01:19:54,390 To je super kul. 1819 01:19:54,390 --> 01:19:56,030 Bomo videli čez nekaj sekund. 1820 01:19:56,030 --> 01:19:57,821 Vse je v redu, tako da je govori o drevesih prvi. 1821 01:19:57,821 --> 01:20:01,040 Tako da je to res tipični drevo, kjer imamo nekaj hierarhijo. 1822 01:20:01,040 --> 01:20:03,220 Vidiš, da je eden na zelo top, kajne? 1823 01:20:03,220 --> 01:20:06,190 In lahko rečem, vrh, ker tam očitno naročanje ker smo 1824 01:20:06,190 --> 01:20:08,260 imajo te puščice gredo dol. 1825 01:20:08,260 --> 01:20:11,740 Tako da je stvar na vrhu, Kličem, da korenskega vozlišča. 1826 01:20:11,740 --> 01:20:13,080 Torej eden je koren vozlišče. 1827 01:20:13,080 --> 01:20:17,330 In stvari na dnu, ki so se nič ne prihaja z njih, 1828 01:20:17,330 --> 01:20:18,783 Pravim ti so leaf vozlišča. 1829 01:20:18,783 --> 01:20:22,730 Torej 8,9 5, 6, 7, OK. 1830 01:20:22,730 --> 01:20:27,740 In ponavadi terminologija smo lahko rečem, je, 1 je 3 je starš. 1831 01:20:27,740 --> 01:20:30,740 Torej, to je stvar, ki prihaja ravni nad njo, in kaže na to. 1832 01:20:30,740 --> 01:20:32,710 In 3 je 1 je otrok. 1833 01:20:32,710 --> 01:20:34,505 To je stvar, ki 1 poudarja. 1834 01:20:34,505 --> 01:20:35,005 Vprašanje? 1835 01:20:35,005 --> 01:20:36,414 >> OBČINSTVO: Lahko greš nazaj prejšnji diapozitiv, prosim? 1836 01:20:36,414 --> 01:20:37,388 >> SPEAKER 1: Ali lahko grem nazaj na prejšnji diapozitiv? 1837 01:20:37,388 --> 01:20:37,888 Sure. 1838 01:20:37,888 --> 01:20:40,640 1839 01:20:40,640 --> 01:20:41,390 Vprašanja o tem? 1840 01:20:41,390 --> 01:20:42,764 Ali pa si samo želel, da pogled na to? 1841 01:20:42,764 --> 01:20:44,650 OBČINSTVO: Nisem priti skozi njo. 1842 01:20:44,650 --> 01:20:47,100 >> SPEAKER 1: OK, kul, ja. 1843 01:20:47,100 --> 01:20:49,846 To bo vse na spletu, tako ne skrbeti za pridobivanje vsako besedo. 1844 01:20:49,846 --> 01:20:51,720 In v interesu čas, bom šel. 1845 01:20:51,720 --> 01:20:53,270 Je to v redu? 1846 01:20:53,270 --> 01:20:53,790 Awesome. 1847 01:20:53,790 --> 01:20:55,720 OK kul. 1848 01:20:55,720 --> 01:20:57,790 Torej, kaj je govoriti o zelo specifične kind-- 1849 01:20:57,790 --> 01:20:59,710 tako da imamo ti splošni struktura dreves, 1850 01:20:59,710 --> 01:21:02,876 ki je prav vse, kar nam omogoča, na vrsto čin stvari hierarhično. 1851 01:21:02,876 --> 01:21:06,000 1852 01:21:06,000 --> 01:21:11,110 >> Dvojiška drevesa so stvari, kjer je vsak vozlišče ima največ dva otroka. 1853 01:21:11,110 --> 01:21:11,690 V REDU? 1854 01:21:11,690 --> 01:21:14,560 In sem rekel, v redu, tako da se zdi, da ustreza temu opisu. 1855 01:21:14,560 --> 01:21:16,830 Rekel sem vozlišče, ni binarno iskalno drevo. 1856 01:21:16,830 --> 01:21:19,720 Kaj je dvojiško iskalno drevo? 1857 01:21:19,720 --> 01:21:20,440 To je urejeno. 1858 01:21:20,440 --> 01:21:22,890 Tako da boste vedeli, da je v binarno iskalno drevo, 1859 01:21:22,890 --> 01:21:26,580 vse do tree-- vsega do vozlišča levi je manjša, 1860 01:21:26,580 --> 01:21:28,830 in vse do vozlišča pravica je večji. 1861 01:21:28,830 --> 01:21:30,620 Torej to ni binarno iskalno drevo. 1862 01:21:30,620 --> 01:21:32,770 To je samo binarno drevo. 1863 01:21:32,770 --> 01:21:35,910 Torej imamo velik kategorijo drevesa, nekoliko manjši kategorija 1864 01:21:35,910 --> 01:21:40,106 binarnih dreves, iskanje po a-- dvojiška iskalna drevesa. 1865 01:21:40,106 --> 01:21:41,540 Cool? 1866 01:21:41,540 --> 01:21:44,410 V redu. 1867 01:21:44,410 --> 01:21:47,380 >> In zdaj, najbolj zabavno vsi, imamo poizkusih. 1868 01:21:47,380 --> 01:21:49,500 Vidva videli to sliko v predavanju? 1869 01:21:49,500 --> 01:21:51,790 Ja, naj bi bilo videti super seznanjeni. 1870 01:21:51,790 --> 01:21:54,252 Poglejmo, kako bi lahko dejansko izvajanje tega. 1871 01:21:54,252 --> 01:21:56,210 Ali dejansko, poglejmo, to sploh prišel gor? 1872 01:21:56,210 --> 01:21:56,731 Nope. 1873 01:21:56,731 --> 01:21:59,480 Vse je v redu, nimamo niti za skrbeti za te stvari nizki ravni. 1874 01:21:59,480 --> 01:22:02,320 Bomo imeli veliko časa potem obravnavati P nastavite 5. 1875 01:22:02,320 --> 01:22:05,780 Ampak za zdaj, le zelo visoki ravni, smo vem, da je to tisto, kar izgleda. 1876 01:22:05,780 --> 01:22:08,530 Ga je opisal Mi kot vrste hash tabela nivojsko 1877 01:22:08,530 --> 01:22:12,264 where-- Kaj to trgovino? 1878 01:22:12,264 --> 01:22:14,430 Ta shranjuje imena znanstveniki, da bomo lahko dejansko 1879 01:22:14,430 --> 01:22:20,690 poglej jih le nekako sledi Različne hash tabele navzdol, vse v redu? 1880 01:22:20,690 --> 01:22:24,730 >> In namen tega je, v teoriji, zagotavljajo stalen čas poglej gor. 1881 01:22:24,730 --> 01:22:29,630 Torej, če želim, da preveri, na primer, kdo je someone-- 1882 01:22:29,630 --> 01:22:33,410 da je Mandel v tem trie, sem lahko zelo hitro 1883 01:22:33,410 --> 01:22:36,260 v linear-- Žal mi je, v konstanten čas, ugotovimo, 1884 01:22:36,260 --> 01:22:39,010 ali ne, je v trie. 1885 01:22:39,010 --> 01:22:41,500 Ampak con, se poglej kako velik je ta. 1886 01:22:41,500 --> 01:22:44,120 Nismo niti shranjevanje, ki veliko podatkov, in to je ogromen. 1887 01:22:44,120 --> 01:22:47,950 Torej, en velik con je, da je to uporablja veliko količino pomnilnika. 1888 01:22:47,950 --> 01:22:48,746 Da. 1889 01:22:48,746 --> 01:22:50,610 >> OBČINSTVO: Zakaj ne zagotavlja konstanten čas, točno? 1890 01:22:50,610 --> 01:22:51,376 >> SPEAKER 1: Še enkrat? 1891 01:22:51,376 --> 01:22:53,360 >> OBČINSTVO: Kaj je intuicija zakaj pa zagotavlja stalen čas? 1892 01:22:53,360 --> 01:22:54,610 >> SPEAKER 1: Odlično vprašanje. 1893 01:22:54,610 --> 01:22:56,030 Zakaj ne zagotavlja stalen čas? 1894 01:22:56,030 --> 01:22:59,280 Torej, kaj lahko storimo, je, kaj je pravijo, iščemo Mandel. 1895 01:22:59,280 --> 01:23:02,830 Vemo, da smo želeli začeti V prvi stopnji na M. 1896 01:23:02,830 --> 01:23:06,890 Vemo, da želimo, da ji sledimo do E. Torej to traja en korak, dva koraka, kajne? 1897 01:23:06,890 --> 01:23:10,710 Mi ji sledimo do N. sledimo do D. Mi ji sledimo do E. sledimo do L. 1898 01:23:10,710 --> 01:23:15,100 In potem je naslednja stvar, ki smo preveriti says-- ta delta pravi Ja, to je 1899 01:23:15,100 --> 01:23:15,990 V naši mizi. 1900 01:23:15,990 --> 01:23:16,880 To je beseda. 1901 01:23:16,880 --> 01:23:19,900 Da je veljaven vpis v naši trie. 1902 01:23:19,900 --> 01:23:22,450 Torej pravite, OK, da je sedem korakov. 1903 01:23:22,450 --> 01:23:27,200 Ampak, če smo dodali kot zillion več Znanstveniki te strukture podatkov, 1904 01:23:27,200 --> 01:23:29,470 mi ne bi bilo treba preveriti, zillion več stvari. 1905 01:23:29,470 --> 01:23:33,580 Mi smo samo kdaj bodo morali vzeti sedem korakov, dolžina oseba je 1906 01:23:33,580 --> 01:23:35,260 ime. 1907 01:23:35,260 --> 01:23:39,350 >> Torej, smo želeli, da razmišljajo Runtime kot, recimo, 1908 01:23:39,350 --> 01:23:42,340 smo povečali obseg naše struktura podatkov, koliko več 1909 01:23:42,340 --> 01:23:44,580 se bo trajalo? 1910 01:23:44,580 --> 01:23:47,372 V tem primeru, če bomo dodali kup več znanstvenikov, ni važno. 1911 01:23:47,372 --> 01:23:49,413 To se še vedno dogaja, da sprejmejo enako količino časa. 1912 01:23:49,413 --> 01:23:50,350 To je stalen čas. 1913 01:23:50,350 --> 01:23:50,850 Da. 1914 01:23:50,850 --> 01:23:53,557 >> OBČINSTVO: Kako veš, da ne za skeniranje preko druge številke? 1915 01:23:53,557 --> 01:23:54,932 SPEAKER 1: Kako naj vem, kako to-- 1916 01:23:54,932 --> 01:23:58,236 OBČINSTVO: Like, kako veš, da greš naravnost iz M na E in ne na M na A? 1917 01:23:58,236 --> 01:23:59,069 SPEAKER 1: Oh, seveda. 1918 01:23:59,069 --> 01:24:01,620 Ker sem vedela, da sem išče besedo Mandel, 1919 01:24:01,620 --> 01:24:04,195 in jaz samo vem, da je M-E. Torej that-- ja, pojdi naprej. 1920 01:24:04,195 --> 01:24:06,528 OBČINSTVO: Bi nimaš pogled na ostalih črk 1921 01:24:06,528 --> 01:24:07,870 V preostalem delu [neslišno]? 1922 01:24:07,870 --> 01:24:10,020 >> SPEAKER 1: Ah, ne bi imam gledati the-- OK, super. 1923 01:24:10,020 --> 01:24:10,790 To je super vprašanje. 1924 01:24:10,790 --> 01:24:12,170 To je odvisno, kako jo izvajati. 1925 01:24:12,170 --> 01:24:15,350 Če ga izvajajo, kot je pravkar kot vrsto nizi 1926 01:24:15,350 --> 01:24:18,100 kjer vemo, da je E vedno v položaju 0, 1927 01:24:18,100 --> 01:24:21,270 Ne vem, karkoli Indeks številka je na. 1928 01:24:21,270 --> 01:24:24,901 Ja, lahko pač stalnica čas, ne, ne, ne, ne. 1929 01:24:24,901 --> 01:24:25,400 Cool. 1930 01:24:25,400 --> 01:24:27,556 Vprašanje tam? 1931 01:24:27,556 --> 01:24:30,927 >> OBČINSTVO: Je stalen čas ista stvar kot v realnem času? 1932 01:24:30,927 --> 01:24:33,260 SPEAKER 1: Je stalen čas ista stvar je v realnem času? 1933 01:24:33,260 --> 01:24:34,799 Nisem prepričan, v realnem času, je. 1934 01:24:34,799 --> 01:24:36,965 OBČINSTVO: Tako kot čas, ki dobesedno napreduje drugi 1935 01:24:36,965 --> 01:24:40,150 ga drugi v nasprotju s čemer neodvisna spremenljivka. 1936 01:24:40,150 --> 01:24:42,960 >> SPEAKER 1: Oh, ja, Lahko si o njej mislijo, da je tako. 1937 01:24:42,960 --> 01:24:46,240 Z drugimi besedami, to ni odvisno od od velikosti strukture podatkov. 1938 01:24:46,240 --> 01:24:48,310 To je način, da si o njej mislijo. 1939 01:24:48,310 --> 01:24:50,510 Vsa druga vprašanja? 1940 01:24:50,510 --> 01:24:53,120 Mogoče v prvič v zgodovina, smo končali pravočasno. 1941 01:24:53,120 --> 01:24:57,080 Če imate kakršnakoli vprašanja, vas prosimo, da pridejo nas vprašati, pojdite na oddelku, 1942 01:24:57,080 --> 01:25:00,190 se posvetujte s svojim TFS, pisarno ure so 8:00 in 08:30 1943 01:25:00,190 --> 01:25:03,985 do 11.00 v ponedeljek in torek, zato to je malo drugačen čas, 1944 01:25:03,985 --> 01:25:05,110 zato poskrbite, da boste, upoštevajte, da. 1945 01:25:05,110 --> 01:25:06,048 Ja. 1946 01:25:06,048 --> 01:25:08,673 >> OBČINSTVO: Ali moramo poznati stvari, kot argumenti ukazne vrstice, 1947 01:25:08,673 --> 01:25:10,360 dash ls, dash karkoli? 1948 01:25:10,360 --> 01:25:11,840 >> SPEAKER 1: ukazno vrstico argumenti in ukazi Linux, 1949 01:25:11,840 --> 01:25:13,010 ja, morate vedeti teh. 1950 01:25:13,010 --> 01:25:18,234 Very-- je kot vrsto ravni stvari smo zajeti v poglavju 0, 1951 01:25:18,234 --> 01:25:19,400 kolikor Linux ukazi go. 1952 01:25:19,400 --> 01:25:20,942 >> OBČINSTVO: Ali ur Annenberg? 1953 01:25:20,942 --> 01:25:23,525 SPEAKER 1: Uradne ure, nisem povsem prepričan, kje so. 1954 01:25:23,525 --> 01:25:25,980 Ampak lahko preverite Spletna stran, in to vam bo povedal. 1955 01:25:25,980 --> 01:25:27,499