1 00:00:00,000 --> 00:00:04,875 2 00:00:04,875 --> 00:00:05,750 ANDI Пэн: Ладно. 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-- ты в порядке там? 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-- это огромная проблема для много из ТА в прошлом 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 а затем загружать свои результаты непосредственно в зачетную книжку. 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-- Йельского имеет действительно, действительно 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 Викторина 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 ANDI Пэн: Да. 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 >> ANDI Пэн: Не беспокойтесь. 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 ANDI Пэн: Правильно. 157 00:06:54,660 --> 00:06:59,207 АУДИТОРИЯ: И это будет be-- что формат викторины? 158 00:06:59,207 --> 00:06:59,790 ANDI Пэн: О. 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 ANDI PENG: Нет 166 00:07:17,140 --> 00:07:20,130 Это будет вы, ребята, пишущие и отвечая на вопросы от руки. 167 00:07:20,130 --> 00:07:21,160 >> АУДИТОРИЯ: Ой. 168 00:07:21,160 --> 00:07:23,160 >> ANDI Пэн: Так мы дадим из практики и прочее 169 00:07:23,160 --> 00:07:26,420 так что вы, ребята, можете идти, возможно, назад и переписать Марио вручную только 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 >> ANDI Пэн: да, и нет. 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 Вы, ребята, будет писать, INT основной недействительными Printf привет мир запятой. 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 >> ANDI PENG: Нет 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 АУДИТОРИЯ: ОК. 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 ANDI PENG: Нет 197 00:08:19,600 --> 00:08:22,970 Таким образом, проблема из-за это установить за день до падения перерыва. 198 00:08:22,970 --> 00:08:25,690 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 Хорошо. 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 Так вот у нас есть INT х, и мы инициализации, что Int 50. 248 00:10:37,360 --> 00:10:42,390 Так вот в этом блоке памяти на наш компьютеры мы сохранили ряд 50. 249 00:10:42,390 --> 00:10:46,170 Так где указатели вступают в игру это что ваш компьютер в том: как, вот, 250 00:10:46,170 --> 00:10:48,880 физически на жестком диске в памяти моей 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 Если это ваш ОЗУ компьютер, у вас есть эти маленькие кусочки 258 00:11:10,420 --> 00:11:14,540 или блоков или байт памяти в which-- это лишь немного 259 00:11:14,540 --> 00:11:18,120 блоки, которые были выделены на жесткий диск или ОЗУ вашего компьютера, 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 есть, мы просто должны заботиться о насколько большой нам нужен Int быть, 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 мы хотели бы сделать Int звезд х. 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 сделать Int х, будет INT звезда х указать местоположение х 307 00:13:20,045 --> 00:13:21,170 вы определяете потом? 308 00:13:21,170 --> 00:13:22,000 >> ANDI Пэн: Действительно хороший вопрос. 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 Это, ссылаясь и разыменования. 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 но точно знаю, что, по сути, и-- амперсанд 325 00:14:05,760 --> 00:14:10,240 и все, что переменная-- делает это сказать вам адрес 326 00:14:10,240 --> 00:14:11,780 где-то хранится. 327 00:14:11,780 --> 00:14:15,730 И разыменования является противоположностью того, что, который является только звезды. 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 База 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 а затем и А, В, С, 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 >> Таким образом, в этом примере здесь, INT х равен 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 является то, что мы создали указатель типа Int. 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 в Йельском университете у нас есть система PO BOX где каждый студент имеет рассылки 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 собирается создать указатель называется указатель PTR. 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 х дает вам адрес, что х было. 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 если мы бы объявить и инициализировать другой блок памяти типа Int. 411 00:18:09,650 --> 00:18:10,150 Правильно? 412 00:18:10,150 --> 00:18:11,130 Это было бы Int. 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 >> АУДИТОРИЯ: Так INT х равен INT копию? 438 00:19:21,425 --> 00:19:24,650 439 00:19:24,650 --> 00:19:34,970 >> ANDI Пэн: Нет, потому что, в этом случае, Int x-- значение x-- равна 5, верно? 440 00:19:34,970 --> 00:19:40,546 А потом INT копию равна 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 ANDI Пэн: Да. 454 00:20:18,020 --> 00:20:20,030 Так вот я просто-- не заполнить значения 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 ANDI Пэн: Да. 462 00:20:36,700 --> 00:20:39,015 АУДИТОРИЯ: --the Разыменование и ссылки звезду? 463 00:20:39,015 --> 00:20:39,681 ANDI Пэн: Да. 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 >> Таким образом, звезда после Int, что говорит компьютер 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 >> ANDI Пэн: совершенно нормально. 479 00:21:16,252 --> 00:21:20,491 >> АУДИТОРИЯ: --in левой стороне что слайд, мы делаем то, что нам известно. 480 00:21:20,491 --> 00:21:23,124 Мы заявляем, целое [Неразборчиво], что равны 5. 481 00:21:23,124 --> 00:21:23,790 ANDI Пэн: Да. 482 00:21:23,790 --> 00:21:24,456 АУДИТОРИЯ: Да. 483 00:21:24,456 --> 00:21:28,960 И тогда у нас есть INT звезд вещь и который говорит, что, хорошо, вроде как мы 484 00:21:28,960 --> 00:21:31,235 заявил целое, теперь мы объявлении указателя. 485 00:21:31,235 --> 00:21:32,110 ANDI Пэн: Правильно. 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 И наша указатель PTR. 489 00:21:33,870 --> 00:21:34,080 >> ANDI Пэн: Да. 490 00:21:34,080 --> 00:21:35,460 Название указателя PTR. 491 00:21:35,460 --> 00:21:35,959 Указатель. 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 >> ANDI Пэн: Будьте осторожны потому что на самом деле амперсанд х 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 ANDI Пэн: Мы на самом деле знаю, что х, верно? 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 ANDI Пэн: Право. 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 >> ANDI Пэн: Да. 514 00:22:36,160 --> 00:22:39,272 >> АУДИТОРИЯ: И в этом один случай, звезда PTR является 515 00:22:39,272 --> 00:22:41,256 равным значению х, которая равна 5. 516 00:22:41,256 --> 00:22:42,744 >> ANDI Пэн: Правильно. 517 00:22:42,744 --> 00:22:44,728 >> АУДИТОРИЯ: Прохладный. 518 00:22:44,728 --> 00:22:49,382 И это простой способ, чтобы получить что или, что только way-- 519 00:22:49,382 --> 00:22:51,840 ANDI Пэн: Так что сейчас это кажется, не очень логично для нас 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 Но как только мы пойдем по выделение памяти и-- мы будем 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 >> АУДИТОРИЯ: Высокий. 529 00:23:14,950 --> 00:23:15,350 >> ANDI Пэн: Да. 530 00:23:15,350 --> 00:23:16,150 >> АУДИТОРИЯ: [неразборчиво]. 531 00:23:16,150 --> 00:23:16,450 >> ANDI Пэн: Хороший вопрос. 532 00:23:16,450 --> 00:23:17,510 >> АУДИТОРИЯ: [неразборчиво]. 533 00:23:17,510 --> 00:23:18,000 >> ANDI Пэн: Это не так. 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 >> ANDI Пэн: Да. 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 Я знаю, Тейлор, вы получили в немного поздно. 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 Если бы вы были, чтобы отслеживать, что только что произошло, INT х равен 5, 551 00:23:47,070 --> 00:23:52,159 все, что мы сделали в этот момент создать переменную с именем х типа Int. 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 И тогда в следующий линия, INT звезда указатель, 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 >> А потом там, звезда Указатель является разыменования. 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 Таким образом, на данный момент, мы, по существу просто переинициализированы х до 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 и мы собираемся, целью которых давайте просто скажем, это какой-то другой адрес оперативное запоминающее. 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 >> Таким образом, в этом случае, мы можем на самом деле переименовать и повторно изменяет и переназначить значения 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 Прежде, чем я продолжу, я действительно хотите просто сделать 598 00:26:17,810 --> 00:26:19,370 что все на самом деле ясно, на этом. 599 00:26:19,370 --> 00:26:26,260 Так здесь код, который у нас есть, Int А равен 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 И каковы адреса, каковы указатели, которые указывают на A, B и C 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 Ой. 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 >> ANDI Пэн: Помните, в Операторы, в первую неделю, 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 ANDI Пэн: Да. 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 >> ANDI Пэн: амперсанд средства Вы собираетесь 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 >> ANDI Пэн: Ты опираясь на одну строку. 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 Также Эллиот воспитывался действительно, действительно хорошая точка. 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 И то, что указатель а, указатель на Б и указатель на C? 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 Хорошо. 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 ANDI Пэн: Что с? 696 00:34:48,610 --> 00:34:49,659 АУДИТОРИЯ: 5. 697 00:34:49,659 --> 00:34:50,770 ANDI Пэн: Ура. 698 00:34:50,770 --> 00:34:51,639 Хорошо. 699 00:34:51,639 --> 00:34:55,707 Что PA, PB, и компьютер? 700 00:34:55,707 --> 00:34:58,564 >> АУДИТОРИЯ: 000001 и 002? 701 00:34:58,564 --> 00:34:59,230 ANDI Пэн: Да. 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 >> ANDI Пэн: Как и восемь. 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 АУДИТОРИЯ: Бинго. 713 00:35:23,446 --> 00:35:25,350 >> ANDI Пэн: Убийство его. 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 Тогда в чем PB? 719 00:35:37,024 --> 00:35:37,940 АУДИТОРИЯ: [неразборчиво]. 720 00:35:37,940 --> 00:35:38,606 ANDI Пэн: Да. 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 ANDI Пэн: Это 100. 736 00:36:06,610 --> 00:36:07,795 Хорошо. 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 >> ANDI Пэн: Как насчет C? 740 00:36:11,335 --> 00:36:12,490 >> АУДИТОРИЯ: [неразборчиво]. 741 00:36:12,490 --> 00:36:14,530 >> ANDI Пэн: А как насчет указателей? 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 ANDI Пэн: Точно. 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 >> ANDI Пэн: ОК. 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 >> ANDI Пэн: Что о б? 758 00:36:45,870 --> 00:36:46,780 >> АУДИТОРИЯ: 100. 759 00:36:46,780 --> 00:36:47,620 >> ANDI Пэн: Да. 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 ANDI Пэн: Что б? 771 00:37:15,400 --> 00:37:17,920 АУДИТОРИЯ: 100. 772 00:37:17,920 --> 00:37:18,862 ANDI Пэн: Что с? 773 00:37:18,862 --> 00:37:19,993 АУДИТОРИЯ: 5. 774 00:37:19,993 --> 00:37:20,867 ANDI Пэн: Что год? 775 00:37:20,867 --> 00:37:22,775 АУДИТОРИЯ: амперсанд а. 776 00:37:22,775 --> 00:37:23,730 ANDI Пэн: PB? 777 00:37:23,730 --> 00:37:26,010 АУДИТОРИЯ: Амперсанд б. 778 00:37:26,010 --> 00:37:27,730 ANDI Пэн: А сложно, что компьютер сейчас? 779 00:37:27,730 --> 00:37:28,410 АУДИТОРИЯ: амперсанд а. 780 00:37:28,410 --> 00:37:29,034 ANDI Пэн: Ура. 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 Если у вас есть простые уравнения как плюс B, A раз с, это легко сделать. 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 >> Звезда шт равна б раз гр. 805 00:38:29,228 --> 00:38:30,144 >> АУДИТОРИЯ: Звезда PB? 806 00:38:30,144 --> 00:38:32,117 >> АУДИТОРИЯ: Звезда пб. 807 00:38:32,117 --> 00:38:32,825 ANDI Пэн: К сожалению? 808 00:38:32,825 --> 00:38:33,599 АУДИТОРИЯ: Звезда пб. 809 00:38:33,599 --> 00:38:34,390 ANDI Пэн: Звезда пб. 810 00:38:34,390 --> 00:38:35,100 О, мой плохой. 811 00:38:35,100 --> 00:38:38,647 Звезда PB равна б раз гр. 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 >> ANDI Пэн: 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 >> ANDI Пэн: Хорошо. 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 означает, что значение в pb-- 829 00:39:18,239 --> 00:39:19,030 ANDI Пэн: Точно. 830 00:39:19,030 --> 00:39:19,790 АУДИТОРИЯ: --which это б. 831 00:39:19,790 --> 00:39:20,581 ANDI Пэн: Точно. 832 00:39:20,581 --> 00:39:26,880 Так вот в нашей диаграмме, наша указатель PB фактически указывая на это право 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 >> ANDI Пэн: Да? 844 00:39:52,730 --> 00:39:56,000 >> АУДИТОРИЯ: С we've-- нет больше не амперсанд с, 845 00:39:56,000 --> 00:39:59,620 это значит амперсанд A перенаправить к тому же сейчас? 846 00:39:59,620 --> 00:40:00,520 >> ANDI Пэн: Да. 847 00:40:00,520 --> 00:40:01,582 Так-- 848 00:40:01,582 --> 00:40:03,540 АУДИТОРИЯ: Так стрелка вид только движется и-- 849 00:40:03,540 --> 00:40:04,030 ANDI Пэн: Так essentially-- 850 00:40:04,030 --> 00:40:05,405 АУДИТОРИЯ: --now мы не можем access-- 851 00:40:05,405 --> 00:40:08,387 ANDI Пэн: --когда мы разыменовать с 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 >> АУДИТОРИЯ: Поэтому мы не можем получить доступ к C больше. 859 00:40:19,480 --> 00:40:22,520 >> ANDI Пэн: Если у вас это точно Количество, можно получить доступ к его. 860 00:40:22,520 --> 00:40:23,260 Но нет. 861 00:40:23,260 --> 00:40:25,680 Мы не имеем указатель указывая на C больше. 862 00:40:25,680 --> 00:40:27,430 Я думаю, что если вы хотели повторно его открыть, вам 863 00:40:27,430 --> 00:40:30,390 будет создать еще указатель, который вновь указал на C 864 00:40:30,390 --> 00:40:32,856 или разыменовываются это и указал назад. 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 >> ANDI Пэн: Да? 878 00:41:07,530 --> 00:41:09,708 АУДИТОРИЯ: [неразборчиво] Окончательный одно-- [неразборчиво]. 879 00:41:09,708 --> 00:41:12,710 880 00:41:12,710 --> 00:41:15,770 >> ANDI Пэн: 50000? 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 >> ANDI Пэн: Да. 887 00:41:28,625 --> 00:41:30,620 100 раз в 100, который является 10000. 888 00:41:30,620 --> 00:41:32,020 Какой 10000. 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 ANDI Пэн: Может быть, это не так. 893 00:41:45,730 --> 00:41:49,514 АУДИТОРИЯ: Нет, нет, это не так. [Неразборчиво] указатель на C теперь указывает на a-- 894 00:41:49,514 --> 00:41:50,180 ANDI Пэн: Да. 895 00:41:50,180 --> 00:41:50,840 Он прав. 896 00:41:50,840 --> 00:41:56,477 >> АУДИТОРИЯ: --Оно на его на А равно times-- это значение с. 897 00:41:56,477 --> 00:41:59,560 ANDI Пэн: Можете ли вы сказать, что немного немного громче, так что все может слышать вас? 898 00:41:59,560 --> 00:42:04,879 АУДИТОРИЯ: Так указатель в C теперь указывает к тому, что указатель б до точки 899 00:42:04,879 --> 00:42:09,460 , целью которых и до сих пор, но 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 50000. 905 00:42:24,805 --> 00:42:32,860 Они вы переназначение, что то, что Пространство памяти в C is-- указатель на C 906 00:42:32,860 --> 00:42:34,510 указывает на которое является. 907 00:42:34,510 --> 00:42:38,460 Таким образом, вы переопределения быть 50000. 908 00:42:38,460 --> 00:42:40,210 ANDI Пэн: Она могла научить раздел для меня. 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 >> ANDI Пэн: Вы почти поймали, что. 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-- сожалению, указатель C отремонтирована к. 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 ANDI Пэн: Да. 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-- ОК. 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 Таким образом, вы увидите, как адрес C фактически становится 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 Таким образом, в лекции, когда Давида была мама равна равна мама, 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-- Int А б, 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 Все массив действительно 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 Я не думаю, что это на самом деле Вопрос но-- на английском языке, массив 1038 00:48:35,496 --> 00:48:37,448 равен 1, имеет смысл. 1039 00:48:37,448 --> 00:48:39,888 Мы, как, хорошо, во-первых. 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 ANDI Пэн: Да. 1043 00:48:48,690 --> 00:48:53,740 Поэтому на самом деле то, что я делаю здесь Я не обращается первый индекс. 1044 00:48:53,740 --> 00:48:57,930 Все, что я 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 >> ANDI Пэн: Это разыменовывает что означает он идет и на самом деле получает значение. 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 А потом в конце концов я должны остановить его, верно? 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 >> Все компьютер делает превращается что в том, что и итерации себя. 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 К сожалению, это было действительно, действительно плохо но-- да. 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 >> ANDI Пэн: Так Давид писал эта программа в лекции 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 >> ANDI Пэн: Точно. 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 И на самом деле С имеет функция, написанная называется 1099 00:51:18,130 --> 00:51:20,713 Строка Комп который на самом деле просто делает это для вас, чтобы вы не ' 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 >> ANDI Пэн: Вы не потому что мы действительно не заботятся 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 ANDI Пэн: Да. 1113 00:51:48,736 --> 00:51:51,950 Таким образом, в случае сравнения струны, я действительно не 1114 00:51:51,950 --> 00:51:54,207 равно, как много писем are-- Мне нужно сравнить 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 >> Так что Int. 1140 00:52:54,810 --> 00:52:58,580 An int-- сколько байт в памяти является 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 как являются ссылки друг друга, как они разыменования? 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 >> И так таНос, эта идея, что Давид вид быстро, кратко умалчивается 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 int-- Star 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-- все это С функция или оператор, 1283 01:00:03,930 --> 01:00:09,350 говорит вам, сколько байтов памяти делает определенный тип переменной принять. 1284 01:00:09,350 --> 01:00:11,150 Таким образом, в этом случае, размер в четыре Int. 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 ANDI Пэн: ОК. 1293 01:00:28,705 --> 01:00:29,246 Всего в порядке. 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 >> ANDI PENG: Нет 1298 01:00:35,878 --> 01:00:36,874 >> АУДИТОРИЯ: Это как настоящий thing-- 1299 01:00:36,874 --> 01:00:37,372 >> ANDI Пэн: Это настоящая код. 1300 01:00:37,372 --> 01:00:38,455 >> АУДИТОРИЯ: --мы можете использовать его. 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 ANDI Пэн: Размер приходит с С. 1304 01:00:41,751 --> 01:00:43,475 АУДИТОРИЯ: Это делает мою жизнь более счастливой. 1305 01:00:43,475 --> 01:00:45,550 ANDI Пэн: Да. 1306 01:00:45,550 --> 01:00:48,610 Так что, если вы ленивый программист как я вроде бываю, 1307 01:00:48,610 --> 01:00:50,402 Мне не нравится запоминания какой размер из Int 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 Хорошо. 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 ANDI Пэн: В образом, что мы можете использовать. 1379 01:03:59,570 --> 01:04:02,379 Вы можете хлопнуть, что в вашем ID, Вы можете запустить его и он будет работать. 1380 01:04:02,379 --> 01:04:02,920 АУДИТОРИЯ: ОК. 1381 01:04:02,920 --> 01:04:04,140 Так что реально? 1382 01:04:04,140 --> 01:04:05,580 >> ANDI Пэн: Это настоящая. 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 АУДИТОРИЯ: Нет 1388 01:04:16,012 --> 01:04:17,190 Я думаю что-- 1389 01:04:17,190 --> 01:04:18,213 >> ANDI Пэн: ОК. 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 >> ANDI Пэн: ОК. 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 >> ANDI Пэн: Так вы говорите первая линия или один здесь? 1403 01:04:45,130 --> 01:04:48,170 Вы говорите об этом один здесь? 1404 01:04:48,170 --> 01:04:50,910 >> Аудитория: PTR является разные вещи in-- 1405 01:04:50,910 --> 01:04:53,230 >> ANDI Пэн: Ну, так здесь то, что я на самом деле 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 Так вот у нас есть INT звезд PTR. 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 собираетесь хранить все, что получить INT дает вам в месте 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 и положить все, что получить целочисленные отдачу. 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 >> ANDI Пэн: Это происходит чтобы быть в куче. 1427 01:05:47,060 --> 01:05:48,768 >> АУДИТОРИЯ: И так, что будут доступны. 1428 01:05:48,768 --> 01:05:51,220 ANDI Пэн: Точно. 1429 01:05:51,220 --> 01:05:52,600 Хороший. 1430 01:05:52,600 --> 01:05:53,756 Хорошо. 1431 01:05:53,756 --> 01:05:59,289 >> АУДИТОРИЯ: Поэтому, когда мы свободно PTR на это Последним шагом, мы освобождая указатель 1432 01:05:59,289 --> 01:06:00,724 или мы освобождая блок? 1433 01:06:00,724 --> 01:06:01,390 ANDI Пэн: Да. 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 >> ANDI Пэн: Существуют ли целые? 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 >> ANDI Пэн: Нет, это не будет. 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 Всего в порядке. 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 удостоверьтесь, чтобы проверить, если вещи NULL, убедитесь, что свободной памяти, 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 ANDI Пэн: Это сохранен в том же каталог, ваша программа. 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 +1000 трубы ./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 из число, полученные от тех 1000 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 ANDI Пэн: Так труба на самом деле не рассчитывать в качестве аргумента командной строки 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 >> ANDI Пэн: Думайте об этом как просто-- что делает больше, чем морковь делать? 1558 01:11:26,534 --> 01:11:29,299 >> АУДИТОРИЯ: Это что-то ставит в следующей строке. 1559 01:11:29,299 --> 01:11:31,090 ANDI Пэн: Так что противоположность, что? 1560 01:11:31,090 --> 01:11:33,514 АУДИТОРИЯ: Это ставит следующий что в первую вещь. 1561 01:11:33,514 --> 01:11:34,180 ANDI Пэн: Да. 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 ANDI Пэн: К сожалению. 1573 01:12:01,230 --> 01:12:03,560 Повтори. 1574 01:12:03,560 --> 01:12:04,060 Эллиот. 1575 01:12:04,060 --> 01:12:06,560 >> АУДИТОРИЯ: Так что ставит Список номеров в находке. 1576 01:12:06,560 --> 01:12:07,540 >> ANDI Пэн: Да. 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 >> ANDI Пэн: Да. 1589 01:12:39,560 --> 01:12:41,480 >> АУДИТОРИЯ: Это вводит тех, инструкции в программе. 1590 01:12:41,480 --> 01:12:42,438 >> ANDI Пэн: Довольно много. 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 И так ваша игра, чтобы играть, вы просто-- мы просто положить, что в вашей программе. 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-- стандарт ввода / вывода 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-- Standard 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 Так довольно много г и ж являются два вещи, которые вы будете наиболее используя. 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 или FWRITE или 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-- Нейт explained--, что Valgrind было. 1685 01:16:59,180 --> 01:17:02,350 Все 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 И вы будете иметь одну папку называется БМП и другую папку 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 Файловый ввод / вывод. Вы собираетесь должны ознакомиться 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 , целью которых мы даем вам в качестве входных картина и ваш изменения размера 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 Таким образом, файл Слово имеет специальный символы перед, что 1766 01:20:50,530 --> 01:20:52,040 рассказать компьютер это файл Слово. 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 Все это программа, восстановить, это делаете, что если работать правильно, 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 >> Так как я хотел бы подойти эта проблема, мы 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 S Для печати 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