1 00:00:00,000 --> 00:00:03,944 >> [Zenelejátszási] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 DAVID MALAN: Rendben. 4 00:00:11,690 --> 00:00:14,674 Ez CS50, és ez a a vége a 2. hét. 5 00:00:14,674 --> 00:00:16,840 Nagyon sajnálom, hogy nem lehettem ott veletek ma, 6 00:00:16,840 --> 00:00:18,300 de te nagyon jó kezekben van. 7 00:00:18,300 --> 00:00:21,710 Engedjék meg, hogy bemutassam CS50 saját Rob Bowden. 8 00:00:21,710 --> 00:00:29,106 9 00:00:29,106 --> 00:00:31,730 Ebből BOWDEN: És persze, akkor van, hogy gúnyolódni a tény, 10 00:00:31,730 --> 00:00:36,820 hogy ő küldött nekünk egy függőleges video- és ezt mutatják. 11 00:00:36,820 --> 00:00:38,320 >> [Videó lejátszás] 12 00:00:38,320 --> 00:00:39,820 >> [Zenelejátszási] 13 00:00:39,820 --> 00:00:42,350 >> [FOOTSTEPS] 14 00:00:42,350 --> 00:00:44,730 >> -Ez Videó nem meg kell nézni ezen a módon. 15 00:00:44,730 --> 00:00:46,570 Ez lehetett volna előzni. 16 00:00:46,570 --> 00:00:49,070 Mondd, hogy nem a függőleges videók. 17 00:00:49,070 --> 00:00:53,310 >> -függőleges Videók megtörténhet, ha tartsa a fényképezőgépet a rossz irányba. 18 00:00:53,310 --> 00:00:55,880 A videó végén néz ki, mint a szar. 19 00:00:55,880 --> 00:00:57,650 >> - [GRUNT] 20 00:00:57,650 --> 00:01:02,240 >> -Vannak Több és több ember rabja ahhoz, hogy a függőleges videók minden nap. 21 00:01:02,240 --> 00:01:06,240 Ez nem crack, vagy semmit, de ez még mindig nagyon rossz. 22 00:01:06,240 --> 00:01:10,410 Két különböző típusú emberek, akik érintettek VVS. 23 00:01:10,410 --> 00:01:14,160 Az első csoport kezeli videók lőnek, mint a képeket. 24 00:01:14,160 --> 00:01:15,850 Nem akart semmi rosszat. 25 00:01:15,850 --> 00:01:19,180 Egyszerűen nem értem, hogy közben viszont egy képet, 26 00:01:19,180 --> 00:01:20,880 nem igazán lehet kapcsolni egy videót. 27 00:01:20,880 --> 00:01:21,880 >> [CRASH] 28 00:01:21,880 --> 00:01:23,460 >> - [MONKEY Hangok] 29 00:01:23,460 --> 00:01:27,540 >> -A Másik csoport az emberek akik nem adnak [hangjelzés]. 30 00:01:27,540 --> 00:01:31,090 >> -függőleges Videó szindróma veszélyes. 31 00:01:31,090 --> 00:01:34,120 Mozgóképek van Mindig vízszintes. 32 00:01:34,120 --> 00:01:35,990 Televíziók vízszintesek. 33 00:01:35,990 --> 00:01:38,380 Számítógépes képernyők vízszintes. 34 00:01:38,380 --> 00:01:41,580 Az emberek szeme vízszintes. 35 00:01:41,580 --> 00:01:45,170 Mi nem épült nézni függőleges videók. 36 00:01:45,170 --> 00:01:47,600 >> -Én Szeretem a függőleges videók. 37 00:01:47,600 --> 00:01:50,410 >> -Nobody Törődik veled. 38 00:01:50,410 --> 00:01:53,340 >> -Ha Ez a probléma a avatkozunk be, akkor is 39 00:01:53,340 --> 00:01:57,650 fog megjeleníteni négy videók Egyszerre csak menteni sávszélesség. 40 00:01:57,650 --> 00:02:02,400 >> -Letterboxed Függőleges videók lenne legyen akkora, mint egy postai bélyeg. 41 00:02:02,400 --> 00:02:04,920 >> -És Akkor elterjedt mindenhol. 42 00:02:04,920 --> 00:02:07,670 Film képernyők Mindig vízszintes. 43 00:02:07,670 --> 00:02:11,200 Ha a függőleges videók válnak Elfogadott, mozik 44 00:02:11,200 --> 00:02:13,930 lesz, hogy magas és vékony. 45 00:02:13,930 --> 00:02:17,710 >> -És Az összes mozik lenne van, hogy lebontották és újjáépítették. 46 00:02:17,710 --> 00:02:22,090 És mire épültek újjá, Mila Kunis lenne öreg és csúnya. 47 00:02:22,090 --> 00:02:24,342 >> -Birds Fog ütközni, és meghal. 48 00:02:24,342 --> 00:02:26,530 >> -Majd Minden igen kemény nyak-re keresi fel. 49 00:02:26,530 --> 00:02:29,800 >> -És Senki sem fog ülni Az első sorban soha többé. 50 00:02:29,800 --> 00:02:37,170 >> -George Lucas újra kiadása csillag Háborúk again-- a vékony kiadás. 51 00:02:37,170 --> 00:02:41,860 >> -Én Soha nem volt igazán tudni mondani A történet, amit el akartam mondani. 52 00:02:41,860 --> 00:02:46,030 Ez volt a nagy lehetőség számomra, hogy kísérletezni egy új technológia. 53 00:02:46,030 --> 00:02:48,150 >> -Ön Egy bunkó. 54 00:02:48,150 --> 00:02:54,430 >> -Minden Alkalommal, amikor egy mobil eszközt használnak videó rögzítésére, a kísértés van. 55 00:02:54,430 --> 00:02:56,370 Csak mondj nemet. 56 00:02:56,370 --> 00:03:00,116 Azt nem, hogy George Lucas. 57 00:03:00,116 --> 00:03:04,062 Mondd, hogy nem a régi Mila Kunis. 58 00:03:04,062 --> 00:03:06,600 Mondd, hogy nem a függőleges videók. 59 00:03:06,600 --> 00:03:12,511 >> -És Ha látod, hogy valaki csinálja, azt mondják, "te nem lövés, hogy jobb dummy!" 60 00:03:12,511 --> 00:03:15,433 >> [Zenelejátszási] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [Lejátszás vége] 63 00:03:19,830 --> 00:03:23,702 >> [Taps] 64 00:03:23,702 --> 00:03:27,598 >> [AUDIO OUT] 65 00:03:27,598 --> 00:03:44,041 66 00:03:44,041 --> 00:03:45,790 Ebből BOWDEN: --simple forma kriptográfia, 67 00:03:45,790 --> 00:03:49,500 ami alapvetően a titkosítási és dekódolás titkos üzeneteket. 68 00:03:49,500 --> 00:03:52,590 Tehát itt van egy nagyon egyszerű játék. 69 00:03:52,590 --> 00:03:56,900 És az ötlet a külső gyűrű körül forog a belső gyűrű. 70 00:03:56,900 --> 00:04:01,610 És láthatjuk, talán ha zoom a, hogy-- nehéz látni. 71 00:04:01,610 --> 00:04:05,090 De, mint a száma 1-- is, ami mozgott. 72 00:04:05,090 --> 00:04:09,120 >> Az 1-es szám térképek, hogy a levél X, 2-es szám térképek a levél 73 00:04:09,120 --> 00:04:11,630 J. Hihetetlenül nehéz ne ugorjon. 74 00:04:11,630 --> 00:04:16,100 Írni 2 térképek J. 3. szám térképek D. Tehát 75 00:04:16,100 --> 00:04:20,140 Ezzel a gyűrűvel adhatsz valaki üzenetet 1, 2, 3. 76 00:04:20,140 --> 00:04:22,624 Valamilyen okból akarom mondani nekik XJD. 77 00:04:22,624 --> 00:04:24,540 De akkor nekik Néhány üzenet a számok, 78 00:04:24,540 --> 00:04:28,460 és mindaddig, amíg van ez a gyűrű, ők dekódolja, mit akarsz mondani. 79 00:04:28,460 --> 00:04:32,510 >> Szóval lehet, hogy látta ezt különösen például a kriptográfia 80 00:04:32,510 --> 00:04:36,640 előtt, ha az egész karácsonyi szezonban már figyelte A Christmas Story. 81 00:04:36,640 --> 00:04:38,520 Ha még soha nem láttam előtt, akkor csak 82 00:04:38,520 --> 00:04:41,060 kapcsolja be TBS a szó szoros értelmében Bármikor karácsony estéjén, 83 00:04:41,060 --> 00:04:44,510 mert ők csak azt mutatják, hogy háttal hogy vissza háttal az egész nap. 84 00:04:44,510 --> 00:04:46,744 És a vonatkozó videó ez. 85 00:04:46,744 --> 00:04:47,410 [Videó lejátszás] 86 00:04:47,410 --> 00:04:50,020 -be Is ismert, hogy minden rendű és rangú hogy Ralph Parker Ezennel 87 00:04:50,020 --> 00:04:52,850 kinevezett tagja a Kis- Orphan Annie Secret Circle 88 00:04:52,850 --> 00:04:56,490 és joga van a kitüntetéssel és előnyök előforduló hozzá. 89 00:04:56,490 --> 00:04:59,010 Aláírt kis árva Annie. 90 00:04:59,010 --> 00:05:03,120 Ellenjegyzett Pierre Andre tintával! 91 00:05:03,120 --> 00:05:07,460 Elismerések és előnyök Már kilenc évesen! 92 00:05:07,460 --> 00:05:12,530 >> [Kiabálni a Radio] 93 00:05:12,530 --> 00:05:13,030 Gyerünk. 94 00:05:13,030 --> 00:05:14,000 Lássunk hozzá. 95 00:05:14,000 --> 00:05:18,274 Nekem nem kell ez a jazz mintegy csempészek és kalózok. 96 00:05:18,274 --> 00:05:20,440 -Listen Holnap este A záró kaland 97 00:05:20,440 --> 00:05:22,540 A Fekete kalózhajó. 98 00:05:22,540 --> 00:05:25,460 Most, hogy itt az ideje Annie titkos üzenetet 99 00:05:25,460 --> 00:05:28,620 Önnek tagjai a The Secret Circle. 100 00:05:28,620 --> 00:05:32,370 Emlékezz a gyerekek, csak tagok Annie Secret Circle 101 00:05:32,370 --> 00:05:34,880 képes dekódolni Annie titkos üzenetet. 102 00:05:34,880 --> 00:05:39,100 Ne feledje, Annie függ. 103 00:05:39,100 --> 00:05:41,660 Állítsa be a csapok a B2. 104 00:05:41,660 --> 00:05:43,960 Itt van az üzenet. 105 00:05:43,960 --> 00:05:44,680 12. 106 00:05:44,680 --> 00:05:45,180 11. 107 00:05:45,180 --> 00:05:45,679 2. 108 00:05:45,679 --> 00:05:48,110 -Én Vagyok az én első titkos találkozón. 109 00:05:48,110 --> 00:05:49,030 >> -25. 110 00:05:49,030 --> 00:05:49,834 14. 111 00:05:49,834 --> 00:05:51,040 11. 112 00:05:51,040 --> 00:05:51,854 18. 113 00:05:51,854 --> 00:05:52,670 16. 114 00:05:52,670 --> 00:05:54,570 >> -Ó, Pierre van nagy hangja ma este. 115 00:05:54,570 --> 00:05:57,490 Elmondhatom, hogy a ma esti Üzenet igazán fontos volt. 116 00:05:57,490 --> 00:05:57,990 -3. 117 00:05:57,990 --> 00:06:00,080 25. 118 00:06:00,080 --> 00:06:01,580 Ez egy üzenet Annie magát. 119 00:06:01,580 --> 00:06:02,880 Ne feledje, ne mondd el senkinek. 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> -Five Másodperccel később, én vagyok az egyetlen szoba a házban, ahol egy fiú kilenc 122 00:06:11,130 --> 00:06:15,830 ülhetett adatvédelmi és dekódolni. 123 00:06:15,830 --> 00:06:16,620 Aha! 124 00:06:16,620 --> 00:06:17,340 B! 125 00:06:17,340 --> 00:06:20,210 Elmentem a másikra. 126 00:06:20,210 --> 00:06:23,300 E. Az első szó a "lenni." 127 00:06:23,300 --> 00:06:25,880 S. hogy jön könnyebb most. 128 00:06:25,880 --> 00:06:28,400 U. 25. 129 00:06:28,400 --> 00:06:30,528 Ez R. 130 00:06:30,528 --> 00:06:31,278 Gyerünk, Ralphie! 131 00:06:31,278 --> 00:06:31,861 Mennem kell! 132 00:06:31,861 --> 00:06:33,182 -I'll Igaza le, Ma! 133 00:06:33,182 --> 00:06:36,038 Gee zseniális. 134 00:06:36,038 --> 00:06:42,840 T. O. "Mindenképpen" - biztos, hogy mit? 135 00:06:42,840 --> 00:06:44,770 Mi volt kis árva Annie mondani? 136 00:06:44,770 --> 00:06:46,381 Ügyeljen arra, hogy mit? 137 00:06:46,381 --> 00:06:47,825 >> -Randy Mennie kell! 138 00:06:47,825 --> 00:06:48,866 Kérlek, gyere ki? 139 00:06:48,866 --> 00:06:49,783 >> -Rendben, Anyu! 140 00:06:49,783 --> 00:06:51,786 Hamarosan ki! 141 00:06:51,786 --> 00:06:53,606 Kezdtem most közelebb. 142 00:06:53,606 --> 00:06:55,550 A feszültség szörnyű volt. 143 00:06:55,550 --> 00:06:57,050 Mi volt az? 144 00:06:57,050 --> 00:06:59,905 A sorsa a bolygón lefagy a mérleg! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie, Randy mennie kell! 146 00:07:01,736 --> 00:07:05,680 >> -I'll Igaza ki, az isten szerelmére! 147 00:07:05,680 --> 00:07:07,170 Majdnem ott! 148 00:07:07,170 --> 00:07:08,150 Az ujjaim repült. 149 00:07:08,150 --> 00:07:09,980 A fejemben volt egy acél csapda. 150 00:07:09,980 --> 00:07:11,496 Minden pórus vibrált. 151 00:07:11,496 --> 00:07:13,268 Már majdnem tiszta! 152 00:07:13,268 --> 00:07:13,767 Igen. 153 00:07:13,767 --> 00:07:14,609 Igen. 154 00:07:14,609 --> 00:07:15,108 Igen. 155 00:07:15,108 --> 00:07:16,449 Igen. 156 00:07:16,449 --> 00:07:20,240 Ügyeljen arra, hogy igyon meg Ovaltine. 157 00:07:20,240 --> 00:07:20,740 Ovaltine? 158 00:07:20,740 --> 00:07:26,687 159 00:07:26,687 --> 00:07:27,520 Egy béna kereskedelmi? 160 00:07:27,520 --> 00:07:32,040 161 00:07:32,040 --> 00:07:34,920 A kurva életbe. 162 00:07:34,920 --> 00:07:35,890 >> [Lejátszás vége] 163 00:07:35,890 --> 00:07:39,650 >> Ebből BOWDEN: Szóval így Ovaltine vonatkozik titkosítás. 164 00:07:39,650 --> 00:07:42,290 Alapvetően CS50 csak reklámozott Ovaltine, így sikerült 165 00:07:42,290 --> 00:07:44,400 egy ócska reklám Ovaltine. 166 00:07:44,400 --> 00:07:44,900 Minden rendben. 167 00:07:44,900 --> 00:07:47,120 Tehát most aktuális számítógép-tudomány. 168 00:07:47,120 --> 00:07:50,670 Ne feledje, hétfőn abbahagytuk Mélyebben szálakat. 169 00:07:50,670 --> 00:07:52,820 Szóval van dolgunk a húr "Zamyla." 170 00:07:52,820 --> 00:07:55,130 És mi volt elismerve az a tény, hogy tudjuk kezelni 171 00:07:55,130 --> 00:07:57,510 "Zamyla", mint egy karaktersorozat. 172 00:07:57,510 --> 00:07:59,740 És ne feledjük, hogy megtudtuk A konzol jelölést. 173 00:07:59,740 --> 00:08:01,995 Tehát ha ez tárolták egy string "s", akkor 174 00:08:01,995 --> 00:08:05,860 ha azt mondanánk, s konzol 0, ami jelzik a nagybetű Z. 175 00:08:05,860 --> 00:08:09,790 És ha azt mondanánk, s konzol 1, hogy jelezné az első kisbetűs egy, 176 00:08:09,790 --> 00:08:14,220 és így tovább, egészen s konzol 5, ami azt jelzi, az utolsó egy. 177 00:08:14,220 --> 00:08:17,090 >> Most ne feledjük, hogy a hossza a string 6, 178 00:08:17,090 --> 00:08:23,220 de az indexek a húr van 0 és 5, Z keresztül, hogy az elmúlt. 179 00:08:23,220 --> 00:08:28,650 Szóval ez most elfér egy nagyobb képet A számítógép memóriájából, a RAM. 180 00:08:28,650 --> 00:08:32,020 Tehát valahol a program futsz a számítógép 181 00:08:32,020 --> 00:08:34,780 meg kell emlékezni, Zamyla valahol a memóriában. 182 00:08:34,780 --> 00:08:36,029 Szóval lehet, hogy egy önkéntes? 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 Igen, kérem. 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 És mi a neve? 187 00:08:51,500 --> 00:08:52,410 >> Dékán: Dean. 188 00:08:52,410 --> 00:08:53,550 >> Ebből BOWDEN: Dean? 189 00:08:53,550 --> 00:08:54,910 Örülök, hogy találkoztunk, Dean. 190 00:08:54,910 --> 00:08:58,240 Szóval gyere ide, és megyünk, hogy itt dolgozzon 191 00:08:58,240 --> 00:09:00,740 A szép remek elrendezés memória. 192 00:09:00,740 --> 00:09:05,950 Most Szeretném azt hinni, a memória mint egy hosszú csík bájt, 193 00:09:05,950 --> 00:09:11,090 de csak a megjelenítés céljára fogunk Csak balról jobbra, fentről lefelé. 194 00:09:11,090 --> 00:09:11,590 OKÉ? 195 00:09:11,590 --> 00:09:22,030 >> Így fogok mutatni egy program-- Getstrings.c. 196 00:09:22,030 --> 00:09:25,760 És hogy mindez program Ennek kér négy húrt 197 00:09:25,760 --> 00:09:28,830 a felhasználó GetString majd nyomtatás 198 00:09:28,830 --> 00:09:30,950 bármi is legyen az első húr belépett volt. 199 00:09:30,950 --> 00:09:32,840 Mi figyelmen kívül hagyva a két négyig. 200 00:09:32,840 --> 00:09:33,610 OKÉ. 201 00:09:33,610 --> 00:09:38,210 Tehát itt now-- ha Én első kérelem S1. 202 00:09:38,210 --> 00:09:39,740 Szóval te vagy a számítógép. 203 00:09:39,740 --> 00:09:41,680 És akkor hajtják végre getString. 204 00:09:41,680 --> 00:09:46,710 Szóval kérjen stringet engem, és azt mondom, rendben, Dean. 205 00:09:46,710 --> 00:09:47,900 Adja meg a karakterlánc "Dean". 206 00:09:47,900 --> 00:09:50,300 >> Tehát valahol memória kell emlékezni "Dean". 207 00:09:50,300 --> 00:09:52,160 Szóval írd be a memóriába valahol. 208 00:09:52,160 --> 00:09:58,270 209 00:09:58,270 --> 00:09:59,210 Tökéletes. 210 00:09:59,210 --> 00:09:59,880 OKÉ. 211 00:09:59,880 --> 00:10:01,740 Tehát most már S2. 212 00:10:01,740 --> 00:10:03,869 És S2 lesz a kéréssel, hogy getString. 213 00:10:03,869 --> 00:10:05,160 Így fogok belépni egy húr. 214 00:10:05,160 --> 00:10:08,720 Megyek be "Hannah." 215 00:10:08,720 --> 00:10:10,586 Tehát írja be a "Hannah" valahol a memóriába. 216 00:10:10,586 --> 00:10:18,860 217 00:10:18,860 --> 00:10:19,360 Igen. 218 00:10:19,360 --> 00:10:23,000 A-H. 219 00:10:23,000 --> 00:10:25,550 >> OK, így most az S3. 220 00:10:25,550 --> 00:10:28,380 És ez lesz a másik kérheti, hogy getString. 221 00:10:28,380 --> 00:10:37,020 És így most adja "Maria". 222 00:10:37,020 --> 00:10:37,520 Minden rendben. 223 00:10:37,520 --> 00:10:40,980 És akkor ott van még egy utolsó kérés getString, S4. 224 00:10:40,980 --> 00:10:42,580 Szóval, nem tudom. 225 00:10:42,580 --> 00:10:45,640 Mi lenne, ha megy antidisestablishmentarianism. 226 00:10:45,640 --> 00:10:49,460 Így adja, hogy a memóriába. 227 00:10:49,460 --> 00:10:50,400 Igen. 228 00:10:50,400 --> 00:10:53,970 Szóval csak nem "Rob." 229 00:10:53,970 --> 00:10:54,560 >> OKÉ. 230 00:10:54,560 --> 00:10:58,410 Tehát most explain-- miért hagyja ezeket a helyeket? 231 00:10:58,410 --> 00:11:01,340 Miért van ez üres helyet itt, itt, és itt? 232 00:11:01,340 --> 00:11:05,170 233 00:11:05,170 --> 00:11:05,670 Igen. 234 00:11:05,670 --> 00:11:09,450 Tehát észre, amikor megyek nyomtatni s1-- így ha 235 00:11:09,450 --> 00:11:11,890 volt "Hannah" működési egészen mellett a "Dean" 236 00:11:11,890 --> 00:11:14,360 honnan tudjuk, hogy mikor a húr "Dean" vége? 237 00:11:14,360 --> 00:11:19,470 Tehát nyomtatás a húr S1 lehet Csak nyomtatott "DeanHannahMariaRob" 238 00:11:19,470 --> 00:11:22,720 ha nem rendelkezik semmilyen nyom Az, ha a "Dean" ténylegesen véget ér. 239 00:11:22,720 --> 00:11:23,240 >> Minden rendben. 240 00:11:23,240 --> 00:11:27,650 Tehát a memóriában, ahogy mi ténylegesen képviselhetjük a végén egy húr 241 00:11:27,650 --> 00:11:29,940 ez a backslash nulla. 242 00:11:29,940 --> 00:11:32,620 Szóval ez a hely pontosan az, amit szerettünk volna. 243 00:11:32,620 --> 00:11:34,040 Meg kell egy backslash nulla. 244 00:11:34,040 --> 00:11:37,690 Ez lesz a backslash nulla, és ez lesz a backslash nulla. 245 00:11:37,690 --> 00:11:41,585 És akkor egy mesés nyeremény számára, hogy egy tökéletes önkéntes. 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 Vegyünk egy stressz labdát! 248 00:11:45,860 --> 00:11:49,040 249 00:11:49,040 --> 00:11:49,700 >> OKÉ. 250 00:11:49,700 --> 00:11:54,420 Szóval ez a karakter backslash nulla hogyan jelzi a végén egy húr. 251 00:11:54,420 --> 00:11:57,120 Ez hogyan, mikor adott programban akar nyomtatni egy húr, 252 00:11:57,120 --> 00:11:59,760 ez how-- emlékezzen megtudtuk Az strlen függvény a múlt héten? 253 00:11:59,760 --> 00:12:00,940 String-hossz? 254 00:12:00,940 --> 00:12:03,770 Ez hogyan húr hossza képes meghatározására, milyen hosszú a karakterlánc. 255 00:12:03,770 --> 00:12:05,810 Ez csak folyamatosan ismételve mint a karakterek 256 00:12:05,810 --> 00:12:08,217 amíg meg nem találja a backslash nulla karakter. 257 00:12:08,217 --> 00:12:11,050 Szóval a lényeg az, hogy észre a backslash nulla karakter 258 00:12:11,050 --> 00:12:14,950 A ez képviseli minden nullák bit. 259 00:12:14,950 --> 00:12:18,980 Tehát észre, hogy ez különbözik a nulla karakter. 260 00:12:18,980 --> 00:12:23,010 Tehát a nulla karakter, ha emlékszel A példa, hogy ő adta a végén 261 00:12:23,010 --> 00:12:27,360 Előadás, ahol a karakterek map alábbiakra: mint a fővárosban A térképek és 65. 262 00:12:27,360 --> 00:12:29,130 Kisbetűs egy térképeket 97. 263 00:12:29,130 --> 00:12:30,890 Kisbetűs b lenne 98. 264 00:12:30,890 --> 00:12:35,220 Szóval száma 0 térképek alábbiakra: én nem tudom, ki a fejem tetején. 265 00:12:35,220 --> 00:12:36,400 44 vagy 45. 266 00:12:36,400 --> 00:12:37,890 Valahol ebben a régióban. 267 00:12:37,890 --> 00:12:40,850 >> Tehát a karakter 0 egy valós szám. 268 00:12:40,850 --> 00:12:44,350 De backslash nulla térképek minden nulla bitet. 269 00:12:44,350 --> 00:12:46,380 Szóval van egy különbség között backslash nulla, 270 00:12:46,380 --> 00:12:48,450 amely fogjuk hívni a null terminátor. 271 00:12:48,450 --> 00:12:53,210 Van egy megkülönböztetése backslash nulla és a karakter nulla. 272 00:12:53,210 --> 00:12:54,350 >> Minden rendben. 273 00:12:54,350 --> 00:12:57,520 Így beszél egy kicsit többet szálakat. 274 00:12:57,520 --> 00:13:01,470 Tehát itt látunk ez hogyan lenne lefektetett memória. 275 00:13:01,470 --> 00:13:07,940 Szóval ez a gondolat a húrok sorozataként A jellemek így a hivatalos számítógépes 276 00:13:07,940 --> 00:13:10,750 sciency távú szekvencia egy tömb. 277 00:13:10,750 --> 00:13:13,790 Szóval azt mondanánk egy string egy sor karakter. 278 00:13:13,790 --> 00:13:17,770 És vannak valójában más adat típusok hogy tudjuk, hogy a tömbök ki. 279 00:13:17,770 --> 00:13:19,975 >> Tehát motiválni, nézd meg egy példát. 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 Hívjuk meg ages0.c Megyek másolja be a sablont. 282 00:13:29,812 --> 00:13:32,470 283 00:13:32,470 --> 00:13:33,410 OKÉ. 284 00:13:33,410 --> 00:13:39,378 Tehát ebben a programban, amit akarok megragad a kora 285 00:13:39,378 --> 00:13:45,160 A három diák során. 286 00:13:45,160 --> 00:13:49,240 Tehát tudjuk, hogy az int age-- és most fogok mondani 0. 287 00:13:49,240 --> 00:13:53,140 Szóval lehet, hogy azt akarom mondani age1, de célokra majd meglátjuk hamarosan, 288 00:13:53,140 --> 00:13:57,187 Azt mondom int age0 egyenlő GetInt. 289 00:13:57,187 --> 00:13:59,270 Tehát ugyanazt a hívást GetInt hogy a korábban használt I 290 00:13:59,270 --> 00:14:01,561 Nem történhet meg kell megkérdezése mondván, "add nekem a korban." 291 00:14:01,561 --> 00:14:03,120 De csak kéri. 292 00:14:03,120 --> 00:14:06,510 >> És age1 egyenlő GetInt. 293 00:14:06,510 --> 00:14:09,600 És int age2 egyenlő GetInt. 294 00:14:09,600 --> 00:14:14,070 Szóval, megint három diák, de végső soron a változó indexek 295 00:14:14,070 --> 00:14:16,890 a age0 keresztül age2. 296 00:14:16,890 --> 00:14:17,550 OKÉ. 297 00:14:17,550 --> 00:14:23,960 Szóval ez a program mindent megteszek akarunk a age0, age1, és age2, 298 00:14:23,960 --> 00:14:27,670 de ez a program végső soron dolgozik három diák. 299 00:14:27,670 --> 00:14:28,380 >> OKÉ. 300 00:14:28,380 --> 00:14:32,110 Szóval most mi van, ha akarom négy diák? 301 00:14:32,110 --> 00:14:36,000 Nos, megyek vissza kell mennie az én kódot, módosítsa a megjegyzést, 302 00:14:36,000 --> 00:14:39,840 és most van egy int age3 egyenlő GetInt. 303 00:14:39,840 --> 00:14:40,610 OKÉ. 304 00:14:40,610 --> 00:14:43,660 Tehát, aki látja a probléma? 305 00:14:43,660 --> 00:14:47,310 Mi a baj ez a fajta beállítás? 306 00:14:47,310 --> 00:14:47,810 Igen. 307 00:14:47,810 --> 00:14:53,110 308 00:14:53,110 --> 00:14:53,610 Igen. 309 00:14:53,610 --> 00:14:56,360 Szóval létre változó minden tanuló számára. 310 00:14:56,360 --> 00:15:00,140 Most, hogy működik, de végső soron mi van, ha most 311 00:15:00,140 --> 00:15:06,500 azt mondja: "Azt akarom, hogy megragad a kora Nyolc diák vagy 16 diák 312 00:15:06,500 --> 00:15:11,340 vagy akárhány diákok A több száz diák CS50 313 00:15:11,340 --> 00:15:16,750 vagy a több ezer diákok az egyetemen vagy a több milliárd ember a világon? 314 00:15:16,750 --> 00:15:19,130 Így végül ez nem fenntartható. 315 00:15:19,130 --> 00:15:21,990 Bármikor látod magad másolás és beillesztés kód, mint ez, 316 00:15:21,990 --> 00:15:25,050 akkor általában úgy érzi, hogy van egy jobb út. 317 00:15:25,050 --> 00:15:31,290 >> Szóval ez az, ahol bemutatjuk tömb nyilatkozatot. 318 00:15:31,290 --> 00:15:34,564 Tehát, ha egy tömböt, ez az, amit az általános formátum 319 00:15:34,564 --> 00:15:35,480 fog kinézni. 320 00:15:35,480 --> 00:15:36,664 Megyünk, hogy mondjuk a típus. 321 00:15:36,664 --> 00:15:38,830 majd megyünk hogy a neve a tömbben, 322 00:15:38,830 --> 00:15:41,150 mint ahogy mi határozza meg egy adott változó. 323 00:15:41,150 --> 00:15:43,980 És végül mi használ ez a konzol jelölés újra 324 00:15:43,980 --> 00:15:47,480 de eltérő körülmények között hogyan használta azt korábban. 325 00:15:47,480 --> 00:15:51,860 >> Tehát itt ez úgy néz ki, mint egy normál változó deklaráció, amit láttam. 326 00:15:51,860 --> 00:15:54,890 Így láttuk int x pontosvessző előtt. 327 00:15:54,890 --> 00:16:00,020 Hát most talán látni valamit mint int x zárójelben 5. 328 00:16:00,020 --> 00:16:04,020 És, hogy a koncepciót a GetInt program, hogy mi have-- 329 00:16:04,020 --> 00:16:08,850 így tudjuk végrehajtani ezt ugyanolyan módon. 330 00:16:08,850 --> 00:16:13,630 >> Mondjuk CS hajlamosak vagyunk használni n ahány valamit. 331 00:16:13,630 --> 00:16:16,150 Tehát itt fogunk tárolni négy diák. 332 00:16:16,150 --> 00:16:25,960 És most azt mondhatjuk, int kor konzol n-- nem egészen értem yet-- 333 00:16:25,960 --> 00:16:32,210 egy tömböt négy versenyző. 334 00:16:32,210 --> 00:16:38,050 Szóval ez hogyan fog kinézni memória lesz ehhez hasonló. 335 00:16:38,050 --> 00:16:39,570 Törölje ezt. 336 00:16:39,570 --> 00:16:46,606 És mi lesz, hogy valahol A memory-- teszem ezt odafent. 337 00:16:46,606 --> 00:16:52,690 338 00:16:52,690 --> 00:16:53,808 >> Tehát valahol a memóriában. 339 00:16:53,808 --> 00:16:58,760 340 00:16:58,760 --> 00:16:59,727 Egy kettő három négy. 341 00:16:59,727 --> 00:17:03,383 342 00:17:03,383 --> 00:17:09,849 Van négy egész számot egy sorban Ennek sor négy egész számot. 343 00:17:09,849 --> 00:17:13,820 Tehát, jelenleg, mi a mérete egy ilyen doboz? 344 00:17:13,820 --> 00:17:17,190 345 00:17:17,190 --> 00:17:17,690 Igen. 346 00:17:17,690 --> 00:17:18,390 Ez négy bájt. 347 00:17:18,390 --> 00:17:19,690 Ez 32 bit. 348 00:17:19,690 --> 00:17:22,310 Tehát most ez más a tömb, hogy mi 349 00:17:22,310 --> 00:17:24,020 korábban láttuk, a tömb a karakterek. 350 00:17:24,020 --> 00:17:28,540 Egy karakterlánc minden doboz volt, csak egy byte, mert egy karakter csak egy byte. 351 00:17:28,540 --> 00:17:32,170 De egy sor egészek, minden rovatot kell négy bájt érdekében 352 00:17:32,170 --> 00:17:34,060 hogy illeszkedjen egy teljes egész. 353 00:17:34,060 --> 00:17:37,197 Szóval ez az, amit egy sor Négy ints nézne. 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> És akkor vissza a kódot. 356 00:17:43,870 --> 00:17:47,460 Most szeretnénk ténylegesen áruház egészek be a tömbben. 357 00:17:47,460 --> 00:17:53,470 Tehát most ez egy nagyon, nagyon, nagyon közös vonása, hogy lesz egy bizonyos ponton 358 00:17:53,470 --> 00:17:54,680 válnak az izmok memória. 359 00:17:54,680 --> 00:17:56,710 Tehát int i értéke 0. 360 00:17:56,710 --> 00:17:57,940 i n-nél kisebb. 361 00:17:57,940 --> 00:18:01,850 i plus plus. 362 00:18:01,850 --> 00:18:05,790 Korosztály i értéke GetInt. 363 00:18:05,790 --> 00:18:15,100 >> Szóval ez a for ciklus, ezt a formátumot, akkor kap nagyon használják. 364 00:18:15,100 --> 00:18:20,010 Szóval ez általában hogyan fogunk végighaladni szinte minden tömb. 365 00:18:20,010 --> 00:18:23,690 Most észre ezt a fajta megmagyarázza, hogy miért a kezdetektől 366 00:18:23,690 --> 00:18:29,870 nem volt a hurok megy int i értéke 1, I-nél kisebb vagy egyenlő 10. 367 00:18:29,870 --> 00:18:34,200 Az ok pedig az, hogy kezdődően nulla teszi ezt a munkát jól tömbök. 368 00:18:34,200 --> 00:18:36,270 Tehát tömbök nulla indexelt. 369 00:18:36,270 --> 00:18:40,360 Ha ez a tömb hossza 4, Az indexek 0-tól 3. 370 00:18:40,360 --> 00:18:42,880 >> Tehát át az első iterációjában Ez a for ciklus 371 00:18:42,880 --> 00:18:49,930 mi lesz életkori konzol 0 egyenlő egy hívást GetInt. 372 00:18:49,930 --> 00:18:52,440 Tehát amit én történt adja meg a billentyűzetet. 373 00:18:52,440 --> 00:18:56,970 A második menetben vagyunk beállítás age1 egyenlő GetInt. 374 00:18:56,970 --> 00:18:58,230 Harmadik lépésben, age2. 375 00:18:58,230 --> 00:18:59,880 Utolsó lépés age3. 376 00:18:59,880 --> 00:19:05,750 Tehát, ha az első menetben a hurok Azt írja a 4-es számú, a billentyűzet, 377 00:19:05,750 --> 00:19:07,740 aztán majd illesszen 4 itt. 378 00:19:07,740 --> 00:19:11,470 Ha a második lépésben azt írja 50, feltesszük egy 50 itt. 379 00:19:11,470 --> 00:19:15,180 A harmadik menetben talán adja negatív 1, negatív 1, 380 00:19:15,180 --> 00:19:21,810 és végül, ha belépek 0-- és Most ne feledjük, hogy ez volt-index három. 381 00:19:21,810 --> 00:19:25,350 >> Miután visszanyúlnak, i fog növekedhet a 4. 382 00:19:25,350 --> 00:19:27,770 i már nem kevesebb, mint n, amely 4. 383 00:19:27,770 --> 00:19:29,840 És mi kitörni a hurok. 384 00:19:29,840 --> 00:19:32,578 Szóval mi lenne baj ezzel? 385 00:19:32,578 --> 00:19:38,140 386 00:19:38,140 --> 00:19:38,729 [Hallhatatlan]? 387 00:19:38,729 --> 00:19:39,604 Közönség: [hallható] 388 00:19:39,604 --> 00:19:45,880 389 00:19:45,880 --> 00:19:46,400 >> Igen. 390 00:19:46,400 --> 00:19:51,550 Tehát a tömb csak négy helyen, ami azt jelenti, indexek 0-tól 3. 391 00:19:51,550 --> 00:19:55,630 Tehát, ha ez lenne a helyzet, megtenném hogy a 4-es érték egy bizonyos ponton. 392 00:19:55,630 --> 00:20:00,910 korosztály 4 lesz a beállítás bármi történik, hogy ide 393 00:20:00,910 --> 00:20:02,920 hogy mit kell mondanom, adja 6. 394 00:20:02,920 --> 00:20:05,010 Ez lesz ez a beállítás 6. 395 00:20:05,010 --> 00:20:06,560 >> De nem tudjuk, mi van itt. 396 00:20:06,560 --> 00:20:08,836 Ez nem memória hogy mi volt hozzáférése. 397 00:20:08,836 --> 00:20:10,710 Tehát, ha emlékszel Az előző előadás, 398 00:20:10,710 --> 00:20:14,350 ő kinyomtatja értékeit Zamyla és egy bizonyos ponton ütötte ezt a szegmentáció 399 00:20:14,350 --> 00:20:17,990 hibája. Szóval akkor valószínűleg látni Sok szegmentációs hiba, amit 400 00:20:17,990 --> 00:20:20,530 végre néhány probléma készletek. 401 00:20:20,530 --> 00:20:24,950 De ez az egyik a módszereket, amelyek akkor találkozhat egy szegmentációs 402 00:20:24,950 --> 00:20:28,540 Hiba, ha elkezd hozzáférés memória olyan módon, hogy ne legyen. 403 00:20:28,540 --> 00:20:34,117 Így nem férnek hozzá Ebben a helyzetben és ez hiba. 404 00:20:34,117 --> 00:20:37,760 405 00:20:37,760 --> 00:20:40,190 >> Tehát ez jobb. 406 00:20:40,190 --> 00:20:45,820 Most van mindig egy kis probléma ezzel a kóddal. 407 00:20:45,820 --> 00:20:50,720 És ez alapvetően, hogy mi vagyunk Még mindig beragadt négy diák. 408 00:20:50,720 --> 00:20:52,940 Most, ha akarom használni nyolc tanuló, OK. 409 00:20:52,940 --> 00:20:54,350 Ez nem olyan nagy dolog. 410 00:20:54,350 --> 00:20:58,120 Mehetek, változtassa meg a megjegyzést, és változtatni n. 411 00:20:58,120 --> 00:20:59,760 Most ez fog működni a nyolc tanuló. 412 00:20:59,760 --> 00:21:02,190 Ha tudom lefordítani ezt, és fuss ez azt mutatja me-- 413 00:21:02,190 --> 00:21:07,870 hogy felkéri egész nyolc hallgatók és működni fog. 414 00:21:07,870 --> 00:21:11,850 De ez kevesebb, mint ideális, hogy szükség van újrafordítani a programot minden egyes alkalommal 415 00:21:11,850 --> 00:21:15,960 Meg akarom változtatni a diákok száma hogy szeretnék belépni a korosztály számára. 416 00:21:15,960 --> 00:21:22,990 >> Így a végső javulást Ez, mint látni fogjuk here-- vagyunk 417 00:21:22,990 --> 00:21:26,177 fog kérni az embereknek a száma. 418 00:21:26,177 --> 00:21:28,010 Itt van néhány Az emberek a szobában 419 00:21:28,010 --> 00:21:29,880 vagy bármely korosztály ember a szobában. 420 00:21:29,880 --> 00:21:33,300 De megyünk kérni száma Az ember a szobában a felhasználó. 421 00:21:33,300 --> 00:21:36,171 Tehát ez pontosan ugyanaz a do-while hurok, amit eddig láttam. 422 00:21:36,171 --> 00:21:37,920 Ez pontosan ugyanaz a do-while ciklus, amit 423 00:21:37,920 --> 00:21:40,050 megvalósíthat a problémát sor. 424 00:21:40,050 --> 00:21:43,102 Tehát amíg ők belépő egy n kevesebb, mint 1, 425 00:21:43,102 --> 00:21:45,310 így van, hogy a legalább egy személy a szobában. 426 00:21:45,310 --> 00:21:47,407 Mindaddig, amíg ők belépő egy n kevesebb, mint 1, 427 00:21:47,407 --> 00:21:48,990 akkor fogunk tartani kérdezi újra. 428 00:21:48,990 --> 00:21:50,906 Kérjük, írja be a számot Az ember a szobában. 429 00:21:50,906 --> 00:21:53,550 Most, ha megvan a szám Az emberek a room-- 430 00:21:53,550 --> 00:21:58,020 úgyhogy lehet, hogy nem adja meg 200 ember ebben a szobában. 431 00:21:58,020 --> 00:22:05,480 Aztán itt lent fogunk jönni és egy tömböt a mérete 200. 432 00:22:05,480 --> 00:22:10,220 Mi nyilvánító tömb, ami belefér 200 korosztály számára. 433 00:22:10,220 --> 00:22:15,370 Jön le, hogy ez a for ciklus hogy kapsz nagyon használják. 434 00:22:15,370 --> 00:22:19,490 Tehát az iterációt ez a tömb, hozzárendelése minden helyre 435 00:22:19,490 --> 00:22:23,020 hogy tömb egy egész szám, és majd végül itt vagyunk 436 00:22:23,020 --> 00:22:28,340 csak arra, hogy egy példát ismételve mint a tömbben, hogy ne engedélyezzenek értékeket, 437 00:22:28,340 --> 00:22:30,150 de elérni értékeket. 438 00:22:30,150 --> 00:22:33,810 >> Tehát itt azt látjuk, hogy azt mondják, egy év múlva, 439 00:22:33,810 --> 00:22:40,470 fő% én lesz% i éves, ahol az első% i i + 1. 440 00:22:40,470 --> 00:22:43,010 Tehát én is ez a mutató változó. 441 00:22:43,010 --> 00:22:49,420 És a második% i lesz a tárolt értéket korosztály tömb plusz 1. 442 00:22:49,420 --> 00:22:54,217 Tehát ez a plusz 1 csak azért, mert mi vagyunk saying-- ezt a plusz 1, korosztály i + 1. 443 00:22:54,217 --> 00:22:57,050 Ez plusz 1 csak azért, mert mi vagyunk mondván, egy év múlva az a személy, 444 00:22:57,050 --> 00:22:58,280 lesz a régi. 445 00:22:58,280 --> 00:23:01,080 >> Akkor miért ez i + 1? 446 00:23:01,080 --> 00:23:04,064 Miért van egy plusz 1 ott? 447 00:23:04,064 --> 00:23:04,564 Igen. 448 00:23:04,564 --> 00:23:07,410 449 00:23:07,410 --> 00:23:07,930 Igen. 450 00:23:07,930 --> 00:23:10,510 Úgy emlékszem, a tömbök nulla indexelt. 451 00:23:10,510 --> 00:23:14,840 Tehát, ha nyomtat ki ezt a valakit, hogy csak olvasd el a kimeneti, 452 00:23:14,840 --> 00:23:19,380 akkor valószínűleg akarnak látni valamit mint személy egy, személy számú, 453 00:23:19,380 --> 00:23:21,160 lesz 20 éves. 454 00:23:21,160 --> 00:23:23,570 Személyi második számú lesz 15 éves. 455 00:23:23,570 --> 00:23:27,420 Ők nem szeretné látni személy nulla szám 15 éves. 456 00:23:27,420 --> 00:23:36,460 >> Tehát összeállításakor, és csak látta, milyen úgy néz ki, az általam elvártnál létrehozása néhány helyet. 457 00:23:36,460 --> 00:23:43,560 Tedd korosztály összeállítja. 458 00:23:43,560 --> 00:23:45,080 Futás korosztály számára. 459 00:23:45,080 --> 00:23:46,580 Látjuk emberek száma a szobában. 460 00:23:46,580 --> 00:23:48,850 Szóval azt mondom vannak Három ember a szobában. 461 00:23:48,850 --> 00:23:54,000 Age of személyt számú, mondjuk 15, 20, 25. 462 00:23:54,000 --> 00:23:59,680 És most azt mondom egy év most lesz 16, 21, 26. 463 00:23:59,680 --> 00:24:02,900 Lássuk, hogy is működik ez a egy n, amely nem egyenlő 3. 464 00:24:02,900 --> 00:24:07,940 Tehát ha azt mondom emberek száma 5, az egyik, kettő, három, kettő, egy, egy év múlva 465 00:24:07,940 --> 00:24:11,170 akkor lesz kettő, három, négy, három, két éves. 466 00:24:11,170 --> 00:24:16,500 Így tudtam éppoly könnyen lehetett n is 10.000. 467 00:24:16,500 --> 00:24:21,270 Most fogok itt ülni, elég Egy ideig belépő korosztály, de ez működik. 468 00:24:21,270 --> 00:24:26,000 >> Tehát most a memóriában valahova Van egy sor mérete 10.000, 469 00:24:26,000 --> 00:24:28,830 Így végül 40.000 bájt, mert vannak 470 00:24:28,830 --> 00:24:31,222 négy bájt minden egyes ilyen egészek. 471 00:24:31,222 --> 00:24:33,180 Tehát van egy sor mérete 10,000 ahol tudunk 472 00:24:33,180 --> 00:24:36,201 tárolja a korosztály azoknak 10.000 ember. 473 00:24:36,201 --> 00:24:36,700 Minden rendben. 474 00:24:36,700 --> 00:24:40,070 Kérdések bármelyikét ez? 475 00:24:40,070 --> 00:24:41,892 Igen. 476 00:24:41,892 --> 00:24:43,350 Mi van, ha adott egy negatív szám? 477 00:24:43,350 --> 00:24:44,870 Lássuk, mi történik. 478 00:24:44,870 --> 00:24:49,320 Tehát ebben a konkrét case-- száma Az emberek a szobában, negatív. 479 00:24:49,320 --> 00:24:52,580 Úgy elutasította ezt, mert itt történetesen 480 00:24:52,580 --> 00:24:57,180 kell kezelni a tény, hogy ha n értéke kevesebb, mint egy megyünk fel újra. 481 00:24:57,180 --> 00:25:01,780 Ha megpróbálja, hogy állapítsa meg tömb negatív méretű, 482 00:25:01,780 --> 00:25:03,950 ez általában nem működik. 483 00:25:03,950 --> 00:25:05,570 >> Úgyhogy próbáljuk. 484 00:25:05,570 --> 00:25:08,000 Most egyelõre bármi értéküket bemenet n 485 00:25:08,000 --> 00:25:10,571 és csak annyit int korosztály negatív. 486 00:25:10,571 --> 00:25:12,410 Lássuk, hogy még lefordul. 487 00:25:12,410 --> 00:25:14,100 Nem vagyok biztos benne. 488 00:25:14,100 --> 00:25:14,920 Nem. 489 00:25:14,920 --> 00:25:18,280 Tehát korosztály nyilvánították a tömb negatív méretét. 490 00:25:18,280 --> 00:25:22,540 Tehát előre kimutat egy tömb nem lehet negatív mérete és elutasítja azt. 491 00:25:22,540 --> 00:25:26,840 Most, ha nem kezelik ez a do-while ciklus helyesen, 492 00:25:26,840 --> 00:25:28,810 Ha nem lennénk ellenőrzése ha n értéke kisebb, mint 1-- 493 00:25:28,810 --> 00:25:32,690 mondjuk mi csak Nem volt ez egyáltalán 494 00:25:32,690 --> 00:25:35,940 és ehelyett csak megragad egy egész szám. 495 00:25:35,940 --> 00:25:40,710 Nem számít, hogy mi integer, mi egy tömböt az ilyen méretű. 496 00:25:40,710 --> 00:25:44,250 >> Így a fordító nem esetleg panaszkodnak most. 497 00:25:44,250 --> 00:25:48,780 Ha fordítsam this-- így nem lehet panaszkodni, 498 00:25:48,780 --> 00:25:51,480 mert nem tudják, hogy én vagyok fog belépni negatív szám, 499 00:25:51,480 --> 00:25:52,550 esetleg érvénytelen. 500 00:25:52,550 --> 00:25:54,633 Minden úgy tudja, talán meg egy pozitív számot, 501 00:25:54,633 --> 00:25:56,000 amely tökéletesen érvényes. 502 00:25:56,000 --> 00:26:01,090 Szóval képzeld el, ha belépek a negatív 1 ember a szobában, szegmentációs hiba. 503 00:26:01,090 --> 00:26:06,040 >> Így ok. 504 00:26:06,040 --> 00:26:13,160 Tehát tegyük hozzá vissza, csak tartsa amit eredetileg. 505 00:26:13,160 --> 00:26:15,640 Úgyhogy győződjön korosztály számára. 506 00:26:15,640 --> 00:26:18,120 Most, ha akarom próbálni egy negatív age-- úgyhogy 507 00:26:18,120 --> 00:26:19,710 azt mondják, van öt ember a szobában. 508 00:26:19,710 --> 00:26:23,180 Age of személyt számú negatív 4, személy három 509 00:26:23,180 --> 00:26:26,500 nulla, személy three-- OK. 510 00:26:26,500 --> 00:26:29,850 Tehát itt, egy év múlva, fő száma Egy negatív lesz 3 éves. 511 00:26:29,850 --> 00:26:32,830 Tehát valószínűleg nincs értelme. 512 00:26:32,830 --> 00:26:37,220 De ez csak azért, mert keres A kód minden, amit csinálsz 513 00:26:37,220 --> 00:26:40,260 kér GetInt. 514 00:26:40,260 --> 00:26:44,110 >> Most, ha meg kellett volna a GetPositiveInt funkció 515 00:26:44,110 --> 00:26:49,690 vagy mi volt csak egyszerűen megtette ezt fajta ugyanazon while ciklus odalent, 516 00:26:49,690 --> 00:26:52,340 akkor ez működne tökéletesen megfelel. 517 00:26:52,340 --> 00:26:54,200 De ebben a konkrét esetben, mi csak nem 518 00:26:54,200 --> 00:26:57,772 történetesen kezelése negatív értékeket. 519 00:26:57,772 --> 00:26:59,147 Bármilyen további kérdése van a tömbök? 520 00:26:59,147 --> 00:27:02,290 521 00:27:02,290 --> 00:27:03,250 OKÉ. 522 00:27:03,250 --> 00:27:09,380 >> Így már most látható tömbök. 523 00:27:09,380 --> 00:27:12,500 És fogunk kell használni ez a parancssori. 524 00:27:12,500 --> 00:27:14,680 Tehát a probléma beállítva two-- Tudom, hogy sokan közületek 525 00:27:14,680 --> 00:27:18,040 talán még mindig dolgozik a probléma szett egy, hanem a probléma meg két Közeleg. 526 00:27:18,040 --> 00:27:22,260 Ezen probléma meg két, fogsz kell foglalkozó húrok, tömbök, 527 00:27:22,260 --> 00:27:23,950 és parancssori. 528 00:27:23,950 --> 00:27:26,270 >> Tehát mi a parancssori paramétereket? 529 00:27:26,270 --> 00:27:29,570 Most láthatjuk itt lent a kis kedvcsináló pontosan mi 530 00:27:29,570 --> 00:27:30,950 fog történni. 531 00:27:30,950 --> 00:27:32,950 Látjuk int main, inc argc, karakterlánc argv zárójelben. 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 Tehát először próbáljuk értelmezni hogy mit próbál mondani. 534 00:27:38,130 --> 00:27:40,800 Most oké. 535 00:27:40,800 --> 00:27:44,637 >> Tehát a parancssorban kell lennie megszokni néhány ilyen parancsok 536 00:27:44,637 --> 00:27:48,580 Most, és akkor már valószínűleg futni cd a terminál előtt. 537 00:27:48,580 --> 00:27:52,100 Tehát, ha azt mondjuk, cd pset1, tudod, hogy kell 538 00:27:52,100 --> 00:27:55,050 lehet változó a pset1 könyvtárba. 539 00:27:55,050 --> 00:27:59,120 >> Most észre, hogy már soha nem írt egy programot, mint ez előtt. 540 00:27:59,120 --> 00:28:03,120 Minden program, amit írtam, akkor futni, mondjuk pont perjel Mario, 541 00:28:03,120 --> 00:28:06,779 dot perjel kapzsi, és akkor jelenhet meg, a bemenet. 542 00:28:06,779 --> 00:28:08,570 Most, hogy nem ezt Váltson nem. 543 00:28:08,570 --> 00:28:12,770 Amikor futtatja cd, nem akkor azt mondják, melyik könyvtárban akarsz CD-t? 544 00:28:12,770 --> 00:28:17,200 Ehelyett csak annyit, cd pset1, és ez csak azt a pset1 könyvtárba. 545 00:28:17,200 --> 00:28:20,430 >> Tehát hasonlóan vannak más példák. 546 00:28:20,430 --> 00:28:21,540 hogy helló. 547 00:28:21,540 --> 00:28:25,760 Amikor futtatja hogy, hogy nem, akkor azt mondják, melyik programot szeretne tenni? 548 00:28:25,760 --> 00:28:29,620 Csak azt mondom, a parancssori hogy helló. 549 00:28:29,620 --> 00:28:31,060 >> Mozgás egy másik példa. 550 00:28:31,060 --> 00:28:34,840 Ez az egyik haladunk a mario.c fájlt fel egy könyvtárba. 551 00:28:34,840 --> 00:28:38,060 Tehát most már tudjuk, hogy ennek példája mi tényleg elhaladó két érvet. 552 00:28:38,060 --> 00:28:42,090 Van mario.c az első paraméterként, és dot dot A második érv. 553 00:28:42,090 --> 00:28:46,140 És akkor, amikor futtatja hogy Ön látom, hogy nagyon hosszú parancsot line-- 554 00:28:46,140 --> 00:28:50,580 hogy nagyon hosszú parancs nyomtatva a parancssorban. 555 00:28:50,580 --> 00:28:53,590 Annak érdekében, hogy hosszú command-- ezt csak egy rövid részét, 556 00:28:53,590 --> 00:28:56,090 de most már három parancssori. 557 00:28:56,090 --> 00:28:59,750 Pont vonal nulla, hello, és hello.c. 558 00:28:59,750 --> 00:29:03,497 >> Tehát ezek parancssori érvek, érvek 559 00:29:03,497 --> 00:29:05,580 hogy te halad a parancssorban úgy, hogy 560 00:29:05,580 --> 00:29:08,680 nem kell kérni ha a program futtatásához. 561 00:29:08,680 --> 00:29:13,090 Nem lenne frusztráló, ha ha Ön futott csenget azt mondta, "OK, 562 00:29:13,090 --> 00:29:15,630 amely program-- amely Fájl Ön összeállítása? 563 00:29:15,630 --> 00:29:17,010 Hello.c. 564 00:29:17,010 --> 00:29:19,440 Mit zászlók ugye szeretne belépni? kötőjel o. 565 00:29:19,440 --> 00:29:21,190 Mit szeretnél A fájl neve? 566 00:29:21,190 --> 00:29:21,690 Helló. 567 00:29:21,690 --> 00:29:25,290 Nem, csak futni csengés dash o Hello hello.c. 568 00:29:25,290 --> 00:29:28,820 >> Így nézett vissza ezt. 569 00:29:28,820 --> 00:29:32,920 Most argc-- argc az az érv számít. 570 00:29:32,920 --> 00:29:36,620 Ez a szám az parancssori érvek beírni a parancssorba. 571 00:29:36,620 --> 00:29:39,720 Nos, argv-- technikailag A v jelentése vektor, 572 00:29:39,720 --> 00:29:41,460 ami lényegében azt jelenti tömb. 573 00:29:41,460 --> 00:29:42,680 De lehet figyelmen kívül. 574 00:29:42,680 --> 00:29:47,540 Argv-- van karakterlánc argv, így karakterlánc argv zárójelben. 575 00:29:47,540 --> 00:29:50,150 Szóval ez egy másik formája tartórudakhoz még nem látott. 576 00:29:50,150 --> 00:29:52,300 Így láttuk konzol jelölést, amikor már azt mondta, 577 00:29:52,300 --> 00:29:53,970 szerű, s karakterlánc egyenlő Zamyla. 578 00:29:53,970 --> 00:29:56,910 s konzol 0 hozzáfér a karakter Z. 579 00:29:56,910 --> 00:30:00,720 >> Mi is láttam zárójelben, ha azt mondta int korosztály zárójelbe 5. 580 00:30:00,720 --> 00:30:03,160 Hogy kijelentette tömb mérete 5. 581 00:30:03,160 --> 00:30:06,280 Tehát itt van egy változata a Zárójelben még nem látott. 582 00:30:06,280 --> 00:30:09,630 Tehát ez a fajta sztring argv, hogy lenne teljesen tisztában 583 00:30:09,630 --> 00:30:12,050 hogy ez csak egy string. 584 00:30:12,050 --> 00:30:14,520 Most a zárójelek hogy ez egy tömb. 585 00:30:14,520 --> 00:30:19,920 Tehát karakterlánc argv konzolok segítségével hogy ARGV tömböt. 586 00:30:19,920 --> 00:30:22,540 Most technikailag egy string van egy sor karakter. 587 00:30:22,540 --> 00:30:26,400 Szóval ez most egy tömböt Egy sor karakter. 588 00:30:26,400 --> 00:30:31,490 De ez sokkal könnyebb gondolkodni ezt csak egy tömböt. 589 00:30:31,490 --> 00:30:34,900 >> Akkor miért lehet a zárójelben lehet üres? 590 00:30:34,900 --> 00:30:38,170 Mint, miért nem tudunk mondani, konzol 5, konzol n? 591 00:30:38,170 --> 00:30:40,700 592 00:30:40,700 --> 00:30:41,200 Igen. 593 00:30:41,200 --> 00:30:43,731 594 00:30:43,731 --> 00:30:44,230 Igen. 595 00:30:44,230 --> 00:30:46,396 Nem tudjuk, hogy hány bemenetek vannak lesznek. 596 00:30:46,396 --> 00:30:53,560 Tehát, ha megnézzük a csengés például azt mondjuk csenget kötőjel o Hello hello.c. 597 00:30:53,560 --> 00:30:56,710 Ebben a konkrét esetben, ott megtörténjen hogy három parancssori. 598 00:30:56,710 --> 00:31:00,522 És így a brackets-- majd meglátjuk egy második nem lenne három. 599 00:31:00,522 --> 00:31:01,730 Ez technikailag lenne négy. 600 00:31:01,730 --> 00:31:04,030 De a konzolok, mi lenne mondjuk, három. 601 00:31:04,030 --> 00:31:08,220 De most, ha néztük lépés mario.c dot dot, a zárójelben 602 00:31:08,220 --> 00:31:09,760 akarnánk, hogy két bennük. 603 00:31:09,760 --> 00:31:12,884 >> És van egy csomó parancsok Van egy változó számú parancssorban 604 00:31:12,884 --> 00:31:13,620 érveket. 605 00:31:13,620 --> 00:31:17,430 Szóval mi ez a verzió a konzol jelölés azt 606 00:31:17,430 --> 00:31:20,820 az, hogy az ARGV tömböt. 607 00:31:20,820 --> 00:31:24,360 De nem tudjuk, hogy hány húrok közé, hogy tömbben. 608 00:31:24,360 --> 00:31:27,090 És hogyan, akkor tudja, hogyan Sok húrok a tömbben? 609 00:31:27,090 --> 00:31:28,870 Ez a lényege argc. 610 00:31:28,870 --> 00:31:32,300 argc elmondja, milyen hosszú ARGV. 611 00:31:32,300 --> 00:31:36,500 >> Tehát az utolsó dolog, hogy tartsa elme, hogy technikailag, 612 00:31:36,500 --> 00:31:40,820 Maga a parancs számít, mint az egyik A parancssori. 613 00:31:40,820 --> 00:31:45,330 Tehát CD pset1, van két parancssori. 614 00:31:45,330 --> 00:31:50,260 A program önmagában, cd, majd a tényleges érv része, pset1. 615 00:31:50,260 --> 00:31:54,490 Minden olyan program, amit írtam eddig volt egy parancssori argument-- dot 616 00:31:54,490 --> 00:31:55,320 perjel Mario. 617 00:31:55,320 --> 00:31:57,350 Ez az egyetlen parancssori argumentum. 618 00:31:57,350 --> 00:32:00,900 >> Tehát most néztem csengés dash o Hello hello.c. 619 00:32:00,900 --> 00:32:01,905 Tehát mi argc? 620 00:32:01,905 --> 00:32:05,260 621 00:32:05,260 --> 00:32:06,080 4. 622 00:32:06,080 --> 00:32:08,140 Tehát argc 4. 623 00:32:08,140 --> 00:32:12,140 Csengés, így argv konzol 0 csenget. 624 00:32:12,140 --> 00:32:15,630 argv konzol 1 dash 0. 625 00:32:15,630 --> 00:32:21,870 argv konzol 2 hello, és argv konzol 3. hello.c. 626 00:32:21,870 --> 00:32:26,813 OK, így kérdéseket ebben, aztán majd megnézünk néhány programozási példát. 627 00:32:26,813 --> 00:32:29,460 628 00:32:29,460 --> 00:32:30,480 >> OKÉ. 629 00:32:30,480 --> 00:32:36,260 Szóval vessünk egy pillantást hello3.c. 630 00:32:36,260 --> 00:32:41,890 Tehát ezt kell ismerős az egyik első C példák 631 00:32:41,890 --> 00:32:45,800 mi volt, ahol mi csak azt mondjuk, helló világot, de most ez az általánosabb. 632 00:32:45,800 --> 00:32:52,300 Tehát itt vagyunk köszönnek % s backslash n argv konzol 1. 633 00:32:52,300 --> 00:32:57,440 Notice-- így Eddig a pontig, ez amit a sablon fájl nézett ki. 634 00:32:57,440 --> 00:33:01,800 Volt int main (void), és akkor azt tenni valamit a fő funkciója. 635 00:33:01,800 --> 00:33:05,100 Most ahelyett, egyszer elkezdjük foglalkozó A parancssori, 636 00:33:05,100 --> 00:33:07,890 meg kell jelölni a különböző formájú fő. 637 00:33:07,890 --> 00:33:11,930 >> Így nézett hello3 újra, a fő megy 638 00:33:11,930 --> 00:33:15,990 hogy két érv now-- int argc, száma parancssori, 639 00:33:15,990 --> 00:33:20,970 és vonós argv zárójelben, a tényleges húrok beírni a parancssorba. 640 00:33:20,970 --> 00:33:26,560 Így fogok változtatni, hogy sablont, hogy tükrözze ezt a tényt. 641 00:33:26,560 --> 00:33:29,060 Most, amikor írsz egy programot, ha nem 642 00:33:29,060 --> 00:33:33,720 szükség semmilyen parancssori érvek, akkor csak használ int main (void). 643 00:33:33,720 --> 00:33:37,070 De most, amikor írsz parancssori argumentum programok, amelyek 644 00:33:37,070 --> 00:33:40,350 fogsz csinálni a problémát állítsa two-- így most, hogy futsz 645 00:33:40,350 --> 00:33:42,630 programok kell, hogy parancssori, 646 00:33:42,630 --> 00:33:45,250 akkor szükség van a fő ebben a formában. 647 00:33:45,250 --> 00:33:51,290 >> Tehát here-- ez a nagy használati A parancssori argumentum. 648 00:33:51,290 --> 00:33:54,100 Tehát nyomtatás argv 1. 649 00:33:54,100 --> 00:33:59,180 OK úgyhogy fordítsd és futtassa a program. 650 00:33:59,180 --> 00:34:02,440 Győződjön hello3. 651 00:34:02,440 --> 00:34:03,570 Lefordítja. 652 00:34:03,570 --> 00:34:06,870 Dot perjel hello3. 653 00:34:06,870 --> 00:34:08,920 És mondjuk, "Rob." 654 00:34:08,920 --> 00:34:10,760 Szia Rob. 655 00:34:10,760 --> 00:34:14,940 Ha azt mondom, "hello Maria," hello Maria. 656 00:34:14,940 --> 00:34:15,719 Helló Maria. 657 00:34:15,719 --> 00:34:18,639 Hannah még mindig azt mondja, "hello Maria ", mert nem vagyok 658 00:34:18,639 --> 00:34:21,340 csinál semmit a mi argv 2. 659 00:34:21,340 --> 00:34:22,590 Argv 2 lenne most "Hannah." 660 00:34:22,590 --> 00:34:25,030 ArgC lenne 3. 661 00:34:25,030 --> 00:34:27,735 Mi van, ha én tettem? 662 00:34:27,735 --> 00:34:31,980 663 00:34:31,980 --> 00:34:34,679 Szóval helló null. 664 00:34:34,679 --> 00:34:38,760 >> Ő röviden érintette az a tény, hogy technikailag, getString 665 00:34:38,760 --> 00:34:42,429 talán visszatér null, de mi lesz a sokkal több a mi null valójában. 666 00:34:42,429 --> 00:34:47,449 De hogy ez ügyként Tény, hogy nem általában rossz. 667 00:34:47,449 --> 00:34:50,179 Mi volt valami baj, ha ez a nyomtatás "hello null." 668 00:34:50,179 --> 00:34:52,179 És az ok csináltunk Valami baj is-- is, 669 00:34:52,179 --> 00:34:56,179 amikor futottam pont perjel hello3, argc volt 1. 670 00:34:56,179 --> 00:34:59,680 Tehát ez azt jelenti, a hossza argv volt 1. 671 00:34:59,680 --> 00:35:05,110 Ha a tömb hossza 1, az egyetlen érvényes index nulla. 672 00:35:05,110 --> 00:35:08,550 És így van argv 1 kívül tartományban ezt a tömböt. 673 00:35:08,550 --> 00:35:13,410 Hasonló volt a előtt, amikor megpróbáltam tárolására 6 kívül a végén a tömb. 674 00:35:13,410 --> 00:35:18,100 Szóval próbálok elérni valamit kívül a argv számít, 675 00:35:18,100 --> 00:35:21,340 és mi vagyunk egyre null. 676 00:35:21,340 --> 00:35:24,360 >> Tehát egy jobb változata ez egy javulás, 677 00:35:24,360 --> 00:35:27,010 kifejezetten ellenőrzése argc. 678 00:35:27,010 --> 00:35:33,580 Tehát, ha argc = 2, ami azt jelenti, hogy futott valami ilyesmit dot perjel hello3 Rob. 679 00:35:33,580 --> 00:35:36,840 És kiírja a "hello Rob." 680 00:35:36,840 --> 00:35:39,850 Ha argc nem egyenlő 2, akkor csak megy 681 00:35:39,850 --> 00:35:42,560 hogy figyelmen kívül hagyod fel A parancssori argumentum 682 00:35:42,560 --> 00:35:43,960 a parancssori. 683 00:35:43,960 --> 00:35:47,168 Vagy ha nem hozott semmilyen egyáltalán, ez csak úgy, hogy figyelmen kívül hagyja azt, és csak azt mondom, 684 00:35:47,168 --> 00:35:47,960 "Szia te." 685 00:35:47,960 --> 00:35:51,490 >> Szóval összeállításakor. 686 00:35:51,490 --> 00:35:54,500 Győződjön hello4. 687 00:35:54,500 --> 00:35:56,790 És fut hello4. 688 00:35:56,790 --> 00:36:00,010 Futó ezt így, mit kell nyomtatni? 689 00:36:00,010 --> 00:36:01,330 "Szia te." 690 00:36:01,330 --> 00:36:02,810 Szia te. 691 00:36:02,810 --> 00:36:05,870 Mi a helyzet hello4 Rob? 692 00:36:05,870 --> 00:36:06,950 "Hello Rob." 693 00:36:06,950 --> 00:36:10,580 És végül, helló Rob Maria csak "hello you" újra, 694 00:36:10,580 --> 00:36:13,677 mert nem igazán foglalkozni valamit, hogy ez várható. 695 00:36:13,677 --> 00:36:15,510 Beírt több nevet mint hogy lehetne kezelni, 696 00:36:15,510 --> 00:36:19,500 Tehát csak alapertelmezesben A hello you viselkedését. 697 00:36:19,500 --> 00:36:23,040 Tehát kérdéseket ebben? 698 00:36:23,040 --> 00:36:26,290 Vagy parancssori? 699 00:36:26,290 --> 00:36:28,690 >> OK, így egy pillantást vetni a Néhány példa a segítségével 700 00:36:28,690 --> 00:36:34,230 parancssori arguments-- első mi argv kötőjel 1 pont c. 701 00:36:34,230 --> 00:36:38,510 Tehát a hozzászólások odaad, amit ez a program kell tennie. 702 00:36:38,510 --> 00:36:42,460 De észre now-- ez a for ciklus, ez megegyezik a pontos minta 703 00:36:42,460 --> 00:36:43,390 Azt mondtam, mielőtt. 704 00:36:43,390 --> 00:36:46,240 Mi csak történetesen Az ARGC helyett n. 705 00:36:46,240 --> 00:36:48,880 Most argc valóban az n. 706 00:36:48,880 --> 00:36:51,260 Ez a hossza a argv tömb. 707 00:36:51,260 --> 00:36:59,600 Szóval az iterációt argv tömb printf-nek minden argv értéket. 708 00:36:59,600 --> 00:37:04,730 >> Tehát ha én ezt. 709 00:37:04,730 --> 00:37:08,232 Tedd argv 1. 710 00:37:08,232 --> 00:37:09,940 Lefordítja. 711 00:37:09,940 --> 00:37:11,620 Dot perjel argv 1. 712 00:37:11,620 --> 00:37:15,530 Csak futás ez, nyomatok dot perjel argv 1 713 00:37:15,530 --> 00:37:18,500 mivel ez volt az egyetlen parancssori argument-- a program nevét. 714 00:37:18,500 --> 00:37:22,080 Mindig lesznek a least-- argc nem lehet kevesebb, mint egy, 715 00:37:22,080 --> 00:37:25,910 mivel mindig lesz legalább a program neve futni. 716 00:37:25,910 --> 00:37:32,040 Tehát argv 1 Rob kinyomtatja argv 1 majd az új sor "Rob." 717 00:37:32,040 --> 00:37:36,350 >> Tehát az első iterációban E hurok, i értéke 0. 718 00:37:36,350 --> 00:37:39,090 Argv 0 a program nevét. 719 00:37:39,090 --> 00:37:40,010 Dot perjel argv 1. 720 00:37:40,010 --> 00:37:43,770 És akkor argv 1 az első parancssori argumentum, amely Rob. 721 00:37:43,770 --> 00:37:45,920 Ezen a ponton, mi egyenlő argc. 722 00:37:45,920 --> 00:37:48,210 Mi kitörni a hurok, és már készen is vagyunk. 723 00:37:48,210 --> 00:37:53,940 Tehát ez működni fog egy tetszőleges számú parancssori. 724 00:37:53,940 --> 00:37:58,550 Figyeljük meg, hogy a nyomtatás argv 0, argv 1, argv 2, argv 3, 4 argv. 725 00:37:58,550 --> 00:38:00,150 És nincs argv 5. 726 00:38:00,150 --> 00:38:01,460 argc egyenlő 5. 727 00:38:01,460 --> 00:38:06,960 Tehát argc-- meg az i értéke 5, törjük ki a hurok. 728 00:38:06,960 --> 00:38:07,950 OKÉ. 729 00:38:07,950 --> 00:38:11,315 Tehát kérdésre, hogy mielőtt nézd meg egy összetettebb példát? 730 00:38:11,315 --> 00:38:14,190 731 00:38:14,190 --> 00:38:16,860 >> Tehát argv 2. 732 00:38:16,860 --> 00:38:17,830 Minden rendben. 733 00:38:17,830 --> 00:38:20,610 Szóval még nyomtat A parancssori. 734 00:38:20,610 --> 00:38:23,170 De most már észre egy beágyazott hurok. 735 00:38:23,170 --> 00:38:24,670 Tehát mi csinál ez? 736 00:38:24,670 --> 00:38:28,430 Tehát az első kör csinál Pontosan mit tett korábban. 737 00:38:28,430 --> 00:38:30,950 Még mindig loop felett Minden parancssori argumentum, 738 00:38:30,950 --> 00:38:34,260 de most ez a második loop-- voltunk is láttunk ilyet korábban. 739 00:38:34,260 --> 00:38:38,600 Amikor az iterációt Zamyla kinyomtatásával Z-A-M-Y-L-A. 740 00:38:38,600 --> 00:38:44,816 Tehát ez a második körben az int j egyenlő 0, n értéke strlen az argv konzol i. 741 00:38:44,816 --> 00:38:49,170 >> Szóval nézzük először gondolkodni the-- sétáljunk át. 742 00:38:49,170 --> 00:38:53,560 Gondoljuk mi a számítógép is teendő, ha futottam ezt a programot, csak pont 743 00:38:53,560 --> 00:38:56,030 perjel argv kötőjel 2. 744 00:38:56,030 --> 00:39:03,590 Tehát ha futottam ezt a kódot, majd argc lesz egyenlő 1. 745 00:39:03,590 --> 00:39:07,050 És vonós argv-- már csak lesz az egyik index argv, 746 00:39:07,050 --> 00:39:12,370 és hogy lesz egyenlő dot perjel argv 2-- a program nevét. 747 00:39:12,370 --> 00:39:19,170 >> OK, így most az i értéke 0, i-nél kisebb 1, i plus plus for int j értéke 0, 748 00:39:19,170 --> 00:39:23,880 n értéke strlen az argv konzol 0, így Az első iteráció e hurok. argv 749 00:39:23,880 --> 00:39:27,250 konzol 0 pont perjel argv 2. 750 00:39:27,250 --> 00:39:29,320 Tehát mi a hossza, hogy a húr? 751 00:39:29,320 --> 00:39:32,480 Nos, pont perjel A-R-G-V kötőjel 2. 752 00:39:32,480 --> 00:39:35,020 Tehát strlen az, hogy lesz 8. 753 00:39:35,020 --> 00:39:37,500 Tehát j értéke 0, n értéke 8. 754 00:39:37,500 --> 00:39:39,530 Amíg j értéke kevesebb mint 8, J ++. 755 00:39:39,530 --> 00:39:44,080 És, hogy mi lesz nyomtat egyetlen karaktert, amely 756 00:39:44,080 --> 00:39:47,350 az argv konzol i zárójelbe j. 757 00:39:47,350 --> 00:39:49,826 >> Tehát az egyetlen i nulla. 758 00:39:49,826 --> 00:39:51,700 Még mindig csak egy parancssori argumentum. 759 00:39:51,700 --> 00:39:53,890 Ebben az első iterációs A for ciklus vagyunk 760 00:39:53,890 --> 00:39:56,950 lesz a nyomtatás argv tartó konzol 0 0. 761 00:39:56,950 --> 00:39:58,325 És akkor j fog növelni. 762 00:39:58,325 --> 00:40:01,650 És mi lesz a nyomtatás argv tartó konzol 1 0. 763 00:40:01,650 --> 00:40:04,150 És akkor argv konzol 0 konzol 2. 764 00:40:04,150 --> 00:40:09,030 >> Tehát ez az első találkozás A többdimenziós tömböket. 765 00:40:09,030 --> 00:40:12,770 Emlékezz korábban, hogy azt mondtam hogy argv technikailag 766 00:40:12,770 --> 00:40:15,950 egy sor tömbök karakter. 767 00:40:15,950 --> 00:40:24,360 Tehát itt, ha valami olyasmit mondott s sztring egyenlő argv tartó i, 768 00:40:24,360 --> 00:40:29,590 aztán azt mondtam, s konzol j, ez lenne véghez ugyanezt. 769 00:40:29,590 --> 00:40:31,960 Most, hogy már láttam s konzol j előtt. 770 00:40:31,960 --> 00:40:36,680 Ez csak elérni a j-edik jellegű ez a húr. 771 00:40:36,680 --> 00:40:48,010 Tehát ezt, mi egyre a j-edik karaktere az i-edik argv. 772 00:40:48,010 --> 00:40:51,450 >> Szóval mit kell ez végső soron kimenet? 773 00:40:51,450 --> 00:40:53,210 Tedd argv 2. 774 00:40:53,210 --> 00:40:54,730 Lefordítja. 775 00:40:54,730 --> 00:40:56,340 Dot perjel argv 2. 776 00:40:56,340 --> 00:41:03,790 "Rob Maria Hannah" és ad nekünk egy kis helyet. 777 00:41:03,790 --> 00:41:07,050 Tehát azt látjuk, hogy ez a kimenetre dot saját vonal és perjel 778 00:41:07,050 --> 00:41:08,920 saját vonal és egy külön sorba. 779 00:41:08,920 --> 00:41:11,260 Ez kinyomtatásával egyes Az egyéni jelleg 780 00:41:11,260 --> 00:41:12,950 Az egyes parancssori argumentum. 781 00:41:12,950 --> 00:41:15,960 És akkor közéjük, emiatt az új vonal 782 00:41:15,960 --> 00:41:19,380 mi nyomtatás idelent, a köztük ez lesz nyomtatni egy új sort. 783 00:41:19,380 --> 00:41:24,540 >> Szóval ez hasonló Az előzetes argv kötőjel 1, 784 00:41:24,540 --> 00:41:26,459 amely nyomtatott egyes parancssori argumentum, 785 00:41:26,459 --> 00:41:28,500 de most már nyomtat A parancssori 786 00:41:28,500 --> 00:41:31,950 majd iterációjával keresztül minden karakter minden egyes parancssori argumentum 787 00:41:31,950 --> 00:41:35,400 hogy ezt a kimenetet. 788 00:41:35,400 --> 00:41:36,870 OKÉ? 789 00:41:36,870 --> 00:41:40,570 Tehát kérdéseket ebben? 790 00:41:40,570 --> 00:41:45,130 >> Egy dolog megjegyezni, hogy parancssori arguments-- 791 00:41:45,130 --> 00:41:49,990 így azok szóközzel elválasztva, mint akkor persze elvárják, hogy legyen. 792 00:41:49,990 --> 00:41:53,050 Tehát egy string lehet szóközök. 793 00:41:53,050 --> 00:41:57,380 Ez nem szuper fontos, de ha én akarta, hogy a harmadik parancssori argumentum 794 00:41:57,380 --> 00:42:01,226 hogy van egy tér benne, akkor én Mondhatnánk valami ilyesmi. 795 00:42:01,226 --> 00:42:04,470 796 00:42:04,470 --> 00:42:05,550 OKÉ? 797 00:42:05,550 --> 00:42:12,190 Szóval ez most még csak három parancssori arguments-- is 4. 798 00:42:12,190 --> 00:42:17,620 Dot perjel argv kötőjel 2, Rob, Maria és Hannah Bloomberg. 799 00:42:17,620 --> 00:42:18,320 OKÉ. 800 00:42:18,320 --> 00:42:19,310 Kérdések erről? 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> Nincs semmi különös a szóköz. 803 00:42:24,894 --> 00:42:27,810 Ez csak előfordul, hogy lehet, hogy a parancssori kezeli a szóköz 804 00:42:27,810 --> 00:42:29,226 mint hogyan elválasztásához érv. 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 Minden rendben. 807 00:42:33,000 --> 00:42:39,950 Így aztán Probléma szett two-- fogsz lenni 808 00:42:39,950 --> 00:42:43,240 nézett titkos kulcsú titkosítás. 809 00:42:43,240 --> 00:42:47,700 Tehát, hasonló példa láttuk A Christmas Story, 810 00:42:47,700 --> 00:42:52,840 fogsz végrehajtó egyes algoritmusok, hogy mivel egy üzenetet, 811 00:42:52,840 --> 00:42:55,560 fogsz tudni titkosításához, hogy az üzenet 812 00:42:55,560 --> 00:42:58,730 hogy csak valaki, hogy titkos gombot, ezzel a dekóder gyűrű, 813 00:42:58,730 --> 00:43:01,090 képesnek kell lennie arra, hogy dekódolni. 814 00:43:01,090 --> 00:43:04,839 >> Tehát ez a standard változat. 815 00:43:04,839 --> 00:43:07,130 Te leszel végrehajtási két különböző változatban. 816 00:43:07,130 --> 00:43:09,620 Ha történetesen egy pillantást A hacker edition-- most, 817 00:43:09,620 --> 00:43:12,600 fogunk adni Ön egy string, mint ez, 818 00:43:12,600 --> 00:43:15,240 ami egy titkosított jelszót. 819 00:43:15,240 --> 00:43:19,990 Tehát a cél az, hogy kitaláljuk, mi a dekódolt jelszó. 820 00:43:19,990 --> 00:43:26,950 Most tulajdonképpen így jelszó vannak tárolva egy csomó számítógépek, 821 00:43:26,950 --> 00:43:31,290 és ez csak tárolja ezt véletlenszerű karaktersorozatot. 822 00:43:31,290 --> 00:43:34,440 Meg kell kitalálni, hogyan lehet eljutni a véletlenszám karaktersorozatot 823 00:43:34,440 --> 00:43:36,140 hogy mi az eredeti jelszót volt. 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> És végül, miután ez probléma szett, be 826 00:43:43,290 --> 00:43:46,100 képes megérteni, mit jelent ez. 827 00:43:46,100 --> 00:43:51,650 Így megtudhatja, hogyan kell dekódolni ez a fajta véletlen sorozatot. 828 00:43:51,650 --> 00:43:56,390 Hasonlóképpen, ha eszébe jut hétről 0, lehet, hogy láttam ezt az URL. 829 00:43:56,390 --> 00:44:00,210 És meg kell tenni, hogy visszafejteni ez végül. 830 00:44:00,210 --> 00:44:04,810 Lehet, hogy nem lesz boldog, ha visszafejteni, és kattintson a linkre. 831 00:44:04,810 --> 00:44:05,700 Minden rendben. 832 00:44:05,700 --> 00:44:06,591 Ennyi mára. 833 00:44:06,591 --> 00:44:12,095 Így a jövő héten! 834 00:44:12,095 --> 00:44:18,315 >> [Elektronikus zene szól] 835 00:44:18,315 --> 00:47:15,619