1 00:00:00,000 --> 00:00:00,960 2 00:00:00,960 --> 00:00:03,360 >> [За възпроизвеждане на музика] 3 00:00:03,360 --> 00:00:11,050 4 00:00:11,050 --> 00:00:12,065 >> Дейвин: Добре, момчета. 5 00:00:12,065 --> 00:00:13,642 6 00:00:13,642 --> 00:00:15,350 Така че това е преглед за първата викторина. 7 00:00:15,350 --> 00:00:17,751 Дали всеки е готов за викторината в сряда? 8 00:00:17,751 --> 00:00:18,292 ALLISON: Woo! 9 00:00:18,292 --> 00:00:18,743 STUDENT: Woo! 10 00:00:18,743 --> 00:00:19,242 Дейвин: Да. 11 00:00:19,242 --> 00:00:19,920 ALLISON: Да! 12 00:00:19,920 --> 00:00:20,920 Дейвин: Този човек е готов. 13 00:00:20,920 --> 00:00:22,200 Това момче, две ръце, хубаво. 14 00:00:22,200 --> 00:00:23,234 15 00:00:23,234 --> 00:00:25,900 Така преглед тест днес, че ще за около час и половина. 16 00:00:25,900 --> 00:00:27,940 Отиваме да премине всички основни концепции, които трябва да знаете за теста. 17 00:00:27,940 --> 00:00:31,434 Отиваме да разясни някои кодиране от примери за ръце, които са на всеки тест. 18 00:00:31,434 --> 00:00:34,350 И ако имате въпроси, не се колебайте да вдигнете ръката си и всичко, 19 00:00:34,350 --> 00:00:34,945 подобно. 20 00:00:34,945 --> 00:00:36,695 Е, логистика около викторина онлайн. 21 00:00:36,695 --> 00:00:38,450 Така че отиваме да се разделят хората нагоре в различни стаи. 22 00:00:38,450 --> 00:00:39,491 Тя се основава на тяхното име. 23 00:00:39,491 --> 00:00:43,630 Така че, ако имате някакви въпроси за това къде да отида или за какъв материал е, като, 24 00:00:43,630 --> 00:00:46,810 официалната дума от това, което се случва да бъде на теста, проверете онлайн. 25 00:00:46,810 --> 00:00:48,420 И това е всичко, до дата. 26 00:00:48,420 --> 00:00:51,280 Така че, ако не са налице въпроси започнем с това, ние ще започнем. 27 00:00:51,280 --> 00:00:52,790 28 00:00:52,790 --> 00:00:53,710 И тук е Алисън. 29 00:00:53,710 --> 00:00:56,060 30 00:00:56,060 --> 00:00:57,000 >> [Пляска] 31 00:00:57,000 --> 00:00:59,300 >> ALLISON: Добре, благодаря, Роб. 32 00:00:59,300 --> 00:01:00,280 Оценявам го. 33 00:01:00,280 --> 00:01:01,350 34 00:01:01,350 --> 00:01:03,050 Дейвин трябвало да обърна за това. 35 00:01:03,050 --> 00:01:07,240 Това е неизчерпателен списък на теми, както винаги, като Дейвин току-що каза. 36 00:01:07,240 --> 00:01:10,860 Консултирайте се с документацията онлайн викторина за нула. 37 00:01:10,860 --> 00:01:13,680 Но това е доста much-- това е на учебния план 38 00:01:13,680 --> 00:01:15,550 е всичко, което сме преминали през този момент. 39 00:01:15,550 --> 00:01:18,290 Всичко тук е честна игра, както и всичко останало 40 00:01:18,290 --> 00:01:21,380 които може да са били споменати в лекция. 41 00:01:21,380 --> 00:01:25,070 >> Раздел My тук, е просто много на преглед. 42 00:01:25,070 --> 00:01:27,775 Има няколко упражнения че вие ​​може да работим. 43 00:01:27,775 --> 00:01:30,650 Но за по-голямата част, ние наистина Искам да стигнем до Дейвин с тези код 44 00:01:30,650 --> 00:01:31,710 от ръчни упражнения. 45 00:01:31,710 --> 00:01:33,940 >> Така че аз отивам да се лети през това. 46 00:01:33,940 --> 00:01:36,330 Ако имате някакви въпроси, да ме спрете. 47 00:01:36,330 --> 00:01:37,270 Вдигнете ръка. 48 00:01:37,270 --> 00:01:39,250 Обещавам ти, че най-вероятно ще се видим. 49 00:01:39,250 --> 00:01:41,042 Ако не, просто го размахват. 50 00:01:41,042 --> 00:01:42,250 Отивам да се говори бързо. 51 00:01:42,250 --> 00:01:43,950 Надявам се, че всички са ОК с това. 52 00:01:43,950 --> 00:01:48,020 >> OK, специална дума, Дейвин очевидно Забравих да прелистите тези пързалки. 53 00:01:48,020 --> 00:01:51,880 [Смее се] Вие сте в беда, човече. 54 00:01:51,880 --> 00:01:55,770 Така че съвети за викторина нула, практикуват кодиране на хартия. 55 00:01:55,770 --> 00:01:58,950 Вие, момчета, ще получите някои практикуват с тази сега с Дейвин, 56 00:01:58,950 --> 00:02:00,655 така че няма да бъде напълно от себе си. 57 00:02:00,655 --> 00:02:03,030 Мисля, че ние всъщност ще чрез тези две функции. 58 00:02:03,030 --> 00:02:04,500 Така че ще бъде добре подготвен там. 59 00:02:04,500 --> 00:02:05,958 >> Да е запознат с проблемните комплекти. 60 00:02:05,958 --> 00:02:08,150 Има въпроси на предишни тестове 61 00:02:08,150 --> 00:02:12,680 че ще поиска от вас, например, да се кодира нещо много подобно на Марио. 62 00:02:12,680 --> 00:02:15,060 Така че е много добре запознат с проблема си поставя, както и 63 00:02:15,060 --> 00:02:17,827 тъй като въпросите, които ви помоля в началото на формата 64 00:02:17,827 --> 00:02:19,660 че можете да попълните, ще ви служи много добре. 65 00:02:19,660 --> 00:02:20,940 66 00:02:20,940 --> 00:02:23,380 >> Направете предишния викторина под времевите ограничения. 67 00:02:23,380 --> 00:02:25,430 Тези тестове са дълги. 68 00:02:25,430 --> 00:02:26,850 Времето минава много бързо. 69 00:02:26,850 --> 00:02:30,480 И често не осъзнават колко бързо той отива, докато всъщност 70 00:02:30,480 --> 00:02:32,180 постави себе си в рамките на тези ограничения. 71 00:02:32,180 --> 00:02:36,500 Така че, ако можете просто да обособяването, знаете, 75 минути или довечера или утре 72 00:02:36,500 --> 00:02:41,020 да вземе един от тези тестове под че ще бъде в много по-добра форма. 73 00:02:41,020 --> 00:02:43,060 >> И също така, създаването на своя референтен лист. 74 00:02:43,060 --> 00:02:45,290 Не забравяйте, че можете да получите един страница отпред и отзад 75 00:02:45,290 --> 00:02:47,040 като отправна точка за вашето викторина в сряда. 76 00:02:47,040 --> 00:02:49,074 Създаване това е чудесен начин да се учи. 77 00:02:49,074 --> 00:02:51,990 Всичко, което ви е трудно да с което искате да включите там. 78 00:02:51,990 --> 00:02:55,627 Всичко, което си TFS са били, като това е наистина важно. 79 00:02:55,627 --> 00:02:57,960 Трябва да знаете, това са може би неща, които имат там 80 00:02:57,960 --> 00:02:59,931 тях, ако не разполагате с наизуст. 81 00:02:59,931 --> 00:03:02,680 Дори и ако не ги знам наистина Е, понякога го има там 82 00:03:02,680 --> 00:03:07,030 е просто вид на комфорт за вас, което знам, викторини са стресиращи. 83 00:03:07,030 --> 00:03:09,260 Така че всяка комфорт ще получите може да помогне. 84 00:03:09,260 --> 00:03:13,072 Добре, също така, се спи и яде и като обикновените неща 85 00:03:13,072 --> 00:03:14,280 че ние ви кажа за викторини. 86 00:03:14,280 --> 00:03:16,320 87 00:03:16,320 --> 00:03:18,890 >> Така потегляне лесно, типове данни и размери. 88 00:03:18,890 --> 00:03:22,720 Както казах, това е просто ще да ми се хвърлят много неща 89 00:03:22,720 --> 00:03:24,320 тук, че вие ​​трябва да знаете. 90 00:03:24,320 --> 00:03:27,600 Така че ние имаме нашите символа които са един байта, целочислени 91 00:03:27,600 --> 00:03:30,390 които са четири байта, дълъг дълга, които са осем байта. 92 00:03:30,390 --> 00:03:33,280 По принцип, това е точно за вас Искам да държат по-големи числа. 93 00:03:33,280 --> 00:03:35,490 Плувки, които са четири, двойки, които са осем. 94 00:03:35,490 --> 00:03:38,150 Отново, просто ви дава повече пространство за вашите плувки. 95 00:03:38,150 --> 00:03:41,290 И след това въведете звезда, така че всеки показалеца на 32-битова машина, 96 00:03:41,290 --> 00:03:44,650 който е всички вие трябва да се знае, е четири байта. 97 00:03:44,650 --> 00:03:46,542 >> Така че всички неща, които трябва да знам, може би нещата 98 00:03:46,542 --> 00:03:48,250 искате да имате по справка лист. 99 00:03:48,250 --> 00:03:50,350 100 00:03:50,350 --> 00:03:53,520 OK, двоично преобразуване двоичен, конвертиране 101 00:03:53,520 --> 00:03:56,860 да шестнадесетичен, напред и назад, всички неща, които трябва да знаете. 102 00:03:56,860 --> 00:03:59,480 Така че от двоичен в десетичен. 103 00:03:59,480 --> 00:04:03,309 Вие, момчета, искате да вземете бърз минути и се опитайте да разбера всеки от тях 104 00:04:03,309 --> 00:04:04,600 и след това да ми каже какви са те? 105 00:04:04,600 --> 00:04:06,500 106 00:04:06,500 --> 00:04:10,240 >> Аз също имам бонбони в чантата ми, така че всеки, който отговори получава бонбони, между другото. 107 00:04:10,240 --> 00:04:13,560 108 00:04:13,560 --> 00:04:14,480 И аз имам много от него. 109 00:04:14,480 --> 00:04:15,760 110 00:04:15,760 --> 00:04:16,870 Позволете ми да вземете това. 111 00:04:16,870 --> 00:04:18,480 Отивам да дам това на Гейб. 112 00:04:18,480 --> 00:04:21,829 Така че можете да се раздават бонбони който е хубаво и кооперация. 113 00:04:21,829 --> 00:04:23,490 >> OK, видях ръка има в гърба. 114 00:04:23,490 --> 00:04:26,418 115 00:04:26,418 --> 00:04:28,370 >> STUDENT: Да, първата е 42. 116 00:04:28,370 --> 00:04:30,280 >> ALLISON: Да, първият е на 42 г. вярна. 117 00:04:30,280 --> 00:04:31,163 118 00:04:31,163 --> 00:04:32,038 STUDENT: [недоловим]. 119 00:04:32,038 --> 00:04:34,810 [Смях] 120 00:04:34,810 --> 00:04:37,030 ALLISON: Втори една, там обратно в жълто? 121 00:04:37,030 --> 00:04:38,910 STUDENT: 110010. 122 00:04:38,910 --> 00:04:43,410 ALLISON: Правилно, а това последният, тук на дъното? 123 00:04:43,410 --> 00:04:44,570 Също така, да, знаете ли искаш? 124 00:04:44,570 --> 00:04:45,550 Просто хвърля бонбони. 125 00:04:45,550 --> 00:04:46,483 Какво ще кажете за бонбони за всички? 126 00:04:46,483 --> 00:04:47,510 >> STUDENT: [недоловим], когато сме готови. 127 00:04:47,510 --> 00:04:48,051 >> ALLISON: Шшт. 128 00:04:48,051 --> 00:04:49,380 129 00:04:49,380 --> 00:04:50,910 И тогава последният. 130 00:04:50,910 --> 00:04:52,000 Кой иска да отговори? 131 00:04:52,000 --> 00:04:52,744 Точно там. 132 00:04:52,744 --> 00:04:54,480 >> STUDENT: 11100. 133 00:04:54,480 --> 00:04:56,820 >> ALLISON: 11100, погледнете това. 134 00:04:56,820 --> 00:04:58,790 Браво, страхотна работа, всички. 135 00:04:58,790 --> 00:05:03,370 ОК, всеки вид се разбере процеса за правене на това? 136 00:05:03,370 --> 00:05:08,700 Ти, като се започне от двоичен в десетичен начина, по който съм склонен да го направя, е написването на 137 00:05:08,700 --> 00:05:09,920 правомощията на две. 138 00:05:09,920 --> 00:05:18,350 Затова казвам, OK, 0 по 2. 0, така че това е 0, 1 пъти 2 към първата, 139 00:05:18,350 --> 00:05:21,400 е 2 ще нататък по този начин. 140 00:05:21,400 --> 00:05:25,790 Има ли някой да ми изрично да искате проверете пример за двоичен? 141 00:05:25,790 --> 00:05:26,840 142 00:05:26,840 --> 00:05:28,140 OK, хладно. 143 00:05:28,140 --> 00:05:30,390 >> Decimal да двоичен е много подобна. 144 00:05:30,390 --> 00:05:31,550 145 00:05:31,550 --> 00:05:33,630 Склонен съм да се пишат на правомощията на две. 146 00:05:33,630 --> 00:05:38,660 Започнете с това, което е най-великият, но не излиза покрай десетичната 147 00:05:38,660 --> 00:05:39,710 това, което търсите. 148 00:05:39,710 --> 00:05:42,870 И тогава вид на работата си назад добавяне на нещата, колкото е необходимо. 149 00:05:42,870 --> 00:05:45,200 >> И след това с допълнение, че е точно като нормална допълнение. 150 00:05:45,200 --> 00:05:51,110 Ако някога има случай, когато сте добавяне на два 1s, очевидно става 2. 151 00:05:51,110 --> 00:05:56,875 2 в двоичен сега е 1 0, така че трябва да носите със себе си една в следващата колона. 152 00:05:56,875 --> 00:05:57,375 Cool. 153 00:05:57,375 --> 00:05:59,220 154 00:05:59,220 --> 00:06:03,240 >> Шестнадесетичен, това може да бъде нещо че е малко по-малко позната. 155 00:06:03,240 --> 00:06:06,600 Така че, както Роб беше просто да ми кажеш предварително, трик си за този 156 00:06:06,600 --> 00:06:10,210 е просто да го разделим в четири байтови парчета, OK? 157 00:06:10,210 --> 00:06:11,050 Bits, съжалявам. 158 00:06:11,050 --> 00:06:11,720 Виждаш ли? 159 00:06:11,720 --> 00:06:12,220 Благодарение Роб. 160 00:06:12,220 --> 00:06:15,874 Това е причината да сме тук. [NOISE] ОК, така че ние просто се разделяме 161 00:06:15,874 --> 00:06:16,790 в четири бита парчета. 162 00:06:16,790 --> 00:06:21,570 Така че с бинарни файлове за шестнадесетичен, погледнем първо 4, 163 00:06:21,570 --> 00:06:25,573 което е, ако имаме четири 1s в ред, кой номер е, че символизира? 164 00:06:25,573 --> 00:06:26,540 >> STUDENT: F. 165 00:06:26,540 --> 00:06:32,751 >> ALLISON: Така че в този случай, какво е 11111111 or-- нали? 166 00:06:32,751 --> 00:06:33,250 STUDENT: FF. 167 00:06:33,250 --> 00:06:34,600 ALLISON: Perfect, FF. 168 00:06:34,600 --> 00:06:36,900 Толкова велика, бонбони за вас. 169 00:06:36,900 --> 00:06:41,100 Сега, за това как шестнадесетичен за двукомпонентни, ние Просто мисля, че за това нещо в обратна посока. 170 00:06:41,100 --> 00:06:46,420 За всеки номер или писмо, че ние имаме в нашата шестнадесетичен 171 00:06:46,420 --> 00:06:53,930 просто го превръща в своята четири малко [Смее се], за да си четири битова реализация. 172 00:06:53,930 --> 00:06:58,696 Така 5, в този случай, това, което е 5, ако ние сме го представлява с четири бита? 173 00:06:58,696 --> 00:06:59,608 >> STUDENT: 010? 174 00:06:59,608 --> 00:07:00,520 Мм-хм. 175 00:07:00,520 --> 00:07:03,605 И след това, което е всъщност 10, ще бъде? 176 00:07:03,605 --> 00:07:06,230 177 00:07:06,230 --> 00:07:08,040 1010. 178 00:07:08,040 --> 00:07:09,670 Така че ние имаме, че тук. 179 00:07:09,670 --> 00:07:13,990 Така конвертиране между шестнадесетичен и двоичен всъщност не е толкова лошо. 180 00:07:13,990 --> 00:07:16,565 Ако се вгледате в него в четири бита парчета, ще бъде златен. 181 00:07:16,565 --> 00:07:18,330 182 00:07:18,330 --> 00:07:19,300 Everyone-- нали? 183 00:07:19,300 --> 00:07:21,903 >> ROB: Това е глупаво, но аз винаги си спомням 184 00:07:21,903 --> 00:07:23,500 А, тъй като е трябвало да бъде 10. 185 00:07:23,500 --> 00:07:26,230 И двоичен е само 10 10, so-- 186 00:07:26,230 --> 00:07:27,310 >> ALLISON: А, там отиваме. 187 00:07:27,310 --> 00:07:28,615 >> ROB: Хей. 188 00:07:28,615 --> 00:07:30,020 >> ALLISON: Хей, бонбони за Роб. 189 00:07:30,020 --> 00:07:31,707 190 00:07:31,707 --> 00:07:33,290 Има не е шоколад неща там. 191 00:07:33,290 --> 00:07:34,180 Така че може да има някои. 192 00:07:34,180 --> 00:07:35,790 193 00:07:35,790 --> 00:07:36,760 Така ASCII математика. 194 00:07:36,760 --> 00:07:38,206 195 00:07:38,206 --> 00:07:38,705 Дръж. 196 00:07:38,705 --> 00:07:40,630 197 00:07:40,630 --> 00:07:44,720 Така ASCII математика, като вас, момчета Вероятно добре си спомням 198 00:07:44,720 --> 00:07:48,480 р зададете 2 с Visioneer и Цезар, ти направи много за това. 199 00:07:48,480 --> 00:07:49,610 200 00:07:49,610 --> 00:07:51,980 Не забравяйте, че героите са принципно само номера. 201 00:07:51,980 --> 00:07:54,780 Така че ние можем да направим по математика с тях, точно както правим по математика с цели числа. 202 00:07:54,780 --> 00:07:58,090 >> Така че ние имаме малко по- просто нещо тук. 203 00:07:58,090 --> 00:08:00,940 Ние имаме някои в А това е инициализира с 65. 204 00:08:00,940 --> 00:08:07,440 И B, равна на стойността на ASCII A плюс 1, Чар C равно на D минус 1, 205 00:08:07,440 --> 00:08:09,060 Чар и D, равна на 68. 206 00:08:09,060 --> 00:08:13,130 Така че след това ние ще се печата всички от тях, както виждаме тук. 207 00:08:13,130 --> 00:08:15,650 И може ли някой да ми каже какво това ще отпечата? 208 00:08:15,650 --> 00:08:17,335 209 00:08:17,335 --> 00:08:18,210 STUDENT: [недоловим]. 210 00:08:18,210 --> 00:08:20,540 ALLISON: Точно така Едно нещо е да забележите, е 211 00:08:20,540 --> 00:08:22,900 че ние сме отпечатване герои всеки път, тук. 212 00:08:22,900 --> 00:08:28,290 Ние сме за определяне макар A и B са цели числа, когато ние ги декларираните по-горе. 213 00:08:28,290 --> 00:08:32,870 Ние сме ги отпечатвате като герои от процента на C и нашата декларация ФОРМАТ, 214 00:08:32,870 --> 00:08:34,610 така че всички те ще се отпечатат като герои. 215 00:08:34,610 --> 00:08:40,730 И разбира се, на ASCII стойност 65 воля отпечатате като A. Стойността на ASCII от А плюс 1 216 00:08:40,730 --> 00:08:43,669 ще бъде 66, което би горди да B. Така че в действителност, ние 217 00:08:43,669 --> 00:08:49,107 получите A B C D. Всеки добър там? 218 00:08:49,107 --> 00:08:49,690 Всякакви въпроси? 219 00:08:49,690 --> 00:08:50,721 220 00:08:50,721 --> 00:08:51,220 Awesome. 221 00:08:51,220 --> 00:08:52,500 222 00:08:52,500 --> 00:08:53,455 >> OK, обхват. 223 00:08:53,455 --> 00:08:55,090 224 00:08:55,090 --> 00:08:59,950 Така обхват е очевидно много Важно е да се разбере, тук. 225 00:08:59,950 --> 00:09:03,250 Много от вас, ако можете има несъставящи грешки, 226 00:09:03,250 --> 00:09:06,085 и тя казва, че не е нужно достъп до някои променлива, 227 00:09:06,085 --> 00:09:08,540 това е може би, защото сте то е дефинирано в една линия 228 00:09:08,540 --> 00:09:12,210 и след това се опита да го отворите от него, или обратното. 229 00:09:12,210 --> 00:09:16,410 >> Така обхват в същността си, той просто определя къде 230 00:09:16,410 --> 00:09:20,800 ние казваме променлива съществува, когато ние можете да го промените, ако можем да го отворите. 231 00:09:20,800 --> 00:09:24,550 Това е просто вид казвайки това са единствените места, където можете да имат достъп 232 00:09:24,550 --> 00:09:26,060 за тази променлива. 233 00:09:26,060 --> 00:09:30,080 >> Така че двете сфери, които говорят за по време на клас са глобални и местни. 234 00:09:30,080 --> 00:09:35,080 Така глобални променливи говорим за когато са ги дефинира по-горе основен. 235 00:09:35,080 --> 00:09:38,390 Това означава, че цялата си програма има достъп до нея, 236 00:09:38,390 --> 00:09:42,090 и тя съществува толкова дълго, като пистите на програмата, OK? 237 00:09:42,090 --> 00:09:45,100 Local означава, че е повече се ограничава до област. 238 00:09:45,100 --> 00:09:50,520 Така че всеки път, когато имате конкретни функции като суап, ние винаги говорим. 239 00:09:50,520 --> 00:09:54,380 Ние винаги говорим за суап с A и B. A и B съществува в рамките на тази функция. 240 00:09:54,380 --> 00:09:55,690 Те не съществуват никъде другаде. 241 00:09:55,690 --> 00:09:56,860 242 00:09:56,860 --> 00:10:00,610 >> Както е добре, когато имате, ако изявления или за електрически вериги. 243 00:10:00,610 --> 00:10:04,670 Всеки път, когато имаме, например, в а за линия имаме INT I е равна на 0. 244 00:10:04,670 --> 00:10:06,630 Имаме някакво условие и ние го актуализира. 245 00:10:06,630 --> 00:10:10,270 I съществува само в рамките на скоби на тази за контур. 246 00:10:10,270 --> 00:10:13,270 Ако се опитате да получите достъп до нея на друго място, компилаторът ще ти крещя. 247 00:10:13,270 --> 00:10:14,560 Тя ще бъде като това, което се опитваш да направиш? 248 00:10:14,560 --> 00:10:15,400 Това не съществува. 249 00:10:15,400 --> 00:10:16,644 250 00:10:16,644 --> 00:10:18,435 Така че двамата различни видове обхват. 251 00:10:18,435 --> 00:10:19,486 252 00:10:19,486 --> 00:10:20,860 Това прави ли смисъл за всички? 253 00:10:20,860 --> 00:10:23,870 254 00:10:23,870 --> 00:10:27,890 >> Така например тук, това е просто някаква проста програма. 255 00:10:27,890 --> 00:10:29,120 256 00:10:29,120 --> 00:10:32,890 Какво Мислите ли, че е няма да се случи във всяка точка 257 00:10:32,890 --> 00:10:34,210 че ние се опитваме да печатате? 258 00:10:34,210 --> 00:10:40,150 Така че този тук, какво ще се случи? 259 00:10:40,150 --> 00:10:43,047 260 00:10:43,047 --> 00:10:44,255 STUDENT: Това ще отпечата три. 261 00:10:44,255 --> 00:10:44,880 ALLISON: Точно така. 262 00:10:44,880 --> 00:10:45,930 Това ще отпечата три. 263 00:10:45,930 --> 00:10:47,272 Какво ще кажете за тук? 264 00:10:47,272 --> 00:10:48,230 STUDENT: Той няма да работи. 265 00:10:48,230 --> 00:10:48,910 ALLISON: Той няма да работи. 266 00:10:48,910 --> 00:10:50,290 Вие сте извън обхват, нали? 267 00:10:50,290 --> 00:10:55,160 Локална променлива не съществува извън тези скоби, нали? 268 00:10:55,160 --> 00:10:56,462 И тогава какво ще кажеш за тук? 269 00:10:56,462 --> 00:10:57,850 >> STUDENT: [недоловим]. 270 00:10:57,850 --> 00:10:59,210 >> ALLISON: Какво? 271 00:10:59,210 --> 00:10:59,900 Роб, отидете. 272 00:10:59,900 --> 00:11:00,854 >> ROB: Току-що каза. 273 00:11:00,854 --> 00:11:04,200 Глобалните променливи трябва да бъдат глобална променлива долна черта. 274 00:11:04,200 --> 00:11:05,660 >> ALLISON: Ах, да, съжалявам. 275 00:11:05,660 --> 00:11:06,200 Благодаря, Роб. 276 00:11:06,200 --> 00:11:07,480 277 00:11:07,480 --> 00:11:10,170 Роб като нашия резидент компилатор. 278 00:11:10,170 --> 00:11:12,684 Той просто ще крещи по нас, когато ние нужда от него. [Смее се] Да, 279 00:11:12,684 --> 00:11:14,225 трябва да бъде глобална променлива черта. 280 00:11:14,225 --> 00:11:15,760 281 00:11:15,760 --> 00:11:18,430 Така се предполага, че е глобална долна 282 00:11:18,430 --> 00:11:20,260 променлива, какво ще се случи тук? 283 00:11:20,260 --> 00:11:21,260 STUDENT: Това ще работи. 284 00:11:21,260 --> 00:11:22,093 ALLISON: Той ще работи. 285 00:11:22,093 --> 00:11:24,655 Така че това ще отпечата, така че просто един много прост пример. 286 00:11:24,655 --> 00:11:27,650 287 00:11:27,650 --> 00:11:29,870 OK, прототипи. 288 00:11:29,870 --> 00:11:33,680 Така че, очевидно, ние наистина подчертае за вас, момчета 289 00:11:33,680 --> 00:11:36,460 да функционира, ако го смисъл в своите програми. 290 00:11:36,460 --> 00:11:38,460 Но, разбира се, когато да направите свои собствени функции, 291 00:11:38,460 --> 00:11:40,930 обикновено ще ги определи след основното. 292 00:11:40,930 --> 00:11:42,430 И ще се опитам да ги наричаме в основния. 293 00:11:42,430 --> 00:11:46,030 И ако не използвате прототип, компилаторът ще ти крещя. 294 00:11:46,030 --> 00:11:49,590 >> Prototype е основно просто казвам ви компилатор 295 00:11:49,590 --> 00:11:52,400 че имам тази функция под основната. 296 00:11:52,400 --> 00:11:54,970 Отивам да го наречем, преди да го определи. 297 00:11:54,970 --> 00:11:56,360 Просто се държа. 298 00:11:56,360 --> 00:12:00,660 Обещавам, че това е определено, а вие ще имате всичко, което ви трябва. 299 00:12:00,660 --> 00:12:05,900 >> Така че начина, по който го направи, е просто да се върнеш тип, вашето име функция, вашият вход 300 00:12:05,900 --> 00:12:06,400 списък. 301 00:12:06,400 --> 00:12:09,760 Това е в основата на първа линия на Вашата декларация функция. 302 00:12:09,760 --> 00:12:11,510 Това е наистина всичко, което е. 303 00:12:11,510 --> 00:12:14,440 Но това е само една общ вид на формат. 304 00:12:14,440 --> 00:12:17,220 >> Така че в нашия пример тук, които вие трябва да 305 00:12:17,220 --> 00:12:19,700 видяхме в раздел в някакъв момент, ние имаме 306 00:12:19,700 --> 00:12:23,220 някои инт куб че Отнема известно INT на входа. 307 00:12:23,220 --> 00:12:25,870 И ние имаме нашата основна функция, която призовава куб. 308 00:12:25,870 --> 00:12:28,670 И куб се определя след факта. 309 00:12:28,670 --> 00:12:34,450 >> Така че, ако ние не разполагаме с инт куб вход в горната част, когато се обадихме куб 310 00:12:34,450 --> 00:12:36,620 в рамките на основната ни компилатор ще се сърди на нас. 311 00:12:36,620 --> 00:12:38,890 Тя ще бъде като това, което искаш да кажеш? 312 00:12:38,890 --> 00:12:40,360 Cube не съществува. 313 00:12:40,360 --> 00:12:41,910 Аз не знам това, което искат. 314 00:12:41,910 --> 00:12:43,490 И аз съм просто ще спре. 315 00:12:43,490 --> 00:12:47,330 >> Но тъй като ние направихме нашия прототип в горната част, казахме, 316 00:12:47,330 --> 00:12:49,800 Знаете ли, когато видите куб, не се притеснявайте за това. 317 00:12:49,800 --> 00:12:51,990 Обещавам това е определено по-късно. 318 00:12:51,990 --> 00:12:53,750 И това ще ви позволи да направите това, което искате. 319 00:12:53,750 --> 00:12:57,750 Така че, ако някога има функция който е обявен, след като сте го наричат 320 00:12:57,750 --> 00:13:00,570 за първи път, трябва да го прототип на върха. 321 00:13:00,570 --> 00:13:01,640 322 00:13:01,640 --> 00:13:02,720 >> Да? 323 00:13:02,720 --> 00:13:04,412 >> ROB: Той е издялан, cubing. 324 00:13:04,412 --> 00:13:05,855 >> ALLISON: О, Боже мой. 325 00:13:05,855 --> 00:13:09,435 Аз не have-- Габе, помислих си аз бяхте ни коректор. 326 00:13:09,435 --> 00:13:10,740 327 00:13:10,740 --> 00:13:12,760 ОК момчета, носят с мен, тук. 328 00:13:12,760 --> 00:13:14,440 Надявам се, че всички все идеята. 329 00:13:14,440 --> 00:13:15,560 330 00:13:15,560 --> 00:13:20,380 ОК, така че това трябва да има бил издялан, кубчета. 331 00:13:20,380 --> 00:13:22,700 Но идеята остава същата. 332 00:13:22,700 --> 00:13:23,702 333 00:13:23,702 --> 00:13:26,660 Всяка функция, която ние се обаждате след факта, трябва да има прототип. 334 00:13:26,660 --> 00:13:27,730 335 00:13:27,730 --> 00:13:28,970 Всеки добър с това? 336 00:13:28,970 --> 00:13:30,730 337 00:13:30,730 --> 00:13:32,310 Всякакви други правописни грешки? 338 00:13:32,310 --> 00:13:32,810 OK. 339 00:13:32,810 --> 00:13:34,730 340 00:13:34,730 --> 00:13:36,230 Всички печатни грешки тук преди да започнем, Роб? 341 00:13:36,230 --> 00:13:37,356 342 00:13:37,356 --> 00:13:42,380 [Смее се] ОК, така structs. 343 00:13:42,380 --> 00:13:45,040 По принцип, structs ви позволяват да създадете свой собствен тип данни. 344 00:13:45,040 --> 00:13:49,264 Толкова много, като INT или Чар или поплавък, това е просто друг тип. 345 00:13:49,264 --> 00:13:51,680 Харесва ми да мисля за него като, като, създадете свой собствен тип данни. 346 00:13:51,680 --> 00:13:53,740 Така че ви позволява да направите това. 347 00:13:53,740 --> 00:13:56,160 И тя притежава различни видове данни. 348 00:13:56,160 --> 00:14:01,030 >> Така че, ако си спомняте, в масив, ние може да има само неща от подобен тип. 349 00:14:01,030 --> 00:14:04,660 Structs ни позволяват да държи множествена неща от различни видове. 350 00:14:04,660 --> 00:14:08,944 Така че в този случай тук, ние има структура, наречена Student, 351 00:14:08,944 --> 00:14:10,650 име тук на дъното. 352 00:14:10,650 --> 00:14:13,540 И ние имаме някои INT номер и някакво име низ. 353 00:14:13,540 --> 00:14:14,620 354 00:14:14,620 --> 00:14:17,300 Така че това е просто друг тип данни. 355 00:14:17,300 --> 00:14:18,950 Сега имаме вид на данни, наречена Student. 356 00:14:18,950 --> 00:14:20,330 357 00:14:20,330 --> 00:14:24,750 >> Така че, тъй като ние можем да мислим за него като просто друг вид данни, 358 00:14:24,750 --> 00:14:27,760 можем да декларираме променливи както всеки друг. 359 00:14:27,760 --> 00:14:32,680 Така че, вместо просто като, като, като INT студент, ние просто трябва един студент, 360 00:14:32,680 --> 00:14:33,390 Студент 1. 361 00:14:33,390 --> 00:14:33,560 О, виж. 362 00:14:33,560 --> 00:14:34,059 Това е Роб. 363 00:14:34,059 --> 00:14:35,750 364 00:14:35,750 --> 00:14:38,880 Така че тук ние сме обявяване на структура, или променлива 365 00:14:38,880 --> 00:14:40,940 наречена студент 1 от тип ученик. 366 00:14:40,940 --> 00:14:45,370 Така че ще има идентификатор и име, свързано с него. 367 00:14:45,370 --> 00:14:48,430 >> И начина, по който достъп до тях елементи в нашата структура 368 00:14:48,430 --> 00:14:50,100 е с оператора на точка тук. 369 00:14:50,100 --> 00:14:51,910 370 00:14:51,910 --> 00:14:54,660 Така че в този случай, ние обявен някои студент 1. 371 00:14:54,660 --> 00:14:57,080 Ние назначен ID да бъде 1. 372 00:14:57,080 --> 00:14:58,840 И ние назначен името да бъде Роб. 373 00:14:58,840 --> 00:15:03,010 374 00:15:03,010 --> 00:15:04,960 ОК, всеки добър с това? 375 00:15:04,960 --> 00:15:06,787 Използвайте го само like-- нали? 376 00:15:06,787 --> 00:15:09,530 >> STUDENT: Да, typedef-- когато ние трябва да използваме typedef? 377 00:15:09,530 --> 00:15:13,190 >> ALLISON: Значи просто typedef казва that-- Роб, вие 378 00:15:13,190 --> 00:15:16,990 може да ме коригира, за това дали съм wrong-- но typedef е просто всъщност обявяване 379 00:15:16,990 --> 00:15:19,330 то като вид, който можете да използвате, нали? 380 00:15:19,330 --> 00:15:22,550 >> ROB: Да, това е основно, така че това е просто създаване на 381 00:15:22,550 --> 00:15:24,215 псевдоним или прякор за тип. 382 00:15:24,215 --> 00:15:25,590 Така че можете да напишете, че [недоловим]. 383 00:15:25,590 --> 00:15:27,140 384 00:15:27,140 --> 00:15:30,350 Така [недоловим] съществува, и сега ние просто трябва 385 00:15:30,350 --> 00:15:32,090 [Недоловим] средства точно същото нещо. 386 00:15:32,090 --> 00:15:37,210 И така, ето, ние сме написали, аз мисля, някои структура тип 2 [недоловим]. 387 00:15:37,210 --> 00:15:40,680 Така че това е просто псевдоним за даден тип. 388 00:15:40,680 --> 00:15:44,344 >> STUDENT: String [недоловим] библиотека бе напечатан като Чар звезда. 389 00:15:44,344 --> 00:15:51,380 390 00:15:51,380 --> 00:15:54,390 >> ALLISON: За нашите цели тук, ако сте обявяване на структура, 391 00:15:54,390 --> 00:15:55,600 просто правя typedef структура. 392 00:15:55,600 --> 00:15:57,680 393 00:15:57,680 --> 00:16:04,490 ОК, така че преди това е просто един нормален променлива тук. 394 00:16:04,490 --> 00:16:06,390 Ние го отворите с една точка. 395 00:16:06,390 --> 00:16:08,580 ако имаме указател към на структура, ние можем действително 396 00:16:08,580 --> 00:16:10,700 използвате стрелка, което е много готино. 397 00:16:10,700 --> 00:16:17,130 >> Така че в този случай, ние имаме указател към студент 1, който е от тип ученик. 398 00:16:17,130 --> 00:16:19,020 Не забравяйте, че с указател строителството, 399 00:16:19,020 --> 00:16:23,710 искате Какъвто и тип показалеца сочи да бъде в началото. 400 00:16:23,710 --> 00:16:25,960 Така че ние имаме някакъв студент 1, тук. 401 00:16:25,960 --> 00:16:27,370 402 00:16:27,370 --> 00:16:31,050 И тъй като този студент Сега един е остър, 403 00:16:31,050 --> 00:16:36,520 всъщност можем да отидем студент име 1 стрелка вместо точка, защото това е указател, 404 00:16:36,520 --> 00:16:37,640 и възлага на Роб. 405 00:16:37,640 --> 00:16:40,720 И сега, ако искаме да промени Rob да Дейвин, 406 00:16:40,720 --> 00:16:43,570 това е просто ви показвам различен начин да го направя. 407 00:16:43,570 --> 00:16:48,850 >> Така че вместо да се използва стрелката, вие може also-- Ще завърша това и след това 408 00:16:48,850 --> 00:16:52,860 вземе, че question-- можехте също направи препратка студент 1. 409 00:16:52,860 --> 00:16:56,170 Това казва като отидете каквото и да е студент 1, което 410 00:16:56,170 --> 00:16:58,840 ще бъде наш студент структура. 411 00:16:58,840 --> 00:17:03,910 Достъп до него с една точка и елемента това, което искате, и след това я прехвърли. 412 00:17:03,910 --> 00:17:05,326 Имаше един въпрос. 413 00:17:05,326 --> 00:17:08,034 STUDENT: Да, така че как така имате да използвате [недоловим], когато сте 414 00:17:08,034 --> 00:17:10,367 прави студент звезда без [Недоловим] студент? 415 00:17:10,367 --> 00:17:12,200 ALLISON: Тъй като този е създаването на показалеца. 416 00:17:12,200 --> 00:17:13,616 ROB: Отиваме да говорим за това. 417 00:17:13,616 --> 00:17:16,119 ALLISON: Отиваме да говорим за това по-късно в рамките на прегледа. 418 00:17:16,119 --> 00:17:17,660 Така че просто се задържи тази мисъл. 419 00:17:17,660 --> 00:17:20,560 Ако все още ви притеснява в край, хайде говори с един от нас. 420 00:17:20,560 --> 00:17:23,380 >> Така че те правят точно същото нещо. 421 00:17:23,380 --> 00:17:25,579 Ние просто ви показва две различни начини, за да го направя. 422 00:17:25,579 --> 00:17:29,470 Student 1 сега е указател, така че можете да получите достъп до елемента Име 423 00:17:29,470 --> 00:17:30,960 в структура със стрелка. 424 00:17:30,960 --> 00:17:36,440 Или можете сочен показалеца, и След това го отворите, както обикновено. 425 00:17:36,440 --> 00:17:38,430 Ли, че има смисъл да се всеки един? 426 00:17:38,430 --> 00:17:39,480 427 00:17:39,480 --> 00:17:43,890 Ако целият показалеца нещата са малко по- объркващо, Гейб ще говорим за това, 428 00:17:43,890 --> 00:17:45,740 и тогава може би това ще направи по-дълбок смисъл. 429 00:17:45,740 --> 00:17:46,240 Да? 430 00:17:46,240 --> 00:17:48,387 >> STUDENT: Да, така че как е този различен от? 431 00:17:48,387 --> 00:17:49,470 ALLISON: В предишния? 432 00:17:49,470 --> 00:17:52,330 Така ученикът 1 в тази случай не е указател. 433 00:17:52,330 --> 00:17:54,380 Това е просто действителната структура. 434 00:17:54,380 --> 00:17:55,400 >> STUDENT: OK. 435 00:17:55,400 --> 00:17:57,645 >> ALLISON: Като има предвид това е указател към структура. 436 00:17:57,645 --> 00:17:58,910 437 00:17:58,910 --> 00:18:02,060 >> STUDENT: Добре, но го прави вид свърши работа на едно и също [недоловим]. 438 00:18:02,060 --> 00:18:03,310 >> ALLISON: Той ефективно работи по същия начин. 439 00:18:03,310 --> 00:18:04,560 Вашият синтаксис е просто различен. 440 00:18:04,560 --> 00:18:05,185 STUDENT: OK. 441 00:18:05,185 --> 00:18:07,600 >> ALLISON: Да, те са фактически същият. 442 00:18:07,600 --> 00:18:11,321 Това е просто в зависимост от контекста, Вие може да искате една върху друга. 443 00:18:11,321 --> 00:18:11,820 Да? 444 00:18:11,820 --> 00:18:13,956 >> STUDENT: Когато правиш препратки към 1-- 445 00:18:13,956 --> 00:18:14,580 ALLISON: Мм-хм? 446 00:18:14,580 --> 00:18:16,880 STUDENT: Защо правиш имат скоби? 447 00:18:16,880 --> 00:18:19,575 ALLISON: Защото студент 1 е показалецът. 448 00:18:19,575 --> 00:18:22,200 Така че ще трябва да се уверете, че сте просто dereferencing показалеца. 449 00:18:22,200 --> 00:18:23,380 >> STUDENT: OK. 450 00:18:23,380 --> 00:18:26,700 >> ALLISON: Така че в този случай тук, скоби около него 451 00:18:26,700 --> 00:18:29,875 означава, че вие ​​сте dereferencing студент 1. 452 00:18:29,875 --> 00:18:35,390 Така че, ти започваш да се където студент 1 точки, което е вашата структура. 453 00:18:35,390 --> 00:18:38,010 Така че сега можете да се сетите за него като че структура, 454 00:18:38,010 --> 00:18:39,785 така че можем да използваме нашата нормална експлоатация точка. 455 00:18:39,785 --> 00:18:42,752 456 00:18:42,752 --> 00:18:43,585 Всякакви други въпроси? 457 00:18:43,585 --> 00:18:45,840 458 00:18:45,840 --> 00:18:48,120 Cool, страхотно. 459 00:18:48,120 --> 00:18:51,359 >> Така че последното нещо, мисля, че е последният ми слайд, уо! 460 00:18:51,359 --> 00:18:52,775 ОК, така че с плаваща запетая неточности. 461 00:18:52,775 --> 00:18:54,090 462 00:18:54,090 --> 00:18:56,820 Говорихме накратко за това по време на лекция. 463 00:18:56,820 --> 00:19:00,030 По принцип, ние имаме безкрайно много реални числа. 464 00:19:00,030 --> 00:19:02,237 И ако някой от вас, момчета Обичам математиката, има 465 00:19:02,237 --> 00:19:03,570 всички видове готини неща с нас. 466 00:19:03,570 --> 00:19:05,010 467 00:19:05,010 --> 00:19:07,190 >> Но има безкрайно много реални числа. 468 00:19:07,190 --> 00:19:09,850 Но те са само ограничен много бита, които имаме. 469 00:19:09,850 --> 00:19:13,240 Значи винаги ще има неточност, е всичко. 470 00:19:13,240 --> 00:19:16,269 И това е, това е просто вид като нещо, което трябва да знаете. 471 00:19:16,269 --> 00:19:19,060 Това, че ние може да ви попитам защо плаваща запетая неточността съществува? 472 00:19:19,060 --> 00:19:20,004 473 00:19:20,004 --> 00:19:21,420 Така че просто нещо, което трябва да знаете. 474 00:19:21,420 --> 00:19:23,770 И с това, аз съм завъртане то към показалки. 475 00:19:23,770 --> 00:19:27,720 476 00:19:27,720 --> 00:19:28,520 >> Binky: Здравейте, момчета. 477 00:19:28,520 --> 00:19:29,616 Моето име Binky. 478 00:19:29,616 --> 00:19:30,990 Отивам да говоря за указатели. 479 00:19:30,990 --> 00:19:33,247 480 00:19:33,247 --> 00:19:35,830 Да, така указатели е всъщност любимата ми част от този курс. 481 00:19:35,830 --> 00:19:39,740 Така, само за да стане ясно какво Allison говори за тук, така че причината 482 00:19:39,740 --> 00:19:43,810 why-- единствената разлика тук, Голямата разлика е начин 483 00:19:43,810 --> 00:19:44,760 ние заявяваме неща. 484 00:19:44,760 --> 00:19:47,560 Така студент звезда означава това е показалец към студент. 485 00:19:47,560 --> 00:19:52,960 Като има предвид, пързалка и преди, студент е действителната структура, като действително студент, 486 00:19:52,960 --> 00:19:54,400 съдържащо някое от тези неща. 487 00:19:54,400 --> 00:19:57,050 >> И причината, поради която ние искам to-- да, Дейвин? 488 00:19:57,050 --> 00:19:58,630 >> Дейвин: Какво стрелката означава това? 489 00:19:58,630 --> 00:20:04,240 >> Binky: Средствата за стрелки точно същата като тази. 490 00:20:04,240 --> 00:20:06,150 Така че наистина не трябва стрелката. 491 00:20:06,150 --> 00:20:11,060 Например, ако сте само програма в C, можете просто да използвате това. 492 00:20:11,060 --> 00:20:12,850 За съжаление, аз не какво е това. 493 00:20:12,850 --> 00:20:14,920 Можете просто да използвате този синтаксис. 494 00:20:14,920 --> 00:20:17,430 >> Но някои хора, когато те са проектиране C, 495 00:20:17,430 --> 00:20:19,870 те разбрали, че хората използва, че синтаксис толкова много, 496 00:20:19,870 --> 00:20:23,970 че те ще искал просто да излезе с синтаксис структура за него. 497 00:20:23,970 --> 00:20:26,820 И това се състоя в под формата на стрела. 498 00:20:26,820 --> 00:20:29,210 И това е много хубаво, защото тя символизира нещо 499 00:20:29,210 --> 00:20:33,670 като ние всъщност след тази стрелка, този указател, 500 00:20:33,670 --> 00:20:35,300 към малко място в паметта. 501 00:20:35,300 --> 00:20:40,410 И когато стигнем там, ние искаме да поглед към името на този ученик, 502 00:20:40,410 --> 00:20:42,150 ако това има смисъл. 503 00:20:42,150 --> 00:20:43,000 OK? 504 00:20:43,000 --> 00:20:44,290 >> Така че точно това е един и същ. 505 00:20:44,290 --> 00:20:46,310 Това е точно същото нещо като това. 506 00:20:46,310 --> 00:20:48,130 Те се съставят точно същото, нали? 507 00:20:48,130 --> 00:20:50,100 508 00:20:50,100 --> 00:20:55,580 И тук причината защо ние изчистване нещо, е така, защото в този случай, 509 00:20:55,580 --> 00:20:59,120 ни променлива е действително само променлива показалка. 510 00:20:59,120 --> 00:21:02,900 Така че ние имаме само малко пространство в памет, която държи показалеца. 511 00:21:02,900 --> 00:21:06,570 Ние наистина не са на всяко пространство че притежава действителната структура. 512 00:21:06,570 --> 00:21:08,660 >> Така че това трябва да бъде направено на два етапа. 513 00:21:08,660 --> 00:21:11,545 Ние трябва да създадем памет, за да постави структура вътре. 514 00:21:11,545 --> 00:21:14,445 И ние трябва да се създаде памет, за да поставите курсора вътре. 515 00:21:14,445 --> 00:21:16,570 Така че те са основно две различни променливи, тук. 516 00:21:16,570 --> 00:21:19,730 Един от тях е от тип студент, освен това не може да кажем, да има име. 517 00:21:19,730 --> 00:21:21,900 А другият е на студент звезда тип. 518 00:21:21,900 --> 00:21:24,900 И тогава студентски 1 точки там, ако това има смисъл. 519 00:21:24,900 --> 00:21:25,871 520 00:21:25,871 --> 00:21:26,370 OK? 521 00:21:26,370 --> 00:21:28,160 522 00:21:28,160 --> 00:21:31,860 >> Така че причината, поради която ние използваме указатели е така, защото всичко 523 00:21:31,860 --> 00:21:35,510 в компютър, всяка променлива в компютъра има две неща. 524 00:21:35,510 --> 00:21:36,580 Тя има своя стойност. 525 00:21:36,580 --> 00:21:38,420 И това си има адрес. 526 00:21:38,420 --> 00:21:41,390 И един добър начин да се концептуализира това е там 527 00:21:41,390 --> 00:21:44,230 много проблеми, когато опитате да използвате функции. 528 00:21:44,230 --> 00:21:47,200 И ние ще се опитаме да гледам в един от тях. 529 00:21:47,200 --> 00:21:50,370 А именно, че ще мисля за памет, кутии. 530 00:21:50,370 --> 00:21:52,810 >> Ти винаги си мислех за променливи когато ти казват Na равнява 5. 531 00:21:52,810 --> 00:21:54,430 Мислиш ли, че от пускането 5 в кутия. 532 00:21:54,430 --> 00:21:55,520 533 00:21:55,520 --> 00:22:00,030 И какво, ако искате да премине че INT в функция? 534 00:22:00,030 --> 00:22:03,230 Ти просто pass-- аз не know-- х в дадена функция. 535 00:22:03,230 --> 00:22:06,090 Но това, което се случва, е обикновено като хора, вие 536 00:22:06,090 --> 00:22:09,050 би си помислил нещо подобно съм преминаване на кутията на лице. 537 00:22:09,050 --> 00:22:12,070 И това не е така наистина се случи в компютрите. 538 00:22:12,070 --> 00:22:17,770 Какво се случва, е, че можете да копирате стойността на полето кутия на лицето. 539 00:22:17,770 --> 00:22:22,440 >> Така че това, което аз се опитвам да кажа е, че ако имате function-- sorry-- тук, 540 00:22:22,440 --> 00:22:27,700 ако имаме функция като пет до там, ако се опитате да премине променлива, 541 00:22:27,700 --> 00:22:29,450 това е просто ще копирате. 542 00:22:29,450 --> 00:22:35,771 Ако инициализира NX в размер на 3, то се случва да копирате тази стойност до променлива 543 00:22:35,771 --> 00:22:36,270 до там. 544 00:22:36,270 --> 00:22:37,005 545 00:22:37,005 --> 00:22:39,630 Добре, и това е един вид на причината Ето защо искаме да използваме указатели. 546 00:22:39,630 --> 00:22:42,550 Тъй като вместо като само стойността, 547 00:22:42,550 --> 00:22:44,850 вместо просто да минава само стойността на функцията, 548 00:22:44,850 --> 00:22:46,530 искаме да премине от справка. 549 00:22:46,530 --> 00:22:50,630 Това, което наричаме пас на позоваване вид да даде поле на функцията, 550 00:22:50,630 --> 00:22:53,890 така че функция може също промяна на стойностите в тази кутия. 551 00:22:53,890 --> 00:22:57,280 >> ОК, така че просто някои основни показалка неща, е да се създадат насоки, 552 00:22:57,280 --> 00:23:00,300 можете просто да го декларира тип, и сложите звезда веднага след него. 553 00:23:00,300 --> 00:23:02,307 И на вид е просто това, което сочеше. 554 00:23:02,307 --> 00:23:04,390 Така че, ако това е инт звезда, Ако пък сочеше едно цяло число. 555 00:23:04,390 --> 00:23:05,940 Ако това е знак звезда, Ако пък сочи диаграма. 556 00:23:05,940 --> 00:23:07,790 И ако това е студент звезда, Ако пък сочеше студент. 557 00:23:07,790 --> 00:23:08,770 OK? 558 00:23:08,770 --> 00:23:10,510 >> И те са отдавна всички 4 байта. 559 00:23:10,510 --> 00:23:13,010 Поради тази променлива тя всъщност не 560 00:23:13,010 --> 00:23:15,380 трябва да държи Чар, пад, или студент. 561 00:23:15,380 --> 00:23:16,890 Той само трябва да притежава адрес. 562 00:23:16,890 --> 00:23:21,390 Ето защо всички те са 4 байта дълго в нормална 32-битова машина. 563 00:23:21,390 --> 00:23:21,890 OK? 564 00:23:21,890 --> 00:23:25,600 Така че тук, х е променлива, която сочи до инт. у точки към Чар. Z точки 565 00:23:25,600 --> 00:23:26,580 на плувка. 566 00:23:26,580 --> 00:23:27,480 Всякакви въпроси тук? 567 00:23:27,480 --> 00:23:29,841 568 00:23:29,841 --> 00:23:30,340 Cool. 569 00:23:30,340 --> 00:23:32,550 И там са две различни символи, които имат 570 00:23:32,550 --> 00:23:34,341 трябва да имате предвид, когато идва на показалеца. 571 00:23:34,341 --> 00:23:36,540 Така съотнасяне и dereferencing са големите. 572 00:23:36,540 --> 00:23:38,100 573 00:23:38,100 --> 00:23:41,602 Така амперсант НА име на променлива ви дава? 574 00:23:41,602 --> 00:23:42,310 STUDENT: Адрес. 575 00:23:42,310 --> 00:23:43,380 Binky: Адрес. 576 00:23:43,380 --> 00:23:47,330 Така че, ако вие декларирате, инт на се равнява на 5, а след това амперсанд 577 00:23:47,330 --> 00:23:49,214 на ще ви дам адреса. 578 00:23:49,214 --> 00:23:51,130 И всъщност можете да опитате да отпечатате, че и да видим 579 00:23:51,130 --> 00:23:54,640 какъв адрес в паметта променливата има. 580 00:23:54,640 --> 00:23:57,380 И тогава dereferencing-- така че е съотнасяне 581 00:23:57,380 --> 00:24:00,380 получаване на address-- dereferencing е точно обратното. 582 00:24:00,380 --> 00:24:04,120 ОК, точно като пъти е противоположна на разделяне, 583 00:24:04,120 --> 00:24:06,060 звезда е обратното на амперсанд. 584 00:24:06,060 --> 00:24:09,710 Така dereferencing средства отиват там. 585 00:24:09,710 --> 00:24:14,280 Така че, ако ви дам star-- I не know-- 50, това е 586 00:24:14,280 --> 00:24:20,320 Ще се опитам да отида на адреса на номер 50 в на вашия компютър. 587 00:24:20,320 --> 00:24:22,840 OK, и защо ние виждаме че те са противоположности? 588 00:24:22,840 --> 00:24:27,320 Защото това, което се случва, ако го направите нещо като звезда Амперсант а? 589 00:24:27,320 --> 00:24:28,470 590 00:24:28,470 --> 00:24:33,460 Е, амперсанд а дава адрес на променлива, адреса на. 591 00:24:33,460 --> 00:24:35,830 Но звезда означава отида там. 592 00:24:35,830 --> 00:24:38,930 >> И така, какво ще стане, ако отидете на адреса на? 593 00:24:38,930 --> 00:24:40,400 Ти просто стигнем до, нали? 594 00:24:40,400 --> 00:24:41,410 595 00:24:41,410 --> 00:24:43,600 Така че отидете на адреса на а е едно и също нещо като. 596 00:24:43,600 --> 00:24:47,580 Ето защо те обикновено са отнесен до same-- това 597 00:24:47,580 --> 00:24:50,480 и това са посочени като противоположни оператори. 598 00:24:50,480 --> 00:24:50,980 OK? 599 00:24:50,980 --> 00:24:52,780 600 00:24:52,780 --> 00:24:53,790 Така готино. 601 00:24:53,790 --> 00:24:57,240 >> Под предния капак, например, ако ние заявяваме INT х е равно на 5, 602 00:24:57,240 --> 00:24:58,040 имаме променлива. 603 00:24:58,040 --> 00:25:00,790 И не забравяйте, че казах всеки variable-- и това е нещо добро 604 00:25:00,790 --> 00:25:03,820 да се запази в mind-- има две различни неща, свързани с. 605 00:25:03,820 --> 00:25:06,460 Той има адресирано и стойност. 606 00:25:06,460 --> 00:25:07,140 OK? 607 00:25:07,140 --> 00:25:09,180 >> Така стойността в този случай е 5. 608 00:25:09,180 --> 00:25:12,140 И адреса is-- да кажем, аз съм направи нещо up-- е 0x04. 609 00:25:12,140 --> 00:25:13,180 610 00:25:13,180 --> 00:25:17,200 И единствената причина, защо ние обикновено представляват адреси в шестнадесетичен 611 00:25:17,200 --> 00:25:19,770 е един, защото това е като добро. 612 00:25:19,770 --> 00:25:21,600 Тя върви добре с двоичен. 613 00:25:21,600 --> 00:25:23,500 Това е лесно да конвертирате от и към двоичен. 614 00:25:23,500 --> 00:25:26,890 И това не стане твърде голяма, ако имате много голям брой. 615 00:25:26,890 --> 00:25:29,990 Така че ние бихме искали да използваме шестнадесетичен в печатарските адреси. 616 00:25:29,990 --> 00:25:31,890 Но аз може да представлява това като цяло. 617 00:25:31,890 --> 00:25:32,750 Това е добре. 618 00:25:32,750 --> 00:25:35,450 >> И затова има адрес 4 и на стойност 5. 619 00:25:35,450 --> 00:25:38,080 И тогава казах инт звезда показалка. 620 00:25:38,080 --> 00:25:40,070 Така че това е различен вид, предизвестие. 621 00:25:40,070 --> 00:25:43,220 Int показалеца звезда се равнява адреса на х. 622 00:25:43,220 --> 00:25:46,425 И така, какво ще бъде стойността на КОП? 623 00:25:46,425 --> 00:25:47,710 624 00:25:47,710 --> 00:25:51,600 Това ще бъде най- адрес на х, тук долу. 625 00:25:51,600 --> 00:25:54,190 ОК, така че стойността ще да бъде същият като адреса. 626 00:25:54,190 --> 00:25:56,130 Това е задачата работи правя. 627 00:25:56,130 --> 00:25:59,380 И тогава КОП ще има свой собствен адрес, който се оказва, 628 00:25:59,380 --> 00:26:02,050 в този случай 8, OK? 629 00:26:02,050 --> 00:26:03,850 630 00:26:03,850 --> 00:26:05,900 >> И след това да създадете нов число копие. 631 00:26:05,900 --> 00:26:08,790 И аз казвам инт копие равнява отида там. 632 00:26:08,790 --> 00:26:11,140 Така че отивам до каква КОП се посочи. 633 00:26:11,140 --> 00:26:13,940 Е, какво има този КОП? 634 00:26:13,940 --> 00:26:14,740 PTR е 0x04. 635 00:26:14,740 --> 00:26:16,060 636 00:26:16,060 --> 00:26:18,400 Какво се случва, ако се опитам да отида там? 637 00:26:18,400 --> 00:26:23,650 Аз ще намерите човек, който има адрес х и който има адрес 4. 638 00:26:23,650 --> 00:26:25,970 И кой има справяне четири е х. 639 00:26:25,970 --> 00:26:26,950 Това прави ли смисъл? 640 00:26:26,950 --> 00:26:28,295 641 00:26:28,295 --> 00:26:28,795 Да? 642 00:26:28,795 --> 00:26:32,060 >> STUDENT: В този случай, е курсора в комин? 643 00:26:32,060 --> 00:26:36,024 >> Binky: В този случай, it's-- добър въпрос. 644 00:26:36,024 --> 00:26:38,690 Аз наистина не мисля за това при извършване на тези адреси. 645 00:26:38,690 --> 00:26:42,570 Но ако това е така, всичко, те са локални променливи, 646 00:26:42,570 --> 00:26:46,372 тогава х ще живее in-- всичко ще живее в стека. 647 00:26:46,372 --> 00:26:48,330 Така че всичко, което се случва да сочи към стека. 648 00:26:48,330 --> 00:26:49,360 649 00:26:49,360 --> 00:26:52,700 Можете да получите само на куп, когато да започнете да използвате изчистване, нали? 650 00:26:52,700 --> 00:26:59,430 >> Така че, ако си спомняте стак е всеки път ти се обадя функция във вашата програма, 651 00:26:59,430 --> 00:27:02,800 като, например основен, или друга функция, като ФОРМАТ. 652 00:27:02,800 --> 00:27:06,334 Всички местни променливи ще се постави в стека рамка. 653 00:27:06,334 --> 00:27:08,500 И започваш да се получи като прибрана в стека. 654 00:27:08,500 --> 00:27:09,930 Това е, което се нарича стак. 655 00:27:09,930 --> 00:27:12,200 И всички тези локални променливи ще бъде там. 656 00:27:12,200 --> 00:27:14,940 И heap-- и отиваме да се говори повече за това later-- 657 00:27:14,940 --> 00:27:19,050 купчината е мястото, където всички динамично разпределени живота памет. 658 00:27:19,050 --> 00:27:20,270 Cool? 659 00:27:20,270 --> 00:27:21,680 >> Ходим на този слайд. 660 00:27:21,680 --> 00:27:22,800 Да? 661 00:27:22,800 --> 00:27:25,490 >> STUDENT: Защо не е Int копие връщане 0x04? 662 00:27:25,490 --> 00:27:27,870 663 00:27:27,870 --> 00:27:30,066 >> Binky: Защо не е Int копие връщане 0x04? 664 00:27:30,066 --> 00:27:32,450 >> STUDENT: Защо да не е, че [недоловим]? 665 00:27:32,450 --> 00:27:35,530 >> Binky: Защото това, което е на стойност КОП? 666 00:27:35,530 --> 00:27:37,394 667 00:27:37,394 --> 00:27:38,370 >> STUDENT: 0x04. 668 00:27:38,370 --> 00:27:38,960 >> Binky: 0x04. 669 00:27:38,960 --> 00:27:40,910 Какво се случва, ако отидете в 0x04? 670 00:27:40,910 --> 00:27:41,620 Какво ще получите? 671 00:27:41,620 --> 00:27:42,371 >> STUDENT: О, OK. 672 00:27:42,371 --> 00:27:42,995 Binky: Виждате ли? 673 00:27:42,995 --> 00:27:43,536 Студентът: Да. 674 00:27:43,536 --> 00:27:44,890 Binky: Така получавате 5. 675 00:27:44,890 --> 00:27:49,170 Така копие ще има 5, ако това има смисъл. 676 00:27:49,170 --> 00:27:49,809 Да? 677 00:27:49,809 --> 00:27:52,803 >> STUDENT: Можем ли да са придобили 5 в полето за стойност [недоловим] 678 00:27:52,803 --> 00:27:55,300 Ако сложим инт копирате [недоловим]. 679 00:27:55,300 --> 00:27:56,710 >> Binky: Int-- ние би, да. 680 00:27:56,710 --> 00:27:59,080 Това щеше да направи почти едно и също нещо. 681 00:27:59,080 --> 00:28:02,080 Но по този начин, ние можем да преминат адресира до функции. 682 00:28:02,080 --> 00:28:05,050 И това е готино нещо ние ще направим точно сега. 683 00:28:05,050 --> 00:28:06,770 684 00:28:06,770 --> 00:28:13,090 >> Така че този вид упражнения винаги идва on-- много обикновено идва на тестове. 685 00:28:13,090 --> 00:28:15,870 Така че това е наистина добре да се опитаме да направя този вид на нещо си. 686 00:28:15,870 --> 00:28:21,210 Така че се опитват да следите какво адреса е и искате стойностите на променливите 687 00:28:21,210 --> 00:28:22,620 са във всяка точка. 688 00:28:22,620 --> 00:28:24,370 Така че това е точно това, което ние ще направим. 689 00:28:24,370 --> 00:28:26,988 Тук имаме стъпки, едно, две, три, четири, пет. 690 00:28:26,988 --> 00:28:30,530 Едно, две, три, четири, пет. 691 00:28:30,530 --> 00:28:33,330 И ние отиваме, за да следите на стойностите на х и. 692 00:28:33,330 --> 00:28:34,650 693 00:28:34,650 --> 00:28:40,530 >> И така, какво се прави, ако това е бъги код, ние се опитваме да направим, за да пет. 694 00:28:40,530 --> 00:28:43,610 Така че ние се опитваме да получите в променлива и променя своята стойност до 5. 695 00:28:43,610 --> 00:28:44,630 696 00:28:44,630 --> 00:28:49,900 И помнете ми аналогия на наличието на кутия и подаде кутията с някого? 697 00:28:49,900 --> 00:28:51,515 Така че основното е тази кутия, наречена х. 698 00:28:51,515 --> 00:28:52,570 699 00:28:52,570 --> 00:28:54,170 И съдържа стойността 3. 700 00:28:54,170 --> 00:28:55,230 701 00:28:55,230 --> 00:28:57,455 И аз се опитвам да се предаде това поле, за да до пет. 702 00:28:57,455 --> 00:28:58,560 703 00:28:58,560 --> 00:29:01,510 >> И аз искам до пет, за да промените стойността на това поле 5. 704 00:29:01,510 --> 00:29:03,080 705 00:29:03,080 --> 00:29:05,120 И тогава аз просто отпечата стойността на х. 706 00:29:05,120 --> 00:29:06,475 707 00:29:06,475 --> 00:29:08,850 Това е, което ми function-- това е, което аз се опитвам да направя. 708 00:29:08,850 --> 00:29:12,450 Аз просто се опитвам да се актуализира стойността на х до 5. 709 00:29:12,450 --> 00:29:13,512 710 00:29:13,512 --> 00:29:14,970 Ясно ли е каква е функцията прави? 711 00:29:14,970 --> 00:29:16,210 712 00:29:16,210 --> 00:29:21,440 >> ОК, така че това, което се случва да бъде най- стойности на х и точно тук, 713 00:29:21,440 --> 00:29:27,734 на първа линия, непосредствено преди първия line-- бих say-- на програмата? 714 00:29:27,734 --> 00:29:28,940 >> STUDENT: Вероятно боклук. 715 00:29:28,940 --> 00:29:30,023 >> Binky: Просто боклук неща. 716 00:29:30,023 --> 00:29:32,590 Така че аз съм сложил N / A. Така ние наистина не знам. 717 00:29:32,590 --> 00:29:37,400 Подобно, а дори не все още съществува, защото не сме призовани да пет. 718 00:29:37,400 --> 00:29:38,980 Int една не е обявена. 719 00:29:38,980 --> 00:29:40,030 720 00:29:40,030 --> 00:29:42,920 И х ще съществува тук, но ние не сме наистина 721 00:29:42,920 --> 00:29:45,370 носи никаква стойност за него, така че OK? 722 00:29:45,370 --> 00:29:46,570 723 00:29:46,570 --> 00:29:52,340 >> И след това, какво ще бъде стойности на х и в номер две? 724 00:29:52,340 --> 00:29:54,530 725 00:29:54,530 --> 00:29:55,410 >> STUDENT: [недоловим]. 726 00:29:55,410 --> 00:29:57,540 >> Binky: Значи х ще бъде 3. 727 00:29:57,540 --> 00:29:59,650 Това е лесно, защото ние сме възлагане 3 към него. 728 00:29:59,650 --> 00:30:03,500 И все още не съществува защото просто живее в пет. 729 00:30:03,500 --> 00:30:05,800 Така че аз отивам да имат 3 и нищо. 730 00:30:05,800 --> 00:30:08,590 или като боклук, независимо, всъщност не е определено. 731 00:30:08,590 --> 00:30:11,640 732 00:30:11,640 --> 00:30:13,140 И сега, това е важна линия. 733 00:30:13,140 --> 00:30:14,931 Ето, ние ще всъщност се обадя до пет. 734 00:30:14,931 --> 00:30:17,140 735 00:30:17,140 --> 00:30:18,680 И не забравяйте това, което казах. 736 00:30:18,680 --> 00:30:20,240 Ние никога няма да премине в наказателното поле. 737 00:30:20,240 --> 00:30:23,110 Ние само трябва да копирате стойността на кутията на друго поле. 738 00:30:23,110 --> 00:30:27,000 Това е всички компютри се, копират неща от едно място на друго. 739 00:30:27,000 --> 00:30:33,550 >> Така че до пет, какво всъщност прави е копира стойността на х в. 740 00:30:33,550 --> 00:30:35,130 Така че това, което се случва тук? 741 00:30:35,130 --> 00:30:36,210 Стойностите на х и. 742 00:30:36,210 --> 00:30:38,670 743 00:30:38,670 --> 00:30:43,360 3 и 3, ние просто ще копирате то над от х до. 744 00:30:43,360 --> 00:30:44,710 745 00:30:44,710 --> 00:30:45,320 Cool. 746 00:30:45,320 --> 00:30:46,140 >> Сега сме тук. 747 00:30:46,140 --> 00:30:47,610 748 00:30:47,610 --> 00:30:49,430 И сега отиваме да актуализира равнява на 5. 749 00:30:49,430 --> 00:30:50,900 750 00:30:50,900 --> 00:30:53,070 Какво ще се случи в четвърти ред? 751 00:30:53,070 --> 00:30:55,120 752 00:30:55,120 --> 00:30:56,010 >> STUDENT: [недоловим]. 753 00:30:56,010 --> 00:30:59,685 >> Binky: а се обновява, но х не се актуализират. 754 00:30:59,685 --> 00:31:02,050 755 00:31:02,050 --> 00:31:05,250 Защото х все още живее в основния, това е напълно различен блок от паметта. 756 00:31:05,250 --> 00:31:06,970 Това е различен променлива. 757 00:31:06,970 --> 00:31:07,900 а е друга променлива. 758 00:31:07,900 --> 00:31:10,000 Те се случи да имат същата стойност, защото аз 759 00:31:10,000 --> 00:31:13,980 копирани върху стойността на х до. 760 00:31:13,980 --> 00:31:20,070 Но сега, когато аз правя равнява на 5, то наистина не се осъществи х по никакъв начин. 761 00:31:20,070 --> 00:31:21,450 Това е по-сложни част. 762 00:31:21,450 --> 00:31:23,380 Има ли смисъл на всички? 763 00:31:23,380 --> 00:31:24,093 Да? 764 00:31:24,093 --> 00:31:25,717 STUDENT: Още един въпрос, имате 3. 765 00:31:25,717 --> 00:31:27,741 Защо е already-- О, не, това е 3. 766 00:31:27,741 --> 00:31:28,490 За съжаление, няма значение. 767 00:31:28,490 --> 00:31:29,310 Четох 5. 768 00:31:29,310 --> 00:31:30,415 >> Binky: Да, 3, 3. 769 00:31:30,415 --> 00:31:31,540 >> STUDENT: [недоловим], да. 770 00:31:31,540 --> 00:31:35,290 Binky: И тогава ние присвоите 5 до а, но наистина не се променят х. 771 00:31:35,290 --> 00:31:36,369 Добър? 772 00:31:36,369 --> 00:31:36,910 Студентът: Да. 773 00:31:36,910 --> 00:31:37,410 Binky: Да? 774 00:31:37,410 --> 00:31:42,330 Можеш ли да обясниш отново как а получава копиран [недоловим]? 775 00:31:42,330 --> 00:31:48,480 >> Binky: ОК, така че, когато ти се обадя до пет на х, така че тази линия на код тук. 776 00:31:48,480 --> 00:31:50,100 777 00:31:50,100 --> 00:31:52,340 за пет от х, какво е х? 778 00:31:52,340 --> 00:31:55,160 779 00:31:55,160 --> 00:31:58,340 х е само на 3 в този момент, нали? 780 00:31:58,340 --> 00:32:03,320 Така бихте могли просто да се мисли за въвеждане 3 тук и забравят за х. 781 00:32:03,320 --> 00:32:04,410 Просто сложете 3 тук. 782 00:32:04,410 --> 00:32:10,880 Например, ние отиваме да копирате на стойност на х към INT, който е там. 783 00:32:10,880 --> 00:32:12,310 784 00:32:12,310 --> 00:32:13,630 OK? 785 00:32:13,630 --> 00:32:14,780 >> Така стойността на х е 3. 786 00:32:14,780 --> 00:32:17,680 Отиваме към копие 3 до едно. 787 00:32:17,680 --> 00:32:20,040 И всичко това друг блок памет, тази друга променлива 788 00:32:20,040 --> 00:32:22,640 наречено ще има 3, както добре. 789 00:32:22,640 --> 00:32:23,580 Това прави ли смисъл? 790 00:32:23,580 --> 00:32:24,780 791 00:32:24,780 --> 00:32:25,794 Да? 792 00:32:25,794 --> 00:32:31,008 >> STUDENT: Ако ви дам пет като го има като цяло число х вместо, 793 00:32:31,008 --> 00:32:32,910 ще се определи, че всичко? 794 00:32:32,910 --> 00:32:36,290 >> Binky: Ако това е integer-- не, че няма да оправи всичко. 795 00:32:36,290 --> 00:32:37,590 Така че това е много добър въпрос. 796 00:32:37,590 --> 00:32:40,480 Това всъщност няма значение какво ти се обадя тези променливи. 797 00:32:40,480 --> 00:32:44,510 Отново, това ще бъде въпрос на обхват, защото те не са една и съща х. 798 00:32:44,510 --> 00:32:46,526 Те са напълно различни места в паметта. 799 00:32:46,526 --> 00:32:47,400 STUDENT: [недоловим]. 800 00:32:47,400 --> 00:32:49,020 Binky: Така че това не е така наистина значение какво им се обадя. 801 00:32:49,020 --> 00:32:50,480 Това не оправя нещата, нали? 802 00:32:50,480 --> 00:32:53,390 803 00:32:53,390 --> 00:32:54,430 Още въпроси? 804 00:32:54,430 --> 00:32:55,762 Да? 805 00:32:55,762 --> 00:32:58,498 >> STUDENT: Как е обратно номер пет [недоловим]? 806 00:32:58,498 --> 00:32:59,661 807 00:32:59,661 --> 00:33:01,160 Binky: ОК, ние все още не са направили това. 808 00:33:01,160 --> 00:33:03,432 Нека да отидем до номер пет, тогава. 809 00:33:03,432 --> 00:33:04,650 >> STUDENT: [недоловим]? 810 00:33:04,650 --> 00:33:05,565 >> Binky: Какво? 811 00:33:05,565 --> 00:33:08,179 >> STUDENT: Имате ли връщане на всички? 812 00:33:08,179 --> 00:33:09,970 Binky: Ние нямаме връщане, а не на основната. 813 00:33:09,970 --> 00:33:12,940 Но основните връща 0 автоматично ако не върне нищо. 814 00:33:12,940 --> 00:33:14,400 815 00:33:14,400 --> 00:33:15,188 Да? 816 00:33:15,188 --> 00:33:22,658 >> STUDENT: Може ли да се направи main-- или може ли да се направи до пет възвръщаемост? 817 00:33:22,658 --> 00:33:24,170 818 00:33:24,170 --> 00:33:27,990 >> Binky: Ние може да има до пет върне, да. 819 00:33:27,990 --> 00:33:32,527 Но тогава ще трябва да зададете х се равнява на стойността връщане на до пет, 820 00:33:32,527 --> 00:33:34,360 което би било малко различна програма. 821 00:33:34,360 --> 00:33:35,440 Тя ще работи. 822 00:33:35,440 --> 00:33:38,730 Но това, което искаме да направим, е това, което е нарича промяна нещо на място. 823 00:33:38,730 --> 00:33:41,690 Така че ние искаме действително да промени тази кутия и не се тревожи 824 00:33:41,690 --> 00:33:44,390 за да се налага да се върне стойности или нещо подобно. 825 00:33:44,390 --> 00:33:44,890 OK? 826 00:33:44,890 --> 00:33:46,490 827 00:33:46,490 --> 00:33:50,150 >> Това е точно като функция суап Дейвид показа в лекция, освен, че съм 828 00:33:50,150 --> 00:33:51,740 само се занимават с една променлива. 829 00:33:51,740 --> 00:33:55,960 И той използва две, така инт а и б и След временно променлива и какво ли още не. 830 00:33:55,960 --> 00:33:57,020 OK? 831 00:33:57,020 --> 00:33:58,070 Така че това, което е на последния ред? 832 00:33:58,070 --> 00:34:04,400 След пет се връща, това е просто А се случва да си отиде. 833 00:34:04,400 --> 00:34:06,120 834 00:34:06,120 --> 00:34:10,179 Ние няма да има вече, и само х ще продължават да живеят на. 835 00:34:10,179 --> 00:34:12,130 >> И познайте какво? х не се променя стойността си, 836 00:34:12,130 --> 00:34:15,520 В края на краищата, защото ние сме само промяна на стойността на. 837 00:34:15,520 --> 00:34:17,370 Ето защо х е 3 през цялото време. 838 00:34:17,370 --> 00:34:17,870 OK? 839 00:34:17,870 --> 00:34:20,195 840 00:34:20,195 --> 00:34:21,130 Добре. 841 00:34:21,130 --> 00:34:23,560 Така че тази програма не постигне това, което искахме. 842 00:34:23,560 --> 00:34:24,760 Сега нека да го оправя. 843 00:34:24,760 --> 00:34:27,440 >> И програмата за корекция е с помощта на указатели. 844 00:34:27,440 --> 00:34:32,300 Това, което правим е, че ние имаме три линии, които са различни. 845 00:34:32,300 --> 00:34:34,020 Първите е, че ние не сме преминаващи х. 846 00:34:34,020 --> 00:34:35,535 Ние сме преминаване на адреса на х. 847 00:34:35,535 --> 00:34:37,330 848 00:34:37,330 --> 00:34:40,876 Така че, вместо да копирате върху стойността на полето, 849 00:34:40,876 --> 00:34:42,500 Аз съм все още продължава да копира нещо. 850 00:34:42,500 --> 00:34:45,380 Но аз съм копиране върху адреса на кутията. 851 00:34:45,380 --> 00:34:48,780 >> Така че, ако премине на адреса на полето до пет, след това до пет 852 00:34:48,780 --> 00:34:51,560 ще бъде в състояние да установи, че в памет и променя своята стойност. 853 00:34:51,560 --> 00:34:53,980 854 00:34:53,980 --> 00:34:59,580 >> Така че и след това там, имам че вече не е Int. 855 00:34:59,580 --> 00:35:00,882 а е инт звезда. 856 00:35:00,882 --> 00:35:02,090 Това е указател към цяло число. 857 00:35:02,090 --> 00:35:03,790 858 00:35:03,790 --> 00:35:07,310 И след това, защото аз съм прехвърляха адрес тук и след това, което правя 859 00:35:07,310 --> 00:35:10,530 не е равнява 5, защото а държи адрес. 860 00:35:10,530 --> 00:35:16,710 Така че това, което искам да направя е да отида там и да актуализиране на съдържанието на този адрес 861 00:35:16,710 --> 00:35:18,305 с 5. 862 00:35:18,305 --> 00:35:21,130 >> ОК, така че нека да мине през Всички линии една по една. 863 00:35:21,130 --> 00:35:22,410 864 00:35:22,410 --> 00:35:26,024 Така че, когато започна тук, все още има N / A, N / A, N / A 865 00:35:26,024 --> 00:35:28,440 за всичко в първия линия, защото не съм наистина 866 00:35:28,440 --> 00:35:29,390 обявен неща все още. 867 00:35:29,390 --> 00:35:30,980 868 00:35:30,980 --> 00:35:35,110 И след това втора линия, имам х размер на 3. 869 00:35:35,110 --> 00:35:38,020 A INT звезда не съществуват, едно и също нещо, както преди. 870 00:35:38,020 --> 00:35:39,160 871 00:35:39,160 --> 00:35:40,640 >> Сега става интересно. 872 00:35:40,640 --> 00:35:42,300 Така че аз отивам да мине. 873 00:35:42,300 --> 00:35:45,720 И нека да приемем, че на адреса на х е 12 в шестнадесетичен вид. 874 00:35:45,720 --> 00:35:46,880 875 00:35:46,880 --> 00:35:48,420 Нека просто да приемем това. 876 00:35:48,420 --> 00:35:49,221 Направих го нагоре. 877 00:35:49,221 --> 00:35:51,680 878 00:35:51,680 --> 00:35:53,500 Така че това, което съм аз, минаваща тук е на пет. 879 00:35:53,500 --> 00:35:54,460 Аз съм минаваща 12. 880 00:35:54,460 --> 00:35:56,390 881 00:35:56,390 --> 00:35:58,610 >> Така че каква стойност е една имате? 882 00:35:58,610 --> 00:36:04,785 883 00:36:04,785 --> 00:36:06,210 >> STUDENT: [недоловим]. 884 00:36:06,210 --> 00:36:06,950 >> Binky: Моля? 885 00:36:06,950 --> 00:36:08,145 >> STUDENT: [недоловим]. 886 00:36:08,145 --> 00:36:10,520 Binky: Да, като, за да позволим на Предполагам, че ние сме тук, сега. 887 00:36:10,520 --> 00:36:11,540 888 00:36:11,540 --> 00:36:12,040 Питам. 889 00:36:12,040 --> 00:36:12,915 >> STUDENT: [недоловим]. 890 00:36:12,915 --> 00:36:13,590 891 00:36:13,590 --> 00:36:14,890 >> Binky: Тя е била започната. 892 00:36:14,890 --> 00:36:15,860 >> STUDENT: [недоловим]. 893 00:36:15,860 --> 00:36:17,985 Binky: Защото минахме нещо на функцията. 894 00:36:17,985 --> 00:36:19,431 895 00:36:19,431 --> 00:36:19,930 Да? 896 00:36:19,930 --> 00:36:20,899 >> STUDENT: Адрес на х. 897 00:36:20,899 --> 00:36:22,690 Binky: Това ще има адреса на х. 898 00:36:22,690 --> 00:36:25,800 И адреса на х е 12, добре. 899 00:36:25,800 --> 00:36:30,990 Така х ще бъде 3, защото ние наистина не са се променили х още. 900 00:36:30,990 --> 00:36:36,700 И тогава ще е 0x12, така адреса на х, защото това е 901 00:36:36,700 --> 00:36:38,840 това, което минахме до пет. 902 00:36:38,840 --> 00:36:40,940 >> И тогава какво ще се случи ако се опитаме да отидем там? 903 00:36:40,940 --> 00:36:42,145 Какво ще да се намери? 904 00:36:42,145 --> 00:36:47,120 Така че, ако се опитате да отпечатате звезда на, ние ще следваме този адрес 905 00:36:47,120 --> 00:36:48,620 и да получите стойността вътре. 906 00:36:48,620 --> 00:36:50,470 А стойността е просто една и съща стойност, че Х 907 00:36:50,470 --> 00:36:53,980 има, защото това е най- адрес на х, която ще бъде 3. 908 00:36:53,980 --> 00:36:55,440 909 00:36:55,440 --> 00:36:56,930 Дали сме добри? 910 00:36:56,930 --> 00:36:59,990 >> OK, и то сега, ние всъщност отиде там. 911 00:36:59,990 --> 00:37:05,510 И ние се актуализира независимо е в този адрес 12. 912 00:37:05,510 --> 00:37:07,390 Ние го направи пет. 913 00:37:07,390 --> 00:37:10,560 Така че сега х, така и звезда са 5. 914 00:37:10,560 --> 00:37:13,170 915 00:37:13,170 --> 00:37:13,680 >> Защо е това? 916 00:37:13,680 --> 00:37:17,070 Тъй като адреса на х е 12. 917 00:37:17,070 --> 00:37:20,920 И има и 12, както е неговата стойност. 918 00:37:20,920 --> 00:37:23,780 Така че, ако ние следваме 12, ние сме Просто ще намерите х. 919 00:37:23,780 --> 00:37:27,400 Така че каквото и да правим с звезда ще се случи 920 00:37:27,400 --> 00:37:30,790 Х, защото съдържа адреса на х. 921 00:37:30,790 --> 00:37:31,918 922 00:37:31,918 --> 00:37:32,418 OK? 923 00:37:32,418 --> 00:37:34,090 924 00:37:34,090 --> 00:37:37,750 >> И това е като същността на поправката. 925 00:37:37,750 --> 00:37:41,500 Така че сега ние сме в състояние, от до пет, всъщност 926 00:37:41,500 --> 00:37:43,840 достъп до паметта, която е живяла в основния. 927 00:37:43,840 --> 00:37:47,980 Така че тази памет не живее, за да пет, като преди, този адрес 12. 928 00:37:47,980 --> 00:37:50,980 И ние бяхме в състояние да отида там и променете стойността си до 5. 929 00:37:50,980 --> 00:37:53,990 >> И тогава, когато се върнем, ние забравяме за една. 930 00:37:53,990 --> 00:37:55,720 Забравяме за звезда. 931 00:37:55,720 --> 00:37:57,020 И х е още пет. 932 00:37:57,020 --> 00:37:58,327 933 00:37:58,327 --> 00:38:00,160 Така че, ако искате да изпълнява функция суап 934 00:38:00,160 --> 00:38:05,010 просто ще направи точно същото нещо, с изключение, което трябва да INT звезди тук, 935 00:38:05,010 --> 00:38:06,140 и така нататък и така нататък. 936 00:38:06,140 --> 00:38:06,976 OK? 937 00:38:06,976 --> 00:38:07,475 Дали сме добри? 938 00:38:07,475 --> 00:38:09,860 939 00:38:09,860 --> 00:38:10,610 Cool. 940 00:38:10,610 --> 00:38:12,410 >> Така показалеца аритметика. 941 00:38:12,410 --> 00:38:13,960 Това е малко по-сложен въпрос. 942 00:38:13,960 --> 00:38:16,554 Така се оказва, че указатели са само числа. 943 00:38:16,554 --> 00:38:17,970 Можете да мислите за тях като цели числа. 944 00:38:17,970 --> 00:38:21,080 Тъй като в паметта, трябва като памет адрес нула, едно, две, три, 945 00:38:21,080 --> 00:38:21,900 четири, пет. 946 00:38:21,900 --> 00:38:23,900 Така можем да обобщим памет адреси. 947 00:38:23,900 --> 00:38:27,230 >> И това е обикновено това, което правите, когато вие сте и масив, например. 948 00:38:27,230 --> 00:38:30,540 Един масив е точно като съседна блок на паметта, на много символи, 949 00:38:30,540 --> 00:38:31,840 например, много от цели числа. 950 00:38:31,840 --> 00:38:34,420 Така че, ако искате да отидете на второ инт или на третата ПНА, 951 00:38:34,420 --> 00:38:37,830 можете просто да обобщим нещо за първи адрес, и ти започваш да отида там. 952 00:38:37,830 --> 00:38:39,620 Така че това е наистина полезно за това. 953 00:38:39,620 --> 00:38:41,850 >> И нещо, за да се запази предвид, обаче, е 954 00:38:41,850 --> 00:38:45,140 че това не е точно като нормална аритметика в смисъл, 955 00:38:45,140 --> 00:38:50,304 че ако имаш работа с, да речем, пад на звезда, и се добавя 1 към него, 956 00:38:50,304 --> 00:38:52,220 тогава не започваш да се добави 1 на адреса, 957 00:38:52,220 --> 00:38:53,950 ти започваш да добавите 4 към адреса. 958 00:38:53,950 --> 00:38:55,030 959 00:38:55,030 --> 00:38:56,670 Тъй като едно цяло число е 4 байта. 960 00:38:56,670 --> 00:38:57,720 961 00:38:57,720 --> 00:38:59,540 >> Така че това е точно като ходене на масив. 962 00:38:59,540 --> 00:39:05,260 Ако имаме масив от много цели числа и След това ние се опитваме да отидете на втория, 963 00:39:05,260 --> 00:39:08,790 това е основно само сумиране на адрес на първия плюс 1. 964 00:39:08,790 --> 00:39:10,040 965 00:39:10,040 --> 00:39:13,425 Но това няма да be-- просто да кажем, че адресът на първия е 4. 966 00:39:13,425 --> 00:39:14,560 967 00:39:14,560 --> 00:39:16,250 Тук, в този случай. 968 00:39:16,250 --> 00:39:19,780 969 00:39:19,780 --> 00:39:22,850 И ако обобщим, така че това е това, което се случва. 970 00:39:22,850 --> 00:39:23,530 Имаме Int. 971 00:39:23,530 --> 00:39:25,640 Int х е равно на пет. 972 00:39:25,640 --> 00:39:26,950 X има стойност 5. 973 00:39:26,950 --> 00:39:31,240 И ние се инициализира този указател, инт у инт звезда у равнява на адреса на х. 974 00:39:31,240 --> 00:39:33,660 >> Нека предположим, адреса на х е 4. 975 00:39:33,660 --> 00:39:36,960 Какво ще се случи сега, ако аз сума се добавя 1 на у? 976 00:39:36,960 --> 00:39:39,110 977 00:39:39,110 --> 00:39:44,790 Това се случва всъщност сума 4 вместо само един. 978 00:39:44,790 --> 00:39:50,920 Така че аз добавите 1, но всъщност прибавя 4, защото компютъра умен. 979 00:39:50,920 --> 00:39:55,275 Така че това се случва наистина да добавите, като I пъти размера на вида на показалеца. 980 00:39:55,275 --> 00:39:56,340 981 00:39:56,340 --> 00:39:56,840 OK? 982 00:39:56,840 --> 00:39:58,030 983 00:39:58,030 --> 00:40:02,440 >> Така че, ако го бяха знак, например, ако това беше знак звезда Y, 984 00:40:02,440 --> 00:40:07,141 и ако ние добавихме един, то това би е 5, защото Чар е с дължина един байт. 985 00:40:07,141 --> 00:40:07,640 Добър? 986 00:40:07,640 --> 00:40:10,560 987 00:40:10,560 --> 00:40:13,190 >> И накрая, ние трябва да указатели и масиви. 988 00:40:13,190 --> 00:40:16,451 Оказва се, че всеки път, имаш работа с масив, 989 00:40:16,451 --> 00:40:18,075 вие всъщност се занимават с показалец. 990 00:40:18,075 --> 00:40:19,720 991 00:40:19,720 --> 00:40:24,777 Много хубаво концептуална причина за това е, че масиви са много големи. 992 00:40:24,777 --> 00:40:27,360 Така че не забравяйте, че казах, че всеки път, когато мине неща наоколо, 993 00:40:27,360 --> 00:40:29,097 копирате всичко. 994 00:40:29,097 --> 00:40:31,180 Така че, ако имате масив това е много, много голям, 995 00:40:31,180 --> 00:40:32,990 вие наистина не искате да копирайте всичко, всеки път, 996 00:40:32,990 --> 00:40:35,710 го Заобикаля към друг функция, защото това е просто 997 00:40:35,710 --> 00:40:37,190 огромно количество работа. 998 00:40:37,190 --> 00:40:39,710 Така че това, което правите е просто минало адреса на първия байт. 999 00:40:39,710 --> 00:40:40,969 1000 00:40:40,969 --> 00:40:44,010 И тогава функцията ще има достъп всички елементи в този масив. 1001 00:40:44,010 --> 00:40:48,670 Така премина масива от неговия адрес, така че адресът на първия байт. 1002 00:40:48,670 --> 00:40:53,010 >> Така че, ако ние заявяваме инт масив 3, тук, ние знаем, 1003 00:40:53,010 --> 00:40:57,470 как да получите достъп до първия елемент използване нотация скоба. 1004 00:40:57,470 --> 00:41:02,410 Ако си спомняте скобата нотация, масив скоба 0 е равна на 1. 1005 00:41:02,410 --> 00:41:06,330 Е, това би било точно същото като просто отидете там и сложи 1. 1006 00:41:06,330 --> 00:41:07,370 1007 00:41:07,370 --> 00:41:09,110 OK, е точно същото нещо. 1008 00:41:09,110 --> 00:41:13,010 Така скоба нотация тук ще бъде същата като тази линия. 1009 00:41:13,010 --> 00:41:18,600 >> И познайте какво нотация скоба за масив скоба 1 ще бъде? 1010 00:41:18,600 --> 00:41:20,440 Той просто ще бъде едно и също нещо като това. 1011 00:41:20,440 --> 00:41:22,500 Така добавите един към масив. 1012 00:41:22,500 --> 00:41:24,370 Преминаване една по памет. 1013 00:41:24,370 --> 00:41:26,310 Отиди там и сложи 2. 1014 00:41:26,310 --> 00:41:28,050 1015 00:41:28,050 --> 00:41:28,579 OK? 1016 00:41:28,579 --> 00:41:29,870 И тази линия е едно и също нещо. 1017 00:41:29,870 --> 00:41:34,860 Искаме да отидете на трета кутия, така масив плюс 2. 1018 00:41:34,860 --> 00:41:37,465 Отиди там и сложи 3. 1019 00:41:37,465 --> 00:41:39,340 Така в паметта, което е ще се случи е, че ние сме 1020 00:41:39,340 --> 00:41:44,400 няма да има 1, 2 и 3, като три елемента на този масив. 1021 00:41:44,400 --> 00:41:46,970 >> Бихме могли да са направили това с помощта познатата ни скоба нотация. 1022 00:41:46,970 --> 00:41:49,410 Аз просто искам вие да знаете че те са едно и също нещо. 1023 00:41:49,410 --> 00:41:50,530 1024 00:41:50,530 --> 00:41:53,010 OK, въпроси за това? 1025 00:41:53,010 --> 00:41:56,115 1026 00:41:56,115 --> 00:41:56,615 Ница. 1027 00:41:56,615 --> 00:41:57,990 1028 00:41:57,990 --> 00:41:59,880 Сега, аз отивам да се предаде то към Хана, 1029 00:41:59,880 --> 00:42:00,330 >> Хана: Уау, Йе-хау. 1030 00:42:00,330 --> 00:42:02,246 >> Binky: Да поговорим за памет и чл неща. 1031 00:42:02,246 --> 00:42:06,554 [Аплодисменти] 1032 00:42:06,554 --> 00:42:10,150 >> Хана: Hi, хладно, така че ние сме ще говорим малко по- 1033 00:42:10,150 --> 00:42:13,090 за памет, който току-що Адресати на използване на указатели. 1034 00:42:13,090 --> 00:42:16,060 Така че има две основни части на памет, която ние сме загрижени. 1035 00:42:16,060 --> 00:42:18,830 Имаме стека, което расте в дъното, и куп, които 1036 00:42:18,830 --> 00:42:20,600 слиза от върха. 1037 00:42:20,600 --> 00:42:24,690 И стека ще се проведе всички наши инстанция променливи. 1038 00:42:24,690 --> 00:42:28,860 Така всеки призовава към функция получава своя собствена малка рамка на стека. 1039 00:42:28,860 --> 00:42:32,160 Така че, както споменах по-рано Габе, ако ние обадете се отново и отново, функцията, 1040 00:42:32,160 --> 00:42:34,180 отиваме да подредят нещата в стека. 1041 00:42:34,180 --> 00:42:35,220 1042 00:42:35,220 --> 00:42:38,570 >> И по същия начин, на куп, който започва от върха 1043 00:42:38,570 --> 00:42:42,660 ще държи всички на паметта че сме динамично разпредели. 1044 00:42:42,660 --> 00:42:45,110 И така, както ние динамично памет, 1045 00:42:45,110 --> 00:42:47,580 това ще слезе към дъното. 1046 00:42:47,580 --> 00:42:51,340 Двойка неща, за да бъдат наясно кога ние сме с помощта на комина и на куп, 1047 00:42:51,340 --> 00:42:55,200 със стак, ако имаме твърде many-- нека say-- рекурсивни повиквания, 1048 00:42:55,200 --> 00:42:58,392 и ние се обаждате функция отново и отново, и отново, и отново, 1049 00:42:58,392 --> 00:43:00,350 и това е стифиране, стифиране, подреждане нагоре. 1050 00:43:00,350 --> 00:43:01,570 И това се случва да се блъсне в купчината. 1051 00:43:01,570 --> 00:43:03,040 Отиваме да тече от паметта. 1052 00:43:03,040 --> 00:43:05,100 Това ще доведе до проблем за компютъра. 1053 00:43:05,100 --> 00:43:06,770 И това се нарича стека преливане. 1054 00:43:06,770 --> 00:43:09,728 Така че определено ви нещо трябва да е наясно и да се опитват да избегнат. 1055 00:43:09,728 --> 00:43:10,228 1056 00:43:10,228 --> 00:43:14,050 И купчината, трябва да се помни Не случайно изтече памет. 1057 00:43:14,050 --> 00:43:17,950 Всеки път, когато използвате изчистване, не забравяйте да освободи този спомен. 1058 00:43:17,950 --> 00:43:20,040 Просто противен случай, тя ще е на куп губи, 1059 00:43:20,040 --> 00:43:23,230 и компютърът няма да знаят, че той е свободен да използва тази памет. 1060 00:43:23,230 --> 00:43:25,810 Така че тези, които са няколко неща да бъдат много внимателни, когато с 1061 00:43:25,810 --> 00:43:28,580 сте се занимават с комина и куп. 1062 00:43:28,580 --> 00:43:30,412 Всички въпроси, с това? 1063 00:43:30,412 --> 00:43:31,304 Awesome. 1064 00:43:31,304 --> 00:43:31,900 >> OK, хладно. 1065 00:43:31,900 --> 00:43:32,940 1066 00:43:32,940 --> 00:43:36,810 Така че този вид има едни и същи идея стека преливане, където 1067 00:43:36,810 --> 00:43:39,850 отиваме отвъд на границите на това, което памет 1068 00:43:39,850 --> 00:43:41,960 е, че ние би трябвало да бъде в състояние да използвате. 1069 00:43:41,960 --> 00:43:45,077 Така че, например, буфер, или може просто да мисля за него като масив. 1070 00:43:45,077 --> 00:43:47,660 И ние казахме, ОК, ние ще създаване на този хубав малък масив. 1071 00:43:47,660 --> 00:43:49,140 Това ще бъде низ. 1072 00:43:49,140 --> 00:43:50,630 Или тя ще се съхранява знаци. 1073 00:43:50,630 --> 00:43:51,720 И това е просто щях да кажа здрасти. 1074 00:43:51,720 --> 00:43:52,678 И това е неопределен. 1075 00:43:52,678 --> 00:43:53,990 Това е всичко. 1076 00:43:53,990 --> 00:43:58,240 >> Но ако бях някой зъл и исках да направи нещо лошо с този масив, какво 1077 00:43:58,240 --> 00:44:02,310 Което можех да направя е да се опитаме да пиша след края на низа. 1078 00:44:02,310 --> 00:44:04,490 И както ще видите, ако Пиша достатъчно далеч, 1079 00:44:04,490 --> 00:44:06,980 Аз всъщност може да засегне обратен адрес. 1080 00:44:06,980 --> 00:44:09,530 И ако аз започвам да се отрази обратен адрес, 1081 00:44:09,530 --> 00:44:11,730 Аз се отрази на начина на програмата действително работи. 1082 00:44:11,730 --> 00:44:15,900 И вместо да се завърне, можете знаете, щастлив низ като здравей, аз 1083 00:44:15,900 --> 00:44:19,460 може да направи нещо лошо, като отидете на някъде другаде в компютъра си, все още 1084 00:44:19,460 --> 00:44:22,146 памет, променете го, каквото си искам да направя. 1085 00:44:22,146 --> 00:44:25,020 Така че това е, което това ще изглежда като е, ако аз просто вид го напълни 1086 00:44:25,020 --> 00:44:27,400 със случайна стойност боклук, в този случай, просто. 1087 00:44:27,400 --> 00:44:30,490 И тогава, когато аз всъщност стигнах до адреса на паметта, 1088 00:44:30,490 --> 00:44:33,740 Аз започнах да я изпълва с нещо че направих това, което исках да направя. 1089 00:44:33,740 --> 00:44:34,952 1090 00:44:34,952 --> 00:44:36,410 Всички въпроси с препълване на буфера? 1091 00:44:36,410 --> 00:44:38,450 1092 00:44:38,450 --> 00:44:40,730 Страхотно, летящ право чрез тези неща. 1093 00:44:40,730 --> 00:44:43,530 >> ОК, така че ние говорихме много около показалеца с Гейб. 1094 00:44:43,530 --> 00:44:45,790 Как да се получи в действителност указател? 1095 00:44:45,790 --> 00:44:48,070 Как да получите на адрес в паметта? 1096 00:44:48,070 --> 00:44:51,040 Е, можем да използваме тази хубава извикване на функция изчистване, които 1097 00:44:51,040 --> 00:44:53,370 ще се получи малка част от паметта, 1098 00:44:53,370 --> 00:44:55,480 специално в грамада, както обсъждахме, 1099 00:44:55,480 --> 00:44:59,780 и това ще ви даде обратно показалеца на този адрес в паметта. 1100 00:44:59,780 --> 00:45:01,950 А аргументът, че ние трябва да се даде на изчистване 1101 00:45:01,950 --> 00:45:04,280 е колко място в паметта, което искаме. 1102 00:45:04,280 --> 00:45:06,100 >> Така че можете да видите размера в байтове. 1103 00:45:06,100 --> 00:45:08,670 Да кажем, например, или Всъщност, в този пример, 1104 00:45:08,670 --> 00:45:12,040 заделяме достатъчно пространство за 10 числа. 1105 00:45:12,040 --> 00:45:15,640 Така че най-вероятно това, което ще искате да се сложи тук е масив от 10 числа. 1106 00:45:15,640 --> 00:45:19,641 Така че ние го дам размер на цели числа, които Научихме е колко байта? 1107 00:45:19,641 --> 00:45:20,140 STUDENT: 4. 1108 00:45:20,140 --> 00:45:22,920 Хана: 4, красива, и ние искам 10 от тези в един ред, 1109 00:45:22,920 --> 00:45:28,050 така че имаме достатъчно пространство, за да съхранява всички 10 числа, в този случай. 1110 00:45:28,050 --> 00:45:31,290 Нещо супер важно, всеки път, когато се обадя изчистване, 1111 00:45:31,290 --> 00:45:32,880 трябва да се провери за нищожна. 1112 00:45:32,880 --> 00:45:37,310 Ако не се проверява за нищожна, добре, изчистване ако изтече на пространството 1113 00:45:37,310 --> 00:45:40,400 и вече не може да ви даде всеки повече памет, тя ще се върне нула. 1114 00:45:40,400 --> 00:45:42,060 1115 00:45:42,060 --> 00:45:45,630 Така че, ако не се провери, изчистване може да се върне нула. 1116 00:45:45,630 --> 00:45:51,265 И след това, ако ние се опитваме да сочен нулев указател, 1117 00:45:51,265 --> 00:45:54,960 ние ще получим грешка сегментация, които ние ще говорим за сега. 1118 00:45:54,960 --> 00:45:56,150 1119 00:45:56,150 --> 00:45:56,650 Awesome. 1120 00:45:56,650 --> 00:45:58,300 >> OK, въпроси с изчистване? 1121 00:45:58,300 --> 00:46:00,044 1122 00:46:00,044 --> 00:46:00,544 Да? 1123 00:46:00,544 --> 00:46:05,460 >> STUDENT: Има ли проверка на нула [Недоловим] не го правете на теста? 1124 00:46:05,460 --> 00:46:08,100 >> Хана: Разбира се, въпросът е пък matter-- на теста, 1125 00:46:08,100 --> 00:46:10,420 ще получите точки изключва, ако не проверява за нищожна? 1126 00:46:10,420 --> 00:46:12,794 Да, вие ще получите точки от ако не се проверява за нищожна. 1127 00:46:12,794 --> 00:46:16,030 Всеки път, когато ти се обадя изчистване, както на викторина и вашите psets и в реалния живот, 1128 00:46:16,030 --> 00:46:17,155 трябва да се провери за нищожна. 1129 00:46:17,155 --> 00:46:18,330 Добър въпрос. 1130 00:46:18,330 --> 00:46:19,689 >> ГАБЕ: Какво става, ако не се освободи? 1131 00:46:19,689 --> 00:46:21,730 Хана: Гейб иска да знае какво ще стане ако не го направим безплатно. 1132 00:46:21,730 --> 00:46:25,030 Тогава ще имаме памет течове в нашата купчина. 1133 00:46:25,030 --> 00:46:26,140 Всякакви други въпроси? 1134 00:46:26,140 --> 00:46:27,550 Да? 1135 00:46:27,550 --> 00:46:30,120 >> STUDENT: Може you-- отидем препълване на буфера много бързо отново? 1136 00:46:30,120 --> 00:46:30,530 >> Хана: Разбира се. 1137 00:46:30,530 --> 00:46:33,071 Въпросът е можем ли да отидем препълване на буфера наистина бързо. 1138 00:46:33,071 --> 00:46:35,050 Нека се върнем към тези пързалки. 1139 00:46:35,050 --> 00:46:37,430 Просто така буфер, можете мисля за него като масив, нали? 1140 00:46:37,430 --> 00:46:39,360 Имате малко пространство в паметта. 1141 00:46:39,360 --> 00:46:43,580 И когато за първи път се създаде нашата масив, знаем масиви са с фиксирани размери, 1142 00:46:43,580 --> 00:46:45,470 или ни буфер има фиксиран размер. 1143 00:46:45,470 --> 00:46:51,360 >> Така че нека да кажем, че в този случай, ние имаме само достатъчно пространство, за да напишете низ здрасти. 1144 00:46:51,360 --> 00:46:57,340 Ако отидем минало, граница, ако отидем минало какво ни масив казахме, че може да държи, 1145 00:46:57,340 --> 00:46:59,780 ние всъщност може да започне писане в паметта 1146 00:46:59,780 --> 00:47:01,780 че компютърът не искат от нас да напише в. 1147 00:47:01,780 --> 00:47:02,810 1148 00:47:02,810 --> 00:47:05,580 И по-специално, ако се удари нещо като завръщане 1149 00:47:05,580 --> 00:47:08,700 Адрес на функцията, която, като всяка друга част от паметта, 1150 00:47:08,700 --> 00:47:11,420 е просто някъде в компютър, можете всъщност 1151 00:47:11,420 --> 00:47:14,080 промени това и да започнете да правите зло. 1152 00:47:14,080 --> 00:47:15,272 Отговор на въпроса ви? 1153 00:47:15,272 --> 00:47:16,230 Страхотно, нещо друго? 1154 00:47:16,230 --> 00:47:17,466 Да? 1155 00:47:17,466 --> 00:47:21,948 >> STUDENT: Така стека [недоловим], можете каза отида от дъното върви нагоре. 1156 00:47:21,948 --> 00:47:25,434 В стека обхват, прави паметта премине от, като, 1157 00:47:25,434 --> 00:47:27,230 отгоре надолу, отнасящи се до всяка почивка? 1158 00:47:27,230 --> 00:47:28,646 1159 00:47:28,646 --> 00:47:32,100 >> Хана: Как you-- направя отложи за Rob на този един. 1160 00:47:32,100 --> 00:47:35,370 1161 00:47:35,370 --> 00:47:38,213 >> ROB: Тя ще се развива в същото посока, както стека расте. 1162 00:47:38,213 --> 00:47:38,712 Хана: OK. 1163 00:47:38,712 --> 00:47:40,967 ROB: Така че аз се обърквам. 1164 00:47:40,967 --> 00:47:42,331 Това ще бъде абстракция. 1165 00:47:42,331 --> 00:47:42,831 Хана: OK. 1166 00:47:42,831 --> 00:47:44,000 ROB: Това е вярно. 1167 00:47:44,000 --> 00:47:49,420 Така че, ако топчето се разраства , а след това го generally-- 1168 00:47:49,420 --> 00:47:52,380 не трябва да бъде по този начин. но вие може да обяви INT х. 1169 00:47:52,380 --> 00:47:54,120 След това можете да декларира INT база. 1170 00:47:54,120 --> 00:47:57,300 Тогава INT х цяло ще бъде по-ниска в стека от INT база. 1171 00:47:57,300 --> 00:47:59,300 Но това е просто факт. 1172 00:47:59,300 --> 00:48:02,410 Това не е като едно важно нещо семена. 1173 00:48:02,410 --> 00:48:06,800 >> ROB: Така че въпросът отново беше просто това, което се случва всеки кадър се изгражда. 1174 00:48:06,800 --> 00:48:08,960 Така че всяка функция получава малка част от стека. 1175 00:48:08,960 --> 00:48:13,030 И както и да отидеш до, в рамките на този малко парче, в рамките на тази рамка, 1176 00:48:13,030 --> 00:48:16,710 ще кажа, че променливи в тази рамка да се движи нагоре. 1177 00:48:16,710 --> 00:48:17,473 Въпрос? 1178 00:48:17,473 --> 00:48:18,688 >> ROB: Просто да бъде на микрофон. 1179 00:48:18,688 --> 00:48:19,396 Хана: О, да. 1180 00:48:19,396 --> 00:48:20,440 ROB: Ще говоря в теб. 1181 00:48:20,440 --> 00:48:21,410 Хана: О, да, OK. 1182 00:48:21,410 --> 00:48:24,150 ROB: Изключение е за масиви и structs, 1183 00:48:24,150 --> 00:48:27,470 където масиви, нисша индекс в масива, 1184 00:48:27,470 --> 00:48:29,930 и в structs по-висок поле в structs 1185 00:48:29,930 --> 00:48:35,040 са гарантирани за да бъде на по-ниски адреси от по-късен стойност в масива. 1186 00:48:35,040 --> 00:48:36,720 Така че тези, които са гарантирани. 1187 00:48:36,720 --> 00:48:40,310 Но каквито и да било конкретни променливи в рамките на, като INT х и инт у рамките на функция, 1188 00:48:40,310 --> 00:48:43,030 там не е необходима връзка между техните адреси. 1189 00:48:43,030 --> 00:48:44,882 1190 00:48:44,882 --> 00:48:46,340 Хана: Друг въпрос тук? 1191 00:48:46,340 --> 00:48:51,620 STUDENT: Така че в буфер поток, само препълване на буфера 1192 00:48:51,620 --> 00:48:54,980 само се е случило, когато са, като, възложени 1193 00:48:54,980 --> 00:49:01,056 размер на масив че тогава е по-голям? 1194 00:49:01,056 --> 00:49:03,230 Например, може ли? 1195 00:49:03,230 --> 00:49:05,435 Така че, ако питате за нещо от user-- 1196 00:49:05,435 --> 00:49:06,018 >> Хана: Мм-хм. 1197 00:49:06,018 --> 00:49:08,600 STUDENT: Може ли те насила ви дам нещо обратно 1198 00:49:08,600 --> 00:49:11,777 че е по-голям, отколкото каквото и сте разпределени за тях? 1199 00:49:11,777 --> 00:49:13,610 Хана: Разбира се, така че въпрос е основно, 1200 00:49:13,610 --> 00:49:16,217 може потребителят да ви даде повече, отколкото си поиска? 1201 00:49:16,217 --> 00:49:16,800 Студентът: Да. 1202 00:49:16,800 --> 00:49:18,480 Хана: Добре, бихте могли да се предотврати потребителят да прави това. 1203 00:49:18,480 --> 00:49:21,350 Трябва задължително да се каже, не го правят дай ми повече от х броя от байтове 1204 00:49:21,350 --> 00:49:24,330 Аз само ви дава възможност за х броя байтове, х брой символи. 1205 00:49:24,330 --> 00:49:25,700 Така че това е нещо, което искате да се предотврати. 1206 00:49:25,700 --> 00:49:26,199 Да? 1207 00:49:26,199 --> 00:49:30,270 Каква е разликата между стека преливане и препълване на буфера? 1208 00:49:30,270 --> 00:49:32,140 >> Хана: ОК, така че топчето overflow-- ох, какво 1209 00:49:32,140 --> 00:49:34,790 е разликата между стак преливник и препълване на буфера? 1210 00:49:34,790 --> 00:49:37,581 Така че ние искаме да се мисли за стек преливане случва, когато сме в действителност 1211 00:49:37,581 --> 00:49:39,530 подреждане на тези извиквания. 1212 00:49:39,530 --> 00:49:42,991 Да кажем, че имате рекурсивни функции, защото ние знаем, че всяко ваше време 1213 00:49:42,991 --> 00:49:45,240 наричаме функция, тя е получава своя собствена рамка на стека. 1214 00:49:45,240 --> 00:49:47,950 >> Така че ние се натрупват твърде висока, и След това започваме да прелее. 1215 00:49:47,950 --> 00:49:50,530 И ние използваме прекалено много памет, А ние не са навсякъде наляво. 1216 00:49:50,530 --> 00:49:51,590 Ние получаваме тази грешка. 1217 00:49:51,590 --> 00:49:53,930 >> Препълване на буфера е в рамките на програмата. 1218 00:49:53,930 --> 00:49:57,180 Ние искаме да не е задължително да има изчерпване на паметта по същия начин, 1219 00:49:57,180 --> 00:50:00,080 че бихме могли, ако ние сме подреждане толкова много извиквания на функции, 1220 00:50:00,080 --> 00:50:04,540 но пишем покрай паметта че ние знаем, ние можем да използваме. 1221 00:50:04,540 --> 00:50:06,170 И това ни позволява да правим зло. 1222 00:50:06,170 --> 00:50:08,060 1223 00:50:08,060 --> 00:50:08,560 Така ли? 1224 00:50:08,560 --> 00:50:10,950 >> ROB: Да, може да искате просто да се повтаря това, 1225 00:50:10,950 --> 00:50:12,699 но можете също така да мисля на купчина преливник 1226 00:50:12,699 --> 00:50:15,374 тъй като специфичен вид от препълване на буфера. 1227 00:50:15,374 --> 00:50:17,665 Или можете просто да мисля за вашата стека като наистина голям буфер. 1228 00:50:17,665 --> 00:50:20,724 Тогава, когато прелее стека, това е нещо като препълване на буфера. 1229 00:50:20,724 --> 00:50:23,390 Но купчина преливник е просто специфичен термин, използван, когато топчето 1230 00:50:23,390 --> 00:50:24,310 се прелива. 1231 00:50:24,310 --> 00:50:27,500 >> Хана: Добре, така да се Повтарям за видеото, 1232 00:50:27,500 --> 00:50:31,756 то можеш да се сетиш на стека преливане като специфичен вид препълване на буфера. 1233 00:50:31,756 --> 00:50:33,040 Cool? 1234 00:50:33,040 --> 00:50:34,562 Всякакви други въпроси, преди да продължи? 1235 00:50:34,562 --> 00:50:35,380 1236 00:50:35,380 --> 00:50:35,880 Awesome. 1237 00:50:35,880 --> 00:50:37,130 1238 00:50:37,130 --> 00:50:39,727 >> OK, хладно, така че нека да говорим за някои често срещани съобщения за грешка. 1239 00:50:39,727 --> 00:50:42,060 Това е нещо, което има появиха на множество тестове, 1240 00:50:42,060 --> 00:50:44,740 така че нещо, което си струва като втори поглед. 1241 00:50:44,740 --> 00:50:46,860 Сигурен съм, че сте се срещнали поне някои от тях 1242 00:50:46,860 --> 00:50:48,690 като правиш проблема си поставя. 1243 00:50:48,690 --> 00:50:50,980 Така че се уверете, че можете да говорите за тях на теста. 1244 00:50:50,980 --> 00:50:52,990 >> Така че първата е сегментиране вина. 1245 00:50:52,990 --> 00:50:55,250 И това е всеки път, когато пробвате достъп до паметта 1246 00:50:55,250 --> 00:50:57,130 че не ти е позволено да имат достъп. 1247 00:50:57,130 --> 00:51:00,280 Така че migh съм виждал това, например, при пробив. 1248 00:51:00,280 --> 00:51:03,390 Ако се открие сблъсък върне нула, а след това 1249 00:51:03,390 --> 00:51:05,500 Опитах се да направя нещо с тази нищожна стойност, 1250 00:51:05,500 --> 00:51:08,147 компютърът ще даде вие вина сегментация. 1251 00:51:08,147 --> 00:51:10,730 Така един, важно нещо, за да направи, за да се опита да избегне този 1252 00:51:10,730 --> 00:51:12,000 е винаги да се проверява за нищожна. 1253 00:51:12,000 --> 00:51:13,300 1254 00:51:13,300 --> 00:51:16,180 >> Може би сте виждали имплицитно декларация на функция. 1255 00:51:16,180 --> 00:51:18,370 Така че това е, което се случва, когато Алисън ви показахме 1256 00:51:18,370 --> 00:51:20,150 как да се направи прототип, нали? 1257 00:51:20,150 --> 00:51:23,440 Така че нека да кажем, че имаме някои функция, която ние определяме. 1258 00:51:23,440 --> 00:51:24,440 Да кажем, че куб. 1259 00:51:24,440 --> 00:51:27,120 Това важи в долната на нашата функция, с основна. 1260 00:51:27,120 --> 00:51:35,205 >> Ако забравите да кажете на компютъра за куб, когато основната опитва да набере куб, 1261 00:51:35,205 --> 00:51:36,830 компютърът ще бъде, като, о, Боже. 1262 00:51:36,830 --> 00:51:38,300 Нямам представа какво означава това. 1263 00:51:38,300 --> 00:51:39,760 Аз не знам какво да правя, тук. 1264 00:51:39,760 --> 00:51:41,594 Така че прототипът казва не се притеснявай. 1265 00:51:41,594 --> 00:51:42,510 Отивам да ви кажа. 1266 00:51:42,510 --> 00:51:43,132 >> Той ще дойде. 1267 00:51:43,132 --> 00:51:43,840 Не крещи по мен. 1268 00:51:43,840 --> 00:51:46,697 Не ми даде мълчаливо декларация на функция. 1269 00:51:46,697 --> 00:51:49,280 Така че, ако можете да получите тази грешка, един нещо, което ще искате да направите, 1270 00:51:49,280 --> 00:51:50,821 , е да се уверете, че имате си прототип. 1271 00:51:50,821 --> 00:51:52,320 1272 00:51:52,320 --> 00:51:53,230 OK? 1273 00:51:53,230 --> 00:51:55,680 >> И накрая, но не на последно място, недекларирания идентификатор 1274 00:51:55,680 --> 00:52:00,570 е по същество, когато се опитате да използвате променлива, която не е обявена. 1275 00:52:00,570 --> 00:52:03,449 Така изведнъж да започнете казвайки като п плюс плюс. 1276 00:52:03,449 --> 00:52:04,740 И компютърът казва какво е п? 1277 00:52:04,740 --> 00:52:06,660 Вие никога не ми каза, п е нещо. 1278 00:52:06,660 --> 00:52:10,930 >> Така че едно нещо, което трябва да се уверете, че сте направил е кажете на компютъра какво е п. 1279 00:52:10,930 --> 00:52:13,320 Така например, п може да бъде цяло число. 1280 00:52:13,320 --> 00:52:14,999 И тогава ще се избегне тази грешка. 1281 00:52:14,999 --> 00:52:16,290 Всякакви въпроси относно общите грешки? 1282 00:52:16,290 --> 00:52:17,260 Да? 1283 00:52:17,260 --> 00:52:19,344 >> STUDENT: За неявните декларация на функция, 1284 00:52:19,344 --> 00:52:22,343 биха могли също така да бъде, че се пропусне един на библиотеките е трябвало 1285 00:52:22,343 --> 00:52:24,400 да се включи, а от прототип? 1286 00:52:24,400 --> 00:52:26,359 >> Хана: Добре, така че въпрос е, може ли 1287 00:52:26,359 --> 00:52:28,650 също така да получите тази грешка, ако Забравих да включва библиотека. 1288 00:52:28,650 --> 00:52:29,085 >> Студентът: Да. 1289 00:52:29,085 --> 00:52:30,876 >> Хана: Абсолютно, защото по същия начин 1290 00:52:30,876 --> 00:52:33,540 че искаме да поставяме нашите прототипи преди основната функция, 1291 00:52:33,540 --> 00:52:37,717 ако имаме библиотека, които ще по същество включва прототипи, 1292 00:52:37,717 --> 00:52:39,425 включва определения на функциите. 1293 00:52:39,425 --> 00:52:40,585 Голям въпрос. 1294 00:52:40,585 --> 00:52:43,230 >> STUDENT: За сегментиране вина, които също ще 1295 00:52:43,230 --> 00:52:47,350 се случи, ако ние, като се опита за достъп до променлива, 1296 00:52:47,350 --> 00:52:51,947 като, по различен [недоловим] отколкото беше обявено в? 1297 00:52:51,947 --> 00:52:54,030 Хана: Разбира се, това би ни получите грешка сегментация 1298 00:52:54,030 --> 00:52:56,270 ако се опитаме да имат достъп до променлива извън обхвата? 1299 00:52:56,270 --> 00:52:57,104 Дали това е въпрос? 1300 00:52:57,104 --> 00:52:57,645 Студентът: Да. 1301 00:52:57,645 --> 00:52:58,430 Хана: Beautiful. 1302 00:52:58,430 --> 00:53:01,840 Така че най-вероятно, ти започваш да се получи недекларирания грешка идентификатор вместо това. 1303 00:53:01,840 --> 00:53:04,006 Така че това е просто щях да кажа Аз не знам какво е това. 1304 00:53:04,006 --> 00:53:04,920 1305 00:53:04,920 --> 00:53:05,920 Cool, нещо друго? 1306 00:53:05,920 --> 00:53:07,744 1307 00:53:07,744 --> 00:53:08,980 Да, добре, красива. 1308 00:53:08,980 --> 00:53:10,330 1309 00:53:10,330 --> 00:53:12,400 >> All righty, така рекурсия. 1310 00:53:12,400 --> 00:53:15,160 Така че аз споменах няколко пъти че бихме могли да получите купчина преливник 1311 00:53:15,160 --> 00:53:17,919 защото ние се обаждате ни рекурсивни функции толкова много пъти. 1312 00:53:17,919 --> 00:53:20,210 Ние получаваме всички тези чипове рамки, дрън, дрън, дрън. 1313 00:53:20,210 --> 00:53:22,420 Какво още е рекурсивна функция? 1314 00:53:22,420 --> 00:53:25,680 Е, рекурсивно функция е всяка функция, която нарича себе си. 1315 00:53:25,680 --> 00:53:26,820 1316 00:53:26,820 --> 00:53:30,160 >> Някои неща, за да бъдат наясно, когато прилагат рекурсивна функция, 1317 00:53:30,160 --> 00:53:31,940 не забравяйте да включите база случай. 1318 00:53:31,940 --> 00:53:34,010 База случай е точка, в която можем да свърши. 1319 00:53:34,010 --> 00:53:38,740 Така, например, ако ние сме за кодиране, , Да речем, на Фибоначи рекурсивно 1320 00:53:38,740 --> 00:53:43,210 ние искаме да се уверите, че когато стигнем или първото число на Фибоначи 0, 1321 00:53:43,210 --> 00:53:46,220 тези две числа са тези случаи, защото тези, които не са зависими 1322 00:53:46,220 --> 00:53:47,700 за неща, които са били преди. 1323 00:53:47,700 --> 00:53:48,990 Тези, които имат свои собствени ценности. 1324 00:53:48,990 --> 00:53:51,270 1325 00:53:51,270 --> 00:53:55,320 >> Някои плюсове на рекурсия, което е въпрос, който съм виждал в последните тестове. 1326 00:53:55,320 --> 00:53:57,930 Те могат да доведат до по- стегнат, елегантен код. 1327 00:53:57,930 --> 00:54:00,510 И много функции, а много различни алгоритми, 1328 00:54:00,510 --> 00:54:02,350 всъщност се поддават на рекурсия. 1329 00:54:02,350 --> 00:54:05,510 Тяхната дефиниция може да бъде рекурсивни и на себе си. 1330 00:54:05,510 --> 00:54:06,980 Така Фибоначи е един. 1331 00:54:06,980 --> 00:54:07,860 Факторен е един. 1332 00:54:07,860 --> 00:54:10,480 Обединяване на подреждане е one-- всички неща, които можете да погледнете. 1333 00:54:10,480 --> 00:54:12,650 1334 00:54:12,650 --> 00:54:13,460 OK, някакви въпроси? 1335 00:54:13,460 --> 00:54:13,960 Да? 1336 00:54:13,960 --> 00:54:15,644 1337 00:54:15,644 --> 00:54:19,612 >> STUDENT: Има случай в корнер подобно на база случай? 1338 00:54:19,612 --> 00:54:22,590 Или е, че за някои други вид [недоловим]? 1339 00:54:22,590 --> 00:54:25,170 >> Хана: Разбира се, така че ъглов случай е any-- така 1340 00:54:25,170 --> 00:54:27,580 е ъглов случай същите като базов модел? 1341 00:54:27,580 --> 00:54:32,825 Случай ъгъл е нещо, което си код може да се държи малко по-различно. 1342 00:54:32,825 --> 00:54:34,450 1343 00:54:34,450 --> 00:54:38,610 Base случай е нещо свързано, в че те са като особени случаи 1344 00:54:38,610 --> 00:54:40,240 че искате да погледнете. 1345 00:54:40,240 --> 00:54:43,240 Но идеята за базов модел е, че искате рекурсивна функция 1346 00:54:43,240 --> 00:54:44,870 да спре в някакъв момент. 1347 00:54:44,870 --> 00:54:46,490 Тя не може да се запази, наричаща себе си завинаги. 1348 00:54:46,490 --> 00:54:47,781 Това трябва да спре в някакъв момент. 1349 00:54:47,781 --> 00:54:49,340 1350 00:54:49,340 --> 00:54:53,460 >> Роб: Да, често, вашите основни случаи може да бъде примери за ъглови бази. 1351 00:54:53,460 --> 00:54:55,876 >> Хана: Да, готино, нещо? 1352 00:54:55,876 --> 00:54:58,732 >> STUDENT: Бихте ли обяснили основава малко повече? 1353 00:54:58,732 --> 00:55:01,600 Аз не разбирам [Недоловим] базови случаи. 1354 00:55:01,600 --> 00:55:02,676 >> Хана: От базови случаи? 1355 00:55:02,676 --> 00:55:03,140 >> STUDENT: Базови случаи, да. 1356 00:55:03,140 --> 00:55:03,770 >> Хана: О, да, разбира се. 1357 00:55:03,770 --> 00:55:04,270 Нека да видим. 1358 00:55:04,270 --> 00:55:05,480 Имаме ли тебешир тук? 1359 00:55:05,480 --> 00:55:06,690 1360 00:55:06,690 --> 00:55:07,320 Да, ние правим. 1361 00:55:07,320 --> 00:55:09,530 ОК, така че наистина бързо, аз ще опитам да напиша достатъчно голям 1362 00:55:09,530 --> 00:55:11,320 така че можете да видите на екрана. 1363 00:55:11,320 --> 00:55:13,490 Нека поговорим за това, наистина бързо, Фибоначи. 1364 00:55:13,490 --> 00:55:15,550 Така че аз ще ви дам последователността на Фибоначи. 1365 00:55:15,550 --> 00:55:17,090 Можете да се запознаете с това определение. 1366 00:55:17,090 --> 00:55:26,050 >> По същество, всеки брой в последователността е сумата на предишните две числа. 1367 00:55:26,050 --> 00:55:29,720 ОК, така че начинът, по който аз що описах Фибоначи, 1368 00:55:29,720 --> 00:55:31,530 можете да чуете на рекурсия, нали? 1369 00:55:31,530 --> 00:55:35,280 Когато казах, всеки номер е сума на предишните две числа, 1370 00:55:35,280 --> 00:55:36,420 бихме могли да кажем OK. 1371 00:55:36,420 --> 00:55:38,570 Е, тото Фибоначи number-- така че нека 1372 00:55:38,570 --> 00:55:42,260 кажем, че имаме тази функция наречен fib-- ПИБ п 1373 00:55:42,260 --> 00:55:48,260 ще бъде равна на ПИБ п минус 1 plus-- съжалявам, 1374 00:55:48,260 --> 00:55:51,240 ние ще преминете към следващия ред над here-- ПИБ п минус 2. 1375 00:55:51,240 --> 00:55:52,790 1376 00:55:52,790 --> 00:55:56,790 >> ОК, така че това работи чудесно, ако сте гледа, например, нула, едно, 1377 00:55:56,790 --> 00:55:59,410 две, три, четири, Петият брой на Фибоначи, 1378 00:55:59,410 --> 00:56:03,561 където може да се каже, че 5 е равно на 2 плюс 3. 1379 00:56:03,561 --> 00:56:05,060 Но какво, ако сте в началото? 1380 00:56:05,060 --> 00:56:07,184 Какво става, ако сте просто се разхождаш тези първи две стойности? 1381 00:56:07,184 --> 00:56:08,470 1382 00:56:08,470 --> 00:56:11,330 >> За да се получи това един, не можеш казват, добави предишните две, 1383 00:56:11,330 --> 00:56:13,930 защото това нула and-- аз не знам. 1384 00:56:13,930 --> 00:56:15,390 Така че в някакъв момент, ние трябва да се спре. 1385 00:56:15,390 --> 00:56:21,250 В един момент, ние трябва да кажем, че тези два просто имат свои собствени определения. 1386 00:56:21,250 --> 00:56:23,890 Номер 0 Фибоначи е 0. 1387 00:56:23,890 --> 00:56:26,115 И първото число на Фибоначи е 1. 1388 00:56:26,115 --> 00:56:34,120 >> Така че начина, по който може да се кодира това, аз бих казал, ако п е по-малко от двама души, 1389 00:56:34,120 --> 00:56:35,130 след това просто се върнете п. 1390 00:56:35,130 --> 00:56:36,494 И това ще бъде моята база случай. 1391 00:56:36,494 --> 00:56:38,660 Ето как аз знам, за да спре с рекурсивни функции. 1392 00:56:38,660 --> 00:56:40,640 1393 00:56:40,640 --> 00:56:41,410 Ясно ли е? 1394 00:56:41,410 --> 00:56:41,940 Awesome. 1395 00:56:41,940 --> 00:56:43,260 Всичко друго на рекурсия? 1396 00:56:43,260 --> 00:56:44,890 1397 00:56:44,890 --> 00:56:45,930 Beautiful. 1398 00:56:45,930 --> 00:56:48,750 >> Нека най-бързо се говори за търсене и сортиране, управлявани пъти. 1399 00:56:48,750 --> 00:56:52,660 И тогава аз ще дам някои Дейвин време, за да говорим за кодиране примери. 1400 00:56:52,660 --> 00:56:56,490 Така че тук са основният търсенето и видове, които трябва да знаете за. 1401 00:56:56,490 --> 00:56:59,500 Guarantee-- Не мога да гарантирам, защото аз не съм видял quiz-- 1402 00:56:59,500 --> 00:57:01,940 но това идва викторина след тест след откажат. 1403 00:57:01,940 --> 00:57:04,050 Така че определено използвате тази диаграма. 1404 00:57:04,050 --> 00:57:05,682 Например, вземете тази карта. 1405 00:57:05,682 --> 00:57:06,890 Сложете го на вашия мамят лист. 1406 00:57:06,890 --> 00:57:07,931 Вие ще бъдете щастлив човек. 1407 00:57:07,931 --> 00:57:09,010 1408 00:57:09,010 --> 00:57:12,590 >> Това ни казва времената навечерието на всяка на тези сортирате и търсене алгоритми. 1409 00:57:12,590 --> 00:57:14,020 1410 00:57:14,020 --> 00:57:18,850 Така линейно търсене, можете да видите серия време, и същото с двоично търсене. 1411 00:57:18,850 --> 00:57:21,490 Отидете над това, което тези алгоритми направя, общата идея. 1412 00:57:21,490 --> 00:57:24,220 Погледнете някои Псевдокод, ако не и самия код. 1413 00:57:24,220 --> 00:57:25,610 1414 00:57:25,610 --> 00:57:30,380 >> Вие ще видите, че балон вид има горна свързан в най-лошия случай на N квадрат. 1415 00:57:30,380 --> 00:57:31,490 1416 00:57:31,490 --> 00:57:34,680 Така че, ако нашата гама е напълно назад преди искахме да го оправи, 1417 00:57:34,680 --> 00:57:37,090 ние ще кажем, че това е ще отнеме н квадрат стъпки. 1418 00:57:37,090 --> 00:57:38,160 1419 00:57:38,160 --> 00:57:41,730 Но в най-добрия случай, така че долна граница за най-добрия случай 1420 00:57:41,730 --> 00:57:44,300 ще бъде, ако това е вече перфектно подредени. 1421 00:57:44,300 --> 00:57:46,671 След това всичко, което трябва да направите, е да провери, че тя е сортиран. 1422 00:57:46,671 --> 00:57:47,921 Има ли въпрос тук? 1423 00:57:47,921 --> 00:57:49,805 >> STUDENT: Кога ще искате да използвате нещо? 1424 00:57:49,805 --> 00:57:50,747 Сортът. 1425 00:57:50,747 --> 00:57:52,160 Просто съм любопитен. 1426 00:57:52,160 --> 00:57:53,510 >> Хана: Кога бихте искате да използвате селекция вид? 1427 00:57:53,510 --> 00:57:54,010 Това? 1428 00:57:54,010 --> 00:57:55,705 Този, който е н квадрат и в двата случая? 1429 00:57:55,705 --> 00:57:56,860 >> STUDENT: [недоловим]. 1430 00:57:56,860 --> 00:57:58,151 >> Хана: Така че това е много по-различна. 1431 00:57:58,151 --> 00:58:00,760 Ако имате конкретни изисквания за вашата програма, 1432 00:58:00,760 --> 00:58:04,887 като такива неща, ако ние просто каза приложи search-- sorry-- 1433 00:58:04,887 --> 00:58:06,720 изпълнение нещо, ще Вероятно искате да отидете 1434 00:58:06,720 --> 00:58:09,950 за един от тези, които има най- добрия случай на N, 1435 00:58:09,950 --> 00:58:12,410 или долна граница в най-добрия случай на п. 1436 00:58:12,410 --> 00:58:14,790 Но може да има някои неща, като, да речем, 1437 00:58:14,790 --> 00:58:16,767 суапове са наистина скъп поради някаква причина. 1438 00:58:16,767 --> 00:58:18,850 Тогава вие ще искате да направите, Метод на мехурчето, защото 1439 00:58:18,850 --> 00:58:20,641 трябва да се направи толкова много суапове, такива неща. 1440 00:58:20,641 --> 00:58:21,710 1441 00:58:21,710 --> 00:58:23,098 Всеки other-- нали? 1442 00:58:23,098 --> 00:58:25,488 >> STUDENT: Ще бъде ли [недоловим] да кажа, че [недоловим]? 1443 00:58:25,488 --> 00:58:30,077 1444 00:58:30,077 --> 00:58:31,910 Хана: Това е едно нещо, че ще ви кажа, 1445 00:58:31,910 --> 00:58:33,670 ако търсите по изпълнението. 1446 00:58:33,670 --> 00:58:35,850 Начинът, по който бих всъщност мисля за това, защо това е п 1447 00:58:35,850 --> 00:58:40,840 квадрат е, че ние трябва да тичам чрез нашия масив с дължина N, 1448 00:58:40,840 --> 00:58:42,765 всеки път, когато прави най-много, п суапове. 1449 00:58:42,765 --> 00:58:43,980 1450 00:58:43,980 --> 00:58:46,220 И ние трябва да направим този процес н пъти. 1451 00:58:46,220 --> 00:58:51,130 >> Така че, когато трябва да се направи най-много, н суапове и за п минава през масива, 1452 00:58:51,130 --> 00:58:52,380 там ще бъде п квадрат. 1453 00:58:52,380 --> 00:58:55,480 Но да, това ще бъде разкрито чрез това двойно за контур, 1454 00:58:55,480 --> 00:58:59,428 тъй като въпросът asked-- или вложени за контур, трябва да кажа. 1455 00:58:59,428 --> 00:59:00,890 OK? 1456 00:59:00,890 --> 00:59:03,375 >> И след това се сливат нещо, което е най-бързият вид сега, 1457 00:59:03,375 --> 00:59:07,560 или, че ние сме обхванати в CS50, Знам, че основният алгоритъм е 1458 00:59:07,560 --> 00:59:10,150 тази идея за пробив в сортирани парчета и след това 1459 00:59:10,150 --> 00:59:11,980 сливане заедно тези сортирани бита. 1460 00:59:11,980 --> 00:59:14,170 И ще ни накара да влезете н влезете п. 1461 00:59:14,170 --> 00:59:17,110 Всички въпроси, свързани с търсене и видове, преди да го предадат? 1462 00:59:17,110 --> 00:59:19,840 1463 00:59:19,840 --> 00:59:21,040 Нека да видим. 1464 00:59:21,040 --> 00:59:21,800 >> О, свързани списъци. 1465 00:59:21,800 --> 00:59:23,210 За съжаление, аз имам още един въпрос. 1466 00:59:23,210 --> 00:59:25,000 Добре, страхотно, свързани списъци. 1467 00:59:25,000 --> 00:59:27,900 Проблем с масиви, те имат фиксиран размер. 1468 00:59:27,900 --> 00:59:30,634 Така че, ако ти не знаеш колко е голям вашият принос ще бъде, 1469 00:59:30,634 --> 00:59:32,050 вие не искате да се създаде масив. 1470 00:59:32,050 --> 00:59:34,080 Защото, ако ние създаваме масив, който е твърде малък, 1471 00:59:34,080 --> 00:59:35,930 ние може да се сблъскате с препълване на буфера. 1472 00:59:35,930 --> 00:59:38,890 >> Така че вместо това, бихме могли да направим нещо със свързани списъци, които 1473 00:59:38,890 --> 00:59:44,280 ни позволява да имат динамично размер на структурата на данните 1474 00:59:44,280 --> 00:59:48,970 която ще ни позволи да се съхранява по-гъвкав количество данни. 1475 00:59:48,970 --> 00:59:54,030 Така че в рамките на всеки възел в нашия свързан списък, ние имаме две части. 1476 00:59:54,030 --> 00:59:56,820 Имаме реалната стойност, която съхранява. 1477 00:59:56,820 --> 00:59:59,530 Така че това е просто нещо, което би виж в масива, например. 1478 00:59:59,530 --> 01:00:04,600 И тогава ние също така да следите на указател към следващото нещо в паметта. 1479 01:00:04,600 --> 01:00:06,430 >> За разлика от масивите, които Ние всички знаем, че ще 1480 01:00:06,430 --> 01:00:10,890 да be-- масив елементи са един след друг в memory-- свързани 1481 01:00:10,890 --> 01:00:13,300 списъци могат да бъдат навсякъде в паметта. 1482 01:00:13,300 --> 01:00:14,590 Те са произволни места. 1483 01:00:14,590 --> 01:00:16,410 Така че, ако бяхме да всъщност отиде да ги намерим, 1484 01:00:16,410 --> 01:00:19,770 трябва да се следи за следващото нещо в нашия списък. 1485 01:00:19,770 --> 01:00:22,840 >> И тогава, за да се знае където този списък като цяло е, 1486 01:00:22,840 --> 01:00:26,276 всичко, което трябва да следите е Първият елемент в нашата свързан списък. 1487 01:00:26,276 --> 01:00:27,900 И това ще ни позволи да изпълнят. 1488 01:00:27,900 --> 01:00:31,020 1489 01:00:31,020 --> 01:00:33,070 >> Така че това е начина, по който може да се определи режим. 1490 01:00:33,070 --> 01:00:36,160 Това е една чудесна възможност да се възползват от structs. 1491 01:00:36,160 --> 01:00:39,660 Тъй като имате тази идея, добре, за даден възел, имам две парчета. 1492 01:00:39,660 --> 01:00:41,770 Имам действително самата стойност. 1493 01:00:41,770 --> 01:00:45,610 И тогава имам указател към Следващият елемент в свързан списък. 1494 01:00:45,610 --> 01:00:49,150 Така че, виждате ли, ние имаме цяло число N, който ще бъде действителната стойност, 1495 01:00:49,150 --> 01:00:53,150 и след това указател към възел, наречен по-нататък. 1496 01:00:53,150 --> 01:00:56,431 Така че ще бъде следващият елемент в нашата свързан списък. 1497 01:00:56,431 --> 01:00:56,972 STUDENT: Да? 1498 01:00:56,972 --> 01:01:01,920 Трябва ли да се уточни, че звездата е като структура? 1499 01:01:01,920 --> 01:01:05,620 >> Хана: Да, така че, тъй като това е почти като един вид, 1500 01:01:05,620 --> 01:01:07,980 тя изглежда като рекурсивно дефиниция, че 1501 01:01:07,980 --> 01:01:12,080 Трябва да знаете какво възел е в намирането на възел. 1502 01:01:12,080 --> 01:01:14,450 Тъй като това не е така в действителност знам какво възел е напълно 1503 01:01:14,450 --> 01:01:17,283 докато стигнем до края на this-- и след това просто да го наречем 1504 01:01:17,283 --> 01:01:21,935 на node-- вътре на това определение, ние трябва да го наричаме структура възел. 1505 01:01:21,935 --> 01:01:22,560 Голям въпрос. 1506 01:01:22,560 --> 01:01:23,580 1507 01:01:23,580 --> 01:01:25,214 Нещо друго? 1508 01:01:25,214 --> 01:01:26,198 Да? 1509 01:01:26,198 --> 01:01:29,150 >> STUDENT: Защо правим Трябва да кажа възел два пъти? 1510 01:01:29,150 --> 01:01:33,578 Защото, когато бяхме в [недоловим] ние просто трябваше да го направя в точка и запетая, 1511 01:01:33,578 --> 01:01:37,352 но сега ние трябва да се намери, че структура на възел? [Недоловим]. 1512 01:01:37,352 --> 01:01:39,060 Хана: Така че аз вярвам, в последния пример, 1513 01:01:39,060 --> 01:01:42,110 ние просто създаване на вас по всяко време Исках да използвам един студент, след това, можете 1514 01:01:42,110 --> 01:01:46,430 трябваше да се използва структура node-- Аз съм sorry-- структура студент. 1515 01:01:46,430 --> 01:01:51,575 Това ни позволи да, след факта, просто използване възел добавите нов тип, по същество. 1516 01:01:51,575 --> 01:01:53,324 1517 01:01:53,324 --> 01:01:53,990 Това има смисъл? 1518 01:01:53,990 --> 01:01:54,984 1519 01:01:54,984 --> 01:01:57,150 Така че ние ще трябва да се върна и погледнете в кода преди. 1520 01:01:57,150 --> 01:01:59,025 Но аз предполагам, че ние не използваме typedef. 1521 01:01:59,025 --> 01:02:02,050 И ние зададе въпроса, Защо ние трябва да използваме typedef? 1522 01:02:02,050 --> 01:02:05,540 Typedef ни позволява да се избегне Думата структура в началото. 1523 01:02:05,540 --> 01:02:06,221 Да? 1524 01:02:06,221 --> 01:02:08,095 STUDENT: Какъв вид въпроси ще излезе 1525 01:02:08,095 --> 01:02:10,400 от гледна точка по отношение на възли и свързани списъци? 1526 01:02:10,400 --> 01:02:15,110 >> Хана: Така че едно нещо е, че ние може да се каже как може да ви търси чрез свързан списък? 1527 01:02:15,110 --> 01:02:16,930 Добре, защото това е малко по-сложно 1528 01:02:16,930 --> 01:02:18,520 отколкото ако сме търсите чрез масив. 1529 01:02:18,520 --> 01:02:21,472 Ние можем просто погледнете елемент нула, елемент един, елемент на две, дрън, дрън, 1530 01:02:21,472 --> 01:02:21,972 бла. 1531 01:02:21,972 --> 01:02:22,629 1532 01:02:22,629 --> 01:02:24,420 Ако искате да търсите чрез свързан списък, 1533 01:02:24,420 --> 01:02:27,229 щяхме всъщност трябва да следват този малък лабиринт от указатели. 1534 01:02:27,229 --> 01:02:29,270 Така че нека всъщност отидете чрез това наистина бързо. 1535 01:02:29,270 --> 01:02:30,460 1536 01:02:30,460 --> 01:02:32,860 Какво можем да направим в поръчате to-- нека да кажем, 1537 01:02:32,860 --> 01:02:35,430 искам просто да превъртите през ни изцяло свързан списък. 1538 01:02:35,430 --> 01:02:37,450 Ние ще започнем от главата. 1539 01:02:37,450 --> 01:02:39,890 И тогава, за да се преминете към следващия елемент, 1540 01:02:39,890 --> 01:02:43,680 вместо просто увеличаване с една като бихме могли да излязат чрез масив, 1541 01:02:43,680 --> 01:02:45,720 ние всъщност ще следвайте следващата показалеца, 1542 01:02:45,720 --> 01:02:48,360 така че ние можем да намерим къде в паметта на следващия елемент. 1543 01:02:48,360 --> 01:02:49,357 1544 01:02:49,357 --> 01:02:51,690 Така че аз знам, че не е достатъчно, за да вземете всичко това точно сега, 1545 01:02:51,690 --> 01:02:52,650 но вие ще имате тези пързалки. 1546 01:02:52,650 --> 01:02:54,730 Така че можете да минете през това е малко по-бавно. 1547 01:02:54,730 --> 01:02:56,890 Но по същество това, което искаме да направите е да следвате тези насоки 1548 01:02:56,890 --> 01:02:58,550 чрез съвкупността от свързания списък. 1549 01:02:58,550 --> 01:03:00,258 Така че това е въпрос, може да бъде поискано. 1550 01:03:00,258 --> 01:03:01,920 1551 01:03:01,920 --> 01:03:03,980 >> Нещо, което да забележите, с вмъкване, нека да кажем, 1552 01:03:03,980 --> 01:03:07,925 ние искахме да постави нов елемент в предната част на нашия свързан списък. 1553 01:03:07,925 --> 01:03:10,800 Ние трябва да бъдем много внимателни, за реда, в който 1554 01:03:10,800 --> 01:03:12,760 преотстъпва указателите. 1555 01:03:12,760 --> 01:03:15,230 Защото нека да кажа, че току-що каза OK. 1556 01:03:15,230 --> 01:03:18,930 Направете точка на главата на този нов елемент. 1557 01:03:18,930 --> 01:03:23,550 Просто се уверете, да го насочи към едно След това, ние сме по същество губи останалата част от нашия списък, 1558 01:03:23,550 --> 01:03:25,860 защото аз не си спомням когато два живота. 1559 01:03:25,860 --> 01:03:27,730 >> Така че ние трябва да направим в много специфична цел. 1560 01:03:27,730 --> 01:03:31,500 Първо, ние правим новото елемент точка на главата. 1561 01:03:31,500 --> 01:03:33,970 И след това ние правим главата сочи към новия елемент. 1562 01:03:33,970 --> 01:03:38,455 Така че нека да видим това, което изглежда като че с arrows-- просто като това. 1563 01:03:38,455 --> 01:03:42,080 Така че първо трябва новото елемент точка на стария главата. 1564 01:03:42,080 --> 01:03:45,990 И сега, ние имаме на главата сочи към новата първия елемент. 1565 01:03:45,990 --> 01:03:47,187 Всички въпроси, с това? 1566 01:03:47,187 --> 01:03:49,870 1567 01:03:49,870 --> 01:03:54,350 >> OK тук е някакъв код отново, нещо, да погледнем малко по-късно. 1568 01:03:54,350 --> 01:03:58,630 И сега аз ще го предам на Дейвин за GDB и малко на практика 1569 01:03:58,630 --> 01:03:59,480 кодиране на хартия. 1570 01:03:59,480 --> 01:04:00,597 1571 01:04:00,597 --> 01:04:01,096 Beautiful. 1572 01:04:01,096 --> 01:04:01,810 >> ROB: И Роб. 1573 01:04:01,810 --> 01:04:02,360 >> Хана: О, Дейвин и Роб. 1574 01:04:02,360 --> 01:04:03,055 Съжалявам. 1575 01:04:03,055 --> 01:04:03,596 >> STUDENT: Woo! 1576 01:04:03,596 --> 01:04:08,140 1577 01:04:08,140 --> 01:04:09,110 >> ROB: Благодаря. 1578 01:04:09,110 --> 01:04:11,209 >> Дейвин: Искате ли да се каже, всичко много бързо? 1579 01:04:11,209 --> 01:04:11,875 ROB: Да, да. 1580 01:04:11,875 --> 01:04:12,845 Дейвин: След като съм се. 1581 01:04:12,845 --> 01:04:16,240 1582 01:04:16,240 --> 01:04:19,520 OK, докато Роб поставя микрофон, така че това, което е GDB? 1583 01:04:19,520 --> 01:04:23,945 Всеки трябва да види в GDB клас, а също и в работно време. 1584 01:04:23,945 --> 01:04:25,070 И вие трябва да го използвате. 1585 01:04:25,070 --> 01:04:25,750 Така че това, което е GDB? 1586 01:04:25,750 --> 01:04:28,030 1587 01:04:28,030 --> 01:04:28,850 Някой? 1588 01:04:28,850 --> 01:04:29,540 >> STUDENT: Това е дебъгер. 1589 01:04:29,540 --> 01:04:30,250 >> Дейвин: Това е дебъгер. 1590 01:04:30,250 --> 01:04:31,624 И какво прави той ви позволи да направите? 1591 01:04:31,624 --> 01:04:33,064 Например, защо ни харесва GDB? 1592 01:04:33,064 --> 01:04:34,480 STUDENT: За да се забави програмата. 1593 01:04:34,480 --> 01:04:36,740 Дейвин: Добре, така че можете да се разхождате през него като човешко темпо. 1594 01:04:36,740 --> 01:04:38,490 И така, какви са някои команди можете да направите? 1595 01:04:38,490 --> 01:04:40,407 Е, пауза е вероятно любимата си команда. 1596 01:04:40,407 --> 01:04:43,240 Защото това ви дава възможност да се прекъсне програма и всъщност минеш през нея 1597 01:04:43,240 --> 01:04:44,280 ред по ред. 1598 01:04:44,280 --> 01:04:46,500 >> Run ви позволява да го стартирате. 1599 01:04:46,500 --> 01:04:48,210 На следващо място, като чрез засилване. 1600 01:04:48,210 --> 01:04:49,820 Каква е между следващия и стъпка? 1601 01:04:49,820 --> 01:04:52,190 1602 01:04:52,190 --> 01:04:53,190 Чакай, да кажем, че на глас. 1603 01:04:53,190 --> 01:04:54,060 Това беше вярно. 1604 01:04:54,060 --> 01:04:55,280 >> STUDENT: [недоловим]. 1605 01:04:55,280 --> 01:04:56,190 >> Дейвин: Да, страхотно. 1606 01:04:56,190 --> 01:04:59,210 Така че, като, следващата и стъпка, ако you're-- да речем, че има функция, която 1607 01:04:59,210 --> 01:04:59,950 дефинира. 1608 01:04:59,950 --> 01:05:03,350 Да кажем, че някои хора в основната си функция, а ти просто се разхождаш следващата, следващата, 1609 01:05:03,350 --> 01:05:03,850 следващата. 1610 01:05:03,850 --> 01:05:05,910 Вие всъщност ще изпълнява тази функция, 1611 01:05:05,910 --> 01:05:07,285 но вие ще скочи върху него. 1612 01:05:07,285 --> 01:05:09,711 Ако ви удари стъпка, или ите или каквото и да сте 1613 01:05:09,711 --> 01:05:11,460 Ще действително да скочи в тази функция, 1614 01:05:11,460 --> 01:05:14,110 и след това можете да натиснете следващия за да видите различни призиви 1615 01:05:14,110 --> 01:05:16,170 вътре в тази конкретна функция. 1616 01:05:16,170 --> 01:05:16,670 Така ли? 1617 01:05:16,670 --> 01:05:18,670 >> STUDENT: Има ли начин да скочи, като, се оттегли? 1618 01:05:18,670 --> 01:05:20,750 Дейвин: Finish, да, завърши с вас скочи. 1619 01:05:20,750 --> 01:05:22,570 Така че това ще завърша, че функция, и тогава вие сте 1620 01:05:22,570 --> 01:05:24,153 ще се върне в основния, например. 1621 01:05:24,153 --> 01:05:25,250 1622 01:05:25,250 --> 01:05:27,370 Print ще го отпечатате едно и също време. 1623 01:05:27,370 --> 01:05:29,381 Нещо, което се използва винаги е дисплей. 1624 01:05:29,381 --> 01:05:31,880 Display ще го разпечатате непрекъснато по време на цялата 1625 01:05:31,880 --> 01:05:32,470 на вашата програма. 1626 01:05:32,470 --> 01:05:33,810 >> Например, ако сте в за линия, и вие 1627 01:05:33,810 --> 01:05:37,018 Искам да видя как се променя нещо, и вие не искате да, като, постоянно 1628 01:05:37,018 --> 01:05:38,940 се прави като на печат, печат, печат, дисплей 1629 01:05:38,940 --> 01:05:43,230 ще покаже, че променлива непрекъснато, всеки път, когато ви удари Next. 1630 01:05:43,230 --> 01:05:44,310 И продължи. 1631 01:05:44,310 --> 01:05:45,905 Така GBD, че е GDB. 1632 01:05:45,905 --> 01:05:47,160 1633 01:05:47,160 --> 01:05:49,180 >> STUDENT: Какво е човекът където [недоловим]? 1634 01:05:49,180 --> 01:05:50,150 1635 01:05:50,150 --> 01:05:50,900 Дейвин: Какво е това? 1636 01:05:50,900 --> 01:05:52,310 1637 01:05:52,310 --> 01:05:54,390 >> STUDENT: Какво е the-- местните променливи. 1638 01:05:54,390 --> 01:05:55,364 1639 01:05:55,364 --> 01:05:57,780 ROB: Има нещо, което всъщност като местните жители или нещо такова. 1640 01:05:57,780 --> 01:05:58,140 I can't-- 1641 01:05:58,140 --> 01:05:59,930 >> Дейвин: То може да бъде нещо такова, да. 1642 01:05:59,930 --> 01:06:00,830 >> Хана: В местните жители? 1643 01:06:00,830 --> 01:06:01,510 >> Дейвин: Това е всичко. 1644 01:06:01,510 --> 01:06:02,134 Това е един. 1645 01:06:02,134 --> 01:06:03,040 ROB: Beautiful. 1646 01:06:03,040 --> 01:06:04,030 >> Дейвин: Да. 1647 01:06:04,030 --> 01:06:06,010 >> STUDENT: Какво не продължава да направя? 1648 01:06:06,010 --> 01:06:08,010 >> Дейвин: Той continues-- така че това е просто ще продължат програмите си. 1649 01:06:08,010 --> 01:06:09,843 Така че, ако ви се счупи и удари продължи, това ще 1650 01:06:09,843 --> 01:06:13,119 просто да използват тази програма, докато той отново удари, че почивка. 1651 01:06:13,119 --> 01:06:14,910 Така например, ако сте прекъсна функция, 1652 01:06:14,910 --> 01:06:16,720 и ти започваш да се направи като за линия или нещо подобно, 1653 01:06:16,720 --> 01:06:19,869 и ви удари продължи, тя ще продължи и да се върнете към тази почивка. 1654 01:06:19,869 --> 01:06:22,660 Или там не е почивка, че ще продължи и да завърши програмата. 1655 01:06:22,660 --> 01:06:25,000 >> ROB: Така че просто искал работят спирки при първата точка на прекъсване 1656 01:06:25,000 --> 01:06:27,010 ви удари, ако след това хит продължи, тя ще се запази 1657 01:06:27,010 --> 01:06:28,070 Ще докато тя е следващата точка на прекъсване. 1658 01:06:28,070 --> 01:06:30,111 И след това продължи, ще отида към следващата точка на прекъсване. 1659 01:06:30,111 --> 01:06:31,264 1660 01:06:31,264 --> 01:06:32,680 Дейвин: Всякакви други въпроси, свързани с GDB? 1661 01:06:32,680 --> 01:06:33,577 1662 01:06:33,577 --> 01:06:35,410 Така че аз мисля, че в миналото, ние сме ви попита какво 1663 01:06:35,410 --> 01:06:37,690 GDB е и да дава Например на някои неща, които можете 1664 01:06:37,690 --> 01:06:40,770 може да се направи с GDB, така реално просто, но да. 1665 01:06:40,770 --> 01:06:42,280 Има и да отидете. 1666 01:06:42,280 --> 01:06:43,250 И възли? 1667 01:06:43,250 --> 01:06:49,571 >> ROB: Да, така в коя посока е? 1668 01:06:49,571 --> 01:06:50,851 1669 01:06:50,851 --> 01:06:51,726 STUDENT: Това беше. 1670 01:06:51,726 --> 01:06:52,160 Дейвин: Изчакайте. 1671 01:06:52,160 --> 01:06:52,270 ROB: Този човек? 1672 01:06:52,270 --> 01:06:52,936 Дейвин: Ето един. 1673 01:06:52,936 --> 01:06:54,660 ROB: Този човек, о, аз не осъзнават. 1674 01:06:54,660 --> 01:06:56,940 Така че ние не са ясно на какво the-- аз не 1675 01:06:56,940 --> 01:06:58,680 знам кой was-- но въпросът. 1676 01:06:58,680 --> 01:07:01,180 Ние не знаем точно какво питаха за него, така че просто 1677 01:07:01,180 --> 01:07:04,800 да се изясни нещо. 1678 01:07:04,800 --> 01:07:07,750 Така че, на първо място, както казах и преди, typedef сте винаги само с 1679 01:07:07,750 --> 01:07:09,305 създадете псевдоним за тип. 1680 01:07:09,305 --> 01:07:13,420 Така че точно тук, прякора сме създаване е за този вид структура възел. 1681 01:07:13,420 --> 01:07:18,070 >> Така че, на първо място, пренебрегвайки този възел в typedef, така че тази структура възел къдрава 1682 01:07:18,070 --> 01:07:21,060 подпре до следващия къдрава скоба е тип структура възел. 1683 01:07:21,060 --> 01:07:23,470 И ние трябва да този възел там, защото ние 1684 01:07:23,470 --> 01:07:25,190 трябва да позоваване възел в тук. 1685 01:07:25,190 --> 01:07:29,380 Така че с този вид на рекурсивни структура, трябва да се даде тази структура име, 1686 01:07:29,380 --> 01:07:31,340 или друго, което не може каже структура възел тук. 1687 01:07:31,340 --> 01:07:33,340 Докато преди с ученик когато бяхме написали, аз мисля, 1688 01:07:33,340 --> 01:07:35,423 ние не трябва да се каже, студент там, защото ние 1689 01:07:35,423 --> 01:07:40,370 не трябва да се каже структура студент в самата структура. 1690 01:07:40,370 --> 01:07:43,730 Така че това е рекурсивни че ни кара да се каже възел там. 1691 01:07:43,730 --> 01:07:46,610 >> Този възел е само името, което сте като възел за typedef. 1692 01:07:46,610 --> 01:07:48,520 Така че не е възел същият като този възел. 1693 01:07:48,520 --> 01:07:51,567 Но тази структура възел е същата като тази структура възел. 1694 01:07:51,567 --> 01:07:54,150 Дейвин: Така че всеки път, когато ти се обадя, като възлова точка в основната си функция, 1695 01:07:54,150 --> 01:07:55,350 вие няма да Трябва да кажа, структура възел. 1696 01:07:55,350 --> 01:07:58,360 Можете просто да се каже възел, защото възел е different-- е основно 1697 01:07:58,360 --> 01:07:59,440 вие казвате, OK. 1698 01:07:59,440 --> 01:08:01,490 Вместо да се налага да се обадя структура на възел в моя код, 1699 01:08:01,490 --> 01:08:04,050 Аз просто искам да го преименувате като възел, за да е по-лесно. 1700 01:08:04,050 --> 01:08:06,800 >> ROB: Ако винаги използвате typedef, то това 1701 01:08:06,800 --> 01:08:11,240 е единственото място, където ще трябва да декларира променлива със структура на възел 1702 01:08:11,240 --> 01:08:11,740 звезда, да. 1703 01:08:11,740 --> 01:08:14,650 1704 01:08:14,650 --> 01:08:20,801 >> Дейвин: ОК, така че последната част Трудно е да се научи because-- 1705 01:08:20,801 --> 01:08:22,185 1706 01:08:22,185 --> 01:08:22,685 ROB: Какво? 1707 01:08:22,685 --> 01:08:24,098 1708 01:08:24,098 --> 01:08:25,649 >> Дейвин: Тъй като това е кодиране на хартия. 1709 01:08:25,649 --> 01:08:28,689 Така че всяка година имаме код по въпросите на хартия. 1710 01:08:28,689 --> 01:08:32,510 Така че аз мисля, че през миналата година, 12 от 80 точки са код на хартия. 1711 01:08:32,510 --> 01:08:36,720 Година преди това, 10 от 80, година по-рано, че 20 от 100, 1712 01:08:36,720 --> 01:08:37,939 толкова много от тях. 1713 01:08:37,939 --> 01:08:40,970 Значи ще трябва да бъде в състояние за кодиране на тези функции на ръка. 1714 01:08:40,970 --> 01:08:45,340 >> Така че аз помислих, бихме могли да преминат през няколко от тях и да видим колко хора го правят, 1715 01:08:45,340 --> 01:08:47,340 вид на разходка из ги бавно с хората. 1716 01:08:47,340 --> 01:08:48,790 1717 01:08:48,790 --> 01:08:52,420 Така че, като цяло, и strlen atoi са били много популярни. 1718 01:08:52,420 --> 01:08:55,670 Миналата година, мисля, че имахме GetPositiveInt и RandomInt. 1719 01:08:55,670 --> 01:08:58,591 Но Pow, така че властта, също положителен също. 1720 01:08:58,591 --> 01:09:00,965 Нека просто да мине през може би един или два от тях заедно. 1721 01:09:00,965 --> 01:09:02,510 1722 01:09:02,510 --> 01:09:03,729 Какво правят хората искат да видят? 1723 01:09:03,729 --> 01:09:05,037 1724 01:09:05,037 --> 01:09:05,767 >> STUDENT: Atoi. 1725 01:09:05,767 --> 01:09:06,350 Студентът: Да. 1726 01:09:06,350 --> 01:09:06,859 Дейвин: Atoi? 1727 01:09:06,859 --> 01:09:07,800 STUDENT: [недоловим]. 1728 01:09:07,800 --> 01:09:09,682 Дейвин: Добре, аз ще да го направи на дъската. 1729 01:09:09,682 --> 01:09:11,765 Имате ли предпочитания ако аз го правя тук или там? 1730 01:09:11,765 --> 01:09:13,580 1731 01:09:13,580 --> 01:09:14,550 Там, Гейб казва там. 1732 01:09:14,550 --> 01:09:16,729 1733 01:09:16,729 --> 01:09:19,580 >> ROB: И това е общи мисли на тези, кодиращи въпроси. 1734 01:09:19,580 --> 01:09:21,705 Опитайте се да напиша нещо. 1735 01:09:21,705 --> 01:09:22,580 Не го оставите празно. 1736 01:09:22,580 --> 01:09:23,080 >> Дейвин: Да. 1737 01:09:23,080 --> 01:09:25,520 ROB: Ако можете да получите върнете тип вярна, 1738 01:09:25,520 --> 01:09:27,090 или може би бихме могли да го дам вас, но ако можете, като, 1739 01:09:27,090 --> 01:09:30,256 напиши общата функция подписа, Ако можете да получите на базови случаите вярна, 1740 01:09:30,256 --> 01:09:32,244 или ъглови случаи, или спомняйки си чек за нищожна, 1741 01:09:32,244 --> 01:09:34,160 толкова дълго, колкото имате някаква неща, а след това може би ние 1742 01:09:34,160 --> 01:09:35,880 може да ви даде няколко точки за проблема. 1743 01:09:35,880 --> 01:09:36,810 Не просто да го оставите празно. 1744 01:09:36,810 --> 01:09:38,560 >> Дейвин: Да, и ако са просто напълно 1745 01:09:38,560 --> 01:09:40,580 объркани как да всъщност се превръща в код. 1746 01:09:40,580 --> 01:09:43,140 Ако пишете Псевдокод, това е доста добре. 1747 01:09:43,140 --> 01:09:46,390 Така че това е като, че е шест точка въпрос, и пишете правилно Псевдокод, 1748 01:09:46,390 --> 01:09:47,858 вие ще получите най-малко две точки. 1749 01:09:47,858 --> 01:09:49,149 Така че не просто ги оставете полето празно. 1750 01:09:49,149 --> 01:09:50,279 Опитайте се да сложите нещо. 1751 01:09:50,279 --> 01:09:51,770 >> ROB: тя трябва да бъде на правилно Псевдокод, все пак. 1752 01:09:51,770 --> 01:09:52,270 >> Дейвин: Да. 1753 01:09:52,270 --> 01:09:55,381 ROB: Така че ние като цяло са по-малко снизходителен с бъгове в Псевдокод. 1754 01:09:55,381 --> 01:09:57,130 Дейвин: ОК, така че вие, момчета, Исках да видя atoi. 1755 01:09:57,130 --> 01:09:58,480 1756 01:09:58,480 --> 01:10:02,820 ОК, така че просто really-- И така, какво искате да направите, 1757 01:10:02,820 --> 01:10:04,969 ти започваш да бъде дава някакво число. 1758 01:10:04,969 --> 01:10:07,010 Но това число не е щеше да бъде едно цяло число, нали? 1759 01:10:07,010 --> 01:10:08,574 Какво е това щеше да бъде? 1760 01:10:08,574 --> 01:10:09,480 >> STUDENT: [недоловим]. 1761 01:10:09,480 --> 01:10:11,146 >> Дейвин: Това ще бъде низ, нали? 1762 01:10:11,146 --> 01:10:13,160 Така че, ако ти е дадено на string-- нека say-- 1763 01:10:13,160 --> 01:10:15,228 >> ROB: Трябва ли да спра редактор? 1764 01:10:15,228 --> 01:10:16,200 Мога да дръпнете up-- 1765 01:10:16,200 --> 01:10:16,800 >> Дейвин: О, вие искате да го направите on-- 1766 01:10:16,800 --> 01:10:17,420 >> ROB: Бихте ли предпочели борда? 1767 01:10:17,420 --> 01:10:18,800 >> Дейвин: Какво искаш да направиш? 1768 01:10:18,800 --> 01:10:19,900 Искам да кажа, искаш да го направиш на ръка? 1769 01:10:19,900 --> 01:10:21,460 Или искаш да го направите с помощта на компютър? 1770 01:10:21,460 --> 01:10:22,180 >> ROB: Направи го с ръка. 1771 01:10:22,180 --> 01:10:22,805 >> Дейвин: [смее се] 1772 01:10:22,805 --> 01:10:23,950 ROB: Направи го с ръка. 1773 01:10:23,950 --> 01:10:25,469 >> Дейвин: ОК, така че това ще бъде atoi. 1774 01:10:25,469 --> 01:10:27,760 Така че това, което е it-- Искам да кажа, ние ще Вероятно ти дам това. 1775 01:10:27,760 --> 01:10:29,106 Но това, което е тя ще се върне? 1776 01:10:29,106 --> 01:10:29,452 >> STUDENT: Int. 1777 01:10:29,452 --> 01:10:31,076 >> Дейвин: Той ще се върне INT, нали? 1778 01:10:31,076 --> 01:10:33,772 So-- Аз не искам да го направя там. 1779 01:10:33,772 --> 01:10:34,510 Аз ще го направя тук. 1780 01:10:34,510 --> 01:10:36,596 >> ROB: Можете да го дръпнете надолу и след това натиснете на него. 1781 01:10:36,596 --> 01:10:38,500 1782 01:10:38,500 --> 01:10:40,385 >> Дейвин: Да. 1783 01:10:40,385 --> 01:10:43,880 [Смее се] промяна Game. 1784 01:10:43,880 --> 01:10:50,950 ОК, така че това ще бъде INT atoi, и какво е то ще отнеме? 1785 01:10:50,950 --> 01:10:52,180 1786 01:10:52,180 --> 01:10:57,780 A Чар звезда, така че просто низ, звезда и, по този начин. 1787 01:10:57,780 --> 01:10:59,240 >> ROB: Nice звезда, хубаво. 1788 01:10:59,240 --> 01:11:02,582 1789 01:11:02,582 --> 01:11:04,040 Дейвин: Това не може да бъде там, OK. 1790 01:11:04,040 --> 01:11:04,540 ROB: Да. 1791 01:11:04,540 --> 01:11:06,670 Дейвин: ОК, така че на първо нещо, което искате да do-- I 1792 01:11:06,670 --> 01:11:08,490 не знам дали някой погледна в solutions-- на практика 1793 01:11:08,490 --> 01:11:10,150 но това, което ще искате да направите, е да сте 1794 01:11:10,150 --> 01:11:11,570 ще искам да имам една линия, защото вие сте 1795 01:11:11,570 --> 01:11:14,100 ще искате да всъщност стъпка през този низ. 1796 01:11:14,100 --> 01:11:18,880 Така helpful-- така че нека да кажем, отиваме към по контур, 1797 01:11:18,880 --> 01:11:22,270 и ние отиваме да се засили чрез всеки елемент на низа. 1798 01:11:22,270 --> 01:11:23,470 Колко време е това? 1799 01:11:23,470 --> 01:11:26,464 Колко пъти са отиваме да превъртите в това за цикъл? 1800 01:11:26,464 --> 01:11:27,130 STUDENT: Sterln? 1801 01:11:27,130 --> 01:11:27,963 Дейвин: Sterln, да. 1802 01:11:27,963 --> 01:11:29,350 1803 01:11:29,350 --> 01:11:41,294 Така че нека да кажем, дължина инт равнява sterln ите. 1804 01:11:41,294 --> 01:11:44,240 1805 01:11:44,240 --> 01:11:48,740 И просто любопитни, защо тя е винаги вид на по-добре да направите това извън контура? 1806 01:11:48,740 --> 01:11:52,277 Например, защо е по-добре да се обадя тази функция извън линия? 1807 01:11:52,277 --> 01:11:53,360 Просто проверете бърз здрав разум? 1808 01:11:53,360 --> 01:11:55,810 1809 01:11:55,810 --> 01:11:56,311 Така ли? 1810 01:11:56,311 --> 01:11:58,268 STUDENT: Значи вие не трябва да го проверява. 1811 01:11:58,268 --> 01:11:59,400 Можете просто [недоловим]. 1812 01:11:59,400 --> 01:12:01,560 >> Дейвин: Точно така, да, точно това, което казва тя. 1813 01:12:01,560 --> 01:12:03,101 Така че ние не трябва да го проверява. 1814 01:12:03,101 --> 01:12:05,690 Така например, ако се обаждам тази функция в една линия, 1815 01:12:05,690 --> 01:12:08,050 След това аз ще се запази обадите тази функция няколко пъти. 1816 01:12:08,050 --> 01:12:10,080 И това се случва, за да намалите ефективността на вашата програма. 1817 01:12:10,080 --> 01:12:12,370 Така че това е винаги полезно да го декларира отвън. 1818 01:12:12,370 --> 01:12:14,370 >> ROB: Това е казал на някой от тези проблеми, 1819 01:12:14,370 --> 01:12:17,940 почти толкова дълго, колкото можете да получите работен разтвор, можете да получите пълен кредит. 1820 01:12:17,940 --> 01:12:20,820 Така че не се притеснявайте, ако вашият проект е абсолютно ужасяващи. 1821 01:12:20,820 --> 01:12:22,120 1822 01:12:22,120 --> 01:12:25,230 Това може да ни накара да разстрои четене вашия код. 1823 01:12:25,230 --> 01:12:28,160 Но докато тя работи, вие ще получите точки. 1824 01:12:28,160 --> 01:12:29,302 >> Дейвин: Да. 1825 01:12:29,302 --> 01:12:31,260 ОК, така че след това аз отивам да Декларирам, някои променливи. 1826 01:12:31,260 --> 01:12:33,900 Това е просто ще се обадя INT сума. 1827 01:12:33,900 --> 01:12:37,031 И аз отивам да зададете тази равно на нула, като това. 1828 01:12:37,031 --> 01:12:38,780 И това е просто ще да бъде запазено. 1829 01:12:38,780 --> 01:12:40,960 Така че това ще бъде това, което аз отивам да се върне. 1830 01:12:40,960 --> 01:12:43,730 Така че аз отивам в крайна сметка върне сума от тази програма. 1831 01:12:43,730 --> 01:12:44,980 Така че аз имам тези две променливи. 1832 01:12:44,980 --> 01:12:45,563 Имам дължина. 1833 01:12:45,563 --> 01:12:46,500 Имам сума. 1834 01:12:46,500 --> 01:12:48,290 А сега нека да се потопите в нашата поредица. 1835 01:12:48,290 --> 01:12:49,510 >> Така че ви позволява да има ни за контур. 1836 01:12:49,510 --> 01:13:06,520 Така четири INT I е равна на 0 W, докато I е по-малко от дължината I плюс плюс. 1837 01:13:06,520 --> 01:13:07,150 И now-- 1838 01:13:07,150 --> 01:13:10,920 1839 01:13:10,920 --> 01:13:11,420 ROB: Ница. 1840 01:13:11,420 --> 01:13:14,030 Дейвин: Добре, а сега тук идва месото на нашия код. 1841 01:13:14,030 --> 01:13:17,380 Така че всъщност можете да направите това в общи линии в един ред. 1842 01:13:17,380 --> 01:13:20,702 Така Дали някой има идея от това, което ние ще направим следващата стъпка? 1843 01:13:20,702 --> 01:13:23,680 1844 01:13:23,680 --> 01:13:25,380 ОК, така че това е ОК. 1845 01:13:25,380 --> 01:13:35,860 Така че ние сме прави, за да се каже сума equals-- позволете ми да махам този over-- сума 1846 01:13:35,860 --> 01:13:50,010 се равнява на сума 10 пъти plus-- ние сме ще вземе и аз минус едно 1847 01:13:50,010 --> 01:13:54,787 цитат 0 един цитат направено подобно. 1848 01:13:54,787 --> 01:13:55,620 ROB: Много интуитивен. 1849 01:13:55,620 --> 01:13:56,980 1850 01:13:56,980 --> 01:13:57,880 >> Дейвин: го смачкват. 1851 01:13:57,880 --> 01:14:01,438 ОК, така someone-- аз го имам, аз го имам. 1852 01:14:01,438 --> 01:14:03,680 1853 01:14:03,680 --> 01:14:06,960 ОК, така че това е ясно върви нагоре. 1854 01:14:06,960 --> 01:14:08,320 1855 01:14:08,320 --> 01:14:09,450 Какво означава това? 1856 01:14:09,450 --> 01:14:12,120 Така Някой знае ли какво означава това? 1857 01:14:12,120 --> 01:14:13,826 Всеки ли може да видите това? 1858 01:14:13,826 --> 01:14:16,088 Не, никой не може да види това, OK. 1859 01:14:16,088 --> 01:14:17,390 1860 01:14:17,390 --> 01:14:18,340 Отивам to-- 1861 01:14:18,340 --> 01:14:20,506 >> ROB: Отивам да напишете формула точно тук. 1862 01:14:20,506 --> 01:14:23,140 Дейвин: OK, Роб ще го направя на компютъра, което е забавно. 1863 01:14:23,140 --> 01:14:26,889 1864 01:14:26,889 --> 01:14:27,514 ROB: О, Боже мой. 1865 01:14:27,514 --> 01:14:34,340 1866 01:14:34,340 --> 01:14:35,010 Или няма да го направя. 1867 01:14:35,010 --> 01:14:36,288 1868 01:14:36,288 --> 01:14:36,954 Дейвин: Готовност. 1869 01:14:36,954 --> 01:14:42,300 1870 01:14:42,300 --> 01:14:44,260 STUDENT: Аз имам един въпрос. 1871 01:14:44,260 --> 01:14:45,348 Дейвин: Да, разбира се. 1872 01:14:45,348 --> 01:14:46,223 STUDENT: [недоловим]? 1873 01:14:46,223 --> 01:14:52,529 1874 01:14:52,529 --> 01:14:54,570 Дейвин: Добре, така че всъщност, подобни, просто като цяло, 1875 01:14:54,570 --> 01:14:56,710 ако ви се налага да се сложи, като, в тази декларация инт 1876 01:14:56,710 --> 01:14:59,770 I е равна дължина 0 запетая равнява sterln, that-- 1877 01:14:59,770 --> 01:15:01,200 >> STUDENT: [недоловим]. 1878 01:15:01,200 --> 01:15:03,585 >> Дейвин: Това е добре, защото that-- 1879 01:15:03,585 --> 01:15:05,543 STUDENT: Защо бихте дори трябва да се използва дължина? 1880 01:15:05,543 --> 01:15:08,620 Защо не може просто [недоловим] sterln S, като през цялото време [недоловим]? 1881 01:15:08,620 --> 01:15:09,460 >> Дейвин: Искаш да кажеш, точно тук? 1882 01:15:09,460 --> 01:15:10,001 >> Студентът: Да. 1883 01:15:10,001 --> 01:15:12,630 Дейвин: Защото всеки време това за цикъл писти, 1884 01:15:12,630 --> 01:15:14,295 това ще се оцени това състояние. 1885 01:15:14,295 --> 01:15:14,920 STUDENT: Точно така. 1886 01:15:14,920 --> 01:15:16,836 Дейвин: И ако имате sterln там, то е 1887 01:15:16,836 --> 01:15:19,510 Ще трябва да се обадя в действителност тази функция на всеки един момент. 1888 01:15:19,510 --> 01:15:21,090 Така че, вместо просто сравнявайки го с пад, 1889 01:15:21,090 --> 01:15:23,548 ти започваш да се наричаш функция и след това да се сравни 1890 01:15:23,548 --> 01:15:24,510 към стойността на замяна. 1891 01:15:24,510 --> 01:15:25,860 Да, толкова е просто, да. 1892 01:15:25,860 --> 01:15:28,860 1893 01:15:28,860 --> 01:15:30,770 >> Nice, OK, така че сега всеки може да го види. 1894 01:15:30,770 --> 01:15:33,400 Какво does-- това е като, това е то. 1895 01:15:33,400 --> 01:15:34,580 Това е най-сладко, точно тук. 1896 01:15:34,580 --> 01:15:37,030 1897 01:15:37,030 --> 01:15:37,930 Какво означава това? 1898 01:15:37,930 --> 01:15:39,250 1899 01:15:39,250 --> 01:15:39,970 Какво правя? 1900 01:15:39,970 --> 01:15:41,890 1901 01:15:41,890 --> 01:15:42,880 Да, една идея? 1902 01:15:42,880 --> 01:15:43,482 Така ли? 1903 01:15:43,482 --> 01:15:45,692 >> STUDENT: Добре, така че когато сте въвеждане на масив, 1904 01:15:45,692 --> 01:15:47,525 ти започваш да се случва от ляво на дясно, 1905 01:15:47,525 --> 01:15:51,786 така че вие ​​ще трябва да се случва в десетична от бутона [недоловим]. 1906 01:15:51,786 --> 01:15:52,410 Дейвин: Точно така. 1907 01:15:52,410 --> 01:15:55,063 STUDENT: Така че всеки един трябва да се размножават 1908 01:15:55,063 --> 01:15:59,490 това, което видях като стойността на INT от времето, когато стигнем да се движат, че над една. 1909 01:15:59,490 --> 01:16:01,590 >> Дейвин: Perfect, съвършен, така например, нека 1910 01:16:01,590 --> 01:16:05,376 да кажа, че е дал you-- съм щях да пиша тук. 1911 01:16:05,376 --> 01:16:06,480 Не, аз не съм. 1912 01:16:06,480 --> 01:16:08,640 Отивам да пиша тук. 1913 01:16:08,640 --> 01:16:12,080 Да кажем, че ви е дал 76, нали? 1914 01:16:12,080 --> 01:16:13,380 Да кажем, че ти дам 76. 1915 01:16:13,380 --> 01:16:15,360 Това е низ да започнем с това, OK? 1916 01:16:15,360 --> 01:16:16,840 >> Така дължина е какво? 1917 01:16:16,840 --> 01:16:18,060 1918 01:16:18,060 --> 01:16:19,060 2, нали? 1919 01:16:19,060 --> 01:16:20,290 Сума е 0. 1920 01:16:20,290 --> 01:16:21,600 След това скочи в нашата за контур. 1921 01:16:21,600 --> 01:16:24,187 OK, първата итерация на това, какво той щеше да бъде? 1922 01:16:24,187 --> 01:16:25,270 Това ще бъде сума е 0. 1923 01:16:25,270 --> 01:16:27,180 Така обобщи пъти 10 0. 1924 01:16:27,180 --> 01:16:28,500 Това е безсмислено. 1925 01:16:28,500 --> 01:16:29,880 Тогава какво означава това правя? 1926 01:16:29,880 --> 01:16:30,845 1927 01:16:30,845 --> 01:16:31,720 STUDENT: [недоловим]. 1928 01:16:31,720 --> 01:16:33,110 1929 01:16:33,110 --> 01:16:37,430 >> Дейвин: Това ще се превърне, че характер в цяло число, нали? 1930 01:16:37,430 --> 01:16:42,160 Това е нещо като с проблем set-- този light-- 1931 01:16:42,160 --> 01:16:44,170 това е нещо като с проблем настроено на Visioneer. 1932 01:16:44,170 --> 01:16:45,980 Вие сте се занимават със стойности ASCII. 1933 01:16:45,980 --> 01:16:48,520 Така че, ако ти дам, като, един седем, но това е знак, 1934 01:16:48,520 --> 01:16:50,965 и искате да знаете, Добре, какво цифра е това? 1935 01:16:50,965 --> 01:16:53,540 1936 01:16:53,540 --> 01:16:54,910 Да, може, да. 1937 01:16:54,910 --> 01:16:55,900 Така че това, което цифра е това? 1938 01:16:55,900 --> 01:16:59,550 Можете да изваждате 0 от нея, но Трябва да извадим 0, характера. 1939 01:16:59,550 --> 01:17:01,425 >> А там, където някои хора се спънал, те са 1940 01:17:01,425 --> 01:17:04,260 като, добре, добре, трябва ли да се знае стойностите на ASCII за този тест? 1941 01:17:04,260 --> 01:17:06,218 Не, определено не Трябва да знаете ASCII 1942 01:17:06,218 --> 01:17:09,520 стойности, като, с малки букви А, главни A, равна на нула. 1943 01:17:09,520 --> 01:17:12,060 >> ROB: Няма причина да се някога сложи това на мамят лист. 1944 01:17:12,060 --> 01:17:14,226 >> Дейвин: Определено не губете пространство с това. 1945 01:17:14,226 --> 01:17:18,090 Можете да literally-- просто вместо да се каже 48, като чак до 1946 01:17:18,090 --> 01:17:24,630 там, което е еквивалентно на казва един, един апостроф, 1947 01:17:24,630 --> 01:17:27,680 като, че точно същото. 1948 01:17:27,680 --> 01:17:34,106 >> ROB: Вие почти можеше да мисли за него като if-- Бог, ми трябва, 1949 01:17:34,106 --> 01:17:37,490 oops-- бихте могли почти мисля за него като ако имаме нещо подобно хашиш 1950 01:17:37,490 --> 01:17:39,755 дефинира 0 до 48. 1951 01:17:39,755 --> 01:17:41,320 1952 01:17:41,320 --> 01:17:42,030 Това няма да работи. 1953 01:17:42,030 --> 01:17:45,502 Но мисля, че за него като апостроф 0 апостроф, както и за всички герои. 1954 01:17:45,502 --> 01:17:47,960 Мислете за това като постоянна, че декларира, че ASCII стойност. 1955 01:17:47,960 --> 01:17:49,080 >> Дейвин: Да. 1956 01:17:49,080 --> 01:17:52,820 ОК, така че за първи път чрез, така че с 76-- така за първи път през, 1957 01:17:52,820 --> 01:17:57,260 това е само символ 7 минус характера 0, 1958 01:17:57,260 --> 01:18:00,420 и тези, които са седем integers-- добре, тези, 1959 01:18:00,420 --> 01:18:04,030 седем места от всеки друг на графиката ASCII или каквото. 1960 01:18:04,030 --> 01:18:06,770 Така че ще се върне INT 7. 1961 01:18:06,770 --> 01:18:08,720 Така че сега, сумата се равнява на 7. 1962 01:18:08,720 --> 01:18:10,830 >> ОК, добре, нека да скочи в това за цикъл отново. 1963 01:18:10,830 --> 01:18:13,010 OK, сега това е сума пъти 10. 1964 01:18:13,010 --> 01:18:15,800 Значи вие сте ефективно преместване на 7 наляво. 1965 01:18:15,800 --> 01:18:17,542 Това прави ли смисъл? 1966 01:18:17,542 --> 01:18:19,250 Ти си ефективно тя се движи наляво. 1967 01:18:19,250 --> 01:18:21,790 >> И тогава add-- това ще бъде 6 минус 0. 1968 01:18:21,790 --> 01:18:22,650 Това е 6. 1969 01:18:22,650 --> 01:18:24,752 Така че това ще бъде 70 плюс 6. 1970 01:18:24,752 --> 01:18:25,996 76, това е вашия номер. 1971 01:18:25,996 --> 01:18:28,370 Така че, независимо от какъв номер Дадох ти, това е просто бавно 1972 01:18:28,370 --> 01:18:31,610 ще се премести на по-големи стойности наляво, един фактор от 10 1973 01:18:31,610 --> 01:18:35,525 всеки път, когато в за линия, и след това се добавя на колкото е необходимо. 1974 01:18:35,525 --> 01:18:37,350 1975 01:18:37,350 --> 01:18:37,865 >> В гърба? 1976 01:18:37,865 --> 01:18:40,240 STUDENT: Ние не трябва да правим всяка проверка в програмата? 1977 01:18:40,240 --> 01:18:41,580 1978 01:18:41,580 --> 01:18:44,302 >> ROB: Значи доколкото проверка се отнася и за програмата, 1979 01:18:44,302 --> 01:18:46,510 ние ще ви кажа доста много това, което трябва да се провери. 1980 01:18:46,510 --> 01:18:48,670 Ако не ви кажа, нищо, а след това като цяло 1981 01:18:48,670 --> 01:18:50,320 Предполагам, че трябва да се провери повечето неща. 1982 01:18:50,320 --> 01:18:54,772 Както може би, само за да бъдат безопасни, можете може би трябва да се провери, хей, е и нула? 1983 01:18:54,772 --> 01:18:56,230 Тогава аз нямам идея какво да се върнат. 1984 01:18:56,230 --> 01:18:58,814 Но ние ще ви кажа, този вид на нещо. 1985 01:18:58,814 --> 01:18:59,480 0, аз не знам. 1986 01:18:59,480 --> 01:19:02,786 >> Дейвин: И защо ще искате да провери отново дали и се равнява на нула? 1987 01:19:02,786 --> 01:19:03,660 STUDENT: [недоловим]. 1988 01:19:03,660 --> 01:19:04,880 Дейвин: Заради Чар звезда. 1989 01:19:04,880 --> 01:19:05,510 Това е една показалка. 1990 01:19:05,510 --> 01:19:09,240 Така че напълно приемливо декларация, бих могъл да кажа, OK, 1991 01:19:09,240 --> 01:19:11,917 S е равна на нула, тъй като тя може да бъде указател към нула. 1992 01:19:11,917 --> 01:19:14,250 Така че всеки път, когато имате указатели по пътя си по този начин, 1993 01:19:14,250 --> 01:19:15,420 може би трябва да се провери. 1994 01:19:15,420 --> 01:19:18,461 Защото, ако не се покажат, че и тогава след това отидете във вашата за контур, 1995 01:19:18,461 --> 01:19:20,100 и сте doing-- махам надолу. 1996 01:19:20,100 --> 01:19:21,980 1997 01:19:21,980 --> 01:19:22,920 Scoot надолу. 1998 01:19:22,920 --> 01:19:23,860 >> ROB: Съжаляваме, това е всичко. 1999 01:19:23,860 --> 01:19:25,860 >> Дейвин: И така, като, ако е нула, а след това 2000 01:19:25,860 --> 01:19:28,267 направите това, какво грешка отиваш да получите? 2001 01:19:28,267 --> 01:19:29,850 STUDENT: Вие ще получите комплект вина. 2002 01:19:29,850 --> 01:19:31,250 Дейвин: Вие ще зададете виновен, нали, защото сте 2003 01:19:31,250 --> 01:19:32,616 се опитва да индексира в нула. 2004 01:19:32,616 --> 01:19:35,240 Значи ще се опитам да се индексират в паметта, които не притежавате. 2005 01:19:35,240 --> 01:19:39,550 Така че това, ако това е нищожна, и можете да направите това, вие ще цикъл. 2006 01:19:39,550 --> 01:19:43,656 >> ROB: Аз също мисля, че на изпита, в който ние попита този въпрос, ние ви кажа 2007 01:19:43,656 --> 01:19:45,655 че може просто да се предположи, е положително число. 2008 01:19:45,655 --> 01:19:48,270 Тъй като се очаква и atoi да се справят с отрицателните числа, 2009 01:19:48,270 --> 01:19:49,686 така че ще трябва да специален случай. 2010 01:19:49,686 --> 01:19:53,080 Хей, е първият знак тире, като в този случай, OK, 2011 01:19:53,080 --> 01:19:54,839 сега тя е отрицателно число. 2012 01:19:54,839 --> 01:19:56,380 Ще ви кажа, тези видове неща. 2013 01:19:56,380 --> 01:19:58,005 Ние ще ви кажа това, което трябва да се справят. 2014 01:19:58,005 --> 01:19:59,310 Дейвин: Да. 2015 01:19:59,310 --> 01:20:02,530 Така че аз съм сигурен, че някои хора могат да have-- Ако сте започнали да търсите в старите изпити, 2016 01:20:02,530 --> 01:20:03,900 Вие сте виждали sterln. 2017 01:20:03,900 --> 01:20:05,120 Това е популярна. 2018 01:20:05,120 --> 01:20:09,790 И аз мисля, че в sterln, трябваше да направи тази проверка за нищожна, връщането 2019 01:20:09,790 --> 01:20:10,950 0 или нещо подобно. 2020 01:20:10,950 --> 01:20:11,940 Както и, че трябва да се провери за нищожна. 2021 01:20:11,940 --> 01:20:14,230 И ако не сте, че е точка на разстояние от теста. 2022 01:20:14,230 --> 01:20:16,750 2023 01:20:16,750 --> 01:20:19,500 Така или иначе, прави всички чувствам ОК с atoi? 2024 01:20:19,500 --> 01:20:21,112 2025 01:20:21,112 --> 01:20:22,820 Някой може ли да искате да отида части отново? 2026 01:20:22,820 --> 01:20:23,815 2027 01:20:23,815 --> 01:20:25,565 ROB: О, да, мисля, че Ние също така да ви кажа ли 2028 01:20:25,565 --> 01:20:28,565 може да се предположи, че всичко is-- че те всъщност въвеждане на номер, 2029 01:20:28,565 --> 01:20:32,821 че не е нужно да се притесняваш, като писма са в низа, така. 2030 01:20:32,821 --> 01:20:33,320 Дейвин: Да. 2031 01:20:33,320 --> 01:20:33,922 Да? 2032 01:20:33,922 --> 01:20:35,713 STUDENT: Можете ли да отидете над още един момент, когато 2033 01:20:35,713 --> 01:20:37,860 използвате двойни кавички и апостроф? 2034 01:20:37,860 --> 01:20:41,290 >> Дейвин: Разбира се, така че двойните кавички, много просто, е двойни кавички са струни. 2035 01:20:41,290 --> 01:20:43,370 Така че, ако се удвои цитат нищо, че е низ. 2036 01:20:43,370 --> 01:20:48,270 Така че, като, ако имах тази 0 над тук, и аз го направих това, че е низ. 2037 01:20:48,270 --> 01:20:50,060 Това вече не е герой. 2038 01:20:50,060 --> 01:20:54,816 Така че аз не мога да намеря тази стойност на моя ASCII диаграма, защото това е един низ, да. 2039 01:20:54,816 --> 01:20:57,770 2040 01:20:57,770 --> 01:20:59,480 >> OK, всички други въпроси? 2041 01:20:59,480 --> 01:21:00,405 Да? 2042 01:21:00,405 --> 01:21:02,345 >> STUDENT: Значи вие сте вече отговорих на този, 2043 01:21:02,345 --> 01:21:05,255 но като, когато сме в действителност написването на тази на теста, 2044 01:21:05,255 --> 01:21:08,165 искаш да пиша с черта нули [недоловим]? 2045 01:21:08,165 --> 01:21:11,041 2046 01:21:11,041 --> 01:21:11,540 Дейвин: No. 2047 01:21:11,540 --> 01:21:13,800 Въпросът е трябва ли сложи черта през нулите 2048 01:21:13,800 --> 01:21:14,890 да посочи дали те са нули? 2049 01:21:14,890 --> 01:21:15,890 Не, ние ще го разбера. 2050 01:21:15,890 --> 01:21:16,940 2051 01:21:16,940 --> 01:21:19,530 Да, благодаря, те са добри. 2052 01:21:19,530 --> 01:21:20,860 Добре, нещо друго? 2053 01:21:20,860 --> 01:21:25,060 Някой може ли да искате to-- така че аз мисля, че ние сме тече малко с течение на времето. 2054 01:21:25,060 --> 01:21:27,305 Искате ли да видите още един, или? 2055 01:21:27,305 --> 01:21:28,096 STUDENT: RandomInt. 2056 01:21:28,096 --> 01:21:29,230 2057 01:21:29,230 --> 01:21:30,750 >> Дейвин: RandomInt, OK, точно така. 2058 01:21:30,750 --> 01:21:32,975 Така че нека да направим RandomInt. 2059 01:21:32,975 --> 01:21:34,395 2060 01:21:34,395 --> 01:21:35,270 Аз ще го направя тук. 2061 01:21:35,270 --> 01:21:36,770 2062 01:21:36,770 --> 01:21:39,210 Така RandomInt всъщност е много по-просто. 2063 01:21:39,210 --> 01:21:43,578 Мисля atoi е може би най-трудно че сме попита в предишните години. 2064 01:21:43,578 --> 01:21:44,453 STUDENT: [недоловим]. 2065 01:21:44,453 --> 01:21:46,660 2066 01:21:46,660 --> 01:21:47,161 >> Дейвин: Какво? 2067 01:21:47,161 --> 01:21:49,493 ROB: Аз виждам, ако това е вид на видимата от тук. 2068 01:21:49,493 --> 01:21:50,040 Дейвин: тя е? 2069 01:21:50,040 --> 01:21:52,500 ROB: Аз не мисля, че е going-- мисля че ще избяга в дясно. 2070 01:21:52,500 --> 01:21:53,791 Дейвин: ОК, така че аз ще направя това. 2071 01:21:53,791 --> 01:21:56,250 И след това просто го сложи на екрана. 2072 01:21:56,250 --> 01:21:57,150 >> ROB: Добре. 2073 01:21:57,150 --> 01:21:58,190 >> Дейвин: Искаш ли да бъдеш мой писар? 2074 01:21:58,190 --> 01:21:58,600 >> ROB: Да. 2075 01:21:58,600 --> 01:21:59,100 >> Дейвин: Ница. 2076 01:21:59,100 --> 01:22:01,210 2077 01:22:01,210 --> 01:22:02,727 ОК, мога ли да изтриете това? 2078 01:22:02,727 --> 01:22:04,188 >> Студентът: Да. 2079 01:22:04,188 --> 01:22:05,162 >> Дейвин: Това е толкова трудно. 2080 01:22:05,162 --> 01:22:10,032 2081 01:22:10,032 --> 01:22:12,062 (ПЕЕ) Правиш какво правиш. 2082 01:22:12,062 --> 01:22:14,454 И правиш това, което не е така. 2083 01:22:14,454 --> 01:22:14,954 Добре. 2084 01:22:14,954 --> 01:22:19,790 2085 01:22:19,790 --> 01:22:22,930 >> Добре, ако си спомням правилно, за викторина на RandomInt бях като, 2086 01:22:22,930 --> 01:22:26,190 Добре, аз ще ви дам два номера, като на един и б. 2087 01:22:26,190 --> 01:22:30,380 И аз искам да ми даде RandomInt между тези числа. 2088 01:22:30,380 --> 01:22:33,440 Така RandomInt ще да вземе две numbers-- 2089 01:22:33,440 --> 01:22:41,690 така RandomInt-- и това е ще се върне на инт. 2090 01:22:41,690 --> 01:22:42,930 >> Така че това, което е стойността на замяна? 2091 01:22:42,930 --> 01:22:44,151 Току-що ви казах. 2092 01:22:44,151 --> 01:22:44,650 Int, нали? 2093 01:22:44,650 --> 01:22:46,400 2094 01:22:46,400 --> 01:22:49,260 Подобно на това, както и след това, че е ще отнеме две цели числа. 2095 01:22:49,260 --> 01:22:56,301 Така че това ще отнеме инт А и INT б, като това. 2096 01:22:56,301 --> 01:22:58,217 Така че това, което е RandomInt ще направя, е, че ще 2097 01:22:58,217 --> 01:23:02,440 да се върне някаква случайна стойност между тези две стойности. 2098 01:23:02,440 --> 01:23:05,140 Така че това ще бъде по-голяма от по-малко от б. 2099 01:23:05,140 --> 01:23:09,020 Така че аз мисля, че най-вероятно може да се предположи, че а е по-малката от двете стойности. 2100 01:23:09,020 --> 01:23:12,210 Така че, ако ние се занимават с случайността, какво функция 2101 01:23:12,210 --> 01:23:14,825 видяхме, че ни дава случайни неща? 2102 01:23:14,825 --> 01:23:15,450 STUDENT: Drand. 2103 01:23:15,450 --> 01:23:16,506 Дейвин: Drand, точно така. 2104 01:23:16,506 --> 01:23:18,630 Така че, ти започваш да се вероятно искате да използвате вашия drand. 2105 01:23:18,630 --> 01:23:19,940 2106 01:23:19,940 --> 01:23:29,160 Така че може да се каже инт случаен принцип, и ние ще само да кажа, че е равен на 0 в момента. 2107 01:23:29,160 --> 01:23:30,170 2108 01:23:30,170 --> 01:23:38,690 И те са отиваме да се каже, OK, случайни равни drand 48. 2109 01:23:38,690 --> 01:23:39,747 2110 01:23:39,747 --> 01:23:40,830 И какво означава това се върнете? 2111 01:23:40,830 --> 01:23:43,742 Какво прави тази функция ви даде? 2112 01:23:43,742 --> 01:23:45,610 >> STUDENT: Между 0 и 1. 2113 01:23:45,610 --> 01:23:47,870 >> Дейвин: Да, между 0 и 1. 2114 01:23:47,870 --> 01:23:48,890 Така че това ще be-- 2115 01:23:48,890 --> 01:23:51,070 >> ROB: И това is-- мисля ние ще ви кажа това. 2116 01:23:51,070 --> 01:23:52,670 Например, можете да използвате drand 48. 2117 01:23:52,670 --> 01:23:54,350 Можете да проверите това на последната изпита. 2118 01:23:54,350 --> 01:23:56,720 Но ние сигурно ще ви каже, да използвате drand 48, които 2119 01:23:56,720 --> 01:23:58,790 връща плувка между 0 и 1. 2120 01:23:58,790 --> 01:24:00,830 >> Дейвин: Да, да, аз съм сигурен, че на изпита 2121 01:24:00,830 --> 01:24:03,860 той ви казва, че най-вероятно искате да използвате drand, да. 2122 01:24:03,860 --> 01:24:07,041 Така че ще се върне някаква стойност между 0 и 1. 2123 01:24:07,041 --> 01:24:08,790 И след това, което сте ще искате да направя? 2124 01:24:08,790 --> 01:24:16,360 Е, искате да се размножават по-- чакай, аз мисля, че е като това, съжалявам. 2125 01:24:16,360 --> 01:24:18,018 Аз просто ще го направя. 2126 01:24:18,018 --> 01:24:19,410 Не знам. 2127 01:24:19,410 --> 01:24:22,240 >> Така б минус. 2128 01:24:22,240 --> 01:24:23,310 2129 01:24:23,310 --> 01:24:24,490 Така че, защо б минус? 2130 01:24:24,490 --> 01:24:26,110 2131 01:24:26,110 --> 01:24:30,490 Така че нека да кажем, че drand дава назад на int-- OK, аз просто ще свърши останалото, 2132 01:24:30,490 --> 01:24:33,380 така плюс. 2133 01:24:33,380 --> 01:24:36,130 Така че това, което does-- у е б минус. 2134 01:24:36,130 --> 01:24:40,670 Така че нека да кажем, че drand дава назад максималната стойност, която би могла да 2135 01:24:40,670 --> 01:24:41,410 ти дам. 2136 01:24:41,410 --> 01:24:42,409 Какво, че ще бъде? 2137 01:24:42,409 --> 01:24:43,010 STUDENT: 1. 2138 01:24:43,010 --> 01:24:44,430 >> Дейвин: 1, нали? 2139 01:24:44,430 --> 01:24:47,880 Така че, ако това е едно, а ти си се умножи по б минус, 2140 01:24:47,880 --> 01:24:50,110 добре, че е само разлика между минус A. 2141 01:24:50,110 --> 01:24:52,870 И ако тогава се добави, че обратно върху, който е какво? 2142 01:24:52,870 --> 01:24:54,290 2143 01:24:54,290 --> 01:24:55,180 Това е в общи линии да б. 2144 01:24:55,180 --> 01:24:56,435 2145 01:24:56,435 --> 01:24:57,310 Това прави ли смисъл? 2146 01:24:57,310 --> 01:24:57,851 >> Студентът: Да. 2147 01:24:57,851 --> 01:24:59,480 2148 01:24:59,480 --> 01:25:02,170 >> Дейвин: Така че, ако това е максимумът стойността, която тя би могла да бъде, 2149 01:25:02,170 --> 01:25:03,175 това ще бъде една. 2150 01:25:03,175 --> 01:25:04,122 2151 01:25:04,122 --> 01:25:06,330 И тогава това е само разлика между двете. 2152 01:25:06,330 --> 01:25:11,410 Добавяне на, така че това е ще се върне на случаен принцип. 2153 01:25:11,410 --> 01:25:15,000 2154 01:25:15,000 --> 01:25:18,620 И в случай, че ъгъл drand дава назад 1, 2155 01:25:18,620 --> 01:25:20,970 случаен просто ще бъде ефективно вграж. 2156 01:25:20,970 --> 01:25:22,700 Но това е максимумът може да бъде. 2157 01:25:22,700 --> 01:25:27,420 Така че, ако това ще бъде по-малко от това, така че нека да кажем, че това е като 0.9, 2158 01:25:27,420 --> 01:25:31,080 така че след това 0,9 пъти б минус а ще бъде по-малко 2159 01:25:31,080 --> 01:25:33,230 от разликата между б минус. 2160 01:25:33,230 --> 01:25:35,830 >> И след това, ако се добави, че към А, след това тази стойност е 2161 01:25:35,830 --> 01:25:38,986 ще бъде по-голяма, отколкото, защото добавяте нещо към него, 2162 01:25:38,986 --> 01:25:40,360 но тя ще бъде по-малко от б. 2163 01:25:40,360 --> 01:25:41,430 2164 01:25:41,430 --> 01:25:44,420 Така че, ти започваш да се получи случайно номер, защото се обаждате drand. 2165 01:25:44,420 --> 01:25:48,000 И това ранд, че на случайни числа е ще бъде някъде по средата на 2166 01:25:48,000 --> 01:25:49,342 и б. 2167 01:25:49,342 --> 01:25:50,780 Това прави ли смисъл? 2168 01:25:50,780 --> 01:25:52,990 >> ROB: Само за да го сложи в конкретни числа, така че 2169 01:25:52,990 --> 01:25:55,450 нека да кажем, че искаме да вземем една случайно число между 7 и 10. 2170 01:25:55,450 --> 01:25:56,960 Така б минус е нашата гама. 2171 01:25:56,960 --> 01:26:00,150 Така че има набор от три номера, които искаме да избирате. 2172 01:26:00,150 --> 01:26:03,290 И след това се умножи че между 0 и 1, 1, 2173 01:26:03,290 --> 01:26:07,430 ако след това ни дава some-- нека да кажем, че ни дава 1.5. 2174 01:26:07,430 --> 01:26:10,670 >> След 1.5, искаме да отидем 7-10. 2175 01:26:10,670 --> 01:26:14,470 Така 1.5 плюс 7 ни носи обратно в нашата 7 до 10 кръг. 2176 01:26:14,470 --> 01:26:17,580 И след това ние сме го приберете вътре цяло число, така че скъсен до 8. 2177 01:26:17,580 --> 01:26:18,790 И тогава ние просто се върне това. 2178 01:26:18,790 --> 01:26:21,310 Така б минус е нашата гама. 2179 01:26:21,310 --> 01:26:25,770 а то се измества нагоре в цифрите че искаме в рамките на този диапазон. 2180 01:26:25,770 --> 01:26:30,540 Така че между 7 и 10, и тогава ние може да се върне това, което в крайна сметка с. 2181 01:26:30,540 --> 01:26:32,684 >> Дейвин: Да, хубаво. 2182 01:26:32,684 --> 01:26:34,470 >> ROB: Благодаря ви. 2183 01:26:34,470 --> 01:26:35,628 >> Дейвин: Да, какво има? 2184 01:26:35,628 --> 01:26:39,746 >> STUDENT: Трябва ли да го ползвате за всякакъв вид Грешки ASCII когато we're-- ако drand е 2185 01:26:39,746 --> 01:26:40,996 връщане на плувка [недоловим]. 2186 01:26:40,996 --> 01:26:42,470 2187 01:26:42,470 --> 01:26:45,360 >> ROB: Така че просто като Роб каза, защото случайно не е едно цяло число, 2188 01:26:45,360 --> 01:26:47,080 така drand ще бъде плувка. 2189 01:26:47,080 --> 01:26:48,470 Така че и след това се умножава по. 2190 01:26:48,470 --> 01:26:50,507 И вие може да получите някои вид на плувка номера. 2191 01:26:50,507 --> 01:26:51,840 И след това ще се съкрати. 2192 01:26:51,840 --> 01:26:52,339 >> STUDENT: OK. 2193 01:26:52,339 --> 01:26:53,019 Дейвин: Да. 2194 01:26:53,019 --> 01:26:56,060 ROB: И ако компилатора са да предупредя вас за, като загуба на точност, 2195 01:26:56,060 --> 01:26:58,986 просто хвърлени пад в там, и след това е добре. 2196 01:26:58,986 --> 01:27:00,398 2197 01:27:00,398 --> 01:27:00,898 Дейвин: Да? 2198 01:27:00,898 --> 01:27:02,332 2199 01:27:02,332 --> 01:27:04,722 >> STUDENT: ще го има на същата вероятност за получаване, 2200 01:27:04,722 --> 01:27:06,156 като, б или [недоловим]? 2201 01:27:06,156 --> 01:27:08,080 2202 01:27:08,080 --> 01:27:10,980 >> ROB: Така is-- съм всъщност wondering-- е RandomInt трябвало 2203 01:27:10,980 --> 01:27:14,362 да бъде номер от по-малко от б? 2204 01:27:14,362 --> 01:27:16,820 Например, ако това е между 7 и 10, какви са възможностите? 2205 01:27:16,820 --> 01:27:18,454 7, 8 и 9, или 7, 8, 9, 10? 2206 01:27:18,454 --> 01:27:19,120 Дейвин: забравям. 2207 01:27:19,120 --> 01:27:19,880 На проблем set-- 2208 01:27:19,880 --> 01:27:20,570 >> ROB: Аз мисля, че е 7, 8, 9. 2209 01:27:20,570 --> 01:27:22,785 >> Дейвин: Той изрично казва нечии включително и един Изключителната. 2210 01:27:22,785 --> 01:27:23,110 >> ROB: Да. 2211 01:27:23,110 --> 01:27:23,670 >> Дейвин: Но аз don't-- съм not-- 2212 01:27:23,670 --> 01:27:25,878 >> ROB: Така че аз мисля, че това е които не са включени в този случай, 2213 01:27:25,878 --> 01:27:28,152 има равен вероятност на 7, 8 и 9. 2214 01:27:28,152 --> 01:27:29,360 Няма никаква вероятност от 10. 2215 01:27:29,360 --> 01:27:31,770 2216 01:27:31,770 --> 01:27:32,270 Дейвин: Да? 2217 01:27:32,270 --> 01:27:33,395 STUDENT: Аз имам един въпрос. 2218 01:27:33,395 --> 01:27:38,090 Ние искаме да се дефинира функция връща не една стойност, но масив. 2219 01:27:38,090 --> 01:27:41,020 Тогава какво ще бъде синтаксис, след като се върне? 2220 01:27:41,020 --> 01:27:44,604 >> Дейвин: ОК, така че след това ви would-- след завръщането? 2221 01:27:44,604 --> 01:27:47,020 Така че нека да кажем, че е обявил масив някъде там. 2222 01:27:47,020 --> 01:27:49,708 Тогава просто ще се върне името на масива. 2223 01:27:49,708 --> 01:27:50,676 >> STUDENT: Добре, благодаря ви. 2224 01:27:50,676 --> 01:27:51,718 След това просто се върна с A-- 2225 01:27:51,718 --> 01:27:52,759 Дейвин: О, чакайте, толкова съжалявам. 2226 01:27:52,759 --> 01:27:54,620 Въпросът е как искаш да се върне масив. 2227 01:27:54,620 --> 01:27:56,170 >> ROB: Въпреки че не може да бъде обявена за масив 2228 01:27:56,170 --> 01:27:57,260 на стека или нещо подобно. 2229 01:27:57,260 --> 01:27:59,510 Тя би трябвало да бъде нещо malloced, защото изчистване 2230 01:27:59,510 --> 01:28:01,610 Ето как можете да получите около автоматично разпределение на паметта. 2231 01:28:01,610 --> 01:28:02,109 >> Дейвин: Да. 2232 01:28:02,109 --> 01:28:03,433 2233 01:28:03,433 --> 01:28:04,933 ROB: Как можете да получите около местен обхват. 2234 01:28:04,933 --> 01:28:09,670 2235 01:28:09,670 --> 01:28:11,550 >> Дейвин: Но вие ще просто се върнете си name-- 2236 01:28:11,550 --> 01:28:17,890 >> STUDENT: [недоловим] това не е един стойност, например, два номера, така че 2237 01:28:17,890 --> 01:28:18,390 [Недоловим]. 2238 01:28:18,390 --> 01:28:19,590 >> Дейвин: Не можете да се върнете няколко номера. 2239 01:28:19,590 --> 01:28:20,850 Вие не можете да, като, return-- 2240 01:28:20,850 --> 01:28:23,630 >> STUDENT: Говорих за връщане масив или нещо подобно. 2241 01:28:23,630 --> 01:28:26,050 >> Дейвин: Да, така че въпросът е мога ли да се върнете няколко стойности. 2242 01:28:26,050 --> 01:28:27,460 Вие не можете да се върнете няколко стойности. 2243 01:28:27,460 --> 01:28:30,270 Вие не можете да, като, да върне след това върнете б или нещо подобно. 2244 01:28:30,270 --> 01:28:32,710 Защото след като се върнете, вие върнат от функцията. 2245 01:28:32,710 --> 01:28:35,790 И тогава функцията е направено, и като Роб каза, е в стека. 2246 01:28:35,790 --> 01:28:38,260 >> Така че всичко, което памет точно получава връща към компютъра. 2247 01:28:38,260 --> 01:28:40,025 Всичко бива забравено, основно. 2248 01:28:40,025 --> 01:28:41,480 2249 01:28:41,480 --> 01:28:44,430 Така че, ако искате да се върнете многократно ценности, които трябва да се върне масив, 2250 01:28:44,430 --> 01:28:45,971 И начина, по който прави това е mallocing. 2251 01:28:45,971 --> 01:28:48,780 И тогава ще се върне х подобно. 2252 01:28:48,780 --> 01:28:50,280 По принцип, просто се върнете името. 2253 01:28:50,280 --> 01:28:51,620 И когато се върнете нещо подобно, вие сте 2254 01:28:51,620 --> 01:28:53,200 всъщност не връща стойност. 2255 01:28:53,200 --> 01:28:55,430 >> Така че нека да кажем, че се съхраняват стойностите в масив. 2256 01:28:55,430 --> 01:28:57,910 Вие не сте в действителност връщане на тези ценности. 2257 01:28:57,910 --> 01:29:01,515 Например, ако аз се върнах на INT, аз съм наистина връщане копия на стойностите. 2258 01:29:01,515 --> 01:29:02,017 2259 01:29:02,017 --> 01:29:03,850 Но, ако аз трябваше да се върне нещо подобно на това, 2260 01:29:03,850 --> 01:29:06,450 Аз съм връщане на референтната към тези ценности. 2261 01:29:06,450 --> 01:29:09,090 Така че аз съм връщане, общо взето, по- памет адрес на стойностите. 2262 01:29:09,090 --> 01:29:10,079 Това прави ли смисъл? 2263 01:29:10,079 --> 01:29:10,620 Студентът: Да. 2264 01:29:10,620 --> 01:29:11,120 Дейвин: Ница. 2265 01:29:11,120 --> 01:29:12,760 2266 01:29:12,760 --> 01:29:13,410 Да? 2267 01:29:13,410 --> 01:29:15,430 >> STUDENT: Когато сте използване drand тук, 2268 01:29:15,430 --> 01:29:17,660 Имате ли да се сложи Srand преди това? 2269 01:29:17,660 --> 01:29:20,320 >> Дейвин: Не, не, аз не мисля така. 2270 01:29:20,320 --> 01:29:23,040 >> ROB: Да, така че имате да се каже нищо за Srand? 2271 01:29:23,040 --> 01:29:26,900 По подразбиране от вас никога не казва Srand изобщо е просто да се направи Srand на нула. 2272 01:29:26,900 --> 01:29:29,350 Така drand по своя собствена воля работа. 2273 01:29:29,350 --> 01:29:33,759 И това автоматично ще семена с текущото време, е това, което го използва. 2274 01:29:33,759 --> 01:29:35,175 2275 01:29:35,175 --> 01:29:35,675 Дейвин: Да? 2276 01:29:35,675 --> 01:29:40,950 STUDENT: ли [недоловим] с цифрите? 2277 01:29:40,950 --> 01:29:42,570 Дейвин: Да, можете. 2278 01:29:42,570 --> 01:29:46,770 STUDENT: Така бихте могли да се каже, като 4 пъти 2. 2279 01:29:46,770 --> 01:29:50,280 Работата е там, че не можем да приемем, тогава INT е четири байта. 2280 01:29:50,280 --> 01:29:51,020 The only-- 2281 01:29:51,020 --> 01:29:53,830 >> Дейвин: Искам да кажа, за теста можете. 2282 01:29:53,830 --> 01:29:54,830 [Смее се] 2283 01:29:54,830 --> 01:29:55,780 >> ROB: Мм, не. 2284 01:29:55,780 --> 01:29:56,780 Дейвин: Да, да можете. 2285 01:29:56,780 --> 01:30:00,197 Ако те питат колко е голям пад е, не може да бъде, като, четири или осем. 2286 01:30:00,197 --> 01:30:02,030 ROB: О, така че ако въпрос е специално 2287 01:30:02,030 --> 01:30:04,857 като, ако това е проблем за кодиране, трябва да се каже, размер на инт. 2288 01:30:04,857 --> 01:30:06,690 Ако това е маса, или тя казва колко байта, 2289 01:30:06,690 --> 01:30:08,808 Вие не трябва да попълнят в размер на цели числа. 2290 01:30:08,808 --> 01:30:11,278 >> УЧЕНИЦИ: [смее се] 2291 01:30:11,278 --> 01:30:18,210 2292 01:30:18,210 --> 01:30:20,580 >> Дейвин: Добре, така че защо да е размер на INT важно тук? 2293 01:30:20,580 --> 01:30:23,085 Така както, ако отиваме на 32-битов процесор или нещо подобно, 2294 01:30:23,085 --> 01:30:24,300 След това ще бъде четири байта. 2295 01:30:24,300 --> 01:30:26,342 Но на някои от по-новите неща, той може да бъде това? 2296 01:30:26,342 --> 01:30:27,383 Тя може да бъде осем, нали? 2297 01:30:27,383 --> 01:30:30,550 Така this-- ако просто трудно код четири, след това на някои машини, той ще работи. 2298 01:30:30,550 --> 01:30:32,180 Някои машини, няма да работят. 2299 01:30:32,180 --> 01:30:35,270 Но ако на теста ние сме като колко голям е инт? 2300 01:30:35,270 --> 01:30:35,770 Сложете четири. 2301 01:30:35,770 --> 01:30:38,710 2302 01:30:38,710 --> 01:30:39,210 ROB: Точно така. 2303 01:30:39,210 --> 01:30:39,790 Дейвин: Да? 2304 01:30:39,790 --> 01:30:43,192 STUDENT: Значи, защото ние сме обявяване [Недоловим] вътре във функция, 2305 01:30:43,192 --> 01:30:45,622 трябва да сложим 3 вътре тази функция? 2306 01:30:45,622 --> 01:30:46,907 Или можем да го използвате навън? 2307 01:30:46,907 --> 01:30:48,740 Дейвин: Можете да го използвате извън тази функция. 2308 01:30:48,740 --> 01:30:49,890 Така той иска безплатно. 2309 01:30:49,890 --> 01:30:51,700 >> STUDENT: Загуба песен на мястото, където [недоловим]. 2310 01:30:51,700 --> 01:30:54,720 >> ROB: О, фрий не happen-- това е част от магията на изчистване 2311 01:30:54,720 --> 01:30:57,220 е, че вие ​​не сте ограничена до местната обхват. 2312 01:30:57,220 --> 01:31:00,700 Вие имате пълен контрол над колко дълго си променливи живеят. 2313 01:31:00,700 --> 01:31:05,380 Така че ние наричаме изчистване тук, може да да бъде напълно самостоятелна функция. 2314 01:31:05,380 --> 01:31:08,670 Тя може да бъде 10 часа по-късно че ние най-накрая се обаждате безплатно. 2315 01:31:08,670 --> 01:31:11,764 >> Дейвин: Така например, като, няколко седмици от сега, когато най-накрая 2316 01:31:11,764 --> 01:31:13,680 направете си речник правопис psets, започваш 2317 01:31:13,680 --> 01:31:16,410 да има някаква функция, която създава т възли. 2318 01:31:16,410 --> 01:31:18,630 Значи mallocing тона възли в тази функция. 2319 01:31:18,630 --> 01:31:20,670 И след това по-късно в отделна функция, вие сте 2320 01:31:20,670 --> 01:31:22,440 ще искате да освободи всички тези възли. 2321 01:31:22,440 --> 01:31:25,740 Така че можете да буквално преминава към освободи указател, така че адрес на паметта 2322 01:31:25,740 --> 01:31:26,684 на това, което malloced. 2323 01:31:26,684 --> 01:31:27,600 И това ще се оправи. 2324 01:31:27,600 --> 01:31:29,725 Вие не трябва да се освободи, като в една и съща функция. 2325 01:31:29,725 --> 01:31:30,449 Да? 2326 01:31:30,449 --> 01:31:36,197 >> STUDENT: Така изчистване променлива [недоловим] навън? 2327 01:31:36,197 --> 01:31:37,384 Е, че това, което казвате? 2328 01:31:37,384 --> 01:31:38,300 Дейвин: Чакай, казваш това? 2329 01:31:38,300 --> 01:31:38,800 Извинете. 2330 01:31:38,800 --> 01:31:42,300 >> STUDENT: Ако променлива изчистване може да бъде безплатно навсякъде в кода, 2331 01:31:42,300 --> 01:31:44,800 След това те могат да бъдат достъпни навсякъде в кода? 2332 01:31:44,800 --> 01:31:45,800 Можеш ли да ги задържи местното? 2333 01:31:45,800 --> 01:31:47,880 >> Дейвин: О, тя попита: като, променливата, like-- 2334 01:31:47,880 --> 01:31:51,300 2335 01:31:51,300 --> 01:31:55,510 >> ROB: Значи вие все още трябва да има някаква справка 2336 01:31:55,510 --> 01:31:57,220 до блок от паметта на изчистване на. 2337 01:31:57,220 --> 01:31:58,540 Така че тук, ние сме връщане х. 2338 01:31:58,540 --> 01:31:59,040 STUDENT: О. 2339 01:31:59,040 --> 01:32:01,920 ROB: Ако не се върне х тук, а това са просто нищожни 2340 01:32:01,920 --> 01:32:04,550 тогава няма да има достъп до показалеца, който е malloced, 2341 01:32:04,550 --> 01:32:05,920 и това е изтекла памет. 2342 01:32:05,920 --> 01:32:06,690 >> STUDENT: OK. 2343 01:32:06,690 --> 01:32:10,010 >> Дейвин: Така като, нека да ви кажа, има това като, точно тук. 2344 01:32:10,010 --> 01:32:10,510 ROB: No. 2345 01:32:10,510 --> 01:32:13,430 Дейвин: В моята основна функция, не мога просто се обадете тази х и да бъде, като, OK, 2346 01:32:13,430 --> 01:32:14,645 в тази функция, аз направих това. 2347 01:32:14,645 --> 01:32:14,960 >> ROB: Точно така. 2348 01:32:14,960 --> 01:32:17,790 >> Дейвин: Така че аз отивам да се обадя х в, като, основен или нещо подобно. 2349 01:32:17,790 --> 01:32:18,540 Вие не може да направи това. 2350 01:32:18,540 --> 01:32:19,600 Ти започваш да се върне нещо. 2351 01:32:19,600 --> 01:32:21,000 Но какво ли ще се върне? 2352 01:32:21,000 --> 01:32:22,130 Ти започваш да се върне адрес на паметта. 2353 01:32:22,130 --> 01:32:25,130 И тъй като се върнете с памет адрес, който може да бъде достъпен другаде. 2354 01:32:25,130 --> 01:32:27,262 2355 01:32:27,262 --> 01:32:28,255 Всякакви други въпроси? 2356 01:32:28,255 --> 01:32:28,755 Да? 2357 01:32:28,755 --> 01:32:31,213 >> STUDENT: Дали функцията по-горе е проверка за [недоловим]? 2358 01:32:31,213 --> 01:32:33,270 2359 01:32:33,270 --> 01:32:35,005 >> Дейвин: Защо не трябва да направя това? 2360 01:32:35,005 --> 01:32:35,880 STUDENT: [недоловим]. 2361 01:32:35,880 --> 01:32:37,755 Дейвин: Защото си не mallocing нищо. 2362 01:32:37,755 --> 01:32:39,640 Така че това е not-- Да, това е не като низ с. 2363 01:32:39,640 --> 01:32:41,160 Това е показалеца някъде. 2364 01:32:41,160 --> 01:32:42,951 Това са само ценности. 2365 01:32:42,951 --> 01:32:43,450 STUDENT: OK. 2366 01:32:43,450 --> 01:32:43,949 Дейвин: Да. 2367 01:32:43,949 --> 01:32:47,600 2368 01:32:47,600 --> 01:32:48,470 Нещо друго? 2369 01:32:48,470 --> 01:32:48,970 ROB: Да? 2370 01:32:48,970 --> 01:32:50,386 STUDENT: Но когато [недоловим]? 2371 01:32:50,386 --> 01:32:55,050 2372 01:32:55,050 --> 01:32:58,690 >> ROB: Така че, за да се освободи памет, бихме казали тук. 2373 01:32:58,690 --> 01:33:01,350 Така че х е нашата показалеца блока на паметта. 2374 01:33:01,350 --> 01:33:02,845 Освобождаваме че показалка. 2375 01:33:02,845 --> 01:33:04,470 И не е задължително да го направите тук. 2376 01:33:04,470 --> 01:33:05,390 Можем да го направим навсякъде. 2377 01:33:05,390 --> 01:33:10,400 Но ти се обадя само безплатно на нещо, което изчистване възвръщаемост. 2378 01:33:10,400 --> 01:33:12,940 Така изчистване, тук, се върна това, което се съхранява в х. 2379 01:33:12,940 --> 01:33:14,802 Така че ние можем да се обаждате безплатно на х. 2380 01:33:14,802 --> 01:33:18,730 2381 01:33:18,730 --> 01:33:20,556 Всякакви последните въпроси? 2382 01:33:20,556 --> 01:33:21,701 >> Дейвин: Всички последните въпроси? 2383 01:33:21,701 --> 01:33:22,200 Така ли? 2384 01:33:22,200 --> 01:33:25,152 >> STUDENT: За съжаление, може ли отново да се обясни Затова ли ще освободи там? 2385 01:33:25,152 --> 01:33:26,630 Защо [недоловим]? 2386 01:33:26,630 --> 01:33:27,774 >> Дейвин: Защото тук? 2387 01:33:27,774 --> 01:33:29,109 >> STUDENT: Да, като веднага след. 2388 01:33:29,109 --> 01:33:30,900 Дейвин: Вероятно не искам безплатно от тук. 2389 01:33:30,900 --> 01:33:31,630 ROB: Може би не би. 2390 01:33:31,630 --> 01:33:33,060 Дейвин: Да, това ще направя нищо. 2391 01:33:33,060 --> 01:33:35,220 Това би, като, да създавате памет, направете нещо за него, 2392 01:33:35,220 --> 01:33:37,390 и след това незабавно да забравите за нея, да. 2393 01:33:37,390 --> 01:33:39,850 >> ROB: Но можем да направим, като, тук по някаква причина. 2394 01:33:39,850 --> 01:33:43,902 Можем да кажем, инт звезда у равнява връщане масив. 2395 01:33:43,902 --> 01:33:47,900 Направи някои неща с Y, може би отпечатате съдържанието. 2396 01:33:47,900 --> 01:33:49,350 И тогава, най-накрая, ние сме направили. 2397 01:33:49,350 --> 01:33:50,626 Ние можем да освободим г. 2398 01:33:50,626 --> 01:33:51,501 STUDENT: [недоловим]. 2399 01:33:51,501 --> 01:33:57,839 2400 01:33:57,839 --> 01:33:59,005 Дейвин: Трябва ли да превъртите надолу? 2401 01:33:59,005 --> 01:34:00,445 Благодаря. 2402 01:34:00,445 --> 01:34:00,945 ROB: Ница. 2403 01:34:00,945 --> 01:34:02,400 2404 01:34:02,400 --> 01:34:03,646 >> Дейвин: Добре, това е всичко. 2405 01:34:03,646 --> 01:34:04,520 ROB: Добре, добре. 2406 01:34:04,520 --> 01:34:05,070 Добър късмет. 2407 01:34:05,070 --> 01:34:06,800 >> Дейвин: Ако имате въпроси, пишете ни. 2408 01:34:06,800 --> 01:34:08,670 Добър късмет. 2409 01:34:08,670 --> 01:34:10,283