1 00:00:00,000 --> 00:00:04,875 2 00:00:04,875 --> 00:00:05,750 АНДИ Пенг: Добре. 3 00:00:05,750 --> 00:00:08,240 Добре дошли на четири седмици на раздел. 4 00:00:08,240 --> 00:00:10,280 Това е един прекрасен ден тук в Ню Хейвън 5 00:00:10,280 --> 00:00:14,370 така че аз наистина мисля, че редките разсейване на децата, че 6 00:00:14,370 --> 00:00:17,530 се присъедини към мен за точка днес, благодаря ви. 7 00:00:17,530 --> 00:00:21,517 >> Така бързо, точно преди да започнете, в дневния ред за днес. 8 00:00:21,517 --> 00:00:23,600 Ние ще отидем на няколко кратки съобщения. 9 00:00:23,600 --> 00:00:26,224 Ние имаме една наистина чалнат график идва в следващите две седмици 10 00:00:26,224 --> 00:00:28,010 или така, така че ние отиваме да разясни това. 11 00:00:28,010 --> 00:00:30,410 Второ, аз знам, любимата topic-- всеки 12 00:00:30,410 --> 00:00:33,572 Сигурен съм, че това се разтопи ума си по време на лекция, не се притеснявай, 13 00:00:33,572 --> 00:00:34,780 Аз все още вид не го получи. 14 00:00:34,780 --> 00:00:35,444 Това е добре. 15 00:00:35,444 --> 00:00:36,110 Това беше шега. 16 00:00:36,110 --> 00:00:37,450 Аз всъщност правя го получи. 17 00:00:37,450 --> 00:00:40,234 Но аз ще се уверите, че вие го получавате, също. 18 00:00:40,234 --> 00:00:42,400 Така че ние ще прекарат наистина, наистина добра сума 19 00:00:42,400 --> 00:00:44,020 време да говори за показалеца днес. 20 00:00:44,020 --> 00:00:47,012 Както можете да видите, Канди разговор е огромна днес. 21 00:00:47,012 --> 00:00:49,220 Ние наистина се случва да се запази that-- Да, точно така. 22 00:00:49,220 --> 00:00:49,890 Продължавайте да приемате бонбони. 23 00:00:49,890 --> 00:00:51,556 Отивам да ги прехвърлят около точно сега. 24 00:00:51,556 --> 00:00:55,150 25 00:00:55,150 --> 00:00:56,510 Няма проблем. 26 00:00:56,510 --> 00:00:59,570 Отиваме да се опита наистина да запази хората на кръвната захар 27 00:00:59,570 --> 00:01:04,390 защото, че мозъкът ще изгори някои кислород днес, защото указатели 28 00:01:04,390 --> 00:01:05,652 са много, много трудно. 29 00:01:05,652 --> 00:01:08,360 След това ние ще говорим за управление на паметта, която е вид 30 00:01:08,360 --> 00:01:09,487 в една и съща област. 31 00:01:09,487 --> 00:01:11,570 И ние ще се движат за да пренасочване и файл 32 00:01:11,570 --> 00:01:15,297 I / O, които са само на синтаксиса, хубаво неща, които ние трябва да говорим. 33 00:01:15,297 --> 00:01:17,130 И след това на последно място, аз съм Ще се опитаме още веднъж 34 00:01:17,130 --> 00:01:19,070 да напусне като 10, 15 минути за pset4. 35 00:01:19,070 --> 00:01:21,820 Това е поради няколко дни, така че ние сме Ще наистина вид ви дам 36 00:01:21,820 --> 00:01:24,850 някои полезни съвети, ако вече се започна с това. 37 00:01:24,850 --> 00:01:26,141 Готино. 38 00:01:26,141 --> 00:01:26,640 ДОБРЕ. 39 00:01:26,640 --> 00:01:30,710 Така че някои съобщения за тази предстоящата седмица. 40 00:01:30,710 --> 00:01:31,805 Окачествяването. 41 00:01:31,805 --> 00:01:33,930 Аз не знам в действителност този момент колко от вас 42 00:01:33,930 --> 00:01:37,180 момчета всъщност са в моята можете section-- OK там? 43 00:01:37,180 --> 00:01:38,020 ДОБРЕ. 44 00:01:38,020 --> 00:01:40,150 Но, за тези от вас, които са в моята секция, 45 00:01:40,150 --> 00:01:42,180 само няколко коментира окачествяване. 46 00:01:42,180 --> 00:01:44,899 >> Първо, наистина добра работа за коментиране. 47 00:01:44,899 --> 00:01:47,940 Тези от вас, които не коментирам, вие знаеш кой си, защото вероятно 48 00:01:47,940 --> 00:01:50,610 имам някои точки за стил dinged тази седмица. 49 00:01:50,610 --> 00:01:53,920 Просто се уверете, че във всичките си програми добавете няколко коментари. 50 00:01:53,920 --> 00:01:56,960 Наистина, стил е много лесно да се получите правилните точки, колкото има обхват. 51 00:01:56,960 --> 00:01:58,710 Така че за нас, просто се уверите, че сте натура 52 00:01:58,710 --> 00:02:03,770 за добавяне на кратко описание във всички програмите си за това, което правите. 53 00:02:03,770 --> 00:02:09,190 >> Secondly-- това е огромен проблем за много от TAS това минало week-- 54 00:02:09,190 --> 00:02:12,020 така че не забравяйте да качвате правилната папка с правилно 55 00:02:12,020 --> 00:02:13,370 наречени програми. 56 00:02:13,370 --> 00:02:16,820 И причината, поради която ние питаме за това е, защото ние, в хода на категоризация, 57 00:02:16,820 --> 00:02:20,820 всъщност се стартира скрипт на вашия код, който изтегля автоматично 58 00:02:20,820 --> 00:02:24,780 всички ваши psets, работи вярност тестове на всички от тях, 59 00:02:24,780 --> 00:02:27,550 и след това се качи вашите резултати директно в gradebook. 60 00:02:27,550 --> 00:02:32,140 Въпреки това, във всеки един момент, ако име неправилно вашата програма, 61 00:02:32,140 --> 00:02:34,510 винтове го цялата програма за всеки. 62 00:02:34,510 --> 00:02:37,280 >> И така, с основание, тази красива скрипт 63 00:02:37,280 --> 00:02:40,260 че сме написали, че прави всичко това за нас, напълно 64 00:02:40,260 --> 00:02:43,070 катастрофи, ако не разполагате програма на име правилно. 65 00:02:43,070 --> 00:02:46,020 Така че просто да качите до правилните папка, ги нарича правилно, 66 00:02:46,020 --> 00:02:47,372 и след това живота е добър. 67 00:02:47,372 --> 00:02:49,080 Аз да си psets назад до вас, момчета ранни 68 00:02:49,080 --> 00:02:51,110 защото съм се да ги клас бързо. 69 00:02:51,110 --> 00:02:52,461 Да. 70 00:02:52,461 --> 00:02:52,960 ДОБРЕ. 71 00:02:52,960 --> 00:02:57,870 И също така ние ще говорим about-- Yale има много, много 72 00:02:57,870 --> 00:02:59,950 чалнат график в тези следващите две седмици. 73 00:02:59,950 --> 00:03:02,460 Така че тези от вас, момчета, най- Харвард, това не се отнася. 74 00:03:02,460 --> 00:03:05,585 Но за нас прекрасни деца в Йейл имаме нещо, наречено есен break-- съжалявам, 75 00:03:05,585 --> 00:03:08,430 Harvard-- където имаме пет почивни дни на училище. 76 00:03:08,430 --> 00:03:12,270 И докато това е прекрасно, това вид обърква нашия pset ритъм 77 00:03:12,270 --> 00:03:14,104 защото psets се дължат четвъртък, петък. 78 00:03:14,104 --> 00:03:16,020 И така, ако ние не сме тук Четвъртък, петък, ние 79 00:03:16,020 --> 00:03:18,640 не може да има работа за вас, момчета дължи в четвъртък, петък. 80 00:03:18,640 --> 00:03:23,832 >> Така че това, което ние ще направим is-- сме като 99% сигурен, че това е, което се случва, 81 00:03:23,832 --> 00:03:25,540 може да има известно промени, но аз мисля, че е 82 00:03:25,540 --> 00:03:28,460 subtle-- се ние ще have-- тази седмица е нормално. 83 00:03:28,460 --> 00:03:32,130 Така че ние имаме нашия раздел за Вторник, последвани от работното време 84 00:03:32,130 --> 00:03:35,190 през останалата част от седмицата и след това pset4 се дължи в петък. 85 00:03:35,190 --> 00:03:38,180 Тогава, както и вие, момчета, всички знаем, като Аз ви напомни момчета миналата седмица, 86 00:03:38,180 --> 00:03:41,700 ние имаме нашата викторина 0 идва в сряда. 87 00:03:41,700 --> 00:03:44,400 >> И така, да бъдеш студент себе си, Знам, че много малко от вас 88 00:03:44,400 --> 00:03:49,110 момчета ще бъдат действително работещи по pset5 двата дни преди викторина. 89 00:03:49,110 --> 00:03:51,110 Така че това, което ние ще Вероятно свърши това е, 90 00:03:51,110 --> 00:03:54,840 че в понеделник вечер, отиваме действително, 5:30-7:00, 91 00:03:54,840 --> 00:03:59,970 имат кратък преглед сесия по теми, обхванати. 92 00:03:59,970 --> 00:04:02,040 Неясно ако това е преглед на сесията или Q & A. 93 00:04:02,040 --> 00:04:04,650 Това ще бъде нещо като преглед форма, в която ще разгледаме 94 00:04:04,650 --> 00:04:06,640 някои теми от значение за вас, момчета. 95 00:04:06,640 --> 00:04:09,886 >> И след понеделник и вторник нощувки от тази седмица 8:00-11:00, 96 00:04:09,886 --> 00:04:11,260 ние ще имаме работно време. 97 00:04:11,260 --> 00:04:14,500 Тези работно време ще се най- вероятно да бъде повече от просто идват в, 98 00:04:14,500 --> 00:04:17,564 попитайте СНС вашите въпроси относно всякакви концепции вие сте объркани за, 99 00:04:17,564 --> 00:04:20,480 и те вид ще отида с вас и преглед на концепции за теста. 100 00:04:20,480 --> 00:04:22,920 Quiz 0, ако сте в Понеделник, сряда раздел, 101 00:04:22,920 --> 00:04:26,480 ще бъде в сряда по време class-- в сряда по време на тренировката. 102 00:04:26,480 --> 00:04:29,530 И тогава, ако вие сте на Вторник, раздел четвъртък, 103 00:04:29,530 --> 00:04:32,577 също ще бъде по време на тренировката в четвъртък. 104 00:04:32,577 --> 00:04:34,410 Вие наистина не може да избере кой да отидете. 105 00:04:34,410 --> 00:04:35,640 Ако сте понеделник, сряда, вие трябва да отидете до сряда. 106 00:04:35,640 --> 00:04:38,056 Ако сте във вторник, четвъртък вие трябва да отидете до четвъртък. 107 00:04:38,056 --> 00:04:42,277 Но след тази нощ, ни прекрасен персонал, ще 108 00:04:42,277 --> 00:04:45,360 има гигантски викторина класификация на парти в които ние ще се заемем вашите резултати с вас 109 00:04:45,360 --> 00:04:46,190 тази нощ. 110 00:04:46,190 --> 00:04:46,900 В колко часа? 111 00:04:46,900 --> 00:04:51,190 Неясно, кой знае, но това ще стане се свържем с вас в рамките на 24 часа 112 00:04:51,190 --> 00:04:53,700 така че вие, момчета, надявам се има някаква обратна връзка от петък. 113 00:04:53,700 --> 00:04:55,870 >> И тогава имаме наистина чалнат седмица. 114 00:04:55,870 --> 00:05:00,330 Така pset5 е един от най- трудните psets на годината. 115 00:05:00,330 --> 00:05:03,370 Така че съжалявам, момчета. 116 00:05:03,370 --> 00:05:06,520 Това, което ние ще се опитаме да направите, е да искаме да имаме 117 00:05:06,520 --> 00:05:08,380 някои действителната подкрепа, която през уикенда. 118 00:05:08,380 --> 00:05:12,970 Защото, както вие виждате, pset се дължи преди падането почивка. 119 00:05:12,970 --> 00:05:16,760 Ние не разполагаме с подкрепа за вие, момчета, през есента почивка 120 00:05:16,760 --> 00:05:18,897 и така ние наистина вид искам да израза това като, 121 00:05:18,897 --> 00:05:21,230 нека да приключваме с, нека да работим много, много трудно 122 00:05:21,230 --> 00:05:25,380 тези следващите две седмици, да получат този тест и се добавят тези две psets направено с 123 00:05:25,380 --> 00:05:29,650 и след това вие имате хубава релаксираща седем дни без да мисля за CS. 124 00:05:29,650 --> 00:05:33,750 >> Така че, за които да да се случи, ние сме най-вероятно 125 00:05:33,750 --> 00:05:36,870 ще се премести моята секция до неделя следобед. 126 00:05:36,870 --> 00:05:39,070 Тя ще бъде заснет така че няма притеснения, ако не можете да дойдете. 127 00:05:39,070 --> 00:05:41,595 Но онлайн снимките ще да има и достъпна 128 00:05:41,595 --> 00:05:47,630 така че вие ​​имате неделя Понеделник, вторник, за да работят по pset5. 129 00:05:47,630 --> 00:05:50,205 И след това е есента счупи и не CS и след това 130 00:05:50,205 --> 00:05:51,830 се върнем назад и да си в сивото. 131 00:05:51,830 --> 00:05:54,926 >> Но това ще бъде прекрасна седмица за есента почивка 132 00:05:54,926 --> 00:05:58,050 и ние наистина искаме да го направи като стрес безплатно за всеки, които е възможно 133 00:05:58,050 --> 00:06:02,620 Ето защо ние се премества на pset се дължи преди падането почивка, а не след това. 134 00:06:02,620 --> 00:06:07,601 Защото it's-- Искам да кажа, аз се чувствам вид като го обезсмисля като 135 00:06:07,601 --> 00:06:10,850 крайният срок след падането на почивка, ако има никаква подкрепа във всеки случай по време на падането почивка. 136 00:06:10,850 --> 00:06:14,670 Така че това е rather-- Мисля скоро бихме се съсредоточи върху това сега. 137 00:06:14,670 --> 00:06:16,950 Дали някой има въпроси за това график? 138 00:06:16,950 --> 00:06:17,830 Всичко объркващо? 139 00:06:17,830 --> 00:06:18,330 Да. 140 00:06:18,330 --> 00:06:20,944 >> АУДИТОРИЯ: Обичате ние все още имаме лекция на 21? 141 00:06:20,944 --> 00:06:21,610 АНДИ Пенг: Да. 142 00:06:21,610 --> 00:06:26,421 Така на 21, там ще бъде лекция, че е на живо от Харвард. 143 00:06:26,421 --> 00:06:29,170 Аз не знам дали Дейвид е на снимките нея или ако той всъщност лекции, 144 00:06:29,170 --> 00:06:32,430 но това ще бъде на разположение онлайн за вас, момчета до интернет. 145 00:06:32,430 --> 00:06:35,510 Така че просто се уверете, че обособяването на час някъде през есента на почивка 146 00:06:35,510 --> 00:06:39,375 така вие може да улавят нагоре на тази лекция. 147 00:06:39,375 --> 00:06:39,875 Да? 148 00:06:39,875 --> 00:06:40,300 >> АУДИТОРИЯ: Да. 149 00:06:40,300 --> 00:06:40,422 Извинете. 150 00:06:40,422 --> 00:06:41,280 Имам тук един couple-- 151 00:06:41,280 --> 00:06:41,640 >> АНДИ Пенг: Не се тревожете. 152 00:06:41,640 --> 00:06:42,556 Ето, вземи бонбони. 153 00:06:42,556 --> 00:06:45,350 154 00:06:45,350 --> 00:06:47,800 >> АУДИТОРИЯ: Хей, аз уловени това. 155 00:06:47,800 --> 00:06:53,869 Така че просто да обобщим, не утре, но Сряда, след това, ние имаме викторина. 156 00:06:53,869 --> 00:06:54,660 АНДИ Пенг: Правилно. 157 00:06:54,660 --> 00:06:59,207 АУДИТОРИЯ: И това ще be-- какъв е форматът на теста? 158 00:06:59,207 --> 00:06:59,790 АНДИ Пенг: Oh. 159 00:06:59,790 --> 00:07:03,870 Така че ние ще изпратим имейл, че обхваща всичко, което по-задълбочено. 160 00:07:03,870 --> 00:07:06,590 Но, по същество, тя просто покрива Основните теми, които вече са обхванати 161 00:07:06,590 --> 00:07:09,042 през първата половина на семестъра. 162 00:07:09,042 --> 00:07:12,250 Ние ще трябва преглед сесии и въпрос и отговори така че няма притеснения за това. 163 00:07:12,250 --> 00:07:14,107 Но ние ще се случва през това също. 164 00:07:14,107 --> 00:07:16,940 АУДИТОРИЯ: Дали тя ще бъде, ние въвеждат нашите компютри и код there-- 165 00:07:16,940 --> 00:07:17,140 АНДИ Пенг: No. 166 00:07:17,140 --> 00:07:20,130 Това ще бъде вие ​​писане и отговарят на въпроси на ръка. 167 00:07:20,130 --> 00:07:21,160 >> АУДИТОРИЯ: Oh. 168 00:07:21,160 --> 00:07:23,160 >> АНДИ Пенг: Затова ще дам освобождава практики и неща 169 00:07:23,160 --> 00:07:26,420 така вие може да искате да отидете може би обратно и да пренапише Mario на ръка само 170 00:07:26,420 --> 00:07:28,100 да гарантира, че вие ​​имате представа за това как да направите това. 171 00:07:28,100 --> 00:07:29,933 Защото понякога, когато ти пиша от вас ръка 172 00:07:29,933 --> 00:07:32,656 забравяме запетая и неща и това е много лошо. 173 00:07:32,656 --> 00:07:34,156 АУДИТОРИЯ: Няма ли да бъде [недоловим]? 174 00:07:34,156 --> 00:07:38,290 Подобно, вие получавате точка и запетая на your-- 175 00:07:38,290 --> 00:07:40,270 >> АНДИ Пенг: Да и не. 176 00:07:40,270 --> 00:07:43,170 Ще поговорим по-задълбочено по отношение на начина на оформлението на викторина е 177 00:07:43,170 --> 00:07:44,550 и как ние ще клас. 178 00:07:44,550 --> 00:07:47,425 Но по същество, просто знам, че общ формат ще ви бъде 179 00:07:47,425 --> 00:07:49,930 момчета или устен code-- отговаряне основни въпроси. 180 00:07:49,930 --> 00:07:51,370 Ако ви попита, какво е библиотека? 181 00:07:51,370 --> 00:07:53,450 Вие, момчета, трябва да знаят какво е библиотека прави и пише, че надолу. 182 00:07:53,450 --> 00:07:56,283 Или мога да кажа, се напише програма, която отпечатва Hello World към екрана. 183 00:07:56,283 --> 00:08:01,140 Вие, момчета, ще напиша, инт основна нищожен ФОРМАТ здравей свят и запетая. 184 00:08:01,140 --> 00:08:01,908 Да. 185 00:08:01,908 --> 00:08:04,398 >> АУДИТОРИЯ: Така че това не се случва да бъде навсякъде [недоловим] 186 00:08:04,398 --> 00:08:05,900 трудност на проблема зададете? 187 00:08:05,900 --> 00:08:06,170 >> АНДИ Пенг: No. 188 00:08:06,170 --> 00:08:06,380 Не. 189 00:08:06,380 --> 00:08:07,046 Ние won't-- да. 190 00:08:07,046 --> 00:08:10,030 Напиши целостта на игра на 15 за 20 минути, отидете. 191 00:08:10,030 --> 00:08:12,120 Не, това няма да бъде толкова. 192 00:08:12,120 --> 00:08:12,801 Не. 193 00:08:12,801 --> 00:08:13,342 АУДИТОРИЯ: OK. 194 00:08:13,342 --> 00:08:15,326 Така, че е сряда. 195 00:08:15,326 --> 00:08:19,017 През това ние също седмица задали най-трудният проблем? 196 00:08:19,017 --> 00:08:19,600 АНДИ Пенг: No. 197 00:08:19,600 --> 00:08:22,970 Така че проблемът го настроите да се дължи в деня преди падането почивка. 198 00:08:22,970 --> 00:08:25,690 The schedule-- имейла всъщност изпратим 199 00:08:25,690 --> 00:08:27,232 20 минути преди отношение на всичко това. 200 00:08:27,232 --> 00:08:28,689 Така че вие, момчета, просто проверяват електронната си поща. 201 00:08:28,689 --> 00:08:29,430 Тя ще бъде там. 202 00:08:29,430 --> 00:08:30,060 Да. 203 00:08:30,060 --> 00:08:31,701 Няма проблем. 204 00:08:31,701 --> 00:08:32,200 Готино. 205 00:08:32,200 --> 00:08:34,900 206 00:08:34,900 --> 00:08:38,900 >> Всякакви общи въпроси, свързани с съобщения, класифициране, викторини, 207 00:08:38,900 --> 00:08:41,659 преди да се потопите право в указатели, които ще консумират 208 00:08:41,659 --> 00:08:45,060 по-голямата част от времето си точка днес? 209 00:08:45,060 --> 00:08:47,030 Готино. 210 00:08:47,030 --> 00:08:47,530 Всичко е наред. 211 00:08:47,530 --> 00:08:50,905 Същото направиха и вие, момчета, всички гледат тази lovely-- Аз не знам какво те го наричат. 212 00:08:50,905 --> 00:08:53,490 Нещото, където claymation Самата взривиха защото тя 213 00:08:53,490 --> 00:08:54,820 не използвайте показалеца правилно. 214 00:08:54,820 --> 00:08:57,629 Е, вашата програма ще Вероятно самата взриви, ако 215 00:08:57,629 --> 00:08:59,170 да не се използва правилно указатели, както добре. 216 00:08:59,170 --> 00:09:01,250 Така че ние ще направим сигурен, че няма да се случи. 217 00:09:01,250 --> 00:09:04,810 >> Днес ние ще направят някои показалеца забавно. 218 00:09:04,810 --> 00:09:08,970 Отивам да разясни нещата толкова гладко, колкото аз мисля, 219 00:09:08,970 --> 00:09:10,790 Възможно е в малък период от време. 220 00:09:10,790 --> 00:09:14,592 Но има толкова много за покриване че аз наистина вие искате, 221 00:09:14,592 --> 00:09:17,300 ако не разбираш нещо, да не само да ме продължавай. 222 00:09:17,300 --> 00:09:18,580 Защото ако не го направите разбирате нещо, 223 00:09:18,580 --> 00:09:21,329 най-вероятно няма да разберат нещо казвам след това. 224 00:09:21,329 --> 00:09:23,310 Така че, моля да ме спрете и да зададете въпрос. 225 00:09:23,310 --> 00:09:25,380 Защото всички видове на снежни топки заедно. 226 00:09:25,380 --> 00:09:27,800 Подобно, указатели водят в памет оловото в други неща. 227 00:09:27,800 --> 00:09:31,710 И така, ако вие не разбирате указатели, спрете мен и ние ще го разбера 228 00:09:31,710 --> 00:09:35,070 и животът ще се оправи. 229 00:09:35,070 --> 00:09:35,680 >> Готино. 230 00:09:35,680 --> 00:09:39,050 Така че колко от вас, момчета, в лекция, когато Давид бе споменато указатели, 231 00:09:39,050 --> 00:09:42,050 мозъка си вид се превърнаха в желе? 232 00:09:42,050 --> 00:09:42,550 Да. 233 00:09:42,550 --> 00:09:44,190 Good. 234 00:09:44,190 --> 00:09:46,900 Ние ще се опитаме да де-желе вашите мозъци днес. 235 00:09:46,900 --> 00:09:50,300 Отиваме да наистина систематично проверете какво точно указател е, 236 00:09:50,300 --> 00:09:52,530 това, което прави, и как можем да ги използваме. 237 00:09:52,530 --> 00:09:56,620 >> Така че всичко, така pointers-- обикновено с променливите 238 00:09:56,620 --> 00:10:00,920 ние сме били с помощта на кодиране, като променливи като цели числа или низове 239 00:10:00,920 --> 00:10:04,790 или плувки, всички те са по същество на стойност не им възложени, 240 00:10:04,790 --> 00:10:06,870 както и един адрес сочещи към тази стойност. 241 00:10:06,870 --> 00:10:08,895 Така че аз отивам да се направи това точно сега. 242 00:10:08,895 --> 00:10:14,270 243 00:10:14,270 --> 00:10:16,140 Имаме почти няма тебешир, но това е ОК. 244 00:10:16,140 --> 00:10:25,550 >> Така например, обикновено начинът, по който ние сме 245 00:10:25,550 --> 00:10:30,860 Използвам променливи е ние създаваме Името на променливата от тип INT, нека 246 00:10:30,860 --> 00:10:31,360 Просто кажи. 247 00:10:31,360 --> 00:10:37,360 Така че тук ние имаме инт х и ние сме инициализиране, че инт до 50. 248 00:10:37,360 --> 00:10:42,390 Така че тук, в този блок от паметта на нашия компютри, които сме съхраняват редица 50. 249 00:10:42,390 --> 00:10:46,170 Така че, когато указатели влезе в игра е че компютърът ви itself-- харесват, тук, 250 00:10:46,170 --> 00:10:48,880 физически в твърдия диск в RAM на моя computer-- 251 00:10:48,880 --> 00:10:51,147 тя има само ограничен количество памет. 252 00:10:51,147 --> 00:10:53,980 Не може просто да се запази съхранение на неща на върха на нещата на върха на нещата 253 00:10:53,980 --> 00:10:54,990 и ги всички. 254 00:10:54,990 --> 00:10:59,570 >> Така че начинът, по който ние динамично разпределя памет, за да бъде в състояние да съхранявате това, което искаме 255 00:10:59,570 --> 00:11:03,150 и достъп до него, е от с указатели. 256 00:11:03,150 --> 00:11:06,210 Така че представете си в паметта си пространство, нали. 257 00:11:06,210 --> 00:11:10,420 Ако това е RAM на вашия компютър, имате тези малки парченца 258 00:11:10,420 --> 00:11:14,540 или блокове или байта памет в which-- това са само малка 259 00:11:14,540 --> 00:11:18,120 блокове, които са били разпределени върху твърдия диск или RAM на компютъра, 260 00:11:18,120 --> 00:11:21,950 и във всеки един от тези блокове можете да съхранявате различни неща. 261 00:11:21,950 --> 00:11:26,990 Така например, един масив в този пример 262 00:11:26,990 --> 00:11:29,984 тук е един байт, който е състояща се от осем бита. 263 00:11:29,984 --> 00:11:32,900 Броят променя в зависимост от операционната система на вашия компютър. 264 00:11:32,900 --> 00:11:35,942 Например, колко от вас имат чували за 32-битова срещу 64-битова операционна 265 00:11:35,942 --> 00:11:36,441 системи? 266 00:11:36,441 --> 00:11:37,070 Точно. 267 00:11:37,070 --> 00:11:38,860 >> Така че всичко, което е казвайки е, че memory-- 268 00:11:38,860 --> 00:11:42,420 че начинът, по който вашия компютър управлява паметта е различен. 269 00:11:42,420 --> 00:11:45,370 Ето защо това е наистина важно да се разбере 270 00:11:45,370 --> 00:11:49,450 защо паметта сама функции скоро отколкото да обърне внимание на цифрите. 271 00:11:49,450 --> 00:11:52,400 Така че ние не ми пука колко голям този масив 272 00:11:52,400 --> 00:11:55,710 е, ние просто трябва да се грижи за колко голям имаме нужда от едно цяло число, за да бъде, 273 00:11:55,710 --> 00:11:58,350 колко голям Нуждаем ли се от низ да, колко голям е указател? 274 00:11:58,350 --> 00:12:00,630 275 00:12:00,630 --> 00:12:01,130 ДОБРЕ. 276 00:12:01,130 --> 00:12:03,690 Така че това ще бъде много по- на тежка, плътна информация. 277 00:12:03,690 --> 00:12:07,005 Отивам да ви дам момчета за няколко комично облекчение моменти тук. 278 00:12:07,005 --> 00:12:09,130 Вие, момчета, всички трябва да са в състояние да се разбере това сега. 279 00:12:09,130 --> 00:12:12,550 Защото ние знаем, че указатели са адреси, 280 00:12:12,550 --> 00:12:14,480 и тези, които са различни от променливи. 281 00:12:14,480 --> 00:12:14,980 ДОБРЕ. 282 00:12:14,980 --> 00:12:15,610 Готино. 283 00:12:15,610 --> 00:12:17,065 CS вицове са най-добрите, така ли? 284 00:12:17,065 --> 00:12:19,800 285 00:12:19,800 --> 00:12:23,450 >> Така че начинът, по който да отидем за създаване на показалеца 286 00:12:23,450 --> 00:12:25,750 е много специфичен вид на синтаксис. 287 00:12:25,750 --> 00:12:27,870 Както при всяко създаване тип променлива, това е 288 00:12:27,870 --> 00:12:30,240 ще бъде определена синтаксис, които използваме, за да го създадете. 289 00:12:30,240 --> 00:12:34,830 Така че, когато се обявява всеки показалеца, указател е само essentially-- 290 00:12:34,830 --> 00:12:37,040 Мисля, че най-важното част от указатели е 291 00:12:37,040 --> 00:12:41,650 като има предвид, че една променлива има както и стойността на един адрес, 292 00:12:41,650 --> 00:12:44,100 указател е адрес. 293 00:12:44,100 --> 00:12:45,740 Неговата стойност е адрес. 294 00:12:45,740 --> 00:12:48,120 Така че това е един адрес се съхранява на различен адрес. 295 00:12:48,120 --> 00:12:49,120 Ако това прави никакъв смисъл. 296 00:12:49,120 --> 00:12:52,390 Ние ще разясни по-подробно, но това е родово формата 297 00:12:52,390 --> 00:12:54,370 на why-- за това как се съхранява на принтер. 298 00:12:54,370 --> 00:12:58,900 >> Така че начинът, по който можете да създадете указател е от това, независимо от вида на данните 299 00:12:58,900 --> 00:13:02,840 че показалецът се случва да бъде съотнасяне и then-- 300 00:13:02,840 --> 00:13:05,324 с star-- и след това името на показалеца. 301 00:13:05,324 --> 00:13:07,240 Така че тук, ако искахме за създаване на показалеца, че 302 00:13:07,240 --> 00:13:11,640 насочен към цяло число, и Исках името на показалеца, за да бъде х, 303 00:13:11,640 --> 00:13:13,880 ние ще направим инт звезден х. 304 00:13:13,880 --> 00:13:14,380 Да? 305 00:13:14,380 --> 00:13:16,680 >> АУДИТОРИЯ: И така, ако следния можете линия 306 00:13:16,680 --> 00:13:20,045 направя инт х, воля за инт звезден х показва местоположението на х 307 00:13:20,045 --> 00:13:21,170 можете да започнете определяне след това? 308 00:13:21,170 --> 00:13:22,000 >> АНДИ Пенг: Наистина добър въпрос. 309 00:13:22,000 --> 00:13:23,860 Ние ще отидем в тази Няколко плъзга по-късно. 310 00:13:23,860 --> 00:13:24,920 Да. 311 00:13:24,920 --> 00:13:27,610 И тогава едно и също нещо с Чар и също нещо поплавъци. 312 00:13:27,610 --> 00:13:29,950 Просто знам, че в този момент ние създадохме указател, 313 00:13:29,950 --> 00:13:32,470 не сме реално фигурира тя да се изравни нищо все още. 314 00:13:32,470 --> 00:13:34,110 Не сме всъщност го съотнесени. 315 00:13:34,110 --> 00:13:36,087 Същото нещо тук, когато създадете променлива, 316 00:13:36,087 --> 00:13:39,420 сте създали името на променливата, не сте всъщност зададете стойност към нея. 317 00:13:39,420 --> 00:13:41,410 Същото е и тук. 318 00:13:41,410 --> 00:13:42,110 >> ДОБРЕ. 319 00:13:42,110 --> 00:13:44,670 И как ще се определят стойности за указатели? 320 00:13:44,670 --> 00:13:47,190 Това е чрез съотнасяне и dereferencing. 321 00:13:47,190 --> 00:13:52,260 Така че начинът, по който можем да справки а varia-- указател, по същество 322 00:13:52,260 --> 00:13:56,630 се върнем на адреса в паметта на която променливата се съхранява. 323 00:13:56,630 --> 00:14:02,550 Така че, ако имах pointer-- аз ще изготви този път да стигнем до следващия слайд, 324 00:14:02,550 --> 00:14:05,760 но просто знам, че по същество, на and-- амперсанд 325 00:14:05,760 --> 00:14:10,240 и всичко, което variable-- прави се да ти кажа адреса 326 00:14:10,240 --> 00:14:11,780 на мястото, където нещо се съхранява. 327 00:14:11,780 --> 00:14:15,730 И dereferencing е обратното на това, което е само на звездата. 328 00:14:15,730 --> 00:14:18,950 Звездата просто дава действителния данни, съхранявани на този адрес. 329 00:14:18,950 --> 00:14:21,090 >> Така че един дава адрес складират на адрес, 330 00:14:21,090 --> 00:14:23,945 от друга страна дава действителния стойност съхранява на адреса. 331 00:14:23,945 --> 00:14:25,820 Така двамата даде можете различни неща. 332 00:14:25,820 --> 00:14:27,755 333 00:14:27,755 --> 00:14:29,880 За пореден път, стъклата са всички онлайн така че не се тревожете 334 00:14:29,880 --> 00:14:33,200 ако вие не можете да копирате това надолу във времето. 335 00:14:33,200 --> 00:14:36,330 >> Така че нека да погледнем в този пример тук. 336 00:14:36,330 --> 00:14:40,530 Така че ние имаме една гигантска памет масив тук, нали? 337 00:14:40,530 --> 00:14:42,920 Когато ние просто трябва блокове памет, или байта памет, 338 00:14:42,920 --> 00:14:45,060 в която ние може да съхранява различни неща. 339 00:14:45,060 --> 00:14:47,310 Нека просто кажем, това са най- адресни точки в паметта. 340 00:14:47,310 --> 00:14:51,350 Така по всяко време имате - вижте 0x, всичко, което се казва, е, че 341 00:14:51,350 --> 00:14:52,930 Това е шестнадесетични цифри. 342 00:14:52,930 --> 00:14:56,310 Както вие, момчета, всички знаем, цифри може да се основава на различни бази. 343 00:14:56,310 --> 00:14:58,770 Base 10 е как ние обикновено тълкува номера. 344 00:14:58,770 --> 00:15:00,550 Има също така и база 2, което е двоичен. 345 00:15:00,550 --> 00:15:03,366 И в този случай, шестнадесетичен е база 16. 346 00:15:03,366 --> 00:15:06,240 Това е просто различен начин да се каже от нула до 10-- или нула до девет 347 00:15:06,240 --> 00:15:10,904 и след това също A, B, C, D, E, F. Също референцията различни номера. 348 00:15:10,904 --> 00:15:12,570 Давид мина този в лекция за кратко. 349 00:15:12,570 --> 00:15:14,280 Ако вие, момчета, са объркан, просто го Google. 350 00:15:14,280 --> 00:15:17,370 Там наистина е много лесно начини да се научи какво шестнадесетичен цифрен е. 351 00:15:17,370 --> 00:15:19,510 Всичко това е наистина от значение точно сега е за вас 352 00:15:19,510 --> 00:15:24,170 момчета, за да знаят, че шестнадесетични цифри в C 353 00:15:24,170 --> 00:15:27,090 казва, че обикновено you-- ви казва, че това е една показалка. 354 00:15:27,090 --> 00:15:29,150 Или това е адресът. 355 00:15:29,150 --> 00:15:33,310 >> Така че в този пример тук, инт х е равно на 5. 356 00:15:33,310 --> 00:15:36,350 Ние сме създаване на integer-- Съжалявам, променлива от тип 357 00:15:36,350 --> 00:15:39,090 число и ние сме го инициализиране до 5. 358 00:15:39,090 --> 00:15:47,040 Така че тук, на нашата вградена памет, което можем се види, че х е на адреса на 0x0 359 00:15:47,040 --> 00:15:50,550 и стойността, която сте съхранява вътре в него е 5. 360 00:15:50,550 --> 00:15:52,370 Това би трябвало да има смисъл за всички, нали? 361 00:15:52,370 --> 00:15:53,030 ДОБРЕ. 362 00:15:53,030 --> 00:15:56,520 >> И тогава какво сме направили във втория ред на кода 363 00:15:56,520 --> 00:16:00,290 е, че сме създали указател от тип инт. 364 00:16:00,290 --> 00:16:02,750 Това е, което INT звезден показалеца се справя. 365 00:16:02,750 --> 00:16:07,320 И това се равнява на тази на амперсанд х е ви дава адреса на нещо. 366 00:16:07,320 --> 00:16:12,120 Така че на адреса на х в този пример е 0x0. 367 00:16:12,120 --> 00:16:15,630 И така, това адрес е съхранява в които указател. 368 00:16:15,630 --> 00:16:17,360 Това прави ли смисъл на всички? 369 00:16:17,360 --> 00:16:19,965 >> Така че мисля, че на this-- мисля за pointers-- тук 370 00:16:19,965 --> 00:16:24,780 в Йейл имаме система на пощенска кутия където всеки студент има мейлинг 371 00:16:24,780 --> 00:16:26,960 адрес, където можете да отидете в мазето на LW 372 00:16:26,960 --> 00:16:30,492 и може просто да отидете и да вземете от този адрес каквото ви трябва. 373 00:16:30,492 --> 00:16:32,450 Същото нещо се случва тук в компютър. 374 00:16:32,450 --> 00:16:36,770 Вие имате тези паметта байтове, които можете да съхранявате информация в, 375 00:16:36,770 --> 00:16:39,529 но за да се знае кои парчета информация 376 00:16:39,529 --> 00:16:42,570 Среща се от това, което се опитва да намери и къде, имате нужда от показалеца, че 377 00:16:42,570 --> 00:16:43,740 ви казва как да отида там. 378 00:16:43,740 --> 00:16:47,270 >> Така например, за мен, моята пощенска кутия, Имам конкретен пет цифрено число. 379 00:16:47,270 --> 00:16:48,400 Това е моя адрес. 380 00:16:48,400 --> 00:16:51,880 Така че мога да отида физически в паметта, Мога да погледна на адреса, 381 00:16:51,880 --> 00:16:54,507 Мога да отида до тази пощенска кутия и достъп до данните вътре. 382 00:16:54,507 --> 00:16:57,090 Това прави ли смисъл да Всички Вашият компютър е по същество 383 00:16:57,090 --> 00:16:59,000 прави точно същото нещо. 384 00:16:59,000 --> 00:17:02,750 >> Така че всичко, показалеца се прави е, че това е просто създаване на паметта 385 00:17:02,750 --> 00:17:06,099 и неговата данни памет е всъщност адреса на нещо друго. 386 00:17:06,099 --> 00:17:08,210 След това можете да отидете и да намерите това. 387 00:17:08,210 --> 00:17:09,060 Всеки добър? 388 00:17:09,060 --> 00:17:10,720 Всеки добър с мен досега? 389 00:17:10,720 --> 00:17:11,360 ДОБРЕ. 390 00:17:11,360 --> 00:17:11,859 Готино. 391 00:17:11,859 --> 00:17:14,311 392 00:17:14,311 --> 00:17:14,810 Всичко е наред. 393 00:17:14,810 --> 00:17:19,160 Така почти същото, както преди. 394 00:17:19,160 --> 00:17:23,849 Така че ние имаме, първо, променлива призова х в която case-- 395 00:17:23,849 --> 00:17:27,700 Отивам да промените тази стойност до 5. 396 00:17:27,700 --> 00:17:31,820 Нека просто кажем, на адреса на този в паметта е 0x0. 397 00:17:31,820 --> 00:17:33,070 00. 398 00:17:33,070 --> 00:17:33,570 Страхотен. 399 00:17:33,570 --> 00:17:35,320 >> И така, на втората ни ред код, ние сме 400 00:17:35,320 --> 00:17:41,210 Ще създадете указател наречено КОП показалка. 401 00:17:41,210 --> 00:17:45,760 И адреса на това, нека само да кажа, че е 0x01 в паметта. 402 00:17:45,760 --> 00:17:48,280 И ние действително искаме да store-- амперсанд 403 00:17:48,280 --> 00:17:50,620 X дава адреса на това, което е х. 404 00:17:50,620 --> 00:17:53,990 И адреса на х е 0x00. 405 00:17:53,990 --> 00:17:57,300 Така че това показалеца сега всъщност има адрес 406 00:17:57,300 --> 00:18:00,210 съхранява като нейната стойност на това, което е х. 407 00:18:00,210 --> 00:18:01,700 Всеки с мен досега? 408 00:18:01,700 --> 00:18:02,320 Готино. 409 00:18:02,320 --> 00:18:04,670 >> И след това, начинът, по който ние ще копирате, че, 410 00:18:04,670 --> 00:18:09,650 е, ако искаме да декларира и инициализира друг блок памет от тип инт. 411 00:18:09,650 --> 00:18:10,150 Нали така? 412 00:18:10,150 --> 00:18:11,130 Това ще бъде едно цяло число. 413 00:18:11,130 --> 00:18:14,130 Тя ще се нарича копие. 414 00:18:14,130 --> 00:18:17,120 И ти започваш да get-- така звезден показалеца на дава 415 00:18:17,120 --> 00:18:19,080 действителните данни от този адрес. 416 00:18:19,080 --> 00:18:22,490 Амперсант дава адреса, звездата дава данните. 417 00:18:22,490 --> 00:18:24,630 Така данните на показалеца. 418 00:18:24,630 --> 00:18:29,420 Този показалец сочи към 5. 419 00:18:29,420 --> 00:18:33,140 И така, тази функция here-- звездата pointer-- 420 00:18:33,140 --> 00:18:39,740 отива, получава каквото и да е в този блок и го съхранява тук. 421 00:18:39,740 --> 00:18:41,730 Всеки ясно как е станало това? 422 00:18:41,730 --> 00:18:45,490 >> Така двата оператора полето there-- амперсанд и star-- 423 00:18:45,490 --> 00:18:48,250 просто правя различни неща когато се използва върху указатели. 424 00:18:48,250 --> 00:18:50,837 Един стане ли адреса, един стане ли действителната стойност. 425 00:18:50,837 --> 00:18:53,670 Така че не забравяйте, когато вие, момчета, са кодиране, че вие ​​не бъркайте двете 426 00:18:53,670 --> 00:18:55,650 защото те са много различни. 427 00:18:55,650 --> 00:18:58,880 Тук имаме хубав пример за 0x01. 428 00:18:58,880 --> 00:19:01,207 Това е една наистина хубава малък брой да се помни. 429 00:19:01,207 --> 00:19:03,040 В действителния вашия компютър започваш да имат 430 00:19:03,040 --> 00:19:06,740 гигантски брой задника, че е нещо, това не е хубаво, не приятно. 431 00:19:06,740 --> 00:19:08,280 Това ще бъде някаква стойност боклук. 432 00:19:08,280 --> 00:19:10,920 И така, това ще е много, Наистина обърквам вашите програми. 433 00:19:10,920 --> 00:19:12,670 Това е много важно точно сега, че имаме 434 00:19:12,670 --> 00:19:16,150 основите надолу за why-- харесват, това, което се случва, когато физически 435 00:19:16,150 --> 00:19:18,270 сте с тези блокове от код. 436 00:19:18,270 --> 00:19:19,120 Everyone-- така ли? 437 00:19:19,120 --> 00:19:21,425 >> АУДИТОРИЯ: Така инт х е равно на инт копие? 438 00:19:21,425 --> 00:19:24,650 439 00:19:24,650 --> 00:19:34,970 >> АНДИ Пенг: Не, защото в този случай, инт x-- стойността на x-- равнява 5, нали? 440 00:19:34,970 --> 00:19:40,546 И тогава инт копие равнява 5. 441 00:19:40,546 --> 00:19:43,420 Така че, ако ви се налага да ги приравняват към помежду си, защото те са цели числа, 442 00:19:43,420 --> 00:19:46,379 да, те ще оценят, за да е истина. 443 00:19:46,379 --> 00:19:49,670 Но ако те са низове в паметта, като този, който направи Давид време например, 444 00:19:49,670 --> 00:19:51,670 това е различно, защото те се позовават на 445 00:19:51,670 --> 00:19:54,920 адресите на местата в паметта и те ще се равняват на невярна. 446 00:19:54,920 --> 00:20:00,070 >> Така че тук би било вярно, защото вие сте директно сравняване values-- integers-- 447 00:20:00,070 --> 00:20:02,240 но в останалите сте справочен точки. 448 00:20:02,240 --> 00:20:05,290 Тъй като низ е в масив, и all-- ние ще говорим за това later-- 449 00:20:05,290 --> 00:20:09,940 но масив по същество е просто указател към един куп символи в паметта. 450 00:20:09,940 --> 00:20:11,610 Така че тези, които са малко по-различно. 451 00:20:11,610 --> 00:20:14,642 Но в този случай, да, бихте могли да направите това. 452 00:20:14,642 --> 00:20:17,354 >> АУДИТОРИЯ: Можете ли да обясните адреса на копие? 453 00:20:17,354 --> 00:20:18,020 АНДИ Пенг: Да. 454 00:20:18,020 --> 00:20:20,030 Така че това е just-- I не въведете стойност 455 00:20:20,030 --> 00:20:23,022 но това е само някои случайни друг стойност на боклука, че ние не се грижи за. 456 00:20:23,022 --> 00:20:25,730 Защото след като започнете програма ти осъзнаваш, че ние всъщност не 457 00:20:25,730 --> 00:20:28,150 ми пука какво по действителните адреси са, 458 00:20:28,150 --> 00:20:30,470 ние просто трябва да знаете това, което е най-адресите. 459 00:20:30,470 --> 00:20:31,608 Да. 460 00:20:31,608 --> 00:20:36,034 >> АУДИТОРИЯ: Звездата в непосредствена близост до INT относно втора линия, това е различно than-- 461 00:20:36,034 --> 00:20:36,700 АНДИ Пенг: Да. 462 00:20:36,700 --> 00:20:39,015 АУДИТОРИЯ: --the dereferencing и съотнасяне звезда? 463 00:20:39,015 --> 00:20:39,681 АНДИ Пенг: Да. 464 00:20:39,681 --> 00:20:43,180 Така авторите на C-- който реших да напиша на езика на C-- 465 00:20:43,180 --> 00:20:44,200 Не беше много умен. 466 00:20:44,200 --> 00:20:46,830 Те не бяха много умни, опитвайки да разбера защо трябва да правим това. 467 00:20:46,830 --> 00:20:49,413 Ако тя ми беше, определено бих използвате два различни герои. 468 00:20:49,413 --> 00:20:52,100 Но те бяха решили да използват същата. 469 00:20:52,100 --> 00:20:56,607 >> Така звездата след пад, който казва на компютъра 470 00:20:56,607 --> 00:20:58,190 че сте на път да създаде показалка. 471 00:20:58,190 --> 00:21:00,820 Но, ако се опитвате да сочен something-- с други думи, 472 00:21:00,820 --> 00:21:03,780 отидете на адреса и дръпнете данните от somewhere-- 473 00:21:03,780 --> 00:21:05,070 звездата се използва по различен начин. 474 00:21:05,070 --> 00:21:08,750 Така че вие, момчета, просто бъдете внимателни за не се обърква двете употреби. 475 00:21:08,750 --> 00:21:09,870 Готино. 476 00:21:09,870 --> 00:21:10,605 Да? 477 00:21:10,605 --> 00:21:14,680 >> АУДИТОРИЯ: Така че просто да се повтаря, за да уверете се, че аз съм following-- 478 00:21:14,680 --> 00:21:16,252 >> АНДИ Пенг: Totally глоба. 479 00:21:16,252 --> 00:21:20,491 >> АУДИТОРИЯ: --В лявата страна на този слайд, ние правим нещо, което знаем. 480 00:21:20,491 --> 00:21:23,124 Ние заявяваме цяло число [Недоловим], които са равни на 5. 481 00:21:23,124 --> 00:21:23,790 АНДИ Пенг: Да. 482 00:21:23,790 --> 00:21:24,456 АУДИТОРИЯ: Точно така. 483 00:21:24,456 --> 00:21:28,960 И тогава ние имаме нещо пад звезда и който казва, че, OK, вид ни харесва 484 00:21:28,960 --> 00:21:31,235 декларирани цяло число, сега ние сме за обявяване на показалеца. 485 00:21:31,235 --> 00:21:32,110 АНДИ Пенг: Правилно. 486 00:21:32,110 --> 00:21:32,410 Правилно. 487 00:21:32,410 --> 00:21:32,710 >> АУДИТОРИЯ: Така ли е? 488 00:21:32,710 --> 00:21:33,870 И нашата показалка е КОП. 489 00:21:33,870 --> 00:21:34,080 >> АНДИ Пенг: Да. 490 00:21:34,080 --> 00:21:35,460 Името на показалеца е КОП. 491 00:21:35,460 --> 00:21:35,959 Pointer. 492 00:21:35,959 --> 00:21:39,000 АУДИТОРИЯ: И тогава се се равнява на NX, че просто казва C 493 00:21:39,000 --> 00:21:44,667 че тя иска достъп до стойността на число x-- стойността, която число х 494 00:21:44,667 --> 00:21:45,800 е назначен. 495 00:21:45,800 --> 00:21:49,050 >> АНДИ Пенг: Бъдете внимателни, защото амперсанд х всъщност 496 00:21:49,050 --> 00:21:53,120 разказва you-- компютъра, който Искам да дръпнем адреса на това, което е х. 497 00:21:53,120 --> 00:21:56,350 Така амперсанд дава адрес, звезда дава стойност. 498 00:21:56,350 --> 00:21:58,255 >> АУДИТОРИЯ: Така че ние искаме адреса. 499 00:21:58,255 --> 00:22:02,075 Да кажем, че х е at-- 500 00:22:02,075 --> 00:22:03,950 АНДИ Пенг: Ние всъщност знам какво х е, нали? 501 00:22:03,950 --> 00:22:06,790 Защото знаем, че х was-- съм измислям, но нека просто кажем, 502 00:22:06,790 --> 00:22:08,760 произволно, че е 0x00. 503 00:22:08,760 --> 00:22:09,590 Нали така? 504 00:22:09,590 --> 00:22:14,120 Така че ние знаем адреса е 0x00, и така, когато отидем и амперсанд х, 505 00:22:14,120 --> 00:22:17,050 ние знаем, че това следва да оцени до 0x00. 506 00:22:17,050 --> 00:22:20,810 Ето защо ние се съхранява, че като стойността на нашия указател. 507 00:22:20,810 --> 00:22:21,924 Това прави ли смисъл? 508 00:22:21,924 --> 00:22:22,832 >> АУДИТОРИЯ: Да. 509 00:22:22,832 --> 00:22:28,057 И копие отива сочен ptr-- 510 00:22:28,057 --> 00:22:28,765 АНДИ Пенг: Точно така. 511 00:22:28,765 --> 00:22:30,473 АУДИТОРИЯ: --which е указател, че ние сме 512 00:22:30,473 --> 00:22:35,220 заяви, че ни е казва, адрес на цяло число х. 513 00:22:35,220 --> 00:22:36,160 >> АНДИ Пенг: Да. 514 00:22:36,160 --> 00:22:39,272 >> АУДИТОРИЯ: И в този един случай, звезда КОП е 515 00:22:39,272 --> 00:22:41,256 равна на стойността на х 5 което е равно. 516 00:22:41,256 --> 00:22:42,744 >> АНДИ Пенг: Правилно. 517 00:22:42,744 --> 00:22:44,728 >> АУДИТОРИЯ: Cool. 518 00:22:44,728 --> 00:22:49,382 И това е по-прост начин да се получи или че е, че само way-- 519 00:22:49,382 --> 00:22:51,840 АНДИ Пенг: Така че точно сега не изглежда много логично за нас 520 00:22:51,840 --> 00:22:54,690 да прекарват цялото това време правим този супер сложно нещо, когато 521 00:22:54,690 --> 00:22:57,606 всичко, което сме направили е просто създаване на две числа с стойността на 5, нали? 522 00:22:57,606 --> 00:22:58,900 Това няма смисъл. 523 00:22:58,900 --> 00:23:03,060 Но след като ние ще отидем заделяне на памет and-- пускаме 524 00:23:03,060 --> 00:23:06,067 разясни защо това може да е удобен и полезен по-късно. 525 00:23:06,067 --> 00:23:09,150 Повярвай ми, когато казвам, ние не само създадете тези произволни функции за вас 526 00:23:09,150 --> 00:23:11,340 момчета да учат, защото ние сме опитвайки се да се забъркваш с вас. 527 00:23:11,340 --> 00:23:14,550 Има действително използва за всички от тях неща и ние ще говорим за тях. 528 00:23:14,550 --> 00:23:14,950 >> АУДИТОРИЯ: Awesome. 529 00:23:14,950 --> 00:23:15,350 >> АНДИ Пенг: Да. 530 00:23:15,350 --> 00:23:16,150 >> АУДИТОРИЯ: [недоловим]. 531 00:23:16,150 --> 00:23:16,450 >> АНДИ Пенг: Добър въпрос. 532 00:23:16,450 --> 00:23:17,510 >> АУДИТОРИЯ: [недоловим]. 533 00:23:17,510 --> 00:23:18,000 >> АНДИ Пенг: Това не е. 534 00:23:18,000 --> 00:23:18,666 Това наистина не е. 535 00:23:18,666 --> 00:23:21,050 АУДИТОРИЯ: --two променливи които също равно [недоловим]. 536 00:23:21,050 --> 00:23:22,400 ДОБРЕ. 537 00:23:22,400 --> 00:23:23,070 >> АНДИ Пенг: Да. 538 00:23:23,070 --> 00:23:23,570 ДОБРЕ. 539 00:23:23,570 --> 00:23:25,249 Преди да се премине, е всеки, ясно? 540 00:23:25,249 --> 00:23:26,790 Знам, Taylor, имаш в малко по-късно. 541 00:23:26,790 --> 00:23:27,490 ОК е. 542 00:23:27,490 --> 00:23:28,100 Това е онлайн. 543 00:23:28,100 --> 00:23:30,600 Ще гледате първите 20 та и вие ще бъдете всичко добро. 544 00:23:30,600 --> 00:23:31,190 ДОБРЕ. 545 00:23:31,190 --> 00:23:31,690 Готино. 546 00:23:31,690 --> 00:23:35,597 547 00:23:35,597 --> 00:23:37,140 >> Всичко е наред. 548 00:23:37,140 --> 00:23:41,270 Така че това е по същество един вид подобно нещо, че ние просто го направих. 549 00:23:41,270 --> 00:23:43,100 Това е просто в графична форма. 550 00:23:43,100 --> 00:23:47,070 Ако ви се налага да следите какво Просто се случи, инт х е равно на 5, 551 00:23:47,070 --> 00:23:52,159 всичко, което сме направили в този момент е създадете променлива наречена х от тип инт. 552 00:23:52,159 --> 00:23:54,200 Отиваме, за да съхраните стойност 5 вътре в него. 553 00:23:54,200 --> 00:23:57,366 Няма по показалеца, защото ние не сме всъщност създаде показалеца все още, нали? 554 00:23:57,366 --> 00:24:00,302 И тогава в следващия линия, инт звезда показалеца, 555 00:24:00,302 --> 00:24:02,760 това е, когато сме в действителност физически създаване на показалеца 556 00:24:02,760 --> 00:24:05,010 и ние сме за създаване, че равна на или съотнасяне 557 00:24:05,010 --> 00:24:07,250 показалеца, за да амперсанд х. 558 00:24:07,250 --> 00:24:10,002 Кое е мястото, където независимо в коя част памет това се случи да бъде. 559 00:24:10,002 --> 00:24:12,210 Аз всъщност не се притеснява изработване на стойност не и този път. 560 00:24:12,210 --> 00:24:14,900 Но в този случай, тази точка щяхте да сте равно на това. 561 00:24:14,900 --> 00:24:18,060 >> И тогава там долу, звездата показалка е dereferencing. 562 00:24:18,060 --> 00:24:20,310 Ето къде сме издърпване на информацията. 563 00:24:20,310 --> 00:24:24,170 Така, че стойност на х е реално ще бъде равен на 35. 564 00:24:24,170 --> 00:24:30,390 Така че в този момент, ние сме по същество Просто reinitialized х 35 565 00:24:30,390 --> 00:24:32,320 без всъщност да докосвате х. 566 00:24:32,320 --> 00:24:34,560 Само през показалеца че се посочи х, 567 00:24:34,560 --> 00:24:36,910 всъщност ние можем да променим това, което е х. 568 00:24:36,910 --> 00:24:38,420 Отивам да се направи това, както добре. 569 00:24:38,420 --> 00:24:52,200 >> Така че тук сме създали някои случайни адрес тук. 570 00:24:52,200 --> 00:24:54,734 Нека просто кажем, 0x00 отново. 571 00:24:54,734 --> 00:24:56,150 Нека просто кажем, че това е адресът. 572 00:24:56,150 --> 00:25:00,830 И ние сме създали цяло число х име и стойността съм възложени му е 5. 573 00:25:00,830 --> 00:25:03,840 Във втория ред, Int pointer-- така че сега ние сме 574 00:25:03,840 --> 00:25:07,820 имам тази втора нещо тук се нарича pointer-- 575 00:25:07,820 --> 00:25:14,310 и ние ще to-- нека просто кажем, това е някакъв друг адрес оперативна памет. 576 00:25:14,310 --> 00:25:18,460 >> Така че ние ще зададете този равно на каквото и да било. 577 00:25:18,460 --> 00:25:21,540 578 00:25:21,540 --> 00:25:25,880 И тази показалка ще точка към стойността на х 579 00:25:25,880 --> 00:25:30,090 И тогава, ако променим the-- ако правим звезда показалеца, 580 00:25:30,090 --> 00:25:32,800 че ще ходи на стойност на нашата показалка. 581 00:25:32,800 --> 00:25:36,979 В този случай, то се случва да проследите тази стрелка към тази стойност на х 582 00:25:36,979 --> 00:25:38,395 и то се случва да го смените с 35. 583 00:25:38,395 --> 00:25:41,400 584 00:25:41,400 --> 00:25:44,760 Реално, ние просто се промени х, без да докосвате х. 585 00:25:44,760 --> 00:25:48,970 Чрез просто съотнасяне указатели, можем да отидем и да промените стойността на х. 586 00:25:48,970 --> 00:25:50,050 Това прави ли смисъл? 587 00:25:50,050 --> 00:25:55,200 >> Така че по този начин, ние всъщност може да преименувате и rechange и преназначаване стойности 588 00:25:55,200 --> 00:25:57,750 до неща, които ние не всъщност направим себе си. 589 00:25:57,750 --> 00:26:00,925 Това прави ли смисъл на всички? 590 00:26:00,925 --> 00:26:01,425 Готино. 591 00:26:01,425 --> 00:26:04,450 592 00:26:04,450 --> 00:26:05,310 ДОБРЕ. 593 00:26:05,310 --> 00:26:08,210 Така комплекс графичен тук. 594 00:26:08,210 --> 00:26:09,360 Отиди ред по ред. 595 00:26:09,360 --> 00:26:12,055 По същество, просто направи точно едно и също нещо, че аз просто направих. 596 00:26:12,055 --> 00:26:15,977 597 00:26:15,977 --> 00:26:17,810 Преди да се премине, I Наистина искам да просто се 598 00:26:17,810 --> 00:26:19,370 че всеки е наистина ясен по този въпрос. 599 00:26:19,370 --> 00:26:26,260 Така че тук, кодът, който имаме, е инт а в размер на 3, б равнява 4, в равнява 5. 600 00:26:26,260 --> 00:26:33,130 Така че ние сме създали три числа име А, В и С, които са равно на 3, 4 и 5. 601 00:26:33,130 --> 00:26:38,460 И тогава ние създаваме три указатели тази точка на всяко от тези променливи. 602 00:26:38,460 --> 00:26:41,760 >> И сега отиваме да разясни по същество 603 00:26:41,760 --> 00:26:44,240 какво се случва, когато работите върху тях. 604 00:26:44,240 --> 00:26:45,490 Така че да ги извади. 605 00:26:45,490 --> 00:26:48,156 Вземете лист paper-- аз не правя знам, ако вие всички имат хартия, 606 00:26:48,156 --> 00:26:50,930 но тези от вас, които не го правят, може би назаем от тези от вас, които вършат. 607 00:26:50,930 --> 00:26:53,580 Вземете листа хартия и отидете ред по ред. 608 00:26:53,580 --> 00:26:59,390 И при всяка операция, което правите, Искам вие действително да напишете 609 00:26:59,390 --> 00:27:00,800 което е, В и С в тази точка. 610 00:27:00,800 --> 00:27:03,550 И какви са адресите, какви са указателите, които водят към една, б и в 611 00:27:03,550 --> 00:27:04,410 в този момент? 612 00:27:04,410 --> 00:27:07,150 >> И след това се надяваме, това вид ще стъпите момчета 613 00:27:07,150 --> 00:27:08,900 чрез това как да се мисли за указатели. 614 00:27:08,900 --> 00:27:10,650 Ние няма да отида чрез всички от тях. 615 00:27:10,650 --> 00:27:13,450 Може би ще ви даде five-- подобни, на три минути. 616 00:27:13,450 --> 00:27:14,660 Първи стъпки на първия малцина. 617 00:27:14,660 --> 00:28:10,410 618 00:28:10,410 --> 00:28:10,959 Oh. 619 00:28:10,959 --> 00:28:11,459 Ами сега. 620 00:28:11,459 --> 00:28:20,940 621 00:28:20,940 --> 00:28:26,950 >> АУДИТОРИЯ: Във втория ред, защо Не е звездата [недоловим] променлива? 622 00:28:26,950 --> 00:28:29,410 >> АНДИ Пенг: Не забравяйте в оператори, в първата седмица, 623 00:28:29,410 --> 00:28:31,730 ние говорихме за това как Ако го направите, плюс равни, 624 00:28:31,730 --> 00:28:35,320 това просто означава равнява един плюс в. 625 00:28:35,320 --> 00:28:39,370 В този case-- така че това е друга начин, по който може да се използва звездата. 626 00:28:39,370 --> 00:28:42,040 В допълнение към съотнасяне и за обявяване на указатели, 627 00:28:42,040 --> 00:28:44,440 не забравяйте, че той също означава умножение. 628 00:28:44,440 --> 00:28:46,575 Така че в този случай, тя току-що бе бъде равнява пъти гр. 629 00:28:46,575 --> 00:28:48,450 Това е точно толкова различно начин на писане, че. 630 00:28:48,450 --> 00:28:49,776 >> АУДИТОРИЯ: а равнява пъти гр. 631 00:28:49,776 --> 00:28:50,442 АНДИ Пенг: Да. 632 00:28:50,442 --> 00:30:43,488 633 00:30:43,488 --> 00:30:47,130 >> АУДИТОРИЯ: Какво означава, ако тя казва един амперсанд писмо? 634 00:30:47,130 --> 00:30:50,900 >> АНДИ Пенг: амперсанд средства започваш да that-- сте 635 00:30:50,900 --> 00:30:54,760 Ще мястото на показалеца е сочи и издърпване на адреса. 636 00:30:54,760 --> 00:31:01,270 Така амперсанд дава адреса, звезден дава действителната стойност там. 637 00:31:01,270 --> 00:31:03,090 >> АУДИТОРИЯ: Дали сме изграждане на ред по ред? 638 00:31:03,090 --> 00:31:04,881 >> АНДИ Пенг: Ти си изграждане на ред по ред. 639 00:31:04,881 --> 00:31:07,260 Така че просто отидете един ред време и then-- ви 640 00:31:07,260 --> 00:31:08,470 не е нужно да се притеснявате за завършване на цялото това нещо. 641 00:31:08,470 --> 00:31:10,428 Нека се опитаме да се измъкне сам може би две, три линии 642 00:31:10,428 --> 00:31:12,445 и тогава ще свика и да завърши това. 643 00:31:12,445 --> 00:31:15,530 644 00:31:15,530 --> 00:31:17,470 >> Това е напълно ОК, ако вие се губят. 645 00:31:17,470 --> 00:31:19,334 Това е наистина трудно концепция. 646 00:31:19,334 --> 00:31:22,500 Ако вие се притесняват, че класът върви по този начин като Давид казваше: 647 00:31:22,500 --> 00:31:23,190 това не е така. 648 00:31:23,190 --> 00:31:25,949 Ние сме достигането на концептуална пик на трудност 649 00:31:25,949 --> 00:31:27,740 и след това ще да бъде наклонена надолу. 650 00:31:27,740 --> 00:31:29,110 Така че, момчета са почти там. 651 00:31:29,110 --> 00:31:31,080 Ние имаме много бонбони, за да получите вие, момчета, през гърбица. 652 00:31:31,080 --> 00:31:32,940 Мисля, че доста много след падане пробие ние ще бъдем през гърбица 653 00:31:32,940 --> 00:31:34,220 и животът ще се оправи отново. 654 00:31:34,220 --> 00:31:36,580 Така че не се тревожете изобщо. 655 00:31:36,580 --> 00:32:30,732 656 00:32:30,732 --> 00:32:31,232 Всичко е наред. 657 00:32:31,232 --> 00:32:33,650 Аз ще ви дам момчета 20 още секунди да приключи. 658 00:32:33,650 --> 00:33:12,560 659 00:33:12,560 --> 00:33:13,330 ДОБРЕ. 660 00:33:13,330 --> 00:33:13,830 Всичко е наред. 661 00:33:13,830 --> 00:33:16,370 Нека да пробождане в това. 662 00:33:16,370 --> 00:33:19,430 Както вие да ми даде отговор, Аз съм просто ще ги написали инча 663 00:33:19,430 --> 00:33:22,140 И да се надяваме we-- мога? 664 00:33:22,140 --> 00:33:23,317 Аз всъщност не може да го напишете инча 665 00:33:23,317 --> 00:33:24,400 Аз ще го направи на дъската. 666 00:33:24,400 --> 00:33:31,420 667 00:33:31,420 --> 00:33:35,900 >> Така че тук, в тази първа линия имаме равнява б звезда гр. 668 00:33:35,900 --> 00:33:38,060 Също Elliot доведоха до едно наистина, наистина добра точка. 669 00:33:38,060 --> 00:33:42,500 Защото аз забравих, че в допълнение към двата начина можем да използваме символа звезда, 670 00:33:42,500 --> 00:33:43,750 всъщност има трети начин. 671 00:33:43,750 --> 00:33:44,990 Умножение. 672 00:33:44,990 --> 00:33:51,380 И така, просто не се объркате, защото Това е първото начин за използване на звезда. 673 00:33:51,380 --> 00:33:54,470 Това е просто казвам на компютъра че аз съм на път да създаде показалка. 674 00:33:54,470 --> 00:34:00,600 >> Вторият начин чрез правене Звездата на показалеца, 675 00:34:00,600 --> 00:34:04,320 който казва на показалеца, който искате на достъп до данните по това показалка. 676 00:34:04,320 --> 00:34:06,710 И след това, разбира се, има просто обикновен умножение 677 00:34:06,710 --> 00:34:09,564 между два номера, който ви казва че искам да се размножават двете. 678 00:34:09,564 --> 00:34:11,730 Така че има много начини можем да използваме символа звезда. 679 00:34:11,730 --> 00:34:13,830 Не се объркате. 680 00:34:13,830 --> 00:34:16,991 Просто се уверете, че вие, момчета, да разберат, точно това, което всички три от тях 681 00:34:16,991 --> 00:34:18,630 правите. 682 00:34:18,630 --> 00:34:22,920 >> Така че в този първи ред, а равнява б пъти гр. 683 00:34:22,920 --> 00:34:26,850 Така че нека да мине през това, което е това, което е В, което е в? 684 00:34:26,850 --> 00:34:32,600 И каква е показалеца на това указател към Б и показалеца, за да сус 685 00:34:32,600 --> 00:34:34,050 Какви са тези всички равняващо? 686 00:34:34,050 --> 00:34:34,600 ДОБРЕ. 687 00:34:34,600 --> 00:34:38,650 >> Така че ние започваме с размер на 3, б равнява 4, и в равнява 5, нали? 688 00:34:38,650 --> 00:34:42,230 Така че след тази първа линия, може някой да ми каже какво е? 689 00:34:42,230 --> 00:34:42,730 Да. 690 00:34:42,730 --> 00:34:44,229 Чувствайте се свободни да се отговори просто крещи. 691 00:34:44,229 --> 00:34:44,929 20. 692 00:34:44,929 --> 00:34:45,550 Good. 693 00:34:45,550 --> 00:34:46,410 Какво е б? 694 00:34:46,410 --> 00:34:47,777 >> АУДИТОРИЯ: 4. 695 00:34:47,777 --> 00:34:48,610 АНДИ Пенг: Какво е в? 696 00:34:48,610 --> 00:34:49,659 АУДИТОРИЯ: 5. 697 00:34:49,659 --> 00:34:50,770 АНДИ Пенг: Yay. 698 00:34:50,770 --> 00:34:51,639 Good. 699 00:34:51,639 --> 00:34:55,707 Какви са па, Pb, и компютър? 700 00:34:55,707 --> 00:34:58,564 >> АУДИТОРИЯ: 000001 и 002? 701 00:34:58,564 --> 00:34:59,230 АНДИ Пенг: Да. 702 00:34:59,230 --> 00:35:02,390 Така вид подвеждащ въпрос но не съвсем, защото тук съм 703 00:35:02,390 --> 00:35:04,760 извади реални спомени. 704 00:35:04,760 --> 00:35:08,520 Но тъй като, за пример, не го правим всъщност знаят какви са тези номера са, 705 00:35:08,520 --> 00:35:10,326 ние можем просто да кажем амперсанд. 706 00:35:10,326 --> 00:35:12,200 Аз дори не знам дали съм може да се направи амперсанд. 707 00:35:12,200 --> 00:35:18,022 Това е like-- как да го направя? 708 00:35:18,022 --> 00:35:19,790 >> АУДИТОРИЯ: Подобно на съставянето осмица. 709 00:35:19,790 --> 00:35:20,870 >> АНДИ Пенг: Подобно на осем. 710 00:35:20,870 --> 00:35:21,580 Подобно на това. 711 00:35:21,580 --> 00:35:22,080 ДОБРЕ. 712 00:35:22,080 --> 00:35:23,446 АУДИТОРИЯ: Bingo. 713 00:35:23,446 --> 00:35:25,350 >> АНДИ Пенг: го убива. 714 00:35:25,350 --> 00:35:28,202 Така амперсанд един, може просто да го направя. 715 00:35:28,202 --> 00:35:30,410 Защото ние всъщност не интересува какво стойността на които 716 00:35:30,410 --> 00:35:32,880 е, и това е известно отдавна задника стойност във всеки случай, 717 00:35:32,880 --> 00:35:35,220 ние използваме само giong да се каже, един амперсанд. 718 00:35:35,220 --> 00:35:37,024 Тогава какво е пб? 719 00:35:37,024 --> 00:35:37,940 АУДИТОРИЯ: [недоловим]. 720 00:35:37,940 --> 00:35:38,606 АНДИ Пенг: Да. 721 00:35:38,606 --> 00:35:42,490 722 00:35:42,490 --> 00:35:43,500 Готино. 723 00:35:43,500 --> 00:35:44,010 Всичко е наред. 724 00:35:44,010 --> 00:35:44,770 Лесно първа линия. 725 00:35:44,770 --> 00:35:45,270 Имаме това. 726 00:35:45,270 --> 00:35:46,330 Показалки са лесни. 727 00:35:46,330 --> 00:35:47,450 ОК е. 728 00:35:47,450 --> 00:35:48,740 >> На втора линия. 729 00:35:48,740 --> 00:35:52,400 И така, те се равнява е същото нещо като изричане на равнява пъти гр. 730 00:35:52,400 --> 00:35:54,730 Това е просто по-лесен начин на писане. 731 00:35:54,730 --> 00:35:57,170 Така че ние не се опитваме да направим точка или нещо тук. 732 00:35:57,170 --> 00:36:00,600 Така става с първа линия. 733 00:36:00,600 --> 00:36:05,144 Какво е на втора линия след като направи равнява пъти в? 734 00:36:05,144 --> 00:36:05,777 >> АУДИТОРИЯ: 100? 735 00:36:05,777 --> 00:36:06,610 АНДИ Пенг: Това е 100. 736 00:36:06,610 --> 00:36:07,795 Good. 737 00:36:07,795 --> 00:36:08,864 Какво ще кажете за б? 738 00:36:08,864 --> 00:36:10,256 >> АУДИТОРИЯ: [недоловим]. 739 00:36:10,256 --> 00:36:11,335 >> АНДИ Пенг: Какво ще кажете за гр? 740 00:36:11,335 --> 00:36:12,490 >> АУДИТОРИЯ: [недоловим]. 741 00:36:12,490 --> 00:36:14,530 >> АНДИ Пенг: А какво ще кажете за указатели? 742 00:36:14,530 --> 00:36:15,800 Има they-- същото, нали? 743 00:36:15,800 --> 00:36:20,640 744 00:36:20,640 --> 00:36:21,940 ДОБРЕ. 745 00:36:21,940 --> 00:36:23,820 Сега трета линия. 746 00:36:23,820 --> 00:36:26,400 747 00:36:26,400 --> 00:36:27,350 Малко по-сложни. 748 00:36:27,350 --> 00:36:29,760 б равнява звезда годишно. 749 00:36:29,760 --> 00:36:34,189 Може ли някой да ми каже, на първо място, какво прави звезда па равни? 750 00:36:34,189 --> 00:36:36,159 >> АУДИТОРИЯ: Това е стойността които се съхранява при. 751 00:36:36,159 --> 00:36:36,950 АНДИ Пенг: Точно така. 752 00:36:36,950 --> 00:36:38,070 И каква е стойността които се съхранява при? 753 00:36:38,070 --> 00:36:38,860 >> АУДИТОРИЯ: 100. 754 00:36:38,860 --> 00:36:39,660 >> АНДИ Пенг: OK. 755 00:36:39,660 --> 00:36:43,462 И така, какво ще бъде след една изпълняващата тази линия на код? 756 00:36:43,462 --> 00:36:44,760 >> АУДИТОРИЯ: [недоловим]. 757 00:36:44,760 --> 00:36:45,870 >> АНДИ Пенг: Какво ще кажете за б? 758 00:36:45,870 --> 00:36:46,780 >> АУДИТОРИЯ: 100. 759 00:36:46,780 --> 00:36:47,620 >> АНДИ Пенг: Да. 760 00:36:47,620 --> 00:36:49,995 И след това всичко останало е почти без промяна, нали? 761 00:36:49,995 --> 00:36:51,239 Тъй като ние не го докосва. 762 00:36:51,239 --> 00:36:55,370 763 00:36:55,370 --> 00:36:57,010 Готино. 764 00:36:57,010 --> 00:36:58,390 Четвърти ред. 765 00:36:58,390 --> 00:37:00,390 Малко по-сложно. 766 00:37:00,390 --> 00:37:06,910 Така pc-- още веднъж, бр е показалеца че посочи c-- равнява на годишна база. 767 00:37:06,910 --> 00:37:11,520 768 00:37:11,520 --> 00:37:12,360 Какво е? 769 00:37:12,360 --> 00:37:14,525 >> АУДИТОРИЯ: 100. 770 00:37:14,525 --> 00:37:15,400 АНДИ Пенг: Какво е б? 771 00:37:15,400 --> 00:37:17,920 АУДИТОРИЯ: 100. 772 00:37:17,920 --> 00:37:18,862 АНДИ Пенг: Какво е в? 773 00:37:18,862 --> 00:37:19,993 АУДИТОРИЯ: 5. 774 00:37:19,993 --> 00:37:20,867 АНДИ Пенг: Какво е па? 775 00:37:20,867 --> 00:37:22,775 АУДИТОРИЯ: амперсанд а. 776 00:37:22,775 --> 00:37:23,730 АНДИ Пенг: п.к.? 777 00:37:23,730 --> 00:37:26,010 АУДИТОРИЯ: Ampersand б. 778 00:37:26,010 --> 00:37:27,730 АНДИ Пенг: И трудно, какво е компютър в момента? 779 00:37:27,730 --> 00:37:28,410 АУДИТОРИЯ: амперсанд а. 780 00:37:28,410 --> 00:37:29,034 АНДИ Пенг: Yay. 781 00:37:29,034 --> 00:37:31,790 Woo Hoo. 782 00:37:31,790 --> 00:37:32,500 Вие, момчета, да видят? 783 00:37:32,500 --> 00:37:33,282 Това е добре. 784 00:37:33,282 --> 00:37:33,990 Това не е твърде лошо. 785 00:37:33,990 --> 00:37:38,730 Ние имаме повече бонбони, ако това не е всичко Точно така, но мисля, че всичко е наред. 786 00:37:38,730 --> 00:37:41,900 И ние ще отидем само един още преди да бъде по-трудно от тях. 787 00:37:41,900 --> 00:37:43,710 Отговорите, които имам тук. 788 00:37:43,710 --> 00:37:47,050 >> По същество, знам, че това е точно като математика в този момент. 789 00:37:47,050 --> 00:37:53,240 Когато имате прости уравнения като един плюс б, а в пъти, че е лесно да се направи. 790 00:37:53,240 --> 00:37:56,390 И когато започнете да се разширява при го, просто отидете цел на операциите. 791 00:37:56,390 --> 00:37:57,830 Същото нещо, както преди. 792 00:37:57,830 --> 00:38:00,030 >> Следете дали вашият звезда е преди нещо. 793 00:38:00,030 --> 00:38:01,640 Това ви казва стойността. 794 00:38:01,640 --> 00:38:04,640 Ако имате и преди нещо, тя ви казва адреса. 795 00:38:04,640 --> 00:38:07,860 И вие трябва да зададете или указатели или тази стойност. 796 00:38:07,860 --> 00:38:11,260 Така че нека да преминеш тоя последната една бързо. 797 00:38:11,260 --> 00:38:12,520 Не и този последният, съжалявам. 798 00:38:12,520 --> 00:38:13,340 Всъщност, вие може да избирате. 799 00:38:13,340 --> 00:38:16,006 Коя Мислите ли искате да отидете над от останалите три 800 00:38:16,006 --> 00:38:17,449 че имаме? 801 00:38:17,449 --> 00:38:20,490 Не мисля, че можем да направим това само защото ние не можем просто да скочи до линията. 802 00:38:20,490 --> 00:38:21,000 ДОБРЕ. 803 00:38:21,000 --> 00:38:25,700 Вие, момчета, не разполагат с възможност за избор, това е просто третият да издържи една. 804 00:38:25,700 --> 00:38:29,228 >> Star бр равнява б пъти гр. 805 00:38:29,228 --> 00:38:30,144 >> АУДИТОРИЯ: Star пб? 806 00:38:30,144 --> 00:38:32,117 >> АУДИТОРИЯ: Star пб. 807 00:38:32,117 --> 00:38:32,825 АНДИ Пенг: Съжаляваме? 808 00:38:32,825 --> 00:38:33,599 АУДИТОРИЯ: Star пб. 809 00:38:33,599 --> 00:38:34,390 АНДИ Пенг: Star пб. 810 00:38:34,390 --> 00:38:35,100 О, моя лош. 811 00:38:35,100 --> 00:38:38,647 Star п.к. равнява б пъти гр. 812 00:38:38,647 --> 00:38:40,230 Отивам да ви дам момчета на 10 секунди. 813 00:38:40,230 --> 00:38:41,140 Просто мисля, че най-бързо. 814 00:38:41,140 --> 00:38:43,450 Това е, че имаме толкова Досега, какво ще се случи, след като сме 815 00:38:43,450 --> 00:38:46,770 изпълнява тази пета линия точно там? 816 00:38:46,770 --> 00:38:54,030 817 00:38:54,030 --> 00:38:55,980 ДОБРЕ. 818 00:38:55,980 --> 00:38:58,720 Какво е? 819 00:38:58,720 --> 00:38:59,560 >> АУДИТОРИЯ: 100. 820 00:38:59,560 --> 00:39:02,470 >> АНДИ Пенг: 100. 821 00:39:02,470 --> 00:39:03,610 Какво е б сега? 822 00:39:03,610 --> 00:39:04,330 >> АУДИТОРИЯ: 500. 823 00:39:04,330 --> 00:39:05,250 >> АНДИ Пенг: Добро. 824 00:39:05,250 --> 00:39:08,570 Има ли някой, искам да обясня за мен, защо това е 500? 825 00:39:08,570 --> 00:39:10,540 Аз не се чувствам като ние всъщност не се докосваше б. 826 00:39:10,540 --> 00:39:13,950 Как успяваме да смените стойност на б, без да докосвате б? 827 00:39:13,950 --> 00:39:15,090 Да? 828 00:39:15,090 --> 00:39:18,239 >> АУДИТОРИЯ: Защото звезда п.к. означава стойността на pb-- 829 00:39:18,239 --> 00:39:19,030 АНДИ Пенг: Точно така. 830 00:39:19,030 --> 00:39:19,790 АУДИТОРИЯ: --which е б. 831 00:39:19,790 --> 00:39:20,581 АНДИ Пенг: Точно така. 832 00:39:20,581 --> 00:39:26,880 Така че тук, в нашата схема, нашият показалка пб е действително сочи към това право 833 00:39:26,880 --> 00:39:28,690 тук, което е действителната физическа б. 834 00:39:28,690 --> 00:39:31,340 И така, ако отида и правиш звезда Pb, това е 835 00:39:31,340 --> 00:39:36,080 след вашето стрелка на показалеца и физически промяна на стойността на б. 836 00:39:36,080 --> 00:39:39,532 Така че това е защо ние да б променено на 500, без всъщност да докосвате б. 837 00:39:39,532 --> 00:39:42,490 И след това всичко останало остава същото, защото ние не пипай там. 838 00:39:42,490 --> 00:39:47,060 839 00:39:47,060 --> 00:39:48,530 Ето б. 840 00:39:48,530 --> 00:39:49,420 Готино. 841 00:39:49,420 --> 00:39:50,485 И тогава-- 842 00:39:50,485 --> 00:39:51,910 >> АУДИТОРИЯ: Аз просто имам един въпрос. 843 00:39:51,910 --> 00:39:52,730 >> АНДИ Пенг: Така ли? 844 00:39:52,730 --> 00:39:56,000 >> АУДИТОРИЯ: От we've-- там вече не е в амперсанд, 845 00:39:56,000 --> 00:39:59,620 означава ли това, амперсанд а пренасочи към едно и също нещо в момента? 846 00:39:59,620 --> 00:40:00,520 >> АНДИ Пенг: Да. 847 00:40:00,520 --> 00:40:01,582 Така-- 848 00:40:01,582 --> 00:40:03,540 АУДИТОРИЯ: Така че стрелката вид просто се движи and-- 849 00:40:03,540 --> 00:40:04,030 АНДИ Пенг: Така essentially-- 850 00:40:04,030 --> 00:40:05,405 АУДИТОРИЯ: --now не можем да access-- 851 00:40:05,405 --> 00:40:08,387 АНДИ Пенг: --when ние сочен в on-- I фалшификатор. 852 00:40:08,387 --> 00:40:08,970 Какво беше това? 853 00:40:08,970 --> 00:40:09,560 Третата линия? 854 00:40:09,560 --> 00:40:10,060 Четвърто. 855 00:40:10,060 --> 00:40:11,490 Четвърти ред. 856 00:40:11,490 --> 00:40:14,910 Всичко, което направих, беше по същество, промените тази стрелка 857 00:40:14,910 --> 00:40:16,680 и той да посочи към вместо. 858 00:40:16,680 --> 00:40:19,480 >> АУДИТОРИЯ: Така че ние не може да влезе в повече. 859 00:40:19,480 --> 00:40:22,520 >> АНДИ Пенг: Ако сте имали този точната номер, можете да получите достъп до нея. 860 00:40:22,520 --> 00:40:23,260 Но не. 861 00:40:23,260 --> 00:40:25,680 Ние не разполагаме с показалка сочи към гр вече. 862 00:40:25,680 --> 00:40:27,430 Мисля, че ако е искал отново да получите достъп до него, можете 863 00:40:27,430 --> 00:40:30,390 ще създаде друг указател, който отново посочи в 864 00:40:30,390 --> 00:40:32,856 или dereferenced това и посочи назад. 865 00:40:32,856 --> 00:40:35,730 Така че, не, като от момента, тримата указатели, никой от тях не говорят за гр. 866 00:40:35,730 --> 00:40:38,800 867 00:40:38,800 --> 00:40:40,110 >> Всеки добър? 868 00:40:40,110 --> 00:40:41,440 Отговорите са онлайн. 869 00:40:41,440 --> 00:40:45,210 Чувствайте се свободни да, след точка, разясни последните две и тест себе си. 870 00:40:45,210 --> 00:40:47,840 Същите понятия, просто малко по-сложни. 871 00:40:47,840 --> 00:40:51,860 Просто следвайте чрез логиката на защо нещата са различни неща. 872 00:40:51,860 --> 00:40:54,530 И намек, указатели са тема, която ние обичаме 873 00:40:54,530 --> 00:40:58,780 за покриване на викторини, защото те са концептуално много предизвикателна. 874 00:40:58,780 --> 00:41:01,360 Така че аз бих Ви предлагам да момчета всичко преглеждат тази диаграма 875 00:41:01,360 --> 00:41:05,916 или наклонена черта подобни концепции за това преди викторината си следващата седмица. 876 00:41:05,916 --> 00:41:06,864 >> АУДИТОРИЯ: Извинете ме. 877 00:41:06,864 --> 00:41:07,530 >> АНДИ Пенг: Така ли? 878 00:41:07,530 --> 00:41:09,708 АУДИТОРИЯ: [недоловим] крайния one-- [недоловим]. 879 00:41:09,708 --> 00:41:12,710 880 00:41:12,710 --> 00:41:15,770 >> АНДИ Пенг: 50,000? 881 00:41:15,770 --> 00:41:17,850 Аз ще трябва да го следваме обратно надолу. 882 00:41:17,850 --> 00:41:22,530 Но somewhere-- Мисля линията преди, по която сте създали гигант в стойност. 883 00:41:22,530 --> 00:41:26,250 в равнява тази гигантска нещо която е 100 пъти по 500. 884 00:41:26,250 --> 00:41:27,006 Не. 885 00:41:27,006 --> 00:41:28,000 >> АУДИТОРИЯ: [недоловим]. 886 00:41:28,000 --> 00:41:28,625 >> АНДИ Пенг: Да. 887 00:41:28,625 --> 00:41:30,620 100 100 пъти, което е 10,000. 888 00:41:30,620 --> 00:41:32,020 Което е 10,000. 889 00:41:32,020 --> 00:41:35,410 Така че обратно там сте умножаване б и в. 890 00:41:35,410 --> 00:41:43,165 Така че показалецът, който сочи към В- която е стойността на 500-- пъти A-- 891 00:41:43,165 --> 00:41:44,480 >> АУДИТОРИЯ: [недоловим]. 892 00:41:44,480 --> 00:41:45,730 АНДИ Пенг: Може би това е погрешно. 893 00:41:45,730 --> 00:41:49,514 АУДИТОРИЯ: Не, не, това не е. [Недоловим] показалка в гр сега се сочеше A-- 894 00:41:49,514 --> 00:41:50,180 АНДИ Пенг: Да. 895 00:41:50,180 --> 00:41:50,840 Той е прав. 896 00:41:50,840 --> 00:41:56,477 >> АУДИТОРИЯ: --it е най му на по-равни а times-- това е стойността на гр. 897 00:41:56,477 --> 00:41:59,560 АНДИ Пенг: Може ли да се каже, че малко по- битов силен така че всеки може да ви чуе? 898 00:41:59,560 --> 00:42:04,879 АУДИТОРИЯ: Така показалка в гр вече сочи до каква показалеца на използвано да посоча 899 00:42:04,879 --> 00:42:09,460 to-- и все още does-- но те посочат едно и също нещо, което е най-а, нали? 900 00:42:09,460 --> 00:42:12,925 Стойност на А, обаче това е било новодефинираната. 901 00:42:12,925 --> 00:42:17,875 И в началото на която сте изричане на преди това е била 100 пъти 902 00:42:17,875 --> 00:42:21,340 стойността на б, която е 500. 903 00:42:21,340 --> 00:42:24,305 И така, това е все пак, че е много. 904 00:42:24,305 --> 00:42:24,805 50,000. 905 00:42:24,805 --> 00:42:32,860 Те сте преназначаване, че на това, което памет в гр is-- показалеца в гр 906 00:42:32,860 --> 00:42:34,510 сочи към който е. 907 00:42:34,510 --> 00:42:38,460 Значи предефиниране на да бъде 50 000. 908 00:42:38,460 --> 00:42:40,210 АНДИ Пенг: Можеше научи точка за мен. 909 00:42:40,210 --> 00:42:41,260 Следващия път, всичко е ваше. 910 00:42:41,260 --> 00:42:41,440 Тук. 911 00:42:41,440 --> 00:42:42,564 Ето повече бонбони за това. 912 00:42:42,564 --> 00:42:45,790 Вие заслужавате бонбони за това. 913 00:42:45,790 --> 00:42:47,260 >> АУДИТОРИЯ: Аз почти настигна това. 914 00:42:47,260 --> 00:42:47,660 >> АНДИ Пенг: Вие почти настигна това. 915 00:42:47,660 --> 00:42:48,450 Няма проблем. 916 00:42:48,450 --> 00:42:48,950 Да. 917 00:42:48,950 --> 00:42:50,033 Но тя беше точно така. 918 00:42:50,033 --> 00:42:54,469 Така че това, което трябва да направите, е that-- Мисля, че ние 919 00:42:54,469 --> 00:42:56,510 трябва да следват факта, че указателите сега са 920 00:42:56,510 --> 00:42:57,880 сочещи към различни стойности. 921 00:42:57,880 --> 00:43:01,785 Така че value-- Съжалявам, указател на гр repointed до. 922 00:43:01,785 --> 00:43:04,390 И така, това измества всички наши номера. 923 00:43:04,390 --> 00:43:08,930 И затова, когато достъп до стойност, съхранявана там, това е различно. 924 00:43:08,930 --> 00:43:10,490 Това прави ли смисъл? 925 00:43:10,490 --> 00:43:11,380 ДОБРЕ. 926 00:43:11,380 --> 00:43:12,820 Готино. 927 00:43:12,820 --> 00:43:16,635 Всеки добър, преди да се премине? 928 00:43:16,635 --> 00:43:25,332 >> АУДИТОРИЯ: Има ли the-- когато започваш установяване на условията и реда в лявата колона, 929 00:43:25,332 --> 00:43:30,494 е първия ред влияе на втория ред и тогава second-- харесват, това е all-- 930 00:43:30,494 --> 00:43:31,160 АНДИ Пенг: Да. 931 00:43:31,160 --> 00:43:37,610 Така че представете си, че е код, където аз просто напечатани в равнява б пъти с, звезда се равнява на гр. 932 00:43:37,610 --> 00:43:40,290 Само си представете, че аз съм просто избяга този код 933 00:43:40,290 --> 00:43:42,710 и аз не отпечатате това, което всички тези неща са. 934 00:43:42,710 --> 00:43:46,200 Ако аз бях просто да отпечатате първата нещо на върха, той ще бъде тук. 935 00:43:46,200 --> 00:43:48,510 Ако след Тичах всички тези редове код, 936 00:43:48,510 --> 00:43:51,160 Какво трябва тези стойности бъде в края са това. 937 00:43:51,160 --> 00:43:53,290 >> Така че аз съм всъщност написана програма тук. 938 00:43:53,290 --> 00:43:55,840 Не съм направил всички размножаването. 939 00:43:55,840 --> 00:43:58,310 Но представете си само. 940 00:43:58,310 --> 00:44:00,370 Така че тук аз просто имам програма, наречена указатели. 941 00:44:00,370 --> 00:44:04,190 Отивам да се увеличи, ако guys-- OK. 942 00:44:04,190 --> 00:44:07,580 Така че аз създадох променливи, а, б и в. 943 00:44:07,580 --> 00:44:09,640 Аз бях избран да ги равна на 3, 4, и 5 и съм 944 00:44:09,640 --> 00:44:11,770 създадени съответните им указатели. 945 00:44:11,770 --> 00:44:14,550 И тогава тук аз съм просто ще да отпечатате това, което е, че. 946 00:44:14,550 --> 00:44:15,833 Така че нека да тичам, че. 947 00:44:15,833 --> 00:44:21,520 948 00:44:21,520 --> 00:44:24,750 >> Мислите ли, see-- глупости. 949 00:44:24,750 --> 00:44:28,150 Смятате ли, момчета, да видим как е, В и С са тези стойности 950 00:44:28,150 --> 00:44:33,530 но техните указатели са тази гигантска стойност на боклука, че ние не се грижи за? 951 00:44:33,530 --> 00:44:36,690 Така че, ако бях действително да включите във всички размножаването 952 00:44:36,690 --> 00:44:39,770 и след това да отпечатате повторно всички това, че ще се изпълни от 953 00:44:39,770 --> 00:44:44,509 на това, което е в дъното това. 954 00:44:44,509 --> 00:44:47,300 Така че, ако вие искате да си поиграете с действително физически кодиране, 955 00:44:47,300 --> 00:44:49,000 вие може просто да включите всички онези инча 956 00:44:49,000 --> 00:44:52,860 Кодът ще бъде на линия и след това си стойности следва да се отпечатат, че след това. 957 00:44:52,860 --> 00:44:56,170 >> И тогава ще видите как показалеца адреси действително са преназначени. 958 00:44:56,170 --> 00:44:59,190 Така че ще видим как адрес на гр всъщност става 959 00:44:59,190 --> 00:45:00,920 равна на каквото и адреса на е. 960 00:45:00,920 --> 00:45:04,140 И те ще съвпадне каквото че голям брой е. 961 00:45:04,140 --> 00:45:06,530 Добър въпрос. 962 00:45:06,530 --> 00:45:07,550 Всеки добре ли е? 963 00:45:07,550 --> 00:45:10,300 Един последен призив за въпроси. 964 00:45:10,300 --> 00:45:11,590 ДОБРЕ. 965 00:45:11,590 --> 00:45:12,090 Всичко е наред. 966 00:45:12,090 --> 00:45:15,940 Така че се пригответе да имат своя ум взривен малко по малко повече. 967 00:45:15,940 --> 00:45:18,000 Масивите са всъщност само указатели. 968 00:45:18,000 --> 00:45:19,010 Това е всичко, те са. 969 00:45:19,010 --> 00:45:20,410 И не забравяйте, това, което са струни? 970 00:45:20,410 --> 00:45:21,630 Те са също масиви. 971 00:45:21,630 --> 00:45:23,110 Така че какви са струни наистина? 972 00:45:23,110 --> 00:45:27,100 Те са като указатели към започваща на Чар на повече символа. 973 00:45:27,100 --> 00:45:29,970 >> Така че това е само понятия, които започват да се изгради един върху друг. 974 00:45:29,970 --> 00:45:32,030 Така че това е why-- ви не забравяйте, в лекция, Дейвид, 975 00:45:32,030 --> 00:45:34,990 когато имаше това сравнение на вътр низ майка 976 00:45:34,990 --> 00:45:37,640 е нещо, а след това друг низ мама и вие 977 00:45:37,640 --> 00:45:41,240 опитайте да се равнява на двамата един към друг, те ви дават различни стойности. 978 00:45:41,240 --> 00:45:44,370 Това е така, защото струни от своя страна не са ценности. 979 00:45:44,370 --> 00:45:48,860 Всички те са са адреси на паметта char-- те са масиви от символи и масиви 980 00:45:48,860 --> 00:45:50,050 са само Указатели. 981 00:45:50,050 --> 00:45:54,022 >> Така че по същество, когато Давид беше comparing-- 982 00:45:54,022 --> 00:45:55,355 тя е ОК, ако ли да залича всичко това? 983 00:45:55,355 --> 00:46:02,320 984 00:46:02,320 --> 00:46:09,750 Така че в лекция, когато David имаше майка равнява равнява майка, 985 00:46:09,750 --> 00:46:11,630 за нас, че изглежда да е едно и също нещо. 986 00:46:11,630 --> 00:46:12,317 Нали така? 987 00:46:12,317 --> 00:46:15,150 Но, в компютъра под качулка, какво всъщност се случва 988 00:46:15,150 --> 00:46:18,380 е, че този низ, всичко, което е е масив. 989 00:46:18,380 --> 00:46:21,420 990 00:46:21,420 --> 00:46:25,390 С ampersand-- или, съжалявам, с нула на терминатор в края. 991 00:46:25,390 --> 00:46:28,311 992 00:46:28,311 --> 00:46:28,810 Нали така? 993 00:46:28,810 --> 00:46:29,940 Обратно наклонена черта 0. 994 00:46:29,940 --> 00:46:32,900 Грешен наклонена черта. 995 00:46:32,900 --> 00:46:35,960 >> Така че всички те were-- всички тези две струни were-- 996 00:46:35,960 --> 00:46:40,360 са масив от четири крака с размери буквите на мама и майка. 997 00:46:40,360 --> 00:46:44,780 Но това, което наистина са масиви са само указатели към конкретно място в паметта 998 00:46:44,780 --> 00:46:47,140 че ви казва да започнете вашия масив. 999 00:46:47,140 --> 00:46:52,370 Така че в този случай, всичко това беше беше просто някаква стойност боклук, 1000 00:46:52,370 --> 00:46:54,230 някои случайни показалка. 1001 00:46:54,230 --> 00:46:56,330 И всичко това е бил някаква друга стойност боклук. 1002 00:46:56,330 --> 00:46:59,830 Нека просто кажем, 0x200. 1003 00:46:59,830 --> 00:47:02,410 >> И така, когато се опитате да равен ги два един до друг, 1004 00:47:02,410 --> 00:47:06,130 те оценяват за фалшива, защото на addresses-- указателите 1005 00:47:06,130 --> 00:47:08,390 че те were-- бяха различни. 1006 00:47:08,390 --> 00:47:11,400 Като има предвид, че е различен, ако сте се опитва да сравни действителните числа. 1007 00:47:11,400 --> 00:47:15,820 Подобно, ако искате да compare-- в последния example-- инт А до точка Б, 1008 00:47:15,820 --> 00:47:17,640 те ще оценят да е вярно, както каза Елиът 1009 00:47:17,640 --> 00:47:19,431 защото те са числа, които се съхраняват 1010 00:47:19,431 --> 00:47:21,320 и сте оценяване само на стойностите. 1011 00:47:21,320 --> 00:47:25,090 Тук, защото струни са масиви и всички масиви са указатели, 1012 00:47:25,090 --> 00:47:28,080 ето защо те не са равни помежду си. 1013 00:47:28,080 --> 00:47:31,210 >> Така вид объркващо, че графичен. 1014 00:47:31,210 --> 00:47:32,450 Но нека просто да си представите. 1015 00:47:32,450 --> 00:47:38,110 Имаме създаде масив от размер 3 с индекс от 0 до 2-- 0, 1016 00:47:38,110 --> 00:47:41,530 1, 2, с ценностите на 1, 2 и 3 се съхранява в тях. 1017 00:47:41,530 --> 00:47:43,820 All масива наистина does-- тук, нека просто 1018 00:47:43,820 --> 00:47:46,720 казват аз съм създаване на показалеца да, че това е масив 1019 00:47:46,720 --> 00:47:50,810 достъп до стойността при Първият индекс на този масив. 1020 00:47:50,810 --> 00:47:52,890 Така че тук ще е 0. 1021 00:47:52,890 --> 00:47:53,390 Нали така? 1022 00:47:53,390 --> 00:47:56,820 Всички ли се разбере как е оценена на първа линия? 1023 00:47:56,820 --> 00:47:57,420 Страхотен. 1024 00:47:57,420 --> 00:48:00,800 >> И така, ако искате да се инициализира допълнителните стойности след това, 1025 00:48:00,800 --> 00:48:04,390 всичко, което правим, е пренасочване. 1026 00:48:04,390 --> 00:48:08,810 Така 0, 1, 2, 1. 1027 00:48:08,810 --> 00:48:12,770 Така че тази показалка, която някога е сочейки тук, всичко, което правим 1028 00:48:12,770 --> 00:48:15,540 е тя движи надолу. 1029 00:48:15,540 --> 00:48:16,970 Това е, което плюс 1 се прави. 1030 00:48:16,970 --> 00:48:18,500 И тогава можем да сложим 2 там. 1031 00:48:18,500 --> 00:48:23,250 Ако искахме да се сложи 3 в едно след това, ние ще изтрие тази показалка, 1032 00:48:23,250 --> 00:48:25,170 сложи 3 в там. 1033 00:48:25,170 --> 00:48:26,420 Това прави ли смисъл всички? 1034 00:48:26,420 --> 00:48:26,920 Да. 1035 00:48:26,920 --> 00:48:28,086 Знаете ли, имам един въпрос? 1036 00:48:28,086 --> 00:48:30,711 АУДИТОРИЯ: Това е [недоловим] има въпрос, аз ще го кажа така или иначе. 1037 00:48:30,711 --> 00:48:35,496 Не мисля, че това е всъщност един въпрос but-- на английски, масив 1038 00:48:35,496 --> 00:48:37,448 се равнява на 1 има смисъл. 1039 00:48:37,448 --> 00:48:39,888 Ние сме като, OK, първото нещо. 1040 00:48:39,888 --> 00:48:44,280 Но нещата са 0 индекс [Недоловим] масива е равна на 0 1041 00:48:44,280 --> 00:48:48,024 да показва, че първото място. 1042 00:48:48,024 --> 00:48:48,690 АНДИ Пенг: Да. 1043 00:48:48,690 --> 00:48:53,740 Така че всъщност това, което правя тук е Аз не съм достъп до първия индекс. 1044 00:48:53,740 --> 00:48:57,930 All I беше doing-- така на първо място, да ми каже какво е звезда масив направя? 1045 00:48:57,930 --> 00:48:59,480 Какво прави една звезда, преди указател направя? 1046 00:48:59,480 --> 00:49:00,855 >> АУДИТОРИЯ: Това показва показалеца. 1047 00:49:00,855 --> 00:49:02,910 Това, което за обявяване на показалеца. 1048 00:49:02,910 --> 00:49:04,380 Тя de-- 1049 00:49:04,380 --> 00:49:07,520 >> АНДИ Пенг: Това dereferences което означава, тя отива и действително получава стойността. 1050 00:49:07,520 --> 00:49:08,020 Нали така? 1051 00:49:08,020 --> 00:49:13,030 Така че в този случай, искате да получите стойността тук и да зададете, че към 1. 1052 00:49:13,030 --> 00:49:13,800 Да? 1053 00:49:13,800 --> 00:49:17,050 Така че аз не съм actually-- аз не ми пука за индекса на това, 1054 00:49:17,050 --> 00:49:21,406 всичко, което правя е просто итерации надолу чрез преместване ми показалеца надолу масива. 1055 00:49:21,406 --> 00:49:23,280 И след това евентуално I трябва да го спре, нали? 1056 00:49:23,280 --> 00:49:26,750 И начинът, по който аз спирам е, когато се удари в случая 1057 00:49:26,750 --> 00:49:28,750 на низ, нулев терминатор. 1058 00:49:28,750 --> 00:49:32,710 Знам, о, ако Ударих back-- ако видя наклонена черта 0, знам, че съм се направи с този 1059 00:49:32,710 --> 00:49:35,270 и знам, че мога просто спрете итерации сам. 1060 00:49:35,270 --> 00:49:36,200 Наистина добър въпрос. 1061 00:49:36,200 --> 00:49:40,210 >> И ние наистина ще отидете по-далеч в дълбочина в това следващата седмица 1062 00:49:40,210 --> 00:49:43,990 защото на парче, че ще ходи да включва много от използването на указатели. 1063 00:49:43,990 --> 00:49:48,459 Но просто знам, че точно сега, това е просто различен MORE- 1064 00:49:48,459 --> 00:49:51,250 това е просто друг начин за компютъра, за да пиша, по същество, 1065 00:49:51,250 --> 00:49:52,470 това, което ние сме били прави. 1066 00:49:52,470 --> 00:49:54,900 Подобно на Давид каза в лекция, начинът, по който ние 1067 00:49:54,900 --> 00:50:01,720 достъп до масив е само чрез правене масив 0, 0 скоба, ако ние просто 1068 00:50:01,720 --> 00:50:04,050 Исках да получите достъп до първата стойност. 1069 00:50:04,050 --> 00:50:10,280 >> All компютъра прави се превръща че в това и самата итерации. 1070 00:50:10,280 --> 00:50:13,580 Така че ние го наричаме синтактична захар, която е само 1071 00:50:13,580 --> 00:50:18,420 един луксозен начин на казвайки удобен за потребителя начини за нас знаят как да програмирате. 1072 00:50:18,420 --> 00:50:21,560 Но компютъра отдолу, това, което прави, 1073 00:50:21,560 --> 00:50:23,997 това е всъщност само като указател, който е за адаптиране. 1074 00:50:23,997 --> 00:50:26,330 Но начинът, по който ние го напиша, защото е по-лесно за нас 1075 00:50:26,330 --> 00:50:30,240 да мисля за нещата от гледна точка на кутии и как да се движат надолу кутии, 1076 00:50:30,240 --> 00:50:32,190 като е от скобите. 1077 00:50:32,190 --> 00:50:36,394 За съжаление, това беше наистина, Наистина лошо but-- да. 1078 00:50:36,394 --> 00:50:38,310 АУДИТОРИЯ: Е, как би сравните две струни 1079 00:50:38,310 --> 00:50:40,560 да се види дали те са равни помежду си? 1080 00:50:40,560 --> 00:50:42,690 >> АНДИ Пенг: И така, Давид писа тази програма в лекция 1081 00:50:42,690 --> 00:50:45,274 така че аз съм просто ще отида над бързо и кратко. 1082 00:50:45,274 --> 00:50:47,440 Начинът, по който би го направил е, че бихте направили в действителност 1083 00:50:47,440 --> 00:50:51,300 Трябва да отида и да се сравни addresses-- или стойностите 1084 00:50:51,300 --> 00:50:52,810 получен от стрелките. 1085 00:50:52,810 --> 00:50:55,140 Така че не забравяйте, как правиш получи стойността тук? 1086 00:50:55,140 --> 00:50:56,825 Не ми пука за адреса тук. 1087 00:50:56,825 --> 00:50:58,950 Как да се получи в действителност стойност на каквото и да е тук? 1088 00:50:58,950 --> 00:50:59,470 >> АУДИТОРИЯ: [недоловим]. 1089 00:50:59,470 --> 00:51:00,261 >> АНДИ Пенг: Точно така. 1090 00:51:00,261 --> 00:51:05,090 Така сравните звездата Тук срещу звездата тук. 1091 00:51:05,090 --> 00:51:06,150 Това ли са равни. 1092 00:51:06,150 --> 00:51:07,690 И тогава ще се понижат. 1093 00:51:07,690 --> 00:51:09,530 Дали звездата тук и звездата тук равни? 1094 00:51:09,530 --> 00:51:10,030 ДОБРЕ. 1095 00:51:10,030 --> 00:51:10,283 Те са равни. 1096 00:51:10,283 --> 00:51:12,866 И просто продължавай надолу докато не се удари в края на двете. 1097 00:51:12,866 --> 00:51:16,190 И ако всички те са равни, тогава Знаете ли, че си низ е равен. 1098 00:51:16,190 --> 00:51:18,130 И C всъщност има функция записани нарича 1099 00:51:18,130 --> 00:51:20,713 String Comp което всъщност просто прави това за вас, така че съм " 1100 00:51:20,713 --> 00:51:22,140 трябва да го напиша сам. 1101 00:51:22,140 --> 00:51:23,274 Да? 1102 00:51:23,274 --> 00:51:26,970 >> АУДИТОРИЯ: Мисля, че в лекция е, когато правим за сравнение. 1103 00:51:26,970 --> 00:51:29,520 Ние наистина не се нуждаят от брояч като пи, нали? 1104 00:51:29,520 --> 00:51:34,310 >> АНДИ Пенг: Вие не правите защото ние не ми пука 1105 00:51:34,310 --> 00:51:36,250 колко кутии сме повтори сам. 1106 00:51:36,250 --> 00:51:39,580 Всички ние се грижим е, че ние ще не спирай, докато аз знам, за да спре. 1107 00:51:39,580 --> 00:51:41,990 И знаеш ли, за да се спре, когато има някаква индикация 1108 00:51:41,990 --> 00:51:45,310 че сте в една нищожна терминатор. 1109 00:51:45,310 --> 00:51:45,930 Да. 1110 00:51:45,930 --> 00:51:47,154 Така-- 1111 00:51:47,154 --> 00:51:48,070 АУДИТОРИЯ: [недоловим]. 1112 00:51:48,070 --> 00:51:48,736 АНДИ Пенг: Да. 1113 00:51:48,736 --> 00:51:51,950 Така в случай на сравняване струни, аз наистина не 1114 00:51:51,950 --> 00:51:54,207 интересува колко много писма are-- I трябва да се сравни 1115 00:51:54,207 --> 00:51:56,540 ако те са истина или лъжа, ако те са равни помежду си. 1116 00:51:56,540 --> 00:51:58,914 Не ме интересува колко писма са във всяка от тях, нали? 1117 00:51:58,914 --> 00:52:01,130 Аз просто се грижи, че това съвпада с този и онзи, 1118 00:52:01,130 --> 00:52:05,311 след мача и този след преса по целия път до края. 1119 00:52:05,311 --> 00:52:05,810 Нали така? 1120 00:52:05,810 --> 00:52:07,000 Това прави ли смисъл? 1121 00:52:07,000 --> 00:52:10,166 >> Така че аз наистина не се интересува колко много писма, Току-що е грижа, че всички от буквите 1122 00:52:10,166 --> 00:52:11,050 мач. 1123 00:52:11,050 --> 00:52:12,910 Да. 1124 00:52:12,910 --> 00:52:13,920 ДОБРЕ. 1125 00:52:13,920 --> 00:52:16,840 Мога ли да се премине от това? 1126 00:52:16,840 --> 00:52:18,489 Страхотен. 1127 00:52:18,489 --> 00:52:21,280 Ние работите малко по къса време, така че аз ще ви позволи просто 1128 00:52:21,280 --> 00:52:23,670 момчета кратко, за да гледат на това. 1129 00:52:23,670 --> 00:52:26,430 Пусни го в ID си, ако момчета са любопитни. 1130 00:52:26,430 --> 00:52:30,030 И вие може да видите това, което това ще бъде отпечатване. 1131 00:52:30,030 --> 00:52:30,640 ДОБРЕ. 1132 00:52:30,640 --> 00:52:34,990 >> Така че нещо, което ние също така ще се докоснат по битов е идеята на показалеца аритметика. 1133 00:52:34,990 --> 00:52:38,180 Което, всичко това е, е вместо регулиране 1134 00:52:38,180 --> 00:52:42,610 стойностите на това, което се съхранява на адреса на показалеца, 1135 00:52:42,610 --> 00:52:45,030 това е просто всъщност променя адреса си. 1136 00:52:45,030 --> 00:52:49,420 Така че, ако вие като човекът искаше за да регулирате показалеца ръчно, 1137 00:52:49,420 --> 00:52:52,700 начина, по който би направил това е просто направя п пъти размера на показалеца. 1138 00:52:52,700 --> 00:52:53,240 Нали така? 1139 00:52:53,240 --> 00:52:54,810 >> Така че едно цяло число. 1140 00:52:54,810 --> 00:52:58,580 Един int-- колко байта в паметта е едно цяло число? 1141 00:52:58,580 --> 00:52:59,640 Това е четири, нали? 1142 00:52:59,640 --> 00:53:03,520 Така че, ако знам, че има един набор от всичко цели числа и искам тя да сочи към този, 1143 00:53:03,520 --> 00:53:08,470 след това, щях да знам, че просто трябва да се преместя показалеца надолу четири байта, нали? 1144 00:53:08,470 --> 00:53:12,440 И така п пъти размера на показалеца байта 1145 00:53:12,440 --> 00:53:15,890 обаче е много байта ти си просто ще се премести показалеца по. 1146 00:53:15,890 --> 00:53:20,350 >> Така например, ако имаме масив от цели числа, първата, нека просто кажем, 1147 00:53:20,350 --> 00:53:22,280 се съхранява като 0x00. 1148 00:53:22,280 --> 00:53:26,150 Знаеш следващата ще бъде най- 0x04, защото това е четири байта по-късно. 1149 00:53:26,150 --> 00:53:31,030 И този, след това ще бъде 0x08 и така нататък и така нататък. 1150 00:53:31,030 --> 00:53:33,830 И така, момчета, да разгледаме. 1151 00:53:33,830 --> 00:53:36,640 >> Всичко, което правите тук е че имате показалеца у 1152 00:53:36,640 --> 00:53:43,700 и вие сте като добави, че за да си памет, така че можете да се движите надолу 1153 00:53:43,700 --> 00:53:45,559 блоковете на паметта разпределени. 1154 00:53:45,559 --> 00:53:46,850 Вид на по-високо ниво концепция. 1155 00:53:46,850 --> 00:53:48,820 Вие, момчета, няма да има нужда да се знае за тази седмица, 1156 00:53:48,820 --> 00:53:51,290 но това е всичко, което прави там. 1157 00:53:51,290 --> 00:53:55,190 1158 00:53:55,190 --> 00:53:55,900 ДОБРЕ. 1159 00:53:55,900 --> 00:53:56,710 >> Друг път шега. 1160 00:53:56,710 --> 00:54:01,360 1161 00:54:01,360 --> 00:54:02,780 Две струни влизат в един бар. 1162 00:54:02,780 --> 00:54:05,713 Един казва, бих искал един ром и ценности коксови боклук. 1163 00:54:05,713 --> 00:54:08,796 Другият казва, че ще трябва да извините приятелят ми, той не е нулев прекратена. 1164 00:54:08,796 --> 00:54:10,390 Вие, момчета, да го получи. 1165 00:54:10,390 --> 00:54:10,890 Извинете. 1166 00:54:10,890 --> 00:54:13,490 Това е как аз се запази Ще когато аз се подготвям за вписванията 1167 00:54:13,490 --> 00:54:15,650 е да вмъкна няколко шега пързалки. 1168 00:54:15,650 --> 00:54:16,150 Както и да е. 1169 00:54:16,150 --> 00:54:21,460 1170 00:54:21,460 --> 00:54:21,960 ДОБРЕ. 1171 00:54:21,960 --> 00:54:24,290 Преди да се премести on-- така, по същество, ние сме 1172 00:54:24,290 --> 00:54:30,600 обхванат всички концептуалното въпроси, свързани с указатели. 1173 00:54:30,600 --> 00:54:34,090 И тогава ние ще talk-- движещ повече, говори за това, защо е важно, че 1174 00:54:34,090 --> 00:54:37,810 и как това се вписва в идея за управление на паметта. 1175 00:54:37,810 --> 00:54:39,810 Но преди да продължиш напред, Някой има ли въпроси 1176 00:54:39,810 --> 00:54:43,880 за използване на показалеца, какво се случва за когато създавате указатели, 1177 00:54:43,880 --> 00:54:47,540 как се Цитираната всеки друго, как се dereferencing? 1178 00:54:47,540 --> 00:54:51,760 Всякакви въпроси за че преди да се премине? 1179 00:54:51,760 --> 00:54:53,060 ДОБРЕ. 1180 00:54:53,060 --> 00:54:54,770 Страхотен. 1181 00:54:54,770 --> 00:54:58,170 >> Така че това ни води в този Голяма висше ниво концепция 1182 00:54:58,170 --> 00:55:00,310 на управление на паметта като цяло. 1183 00:55:00,310 --> 00:55:02,720 Така че, по същество, в вашия компютър, има 1184 00:55:02,720 --> 00:55:06,300 два основни типа памет или региони в която памет се съхраняват. 1185 00:55:06,300 --> 00:55:10,210 Вие имате тук, което се нарича купчината и имате тук 1186 00:55:10,210 --> 00:55:11,550 което се нарича стека. 1187 00:55:11,550 --> 00:55:13,966 И ние ще говорим за стека първо, защото това е 1188 00:55:13,966 --> 00:55:16,910 толкова по-finagley този, който ви Трябва да вид концептуално 1189 00:55:16,910 --> 00:55:18,570 разбере какво става. 1190 00:55:18,570 --> 00:55:23,930 >> Така че всичко, стека is-- мисля за то като физическа купчина памет 1191 00:55:23,930 --> 00:55:28,880 където имате един блок от паметта която е заделена за вашата програма 1192 00:55:28,880 --> 00:55:30,180 докато той се движи. 1193 00:55:30,180 --> 00:55:34,480 И това е мястото, където по същество всички от вашите локални променливи се съхраняват. 1194 00:55:34,480 --> 00:55:38,300 Така че това е просто един увеличени в картината на тази купчина. 1195 00:55:38,300 --> 00:55:41,060 Купчината там долу, аз съм Просто приближите малко повече. 1196 00:55:41,060 --> 00:55:46,170 >> Така че, по същество, в една купчина имате куп функция във вашата програма. 1197 00:55:46,170 --> 00:55:48,250 Така че нека просто да се върна до седмица два примера 1198 00:55:48,250 --> 00:55:51,450 където трябваше нашата основна функция както куб функция 1199 00:55:51,450 --> 00:55:56,410 когато ние се опитахме да създадем функция, която cubed-- че взе параметри като вход, 1200 00:55:56,410 --> 00:55:59,110 ги кубчета и се връща ги върнем към основното. 1201 00:55:59,110 --> 00:56:02,459 Така че начинът, по който това е запазен в паметта е, че имате основната си функция 1202 00:56:02,459 --> 00:56:03,250 тук, най-долу. 1203 00:56:03,250 --> 00:56:06,630 И след това с всяка допълнителна функция че ти се обадя и да добавяте в началото на това, 1204 00:56:06,630 --> 00:56:07,960 спомена само купища отгоре. 1205 00:56:07,960 --> 00:56:10,190 Мислете за него като физическо стак. 1206 00:56:10,190 --> 00:56:13,570 >> И така, имате всички вас главната променливи характеристики на основните си функции, 1207 00:56:13,570 --> 00:56:15,260 всичко, което става тук, съхранявани. 1208 00:56:15,260 --> 00:56:17,440 И тогава, когато ти се обади куб, тя отива и го 1209 00:56:17,440 --> 00:56:20,810 създава копия на всички онези, параметри и тя ги съхранява 1210 00:56:20,810 --> 00:56:23,010 горе на различно място. 1211 00:56:23,010 --> 00:56:24,280 И така, защо ни е грижа? 1212 00:56:24,280 --> 00:56:29,220 Причината е, че ние се грижим ние не можем просто използват параметрите here-- променливите 1213 00:56:29,220 --> 00:56:33,080 here-- и ние ги промените, ние очакваме тях също да бъде променено тук, нали? 1214 00:56:33,080 --> 00:56:35,910 >> Идеята е, че те са спасени на различни места в паметта 1215 00:56:35,910 --> 00:56:40,540 така че, когато сте достъп до различни функции, какво мислите се случва 1216 00:56:40,540 --> 00:56:45,520 Не всъщност се случва защото благодарение на параметъра памет бита не са свързани помежду си. 1217 00:56:45,520 --> 00:56:50,530 И така въпросът, че е наистина важно за нас да разберем вид 1218 00:56:50,530 --> 00:56:54,100 е, какво ще стане ако, когато работите програма, размерът на функция 1219 00:56:54,100 --> 00:56:57,159 стека frame-- толкова физически, как много памет трябва ли да го дам? 1220 00:56:57,159 --> 00:56:59,950 Може би това е една гигантска функция, така че ние Трябва да му се даде, че много памет. 1221 00:56:59,950 --> 00:57:02,230 Но ако беше по-малък, ние ще нужда от мъничко. 1222 00:57:02,230 --> 00:57:05,980 >> Така че идеята е, че когато работите програма размера на тази функция 1223 00:57:05,980 --> 00:57:09,100 зависи от това колко променливи и вида на променливи 1224 00:57:09,100 --> 00:57:10,940 че искаме да го дам. 1225 00:57:10,940 --> 00:57:13,910 Но какво, ако броят на variables-- и техните размери, 1226 00:57:13,910 --> 00:57:16,140 Това не е определена от вас енкодер, но 1227 00:57:16,140 --> 00:57:20,580 се определя от действителната потребител на програмата ви. 1228 00:57:20,580 --> 00:57:24,240 Така че, ако аз исках да се създаде функция които взеха струни от страна на потребителя, 1229 00:57:24,240 --> 00:57:27,630 но аз всъщност не знам колко голям тези струни са, че е трудно за мен 1230 00:57:27,630 --> 00:57:30,220 да разпредели спецификата количество памет необходимо. 1231 00:57:30,220 --> 00:57:30,920 Нали така? 1232 00:57:30,920 --> 00:57:35,234 >> Защото, ако това, ако function-- този потребител входове гигантски низ, 1233 00:57:35,234 --> 00:57:37,650 това ще създаде грешка от това, което се нарича същество 1234 00:57:37,650 --> 00:57:42,190 стека преливане, където можете да престъпя границите на паметта, която имате. 1235 00:57:42,190 --> 00:57:44,250 И така, какво ще правим? 1236 00:57:44,250 --> 00:57:47,290 Ако не можем просто да се създаде тази гигантска стека, че може да спаси всичко, 1237 00:57:47,290 --> 00:57:50,260 какво да правим, за да се реши този проблем? 1238 00:57:50,260 --> 00:57:54,364 >> Така че ние ще продължим и да поговорим за този втори тип памет 1239 00:57:54,364 --> 00:57:56,780 и тогава можем да говорим за това как можем да използваме двете заедно 1240 00:57:56,780 --> 00:57:58,550 за решаване на този въпрос. 1241 00:57:58,550 --> 00:58:01,024 Така че сега ние ще се движат нагоре към различна част от паметта 1242 00:58:01,024 --> 00:58:01,690 в нашия компютър. 1243 00:58:01,690 --> 00:58:03,215 Това се нарича купчината. 1244 00:58:03,215 --> 00:58:07,150 Така че всичко на куп се е басейн от наличната памет, която 1245 00:58:07,150 --> 00:58:08,690 могат да бъдат разпределени динамично. 1246 00:58:08,690 --> 00:58:12,420 Така че може да се промени, докато вашата програма се изпълнява. 1247 00:58:12,420 --> 00:58:15,160 >> И така една област неизползвана памет, която може 1248 00:58:15,160 --> 00:58:18,200 бъде allowed-- че може да бъде разпределена с функцията 1249 00:58:18,200 --> 00:58:20,490 нарича изчистване, или заделяне на памет. 1250 00:58:20,490 --> 00:58:23,110 Така че, по същество, когато можете да започнете работа с програми, 1251 00:58:23,110 --> 00:58:29,560 можете да създадете динамично памет от купчината и да използвате, че всички тук. 1252 00:58:29,560 --> 00:58:34,280 И така, след това, всички ваши функции Тук можете да влезете в купчината. 1253 00:58:34,280 --> 00:58:37,960 >> И така, изчистване, тази идея, че David вид бързо, за кратко Споменахме 1254 00:58:37,960 --> 00:58:41,570 в лекция, е просто начин за можете да контролирате вашата памет. 1255 00:58:41,570 --> 00:58:45,470 Подобно, когато сте просто създаване стека функции, когато сте просто 1256 00:58:45,470 --> 00:58:48,290 като основната си функция с вашите произволни функции, 1257 00:58:48,290 --> 00:58:52,270 мислиш за тях като деца, които просто избяга, когато сте били прави с тях. 1258 00:58:52,270 --> 00:58:53,690 Те бяха наистина лоши деца. 1259 00:58:53,690 --> 00:58:55,515 Можете да ги създавате да ги научи на нещо, 1260 00:58:55,515 --> 00:58:57,640 и след това, когато искате да достъп до тях отново те са 1261 00:58:57,640 --> 00:58:59,850 не там, защото си памет просто избяга. 1262 00:58:59,850 --> 00:59:04,140 >> Но изчистване, или на куп, е начин да има по-добри деца, където 1263 00:59:04,140 --> 00:59:07,090 можете да създадете вид тях, да ги зададете стойности, 1264 00:59:07,090 --> 00:59:11,080 използвате them-- който звучеше наистина bad-- ги използват обаче, което исках, 1265 00:59:11,080 --> 00:59:14,002 но след това да бъде в състояние да контролира ги и след това освободи памет 1266 00:59:14,002 --> 00:59:14,960 винаги, когато имате нужда от тях. 1267 00:59:14,960 --> 00:59:18,085 Така че тогава, когато сте готови с вашия функция, децата се връщат при вас 1268 00:59:18,085 --> 00:59:20,290 и все още имате данни, че там. 1269 00:59:20,290 --> 00:59:25,690 >> Така че начинът, по който ние изчистване, както и да си, памет е с функция за невалидни звезда 1270 00:59:25,690 --> 00:59:26,790 Размер на изчистване в байтове. 1271 00:59:26,790 --> 00:59:29,730 Така че това е само прототип защо правим това. 1272 00:59:29,730 --> 00:59:35,800 Така пример е ние създаваме указател на латиница int-- равни инт звездни pointer-- 1273 00:59:35,800 --> 00:59:38,120 Размер на изчистване на инт. 1274 00:59:38,120 --> 00:59:41,734 Така че причината, поради която ние правим размер на, а не просто number-- 1275 00:59:41,734 --> 00:59:43,650 защото ние всички знаем, че пад е четири байта, 1276 00:59:43,650 --> 00:59:48,310 right-- но пад е само четири байтове за някои операционни системи. 1277 00:59:48,310 --> 00:59:50,410 >> Идеята за нас като програмисти е, че 1278 00:59:50,410 --> 00:59:53,160 искате да създадете код, който може да работи на всички компютри, а не само 1279 00:59:53,160 --> 00:59:54,860 нашите прости компютри. 1280 00:59:54,860 --> 00:59:58,350 И така, ето защо сме искали да използваме размер на, а не само на броя четири. 1281 00:59:58,350 --> 00:59:59,970 Това прави ли смисъл да се всички? 1282 00:59:59,970 --> 01:00:03,930 Така размер of-- всичко това е C функция или оператор, който 1283 01:00:03,930 --> 01:00:09,350 ви казва колко байта памет прави определен тип променлива заемат. 1284 01:00:09,350 --> 01:00:11,150 Така че в този случай, размерът на едно цяло число е четири. 1285 01:00:11,150 --> 01:00:12,090 Четири байта. 1286 01:00:12,090 --> 01:00:15,490 И изчистване ще освободи до четири байта от вашата грамада 1287 01:00:15,490 --> 01:00:18,790 След това можете да използвате във вашата основна функция, за да бъде в състояние да съхранява паметта. 1288 01:00:18,790 --> 01:00:22,460 1289 01:00:22,460 --> 01:00:24,860 Всички ли ясно, че до този момент? 1290 01:00:24,860 --> 01:00:25,918 Да? 1291 01:00:25,918 --> 01:00:28,122 >> АУДИТОРИЯ: Аз съм наясно, но само за да бъде над clear-- 1292 01:00:28,122 --> 01:00:28,705 АНДИ Пенг: OK. 1293 01:00:28,705 --> 01:00:29,246 Totally глоба. 1294 01:00:29,246 --> 01:00:32,176 АУДИТОРИЯ: --size на е [недоловим] всъщност може да [недоловим] 1295 01:00:32,176 --> 01:00:34,384 и то действително ще свърши нещо, което искаме да. 1296 01:00:34,384 --> 01:00:35,380 Това не е някаква Псевдокод. 1297 01:00:35,380 --> 01:00:35,878 >> АНДИ Пенг: No. 1298 01:00:35,878 --> 01:00:36,874 >> АУДИТОРИЯ: Това е като един истински thing-- 1299 01:00:36,874 --> 01:00:37,372 >> АНДИ Пенг: Това е реална код. 1300 01:00:37,372 --> 01:00:38,455 >> АУДИТОРИЯ: --we да го използвате. 1301 01:00:38,455 --> 01:00:39,862 Това е действително. 1302 01:00:39,862 --> 01:00:40,418 Готино. 1303 01:00:40,418 --> 01:00:41,751 АНДИ Пенг: Размер на идва с C. 1304 01:00:41,751 --> 01:00:43,475 АУДИТОРИЯ: Това прави живота ми по-щастлив. 1305 01:00:43,475 --> 01:00:45,550 АНДИ Пенг: Да. 1306 01:00:45,550 --> 01:00:48,610 Така че, ако сте мързеливи програмист както аз съм вид понякога, 1307 01:00:48,610 --> 01:00:50,402 Аз не обичам запаметяването какъв размер на инт 1308 01:00:50,402 --> 01:00:52,734 е, аз не обичам запаметяването с размера на плувка е. 1309 01:00:52,734 --> 01:00:55,160 Размер на току-що ви казва какво това е и това е много по-лесно. 1310 01:00:55,160 --> 01:00:59,880 1311 01:00:59,880 --> 01:01:00,440 >> Всичко е наред. 1312 01:01:00,440 --> 01:01:02,160 Така че важно нещо че вие, момчета, всички искаме 1313 01:01:02,160 --> 01:01:04,620 трябва да имате предвид, когато сте използване на изчистване е, че винаги 1314 01:01:04,620 --> 01:01:06,400 трябва да се провери, за да видите дали това е нищожна. 1315 01:01:06,400 --> 01:01:08,630 Така че, както вече казах, обратно че картината на куп. 1316 01:01:08,630 --> 01:01:11,390 Купчината е само тази гигантска купчина от паметта, която имаш. 1317 01:01:11,390 --> 01:01:16,740 И искате да сте в състояние да вземе парченца памет от него и да го използват, нали? 1318 01:01:16,740 --> 01:01:19,750 >> Но какво, ако вие нямате повече памет в тази купчина? 1319 01:01:19,750 --> 01:01:23,650 Какво, ако вече съм използва всички от него и се опитвам да изчистване повече? 1320 01:01:23,650 --> 01:01:24,864 Това не съществува. 1321 01:01:24,864 --> 01:01:26,780 Е, това е защо сте Ще получите съобщение за грешка. 1322 01:01:26,780 --> 01:01:29,220 Ще SEG вина. Ти ще да имат вина сегментация, където можете 1323 01:01:29,220 --> 01:01:30,940 пробвате достъп до неща, които не са там. 1324 01:01:30,940 --> 01:01:33,180 И така начина, по който правим и че начинът, по който ние 1325 01:01:33,180 --> 01:01:36,120 предотврати това, е, че ние проверяваме да видим дали нулевата показалеца си. 1326 01:01:36,120 --> 01:01:41,650 >> Така че, ако аз трябваше да изчистване нещо а аз нямах повече памет, 1327 01:01:41,650 --> 01:01:45,501 че ще отпечата грешка, защото показалка върна да ви е само нищожна. 1328 01:01:45,501 --> 01:01:47,750 И така начина, по който правим this-- това е просто страхотен дизайн, 1329 01:01:47,750 --> 01:01:52,140 Просто запомня this-- е, че всяко път, когато се опита да изчистване нищо, 1330 01:01:52,140 --> 01:01:55,300 започваш да се наложи да проверете дали това е нищожна. 1331 01:01:55,300 --> 01:01:58,257 Защото всеки път, когато се опитате да получаване на паметта от купчината, 1332 01:01:58,257 --> 01:02:00,340 винаги трябва да се направи уверите, че имате памет. 1333 01:02:00,340 --> 01:02:01,350 Това е всичко, това е. 1334 01:02:01,350 --> 01:02:04,980 >> Така че доста много тези три реда код, наизуст. 1335 01:02:04,980 --> 01:02:06,830 Всеки път, когато изчистване, ги плясване инча 1336 01:02:06,830 --> 01:02:08,190 Вие ще се нуждаят от тях. 1337 01:02:08,190 --> 01:02:10,540 Защото аз ви гарантирам, отиваме за да ви изпита за всеки отделен случай и вашия компютър 1338 01:02:10,540 --> 01:02:13,498 ще се взривят, защото сте Ще се опитам да се достъп до паметта, която е 1339 01:02:13,498 --> 01:02:16,680 Не съществува и нещата ще се катастрофа и това няма да бъде добър. 1340 01:02:16,680 --> 01:02:19,290 Така че просто тренировка, че в мозъка ви. 1341 01:02:19,290 --> 01:02:21,370 Изчистване, за нищожна. 1342 01:02:21,370 --> 01:02:22,360 Good. 1343 01:02:22,360 --> 01:02:22,860 Всичко е наред. 1344 01:02:22,860 --> 01:02:26,280 1345 01:02:26,280 --> 01:02:28,340 >> След това ражда на въпрос на това, което се случва 1346 01:02:28,340 --> 01:02:30,550 след като приключите с използването на този спомен. 1347 01:02:30,550 --> 01:02:32,390 Защото цялата идея се налага изчистване беше 1348 01:02:32,390 --> 01:02:36,460 че имаме тази грамада, че можем да вземем спомен от и след това можем да го използваме. 1349 01:02:36,460 --> 01:02:37,220 Нали така? 1350 01:02:37,220 --> 01:02:40,550 И след това, което ние трябва да помним, е, че след като свършим с него, 1351 01:02:40,550 --> 01:02:41,900 ние след това да го освободи. 1352 01:02:41,900 --> 01:02:42,400 Остави. 1353 01:02:42,400 --> 01:02:43,979 Можем да го пусна. 1354 01:02:43,979 --> 01:02:47,020 Или пък можете да започнете също ще протекат памет и повече лоши неща ще се случат. 1355 01:02:47,020 --> 01:02:49,010 >> По същество, когато можете да започнете да докосвате с памет, 1356 01:02:49,010 --> 01:02:51,800 лоши неща ще се случат, ако не правя нещата правилно. 1357 01:02:51,800 --> 01:02:55,150 Така че трябва да се провери, за да видите, на първо място, ако имате на разположение паметта. 1358 01:02:55,150 --> 01:02:58,700 И тогава, след като сте готови, който искате да го освободи и да позволи на вашата операционна система 1359 01:02:58,700 --> 01:03:00,690 да го вземе обратно. 1360 01:03:00,690 --> 01:03:04,870 Така че начина, по който го правим, че е само, че функция, без шупли и показалеца 1361 01:03:04,870 --> 01:03:06,370 за тази купчина от паметта. 1362 01:03:06,370 --> 01:03:08,680 >> Така че примерът е безплатно показалка. 1363 01:03:08,680 --> 01:03:11,580 Това е доста лесно, просто, не искам да го забравя. 1364 01:03:11,580 --> 01:03:14,687 Така че проверете дали това е нищожна, безплатно. 1365 01:03:14,687 --> 01:03:15,270 Всеки добър? 1366 01:03:15,270 --> 01:03:22,660 1367 01:03:22,660 --> 01:03:27,325 Така че още веднъж, код, който вие, момчета, може вид бързо да погледна. 1368 01:03:27,325 --> 01:03:34,964 1369 01:03:34,964 --> 01:03:37,880 Знам, че е много нова и синтаксис всичко е наред, ако сте като, ах, 1370 01:03:37,880 --> 01:03:38,963 какво означава това отново? 1371 01:03:38,963 --> 01:03:40,250 Няма проблем. 1372 01:03:40,250 --> 01:03:46,785 Всичко това е трябвало да бъде е показване иск, как всички тези неща 1373 01:03:46,785 --> 01:03:47,660 може да се използва заедно. 1374 01:03:47,660 --> 01:03:52,190 1375 01:03:52,190 --> 01:03:54,190 Така, че се поставя заедно като група от миналото 1376 01:03:54,190 --> 01:03:56,532 пързалки ние просто отидох през в една програма. 1377 01:03:56,532 --> 01:03:58,240 АУДИТОРИЯ: По някакъв начин че можем да actually-- 1378 01:03:58,240 --> 01:03:59,570 АНДИ Пенг: По някакъв начин, че Всъщност можем да използваме. 1379 01:03:59,570 --> 01:04:02,379 Можете да плясване, че във вашето ID, можете да го стартирате и че ще работи. 1380 01:04:02,379 --> 01:04:02,920 АУДИТОРИЯ: OK. 1381 01:04:02,920 --> 01:04:04,140 Така че това е реално? 1382 01:04:04,140 --> 01:04:05,580 >> АНДИ Пенг: Това е реална. 1383 01:04:05,580 --> 01:04:06,430 Да. 1384 01:04:06,430 --> 01:04:08,690 Опитвам се да го направи, така че шрифтове са различни, така че 1385 01:04:08,690 --> 01:04:11,770 че всеки път, когато пиша в реално Код шрифтът е код на шрифта 1386 01:04:11,770 --> 01:04:15,471 и че бележката ми код е различен, но Аз не знам дали това наистина работи. 1387 01:04:15,471 --> 01:04:16,012 АУДИТОРИЯ: No. 1388 01:04:16,012 --> 01:04:17,190 Мисля, че-- 1389 01:04:17,190 --> 01:04:18,213 >> АНДИ Пенг: OK. 1390 01:04:18,213 --> 01:04:20,578 >> АУДИТОРИЯ: --sometimes [Недоловим] и аз съм 1391 01:04:20,578 --> 01:04:23,416 харесват, това ще бъде наистина готин ако действително това е нещо, което може да се използва 1392 01:04:23,416 --> 01:04:24,812 но след това не е нещо, което може да се използва. 1393 01:04:24,812 --> 01:04:26,270 Харесва ми, че това е нещо, което може да се използва. 1394 01:04:26,270 --> 01:04:27,010 >> АНДИ Пенг: OK. 1395 01:04:27,010 --> 01:04:27,510 Да. 1396 01:04:27,510 --> 01:04:28,430 Ще предам, че заедно. 1397 01:04:28,430 --> 01:04:33,266 Бъдете като Давид, децата са наистина тъжно, когато пишете фалшив код. 1398 01:04:33,266 --> 01:04:34,240 Всичко е наред. 1399 01:04:34,240 --> 01:04:34,740 Да? 1400 01:04:34,740 --> 01:04:37,686 >> АУДИТОРИЯ: Така PTR тук всъщност не е указател, 1401 01:04:37,686 --> 01:04:41,130 това е един блок от паметта? 1402 01:04:41,130 --> 01:04:45,130 >> АНДИ Пенг: Така говориш на първа линия, или този тук? 1403 01:04:45,130 --> 01:04:48,170 Възможно ли е да говорим за това тук? 1404 01:04:48,170 --> 01:04:50,910 >> АУДИТОРИЯ: The PTR е различни неща in-- 1405 01:04:50,910 --> 01:04:53,230 >> АНДИ Пенг: Добре, така че тук това, което аз съм doing-- всъщност, 1406 01:04:53,230 --> 01:04:54,660 нека просто проверете тук. 1407 01:04:54,660 --> 01:04:57,120 Този вид връзки в добре всички понятия. 1408 01:04:57,120 --> 01:05:01,840 Така че тук имаме инт звезда КОП. 1409 01:05:01,840 --> 01:05:04,160 Така INT показалеца, това е, когато ние всъщност създавайки 1410 01:05:04,160 --> 01:05:06,550 указател, който сочи към цяло число. 1411 01:05:06,550 --> 01:05:08,230 Е, то се случва да сочи към цяло число. 1412 01:05:08,230 --> 01:05:12,135 И ние ще изчистване, или го дам, достатъчно памет определеното 1413 01:05:12,135 --> 01:05:13,200 за съхранение на цяло число. 1414 01:05:13,200 --> 01:05:14,910 Така четири байта в този случай. 1415 01:05:14,910 --> 01:05:18,024 >> И тогава, ако това се равнява на null-- равни равнява null-- отиваме да отпечатате. 1416 01:05:18,024 --> 01:05:20,440 О, имате грешка, защото вие сте на паметта, нали? 1417 01:05:20,440 --> 01:05:22,814 В противен случай на връщане на този, че просто казва на вашата програма 1418 01:05:22,814 --> 01:05:24,170 че имаш грешка. 1419 01:05:24,170 --> 01:05:26,850 И тогава, ако го направите имат тази памет, това е 1420 01:05:26,850 --> 01:05:33,230 ще съхранявате каквото получите инт дава под местоположението 1421 01:05:33,230 --> 01:05:35,460 и да го настроите като стойността на показалеца. 1422 01:05:35,460 --> 01:05:38,500 Така че това е всъщност ще физически изтрие тази стойност 1423 01:05:38,500 --> 01:05:41,702 и сложи каквото и да получите INT възвръщаемост. 1424 01:05:41,702 --> 01:05:43,910 И тогава започваш да печатате каквото те влязоха. 1425 01:05:43,910 --> 01:05:46,080 >> АУДИТОРИЯ: И това е ще бъде в купчината? 1426 01:05:46,080 --> 01:05:47,060 >> АНДИ Пенг: Това се случва да бъде в купчината. 1427 01:05:47,060 --> 01:05:48,768 >> АУДИТОРИЯ: И така, че ще бъде достъпен. 1428 01:05:48,768 --> 01:05:51,220 АНДИ Пенг: Точно така. 1429 01:05:51,220 --> 01:05:52,600 Ница. 1430 01:05:52,600 --> 01:05:53,756 Good. 1431 01:05:53,756 --> 01:05:59,289 >> АУДИТОРИЯ: Така че, когато се освободи КОП в този крайния етап, ние сме освобождаване на показалеца 1432 01:05:59,289 --> 01:06:00,724 или ние сме освобождаване на блока? 1433 01:06:00,724 --> 01:06:01,390 АНДИ Пенг: Да. 1434 01:06:01,390 --> 01:06:05,570 Така че ние сме освобождавайки pointer-- добре, освобождавайки блока на паметта. 1435 01:06:05,570 --> 01:06:08,780 Така че единственият начин да противодейства на достъпа паметта е от наличието на показалеца. 1436 01:06:08,780 --> 01:06:10,730 Ако не разполагате с показалеца, вие сте като, о, аз не знам къде е, 1437 01:06:10,730 --> 01:06:11,290 нали? 1438 01:06:11,290 --> 01:06:13,956 Така че, ако го освободи, вие сте по същество освобождавайки че целият блок. 1439 01:06:13,956 --> 01:06:16,500 След това компютърът ви знае, о, няма нищо използваемо тук, 1440 01:06:16,500 --> 01:06:19,396 Мога само да сложи боклука стойности обратно в нея отново. 1441 01:06:19,396 --> 01:06:21,590 >> АУДИТОРИЯ: Така числа не съществуват за това? 1442 01:06:21,590 --> 01:06:23,481 >> АНДИ Пенг: съществуват ли числа? 1443 01:06:23,481 --> 01:06:23,980 Извинете. 1444 01:06:23,980 --> 01:06:25,271 Можете ли да перифразирам въпроса? 1445 01:06:25,271 --> 01:06:28,330 АУДИТОРИЯ: Исках да кажа, след като се освободи показалка, цялото число, което можете да получите, 1446 01:06:28,330 --> 01:06:29,990 ще, че все още съществува? 1447 01:06:29,990 --> 01:06:31,360 >> АНДИ Пенг: Не, това няма да стане. 1448 01:06:31,360 --> 01:06:34,070 1449 01:06:34,070 --> 01:06:37,550 Или най-малкото, че ще съществува във вашето памет, преди компютърът да прави 1450 01:06:37,550 --> 01:06:40,231 независимо с него, но има Няма начин за вас да получите това. 1451 01:06:40,231 --> 01:06:41,480 Защото ти остави показалеца. 1452 01:06:41,480 --> 01:06:43,150 Вие не знаете къде се намира вече. 1453 01:06:43,150 --> 01:06:43,650 Да. 1454 01:06:43,650 --> 01:06:46,500 1455 01:06:46,500 --> 01:06:48,560 >> Отивам да се премести тук. 1456 01:06:48,560 --> 01:06:49,060 Пфу. 1457 01:06:49,060 --> 01:06:53,012 Така че ние сме през много концептуалното трудности на управление на паметта 1458 01:06:53,012 --> 01:06:54,720 и ние просто ще да прекарват по същество 1459 01:06:54,720 --> 01:06:57,090 5, 10 минути ще над синтактични неща, които 1460 01:06:57,090 --> 01:07:03,240 ще бъде използваема и полезна за вас, момчета, но нищо прекалено концептуално там. 1461 01:07:03,240 --> 01:07:03,740 ДОБРЕ. 1462 01:07:03,740 --> 01:07:06,930 >> Така че ние сме напълно смяна на предавките тук. 1463 01:07:06,930 --> 01:07:09,360 Управление на паметта, трудно. Показалки, трудно. Да. 1464 01:07:09,360 --> 01:07:10,530 Това наистина е много, много трудно. 1465 01:07:10,530 --> 01:07:11,270 Totally глоба. 1466 01:07:11,270 --> 01:07:13,800 Ето защо си парче е ще бъде наистина трудно. 1467 01:07:13,800 --> 01:07:17,740 Но ако отида и ще сторя нещата, които ние сме 1468 01:07:17,740 --> 01:07:19,860 трябвало да се направи, да направи че нещата са нулеви, 1469 01:07:19,860 --> 01:07:21,830 не забравяйте да проверите дали нещата са нищожна, се уверете, че да се освободи памет, 1470 01:07:21,830 --> 01:07:23,910 уверете се, че нещата не са изтичане, ще бъде добър. 1471 01:07:23,910 --> 01:07:25,761 Ще бъде настроен. 1472 01:07:25,761 --> 01:07:26,260 Всичко е наред. 1473 01:07:26,260 --> 01:07:30,870 Така че ние ще се премести в тази напълно нова концепция за пренасочване. 1474 01:07:30,870 --> 01:07:33,201 И така, преди и сега, Основният начин, че ние сме 1475 01:07:33,201 --> 01:07:35,700 е взаимодействие с нашата програми е чрез стандартния вход 1476 01:07:35,700 --> 01:07:36,533 и стандартния изход. 1477 01:07:36,533 --> 01:07:37,040 Нали така? 1478 01:07:37,040 --> 01:07:39,230 Ние като вход за употреба неща и компютъра 1479 01:07:39,230 --> 01:07:42,090 тя плюе обратно към нас в терминала. 1480 01:07:42,090 --> 01:07:44,770 >> Но има и други начини за нас, за да си взаимодействат 1481 01:07:44,770 --> 01:07:47,810 с компютъра с нашата програми, които не са просто ме 1482 01:07:47,810 --> 01:07:50,245 физически машинописни неща в когато съм подкана. 1483 01:07:50,245 --> 01:07:52,620 И начина, по който направи това е чрез по-голямо от моркова 1484 01:07:52,620 --> 01:07:53,453 и символът на тръбата. 1485 01:07:53,453 --> 01:07:55,970 1486 01:07:55,970 --> 01:07:58,630 Така че ние можем да четат и пишете на файлове с помощта на това. 1487 01:07:58,630 --> 01:08:03,230 >> Така че начинът, по който правим това е най- по-голяма от моркови, всичко, което се прави 1488 01:08:03,230 --> 01:08:07,410 пише каквото си файл има в отделен файл. 1489 01:08:07,410 --> 01:08:11,870 Така например, ако аз Исках да тече здравей свят 1490 01:08:11,870 --> 01:08:14,330 и аз исках изхода към се записва в друг файл 1491 01:08:14,330 --> 01:08:17,359 а не само на хартиен към мен, аз може просто да се направи по-голяма от морков, 1492 01:08:17,359 --> 01:08:18,410 output.txt. 1493 01:08:18,410 --> 01:08:22,609 Така че всичко, което прави, е като ми hello.world програма, 1494 01:08:22,609 --> 01:08:26,359 и независимо от изхода е, че е спестяване във файл, наречен output.txt. 1495 01:08:26,359 --> 01:08:29,850 Така че начинът, по който Давид стори на .csv с имената на учениците, 1496 01:08:29,850 --> 01:08:32,310 това е същото, че вие, момчета, могат да направят. 1497 01:08:32,310 --> 01:08:35,137 >> И това, което е особено полезно тук са толкова по-големи 1498 01:08:35,137 --> 01:08:38,220 than-- двамата по-голяма от моркови знаци, които можете да приложи към изход 1499 01:08:38,220 --> 01:08:40,795 файл, което означава, че може просто да добавите в началото на това. 1500 01:08:40,795 --> 01:08:43,420 Можете просто да поддържа добавянето на output.txt на всяко допълнително нещо 1501 01:08:43,420 --> 01:08:44,490 че сте прави. 1502 01:08:44,490 --> 01:08:48,010 Или, ако започнете да попадне в по- сложни програми, двете по-голяма 1503 01:08:48,010 --> 01:08:50,939 от моркови, че само разпечатки от съобщения за грешки. 1504 01:08:50,939 --> 01:08:53,340 Така че имате гигантски размер на съобщения за грешки 1505 01:08:53,340 --> 01:08:54,810 и искате да прочетете чрез всички от тях и да ви 1506 01:08:54,810 --> 01:08:56,450 не искам да имам, за да превъртите чрез вашия терминал, 1507 01:08:56,450 --> 01:08:58,651 всъщност можете да направите, просто по-голяма от output.txt 1508 01:08:58,651 --> 01:09:00,359 и това ще спести всичките си грешки 1509 01:09:00,359 --> 01:09:02,900 във файл, наречен output.txt че можете да отидете и сте прочели. 1510 01:09:02,900 --> 01:09:04,622 АУДИТОРИЯ: Къде се съхранява текстов файл? 1511 01:09:04,622 --> 01:09:07,330 АНДИ Пенг: Тя е запазена в същото указател, че програмата ви е. 1512 01:09:07,330 --> 01:09:09,830 Така че просто се върна и ще я търсим. 1513 01:09:09,830 --> 01:09:11,930 И едно и също нещо, ние може да направи за вход е 1514 01:09:11,930 --> 01:09:14,300 че всъщност можем да предприемем съдържанието на някои файл 1515 01:09:14,300 --> 01:09:16,380 и ние да въведете, че в нашата програма. 1516 01:09:16,380 --> 01:09:19,930 Така че, вместо да се налага да правя команда линия аргументи за това, къде сте физически 1517 01:09:19,930 --> 01:09:21,680 трябва да въведете неща всеки път, вие 1518 01:09:21,680 --> 01:09:27,890 всъщност може просто да има файл с име input.txt, че просто всичко поставя инча 1519 01:09:27,890 --> 01:09:31,970 >> И тогава тръба е специално готино, защото това може да отнеме на изхода на една програма 1520 01:09:31,970 --> 01:09:34,170 и да го използвате като вход от друга програма. 1521 01:09:34,170 --> 01:09:38,430 Така например, в Vigenere вашите момчета, има този ред на код, който 1522 01:09:38,430 --> 01:09:42,010 момчета се изпълняват, че може би може би наистина не знам какво е това doing-- 1523 01:09:42,010 --> 01:09:46,910 това ./generate 1,000 тръба ./42. 1524 01:09:46,910 --> 01:09:47,510 Нали така? 1525 01:09:47,510 --> 01:09:51,100 >> Така че всичко, което прави, ако ние просто да разгледаме това стъпка по стъпка, 1526 01:09:51,100 --> 01:09:55,870 на ./generate, това означава, че аз съм използвате моята програма генерира. 1527 01:09:55,870 --> 01:09:58,850 Това е като в 1000 на входа. 1528 01:09:58,850 --> 01:10:03,330 Така че аз искам да генерира 1000 случайна номера и аз ще тръба that-- 1529 01:10:03,330 --> 01:10:07,790 или аз ще използвам that-- изход като вход за моята програма, наречена находка. 1530 01:10:07,790 --> 01:10:12,110 И аз ще се опитам да намеря 42 от цифрите, получени от тези 1,000 1531 01:10:12,110 --> 01:10:13,130 номера. 1532 01:10:13,130 --> 01:10:15,410 Означава ли това ред код прави смисъл на всички останали? 1533 01:10:15,410 --> 01:10:17,820 >> Така че по този начин ние сме спестяване себе си един тон от стъпки. 1534 01:10:17,820 --> 01:10:21,880 Ние не трябва да тичам генерира, запишете файла и го сложи в находка. 1535 01:10:21,880 --> 01:10:23,800 Ние просто да направите всичко това в един ред. 1536 01:10:23,800 --> 01:10:28,080 Така че каквото и да генерират извежда, тя цоп връщам, за да се намери. 1537 01:10:28,080 --> 01:10:28,580 Да? 1538 01:10:28,580 --> 01:10:32,484 >> АУДИТОРИЯ: И по отношение на командването доводи линия, е that-- това е 1539 01:10:32,484 --> 01:10:33,948 три командния ред аргументи? 1540 01:10:33,948 --> 01:10:38,340 Това е генериране, find-- не, four-- генериране, 1000, намерите и 42? 1541 01:10:38,340 --> 01:10:39,134 Или е the-- 1542 01:10:39,134 --> 01:10:42,050 АНДИ Пенг: Не Така тръбата прави наистина брои като аргумент на командния ред 1543 01:10:42,050 --> 01:10:44,590 защото компилаторът или терминал знае, че тръбата, 1544 01:10:44,590 --> 01:10:48,590 О, аз знам, че трябва да гледа преди тръбата, защото това е моята продукция 1545 01:10:48,590 --> 01:10:51,220 и аз трябва да се грижат за тръба, защото това е моят принос. 1546 01:10:51,220 --> 01:10:54,520 Така че го знае that-- на ./generate и 1000, 1547 01:10:54,520 --> 01:10:57,390 тези два командни след аргументи само за първата програма. 1548 01:10:57,390 --> 01:11:01,760 И тогава ./find 42 са две команда линия аргументи за втората програма. 1549 01:11:01,760 --> 01:11:02,980 Да. 1550 01:11:02,980 --> 01:11:06,150 Всеки добър по този въпрос? 1551 01:11:06,150 --> 01:11:10,610 >> Така че просто много бързо, това, което правим тези три реда код направя? 1552 01:11:10,610 --> 01:11:11,606 Сравнително проста. 1553 01:11:11,606 --> 01:11:13,605 Всеки, който иска да ми каже това, което на първа линия прави? 1554 01:11:13,605 --> 01:11:18,201 1555 01:11:18,201 --> 01:11:19,117 АУДИТОРИЯ: [недоловим]. 1556 01:11:19,117 --> 01:11:23,540 1557 01:11:23,540 --> 01:11:26,534 >> АНДИ Пенг: Мислете за това като just-- Какво прави по-голяма от моркови? 1558 01:11:26,534 --> 01:11:29,299 >> АУДИТОРИЯ: Тя поставя нещо в следващия ред. 1559 01:11:29,299 --> 01:11:31,090 АНДИ Пенг: И така, какво е обратното на това? 1560 01:11:31,090 --> 01:11:33,514 АУДИТОРИЯ: Тя поставя на следващия нещо в първото нещо. 1561 01:11:33,514 --> 01:11:34,180 АНДИ Пенг: Да. 1562 01:11:34,180 --> 01:11:37,550 Така че всичко, което прави е, че си изпълнение на програма .hello-- 1563 01:11:37,550 --> 01:11:40,010 Вашата рекламна програма на име здрасти. 1564 01:11:40,010 --> 01:11:42,960 Ти ще го дам входен нарича input.txt. 1565 01:11:42,960 --> 01:11:43,460 Нали така? 1566 01:11:43,460 --> 01:11:46,250 Защото мисля за него като просто физически навлиза в здрасти. 1567 01:11:46,250 --> 01:11:50,632 И тогава започваш да се спаси от изход във файл, наречен output.txt. 1568 01:11:50,632 --> 01:11:51,715 Какво ще кажете за втората линия? 1569 01:11:51,715 --> 01:11:54,164 Искате ли да ми кажете какво На втория ред прави? 1570 01:11:54,164 --> 01:11:55,080 АУДИТОРИЯ: [недоловим]. 1571 01:11:55,080 --> 01:12:00,522 1572 01:12:00,522 --> 01:12:01,230 АНДИ Пенг: Съжалявам. 1573 01:12:01,230 --> 01:12:03,560 Кажи, че отново. 1574 01:12:03,560 --> 01:12:04,060 Elliot. 1575 01:12:04,060 --> 01:12:06,560 >> АУДИТОРИЯ: Така че това поставя списък с номера в находка. 1576 01:12:06,560 --> 01:12:07,540 >> АНДИ Пенг: Да. 1577 01:12:07,540 --> 01:12:10,790 Така се намери, не забравяйте, в За да стартирате откриете 1578 01:12:10,790 --> 01:12:13,209 Трябва да знаеш къде да търсите. 1579 01:12:13,209 --> 01:12:15,500 И така, всичко, което го прави тук е, че това е ти дава 1580 01:12:15,500 --> 01:12:18,720 предварително назначена комплект числа, а след това да намерят върви 1581 01:12:18,720 --> 01:12:21,680 да търсите тези за броя на 42. 1582 01:12:21,680 --> 01:12:23,620 И след това 15. 1583 01:12:23,620 --> 01:12:25,870 Не забравяйте, че вие, момчета тичаха това когато тества вашия код. 1584 01:12:25,870 --> 01:12:27,590 Сега разбираш ли какво прави? 1585 01:12:27,590 --> 01:12:31,069 1586 01:12:31,069 --> 01:12:33,520 >> АУДИТОРИЯ: Това е удар в набор от инструкции 1587 01:12:33,520 --> 01:12:38,860 да [недоловим] през три от три, за да получите the-- да спечели играта. 1588 01:12:38,860 --> 01:12:39,560 >> АНДИ Пенг: Да. 1589 01:12:39,560 --> 01:12:41,480 >> АУДИТОРИЯ: Той въвежда тези, инструкции в програмата. 1590 01:12:41,480 --> 01:12:42,438 >> АНДИ Пенг: Доста. 1591 01:12:42,438 --> 01:12:47,840 Така тилда CS50. / Pset3 / 3x3, всичко, което правеше, беше, че ние създадохме текст 1592 01:12:47,840 --> 01:12:50,700 файл, който разполага с пълната титли готови за вас, момчета. 1593 01:12:50,700 --> 01:12:56,020 И така в продължение на играта си, за да играете, можете just-- ние просто сложи това в програмата си. 1594 01:12:56,020 --> 01:12:58,230 Така че бяхме създали тази борда и след това ние сме 1595 01:12:58,230 --> 01:13:02,890 извеждайки, че форума на вашия програма че тя се затича и създаде една плочка от три 1596 01:13:02,890 --> 01:13:03,390 по три. 1597 01:13:03,390 --> 01:13:04,730 Това е всичко, което той прави. 1598 01:13:04,730 --> 01:13:07,331 >> И така всъщност е магия случва зад кулисите 1599 01:13:07,331 --> 01:13:09,330 че вие ​​не програма, която се програмира. 1600 01:13:09,330 --> 01:13:13,120 Но сега вие, момчета, да разберат защо ние сме го направили, така че всичко е добре. 1601 01:13:13,120 --> 01:13:15,750 Всичко е наред. 1602 01:13:15,750 --> 01:13:22,200 >> Така че, докато пренасочване е много полезен, С има общ механизъм 1603 01:13:22,200 --> 01:13:25,030 за четене и писане файлове на своя собствена. 1604 01:13:25,030 --> 01:13:26,780 Нищо концептуално трудно тук, така че аз съм 1605 01:13:26,780 --> 01:13:28,330 просто ще мине през Наистина, наистина бързо. 1606 01:13:28,330 --> 01:13:30,621 Всичко това е известно запаметяване и като се уверите, вие, момчета, 1607 01:13:30,621 --> 01:13:32,680 са синтактично го използвате правилно. 1608 01:13:32,680 --> 01:13:35,640 Начинът, по който ние ще направя, че е създадете препратка към файла, 1609 01:13:35,640 --> 01:13:38,473 щяхме да отворите файла, а след това ние ще направя всичко, за четене и писане 1610 01:13:38,473 --> 01:13:39,929 и след това затворете файла. 1611 01:13:39,929 --> 01:13:41,720 Когато нещо, което момчета искате да имате предвид, е 1612 01:13:41,720 --> 01:13:47,360 че докато правите това, защото ние сме затваряне и отваряне на файлове, 1613 01:13:47,360 --> 01:13:51,230 Всички тези команди са включени в standard-- стандарта I / O 1614 01:13:51,230 --> 01:13:51,730 библиотека. 1615 01:13:51,730 --> 01:13:54,410 Така че се уверете, че всеки път, когато сте Правейки това, че сте included-- 1616 01:13:54,410 --> 01:13:59,020 # included-- стандарт I / O точки часа. 1617 01:13:59,020 --> 01:14:01,691 >> Така че реално бързо. 1618 01:14:01,691 --> 01:14:03,940 Първа стъпка, която искате да създадете препратка към този файл. 1619 01:14:03,940 --> 01:14:07,670 И сега, че ние сме направили указатели, вие момчета може да ми каже какво е това ред код 1620 01:14:07,670 --> 01:14:08,630 се прави. 1621 01:14:08,630 --> 01:14:10,250 Нали така? 1622 01:14:10,250 --> 01:14:15,397 Всичко, което той прави е създаването на показалеца на име на файл от тип файл. 1623 01:14:15,397 --> 01:14:17,980 Защото вие знаете, че това се случва да сочи към файл, а ти си 1624 01:14:17,980 --> 01:14:20,460 Ще отворите файла. 1625 01:14:20,460 --> 01:14:23,320 Тогава сте е open-- всички тя не е да отворите файла. 1626 01:14:23,320 --> 01:14:24,560 >> Това е името на файла. 1627 01:14:24,560 --> 01:14:26,060 И има три неща, които можете да направите. 1628 01:14:26,060 --> 01:14:28,195 Можете да четете, пишете, или да приложи. 1629 01:14:28,195 --> 01:14:30,320 Най-общо, момчета ще се чете или записва 1630 01:14:30,320 --> 01:14:33,195 защото сте или ще бъде въвеждане на файл или извеждане на една. 1631 01:14:33,195 --> 01:14:36,500 Така че доста много г и w са двамата неща, ти започваш да се използва почти. 1632 01:14:36,500 --> 01:14:41,722 >> Така че в този случай, всичко, което съм направил, е създадете указател към файл с име на файла. 1633 01:14:41,722 --> 01:14:47,900 Аз съм го отваря и аз съм reading-- съм отварянето на този файл, наречен file.txt 1634 01:14:47,900 --> 01:14:49,020 и аз съм го прочетете. 1635 01:14:49,020 --> 01:14:51,730 Това е всичко, което правя в този момент. 1636 01:14:51,730 --> 01:14:55,270 И тогава това са само функционира в които можете да прочетете различни неща 1637 01:14:55,270 --> 01:14:57,750 или напишете различни неща или да прескочите до различни места 1638 01:14:57,750 --> 01:14:59,420 когато искате да изглеждате. 1639 01:14:59,420 --> 01:15:01,200 Всички те са онлайн. 1640 01:15:01,200 --> 01:15:02,960 Всичко това може просто Google. 1641 01:15:02,960 --> 01:15:04,280 Няма нужда да ги запомня. 1642 01:15:04,280 --> 01:15:07,160 Те просто са там, разполагаем за ваша употреба 1643 01:15:07,160 --> 01:15:09,360 ако искате да да бъде в състояние да ги използват. 1644 01:15:09,360 --> 01:15:13,210 >> Така че, ако аз исках да просто да прочетете в един символ в даден момент, 1645 01:15:13,210 --> 01:15:15,360 Аз ще направя файл fgetc. 1646 01:15:15,360 --> 01:15:18,850 Или, ако исках да прочетете в една линия на текст в даден момент, аз ще направя fgets. 1647 01:15:18,850 --> 01:15:19,840 И така нататък и така нататък. 1648 01:15:19,840 --> 01:15:23,640 Всички те просто правят различно неща, които можете да използвате, за момчета. 1649 01:15:23,640 --> 01:15:25,920 >> И след това на последно място, след като аз съм приключите четене или записване, 1650 01:15:25,920 --> 01:15:27,770 Аз съм просто ще fclose този файл. 1651 01:15:27,770 --> 01:15:31,760 И не забравяйте, това е една на тези, запомнете, моля 1652 01:15:31,760 --> 01:15:34,220 направите това или друго файла няма да работят. 1653 01:15:34,220 --> 01:15:36,130 Винаги преди да отворите файл четене или четене, 1654 01:15:36,130 --> 01:15:38,310 трябва да имате винаги го затворите, ако го отворите. 1655 01:15:38,310 --> 01:15:40,210 Същото е и с памет, нали? 1656 01:15:40,210 --> 01:15:42,390 Трябва да сте винаги да паметта и го безплатно. 1657 01:15:42,390 --> 01:15:45,200 Тук трябва да винаги да отворите подаде преди да се опитате да я прочетете 1658 01:15:45,200 --> 01:15:47,360 и винаги трябва да го затворите, след като го отворите. 1659 01:15:47,360 --> 01:15:50,650 1660 01:15:50,650 --> 01:15:52,190 >> Така че това също е на линия. 1661 01:15:52,190 --> 01:15:55,590 Отивам да ви предизвикателство за момчета вид се напише програма, която отпечатва 1662 01:15:55,590 --> 01:15:57,080 hello.world във файл. 1663 01:15:57,080 --> 01:15:58,280 Това наистина е много проста. 1664 01:15:58,280 --> 01:16:00,854 По същество той просто включва на няколко реда код 1665 01:16:00,854 --> 01:16:02,270 които са били просто написани преди това. 1666 01:16:02,270 --> 01:16:04,311 Ти ще ги пуснат заедно и напишете това. 1667 01:16:04,311 --> 01:16:06,630 1668 01:16:06,630 --> 01:16:10,950 >> Така че някои важни неща, които трябва да имате предвид, докато вие момчета се опитват да използват това. 1669 01:16:10,950 --> 01:16:14,410 Ако всичко това е много полезно за вашия pset тази седмица, 1670 01:16:14,410 --> 01:16:18,000 е, че fopen създава файл показалец. 1671 01:16:18,000 --> 01:16:19,500 Това не е реално физическата файл. 1672 01:16:19,500 --> 01:16:22,260 Всичко това сочи към файл, който искате да отворите. 1673 01:16:22,260 --> 01:16:26,070 И вие сте по същество, когато вие използвате някоя от другите функции 1674 01:16:26,070 --> 01:16:30,130 като fread или неуспешно или fgetc или fgets, е 1675 01:16:30,130 --> 01:16:33,380 че ти си просто преминаване около това указател към всички тези функции. 1676 01:16:33,380 --> 01:16:36,510 Така че не сте в действителност, като че файл и да го използвате за вашите функции, 1677 01:16:36,510 --> 01:16:39,540 ти си просто като на показалеца и да я постави на тези функции 1678 01:16:39,540 --> 01:16:41,620 така че можете да използвате. 1679 01:16:41,620 --> 01:16:45,360 >> И ако сте пропуснали да затворите файл си, след като го използвате, 1680 01:16:45,360 --> 01:16:47,710 Вашата програма ще протекат памет. 1681 01:16:47,710 --> 01:16:50,700 По същество, всички, които средства е, че лоши неща ще се случат 1682 01:16:50,700 --> 01:16:52,960 и вашата програма ще не функционира правилно. 1683 01:16:52,960 --> 01:16:54,880 И така на pset в началото, мисля, 1684 01:16:54,880 --> 01:16:59,180 там е кратко, където той explained-- Nate explained-- какво е Valgrind. 1685 01:16:59,180 --> 01:17:02,350 All Valgrind е е начин за вас да уверете се, че не сте изтича памет. 1686 01:17:02,350 --> 01:17:04,433 Така че, момчета искат да направят Сигурни ли сте, че гледате кратко 1687 01:17:04,433 --> 01:17:08,771 тъй че тя обяснява много добре какво се случва. 1688 01:17:08,771 --> 01:17:09,270 ДОБРЕ. 1689 01:17:09,270 --> 01:17:11,260 Така че аз отидох чрез които наистина, наистина бързо, защото наистина 1690 01:17:11,260 --> 01:17:13,870 искам да отида да говоря за на pset преди вас, момчета излизат. 1691 01:17:13,870 --> 01:17:16,690 Дали някой има въпроси концептуално? 1692 01:17:16,690 --> 01:17:20,060 Предимно всичко това е само синтаксис, който можете да използвате, за да четат или пишат файлове. 1693 01:17:20,060 --> 01:17:25,090 1694 01:17:25,090 --> 01:17:28,140 >> И накрая, любимата на всички. 1695 01:17:28,140 --> 01:17:31,760 Отиваме да говорим за pset сега. 1696 01:17:31,760 --> 01:17:35,990 Така че, вдигане на ръка, колко от вие четат спец тази седмица? 1697 01:17:35,990 --> 01:17:36,660 О, това е половината. 1698 01:17:36,660 --> 01:17:38,000 Това е добре. 1699 01:17:38,000 --> 01:17:41,430 Така че това всъщност е наистина, наистина забавно pset в смисъл, 1700 01:17:41,430 --> 01:17:43,889 че се чувстваш като детектив, защото сте 1701 01:17:43,889 --> 01:17:46,930 правиш всички тези наистина готини неща че ти не знаеш, че можеш да направиш 1702 01:17:46,930 --> 01:17:49,050 но сега това е наистина страхотно че можете да ги направите. 1703 01:17:49,050 --> 01:17:52,400 И това е действително много лесно, отколкото вие мислите. 1704 01:17:52,400 --> 01:17:56,640 >> Така основни половини на тази програма са ти 1705 01:17:56,640 --> 01:18:00,330 Ще изтеглите изходния код или дистрибуция код, написан от нас. 1706 01:18:00,330 --> 01:18:03,540 И ти започваш да има една папка наречено BMP и друга папка 1707 01:18:03,540 --> 01:18:05,550 наречено JPG. 1708 01:18:05,550 --> 01:18:08,370 В рамките на вашата BMP, вие сте ще има три програми. 1709 01:18:08,370 --> 01:18:10,400 Един от тях вече е написана за вас. 1710 01:18:10,400 --> 01:18:12,477 Така copy.c е програма ние вече съм писал 1711 01:18:12,477 --> 01:18:14,060 за теб, че ти започваш да изтеглите. 1712 01:18:14,060 --> 01:18:19,440 Всичко, което прави е да се вземат като вход на снимка и прави копие от него като продукция. 1713 01:18:19,440 --> 01:18:22,150 Това е всичко, този файл се прави. 1714 01:18:22,150 --> 01:18:25,260 >> Но това, което искате да направите, за whodunit-- така колко от вас 1715 01:18:25,260 --> 01:18:30,450 момчета помнят в пети клас или maybe-- можете да започнете younger-- може би трети клас, 1716 01:18:30,450 --> 01:18:33,945 когато вие, момчета са имали тайни послания и трябваше да се сложи лист хартия върху нея 1717 01:18:33,945 --> 01:18:35,440 да разчетат посланието? 1718 01:18:35,440 --> 01:18:36,000 Да? 1719 01:18:36,000 --> 01:18:39,580 Така че това е всичко, което правим само че този път за един компютър. 1720 01:18:39,580 --> 01:18:41,832 Така че ние сме ви дали този прекрасен образ. 1721 01:18:41,832 --> 01:18:43,540 Не изглежда като всичко друго, но отдолу 1722 01:18:43,540 --> 01:18:49,660 това е знак, че ще ти помогне с отговора на въпроса Ви молим. 1723 01:18:49,660 --> 01:18:54,170 >> По същество това, което искате да направите, е вход, който подаде, 1724 01:18:54,170 --> 01:18:56,610 ощипвам някои неща наоколо, може би регулирате цветовете, 1725 01:18:56,610 --> 01:19:00,730 измести неща, така че каквото посланието е да дойде сам. 1726 01:19:00,730 --> 01:19:03,740 Така че там са скрити вътре пиксела и информация 1727 01:19:03,740 --> 01:19:07,140 че ако пишете кода си правилно ще се декодира и да ти кажа 1728 01:19:07,140 --> 01:19:08,500 какво е улика. 1729 01:19:08,500 --> 01:19:12,480 И така някои полезни съвети за това как бихте отида за приближаването на това. 1730 01:19:12,480 --> 01:19:15,180 >> Наистина ли искаш да се запознаят себе си с файла I / O 1731 01:19:15,180 --> 01:19:18,760 защото сме четене от файлове и писмено на файлове. 1732 01:19:18,760 --> 01:19:19,260 Нали така? 1733 01:19:19,260 --> 01:19:21,430 И така всеки път, когато правим че, който включва 1734 01:19:21,430 --> 01:19:25,170 подаде I / O. Ти ще Трябва да се запознаете 1735 01:19:25,170 --> 01:19:27,450 с, как да се отворят снимките файлове? 1736 01:19:27,450 --> 01:19:29,960 Как се пише до файлове като снимки? 1737 01:19:29,960 --> 01:19:31,640 Как го правиш всички тези неща? 1738 01:19:31,640 --> 01:19:33,660 Това ще бъде наистина полезно. 1739 01:19:33,660 --> 01:19:36,190 >> Второ, как си ще бъде в състояние да се промени 1740 01:19:36,190 --> 01:19:38,140 цветовете, които изясни тази снимка? 1741 01:19:38,140 --> 01:19:43,660 Това е най-вероятно ще включва коригиране вашите пиксели или вашите RGB стойности 1742 01:19:43,660 --> 01:19:45,390 някъде там, по същество. 1743 01:19:45,390 --> 01:19:47,800 Няма по правилен начин на решаването на този толкова дълго, колкото можете 1744 01:19:47,800 --> 01:19:52,560 can-- толкова дълго, колкото можете вид коригира тези пиксели, за да го направи 1745 01:19:52,560 --> 01:19:54,640 изглежда като нещо, което ви интересува. 1746 01:19:54,640 --> 01:19:56,207 Това е всичко, ние се грижим за, както добре. 1747 01:19:56,207 --> 01:19:57,540 Така че има много начини да направите това. 1748 01:19:57,540 --> 01:20:00,039 Просто си поиграете с него, докато можете да получите нещо, което работи. 1749 01:20:00,039 --> 01:20:02,900 И ти ще бъде наистина изненадани как няколко реда код 1750 01:20:02,900 --> 01:20:04,510 което трябва да направите това в действителност. 1751 01:20:04,510 --> 01:20:08,700 Говоря като три реда код общия 1752 01:20:08,700 --> 01:20:11,310 че трябва да се напише за да направите това. 1753 01:20:11,310 --> 01:20:15,470 Така че, ако откриете себе си написването 40, 30 реда код, 1754 01:20:15,470 --> 01:20:16,960 вие вероятно го правиш погрешно. 1755 01:20:16,960 --> 01:20:19,390 Всичко, което трябва да направите, е вид поиграете с цветовете 1756 01:20:19,390 --> 01:20:22,960 и да видим как става навън. 1757 01:20:22,960 --> 01:20:27,040 >> Така че тогава ние главата в малко до по-труден проблем. 1758 01:20:27,040 --> 01:20:30,190 Тук имаме преоразмерите когато ние сме ви питам 1759 01:20:30,190 --> 01:20:34,210 to-- ние ти даваме като вход снимка и си преоразмеряване 1760 01:20:34,210 --> 01:20:36,710 този образ в нещо по-големи или нещо по-малко 1761 01:20:36,710 --> 01:20:38,500 в зависимост от размерите ние ви дават. 1762 01:20:38,500 --> 01:20:41,260 Така че не забравяйте, в лекция Давид бързо 1763 01:20:41,260 --> 01:20:45,780 погледна как информацията е открита от вашите компютри 1764 01:20:45,780 --> 01:20:47,590 да кажа, че това е вид файл. 1765 01:20:47,590 --> 01:20:50,530 Така файл Word има специална знаци пред които 1766 01:20:50,530 --> 01:20:52,040 кажете на Вашия компютър е файл Word. 1767 01:20:52,040 --> 01:20:53,090 Същото е и с JPEG. 1768 01:20:53,090 --> 01:20:55,131 В този случай ние ще да ви дам един файл JPEG. 1769 01:20:55,131 --> 01:20:58,300 Всичко, което знаем е, че JPEG файл е снимка, нали? 1770 01:20:58,300 --> 01:21:01,430 Но компютърът разграничава то при много специфични начини. 1771 01:21:01,430 --> 01:21:04,070 Така в началото на всеки файл, JPEG, вие сте 1772 01:21:04,070 --> 01:21:08,210 ще има това, което се нарича растерна графика Информация за глава и заглавната част на растерна графика файл. 1773 01:21:08,210 --> 01:21:11,080 Всички тези са са различни парчета на данни 1774 01:21:11,080 --> 01:21:14,870 че кажете на Вашия компютър, хей, слушайте, а JPEG снимки, идващи 1775 01:21:14,870 --> 01:21:17,820 и това са размерите или характеристики на този JPEG. 1776 01:21:17,820 --> 01:21:21,280 >> Така че вие, момчета, наистина искат да знаят каква информация се съхранява вътре 1777 01:21:21,280 --> 01:21:23,560 на тези заглавки и какъв е размерът им. 1778 01:21:23,560 --> 01:21:25,640 Защото, когато сте стартирали чрез вашата програма, 1779 01:21:25,640 --> 01:21:27,370 започваш да искаш да прескочим тази сума. 1780 01:21:27,370 --> 01:21:27,940 Нали така? 1781 01:21:27,940 --> 01:21:29,910 Защото не ви пука за модифициране на заглавната част, 1782 01:21:29,910 --> 01:21:31,493 те е грижа за модифициране на това, което е след това. 1783 01:21:31,493 --> 01:21:32,450 Нали така? 1784 01:21:32,450 --> 01:21:36,040 Така че се уверете, че вие ​​знаете колко големи са тези неща. 1785 01:21:36,040 --> 01:21:39,065 >> На второ място, преди да започнете опитвайки се да промените размера на изображението, 1786 01:21:39,065 --> 01:21:41,940 вие вероятно ще искате да запишете размерите на оригинала. 1787 01:21:41,940 --> 01:21:42,520 Нали така? 1788 01:21:42,520 --> 01:21:45,550 Защото, ако ви кажа тази снимка е 100 на 100 пиксела, 1789 01:21:45,550 --> 01:21:47,630 и аз искам да се направи нея четири пъти по-голям, 1790 01:21:47,630 --> 01:21:50,460 знаете ли, че трябва да се умножете тези размери от четири. 1791 01:21:50,460 --> 01:21:54,960 Така че след това искате изходен файл 400 от 400 пиксела, например. 1792 01:21:54,960 --> 01:21:58,300 Така че това е наистина полезно за вас, момчета до запишете размерите на оригинала. 1793 01:21:58,300 --> 01:22:00,780 И тогава след това, след като приключите преоразмеряване, 1794 01:22:00,780 --> 01:22:06,270 можете да пишете нови заглавия с тези нови измерения след преоразмеряване. 1795 01:22:06,270 --> 01:22:10,750 >> И начинът, по който сте физически може да създаде в големи пиксели 1796 01:22:10,750 --> 01:22:13,380 е, че можете да напишете Новият RGB-- спомням, RGB, 1797 01:22:13,380 --> 01:22:17,784 всичко, което е съкращение от е червен, зелен, и blue-- пиксела до вън файл. 1798 01:22:17,784 --> 01:22:20,200 И ти започваш да искаш да имат различни количества от това, което 1799 01:22:20,200 --> 01:22:21,200 ние наричаме подплата. 1800 01:22:21,200 --> 01:22:24,780 Всички пълнежът е по пространства са преди и след снимки 1801 01:22:24,780 --> 01:22:29,265 че кажа your-- по същество, че кажете вашата снимка колко голям го 1802 01:22:29,265 --> 01:22:30,589 следва да бъде предприемането. 1803 01:22:30,589 --> 01:22:33,630 Това е много абстрактно за много вас, ако не са чели pset спец, 1804 01:22:33,630 --> 01:22:35,410 но то ще бъде много полезно, когато 1805 01:22:35,410 --> 01:22:36,460 вие всъщност четене през него. 1806 01:22:36,460 --> 01:22:38,126 Ти си като, о, да, това има смисъл. 1807 01:22:38,126 --> 01:22:39,310 Защо трябва да направите това? 1808 01:22:39,310 --> 01:22:41,830 Има смисъл. 1809 01:22:41,830 --> 01:22:46,900 >> На последно място, това е може би един от най-разочароващ програми 1810 01:22:46,900 --> 01:22:51,160 някога, само защото ти не можеш кажете дали това е работа, или не. 1811 01:22:51,160 --> 01:22:54,980 All тази програма, се възстанови, е прави се, че ако работи правилно, 1812 01:22:54,980 --> 01:22:59,290 тя трябва да бъде в състояние да се внезапно възстанови 50 изображения, които 1813 01:22:59,290 --> 01:23:01,025 бяха загубени на нашия твърд диск. 1814 01:23:01,025 --> 01:23:03,900 И така, проблемът с тази програма е, че не мога да го тествам 1815 01:23:03,900 --> 01:23:06,220 защото нито вие възстановена тях, или не сте. 1816 01:23:06,220 --> 01:23:09,122 И така, вие просто вид Трябва да си поиграете с него, 1817 01:23:09,122 --> 01:23:11,080 и ако програмата ви е работи правилно, вие ще 1818 01:23:11,080 --> 01:23:12,829 изведнъж се види, че в директория сте 1819 01:23:12,829 --> 01:23:17,400 имам една гигантска сума снимки, които са вече там. 1820 01:23:17,400 --> 01:23:20,490 >> Е, как ще подходим I този проблем е, че сме 1821 01:23:20,490 --> 01:23:22,860 ще ти дам това, което е нарича card.raw файл. 1822 01:23:22,860 --> 01:23:25,020 По същество, това е Просто повреден файл 1823 01:23:25,020 --> 01:23:28,870 с всички снимки, запаметени, че започваш да се наложи да се възстанови от. 1824 01:23:28,870 --> 01:23:32,330 Така че вие ​​вероятно ще искате към входа на вашия card.raw, или отворена, 1825 01:23:32,330 --> 01:23:35,510 Вашата card.raw файл и можете да започнете ще искате да манипулирате 1826 01:23:35,510 --> 01:23:37,840 тя да бъде в състояние да съхранява JPEG. 1827 01:23:37,840 --> 01:23:42,830 >> Така че аз ще започна с проследяване и съхранение всеки отделен JPEG, докато го намерите. 1828 01:23:42,830 --> 01:23:47,180 Ти няма да индивидуално всички Изведнъж просто създаде всички 50 JPEG. 1829 01:23:47,180 --> 01:23:50,190 Вие ще искате да запазите следи колко сте отваряне. 1830 01:23:50,190 --> 01:23:52,015 И след това, което искате да уверете се, когато сте 1831 01:23:52,015 --> 01:23:54,640 писането на buffer-- вас, момчета ще знам какво говоря 1832 01:23:54,640 --> 01:23:57,806 след като прочетете spec-- искате да уверете се, че използвате неподписан 1833 01:23:57,806 --> 01:23:59,370 Чар буфер. 1834 01:23:59,370 --> 01:24:01,790 >> И след това искам да попитам си въпроса на, 1835 01:24:01,790 --> 01:24:05,797 колко байта са в CF-- са във файл с карта? 1836 01:24:05,797 --> 01:24:08,380 Ето колко ти започваш да се искате да прочетете във вашия буфер. 1837 01:24:08,380 --> 01:24:11,130 Вие ще искате да се уверите за привеждане в съответствие на две, защото тогава 1838 01:24:11,130 --> 01:24:12,850 няма да се налага оперативна памет изтичане. 1839 01:24:12,850 --> 01:24:15,370 Вие знаете точно колко байта, което трябва и колко 1840 01:24:15,370 --> 01:24:18,270 байтове, които искате да имате. 1841 01:24:18,270 --> 01:24:21,510 >> И накрая, вие искате да използвате функция, наречена sprint-- 1842 01:24:21,510 --> 01:24:26,160 ите печат F-- да генерира потребителски файл имена за всеки нов JPEG, че ще намерите. 1843 01:24:26,160 --> 01:24:29,129 Така, както можете да създавате и намерите JPEG снимки от вашата карта, 1844 01:24:29,129 --> 01:24:31,170 започваш да искаш да да ги съхранява и да ги назове. 1845 01:24:31,170 --> 01:24:31,700 Нали така? 1846 01:24:31,700 --> 01:24:33,700 И така, ти започваш да се искате да използвате тази функция 1847 01:24:33,700 --> 01:24:36,770 за създаване на имена, които може да съхранява всички ваши JPEG. 1848 01:24:36,770 --> 01:24:41,062 >> И накрая, не забравяйте да затворите всяка JPEG, след като сте готови. 1849 01:24:41,062 --> 01:24:42,770 Защото това, което сте ще направя, е, че си 1850 01:24:42,770 --> 01:24:44,728 Ще вероятно имат някаква примка, че 1851 01:24:44,728 --> 01:24:46,470 се изпълнява за всички ваши JPEG. 1852 01:24:46,470 --> 01:24:50,460 Ти ще напише JPEG и да го преименувате, докато го намерите. 1853 01:24:50,460 --> 01:24:52,870 Но след като сте готови с всеки един JPEG, 1854 01:24:52,870 --> 01:24:56,630 трябва да го затворите, така че можете да започнете отново и да преминем към следващата картина. 1855 01:24:56,630 --> 01:24:58,880 И така, нещо, което е наистина забавно, че сме искали да направим, 1856 01:24:58,880 --> 01:25:03,430 защото това е определен като странен проблем но и странно да не отговарят проблем 1857 01:25:03,430 --> 01:25:08,380 набор, е, че всички снимки, ние имаме за вас, ако се възстанови правилно, 1858 01:25:08,380 --> 01:25:11,910 всички снимки са снимки на вашата прекрасна преподавателския състав, както 1859 01:25:11,910 --> 01:25:14,240 от Харвард, в here-- и тук в Йейл. 1860 01:25:14,240 --> 01:25:17,260 И ако се случи да възстановяване на всички тези снимки 1861 01:25:17,260 --> 01:25:20,020 и идентифициране на персонала членове в тези карти, 1862 01:25:20,020 --> 01:25:23,040 и да вземат selfies с нас, ако можете да ни намерите из университета, 1863 01:25:23,040 --> 01:25:28,270 за всяка снимка, която представя пред нас, ние ще ви дам един гигабайт Dropbox пространство. 1864 01:25:28,270 --> 01:25:30,060 >> Така че нека да направи по математика тук. 1865 01:25:30,060 --> 01:25:33,010 Ако има 50 снимки и 50 членове на преподавателския състав, 1866 01:25:33,010 --> 01:25:37,160 ако се случи да намерите всички 50 от ни, това е 50 гигабайта Dropbox, 1867 01:25:37,160 --> 01:25:39,000 общо взето, ние ще ви се дава момчета. 1868 01:25:39,000 --> 01:25:42,380 Така някои допълнителни стимули добавени ако вие не просто 1869 01:25:42,380 --> 01:25:44,480 грижа за възстановяване на изгубени образи. 1870 01:25:44,480 --> 01:25:46,867 Има и някои допълнителни стимули. 1871 01:25:46,867 --> 01:25:47,825 Това е забавен проблем набор. 1872 01:25:47,825 --> 01:25:48,390 Това наистина е така. 1873 01:25:48,390 --> 01:25:51,980 Това е вид на разочароващо, но след това става наистина забавно, когато разбереш, 1874 01:25:51,980 --> 01:25:54,230 Уау, това е работа и сега имат всички тези снимки 1875 01:25:54,230 --> 01:25:55,604 че аз току-що създадена от себе си. 1876 01:25:55,604 --> 01:25:58,800 1877 01:25:58,800 --> 01:26:00,075 >> Всякакви въпроси относно pset? 1878 01:26:00,075 --> 01:26:02,408 За всеки, който е вече започна, ако имате въпроси, 1879 01:26:02,408 --> 01:26:06,510 Аз ще бъда тук за няколко минути след раздел, ако искате да говорите с мен. 1880 01:26:06,510 --> 01:26:07,320 Браво, момчета. 1881 01:26:07,320 --> 01:26:10,520 Съжалявам, аз информация изхвърлени на вас, момчета. 1882 01:26:10,520 --> 01:26:13,670 Показалки са наистина, наистина предизвикателна и разочароващо. 1883 01:26:13,670 --> 01:26:16,187 >> И аз съм наистина се радвам, че вие, момчета останаха с мен. 1884 01:26:16,187 --> 01:26:18,020 Ще поговорим по-задълбочено за следващата седмица 1885 01:26:18,020 --> 01:26:21,330 тъй като ние започнем да правим хеш таблици и повече функции, които ги включват. 1886 01:26:21,330 --> 01:26:23,821 1887 01:26:23,821 --> 01:26:24,320 Да. 1888 01:26:24,320 --> 01:26:26,278 Така че, ако някой има някакви въпроси, аз ще бъда наоколо. 1889 01:26:26,278 --> 01:26:29,330 Благодаря, че дойдохте и да вземат по- бонбони, защото има повече бонбони. 1890 01:26:29,330 --> 01:26:32,220 1891 01:26:32,220 --> 01:26:33,770 Готино. 1892 01:26:33,770 --> 01:26:35,765