1 00:00:00,000 --> 00:00:02,670 >> [Музыкальная тема] 2 00:00:02,670 --> 00:00:11,834 3 00:00:11,834 --> 00:00:13,365 >> СПИКЕР 1: Привет, всем. 4 00:00:13,365 --> 00:00:14,365 Добро пожаловать в раздел. 5 00:00:14,365 --> 00:00:15,700 6 00:00:15,700 --> 00:00:18,700 Прекрасный день out-- поэтому, я Безусловно, есть только четыре из вас здесь 7 00:00:18,700 --> 00:00:21,180 и не наш обычный пакет. 8 00:00:21,180 --> 00:00:22,670 Я был болен в эти выходные. 9 00:00:22,670 --> 00:00:24,294 Так у меня нет Starburst для вас, ребята. 10 00:00:24,294 --> 00:00:26,400 И я могу начать кашлять ужасно на протяжении всего этого. 11 00:00:26,400 --> 00:00:27,790 Так что терпите меня. 12 00:00:27,790 --> 00:00:30,624 Я собираюсь действительно попробовать и через это во-первых, 13 00:00:30,624 --> 00:00:32,290 хотя, прежде чем я есть кашель атаку. 14 00:00:32,290 --> 00:00:33,410 15 00:00:33,410 --> 00:00:37,390 Но просто быть легко на меня в немного bit-- что все, что я прошу. 16 00:00:37,390 --> 00:00:39,370 17 00:00:39,370 --> 00:00:44,289 >> Таким образом, наша повестка дня раз сегодня просто reminder-- ваш тест на следующей неделе. 18 00:00:44,289 --> 00:00:46,830 Я сказал вам это на прошлой неделе, так это не поймать вас врасплох. 19 00:00:46,830 --> 00:00:47,954 Так что я напоминаю вам еще раз. 20 00:00:47,954 --> 00:00:49,180 На следующей неделе ваш тест. 21 00:00:49,180 --> 00:00:52,730 Для этого, на следующей неделе Раздел будет гораздо более 22 00:00:52,730 --> 00:00:55,180 of-- я постараюсь и работа в какой-то обзор. 23 00:00:55,180 --> 00:00:58,130 Так что, если вы, ребята, могли помогите мне, отправив меня 24 00:00:58,130 --> 00:01:00,990 вещи, которые вы чувствуете себя комфортно с, что вы беспокоитесь о, 25 00:01:00,990 --> 00:01:03,530 темы, которые вы хотели бы для мне, чтобы покрыть, что было бы здорово. 26 00:01:03,530 --> 00:01:05,740 Так что я могу попробовать и работать их в нашем разделе на следующей неделе 27 00:01:05,740 --> 00:01:11,540 или отправить дополнительный материал или преп что вы не могли бы получить в другом месте. 28 00:01:11,540 --> 00:01:12,150 >> Да! 29 00:01:12,150 --> 00:01:13,520 Другие люди идут! 30 00:01:13,520 --> 00:01:17,320 Я думал, я это сделал плохо в прошлом неделю, что никто не хочет вернуться? 31 00:01:17,320 --> 00:01:18,065 Мне страшно. 32 00:01:18,065 --> 00:01:18,892 33 00:01:18,892 --> 00:01:21,100 Так трех других вещей что мы собираемся перейти 34 00:01:21,100 --> 00:01:24,850 являются перенаправление, файловый ввод / вывод, и Затем указатели и динамическая память. 35 00:01:24,850 --> 00:01:29,160 Я уверен, что вы все супер взволнованы pointers-- любимая тема каждого, 36 00:01:29,160 --> 00:01:31,310 так просто понять. 37 00:01:31,310 --> 00:01:33,130 Я уверен, что вы, ребята, все получили, что, не так ли? 38 00:01:33,130 --> 00:01:39,510 >> Так обо всем по порядку, redirection-- это в основном просто способ 39 00:01:39,510 --> 00:01:42,920 контролировать, как вы вход вещи в вашей программе, 40 00:01:42,920 --> 00:01:44,606 как вы выводите вещи из вашей программы. 41 00:01:44,606 --> 00:01:46,980 Основные пути что вы, ребята были взаимодействуя с ним 42 00:01:46,980 --> 00:01:51,650 только через стандартный вывод с экрана печати здесь. 43 00:01:51,650 --> 00:01:55,940 Но есть способы pipe-- как мы видим здесь 44 00:01:55,940 --> 00:01:58,980 является одним из наших words-- рода из трубы, что информация 45 00:01:58,980 --> 00:02:02,850 или, что данные в файл из файла. 46 00:02:02,850 --> 00:02:05,820 Это просто разные способы получать вещи в вашей программе 47 00:02:05,820 --> 00:02:10,681 и из вашей программы, вместо того, просто печатать их на этом экране 48 00:02:10,681 --> 00:02:12,430 или ввода вещи из командной строки. 49 00:02:12,430 --> 00:02:13,760 50 00:02:13,760 --> 00:02:18,030 >> Итак, сначала один мало больше, чем вставки. 51 00:02:18,030 --> 00:02:22,085 Так output-- он просто печатает вывод в файл вместо экрана. 52 00:02:22,085 --> 00:02:23,620 53 00:02:23,620 --> 00:02:29,500 Так что если вы что-то, что печатный "Привет, мир!" к экрану, 54 00:02:29,500 --> 00:02:32,400 если вы поместите его вместо в output.text, что 55 00:02:32,400 --> 00:02:35,220 создает этот файл с именем output.text. 56 00:02:35,220 --> 00:02:38,550 И когда вы открываете его, это будет сказать "Привет, мир!" в там. 57 00:02:38,550 --> 00:02:41,410 Это может быть супер полезно если у вас есть тонна ошибок 58 00:02:41,410 --> 00:02:43,430 на самом деле, как мы видим в этом. 59 00:02:43,430 --> 00:02:46,810 Если вы делаете два каретки, это будет печатать сообщения об ошибках. 60 00:02:46,810 --> 00:02:52,090 >> Так что если у вас возникли проблемы с составление, он имеет много ошибок 61 00:02:52,090 --> 00:02:56,770 и вы погрязнуть в попытке для прокрутки в командной строке 62 00:02:56,770 --> 00:02:59,110 через все их, вы можете просто распечатать их в файл, 63 00:02:59,110 --> 00:03:02,130 открыть файл, так что вы может пролистать их легче. 64 00:03:02,130 --> 00:03:05,160 Я на самом деле используются, что много, когда я был отладки 65 00:03:05,160 --> 00:03:07,970 мои 181 psets для машинного обучения. 66 00:03:07,970 --> 00:03:10,000 Так, это может быть очень полезно в дальнейшем. 67 00:03:10,000 --> 00:03:18,370 Это также полезно, если у вас есть программа что, возможно, генерирует библиотеку 68 00:03:18,370 --> 00:03:20,430 или создать некоторый набор строк, и вы 69 00:03:20,430 --> 00:03:22,846 должны быть в состоянии видеть, что что генерирует их должным образом. 70 00:03:22,846 --> 00:03:23,860 71 00:03:23,860 --> 00:03:25,160 Это способ сделать это. 72 00:03:25,160 --> 00:03:28,280 >> Так что если Вы будете печатать их в файл, вам легче изучать их, не так ли? 73 00:03:28,280 --> 00:03:30,930 Против пытаясь прокрутить через командную строку. 74 00:03:30,930 --> 00:03:32,740 75 00:03:32,740 --> 00:03:35,820 А потом одна вещь обратить внимание является то, что с просто больше 76 00:03:35,820 --> 00:03:40,090 чем каретки, если вы пишете в файл, который уже exists-- 77 00:03:40,090 --> 00:03:44,990 так как если мы побежали это первый Время, мы положили его в output.text, 78 00:03:44,990 --> 00:03:49,970 а затем у нас был второй программы что напечатано это как программы два 79 00:03:49,970 --> 00:03:54,250 и сделал больше, чем в output.text, он перепишет that-- так 80 00:03:54,250 --> 00:03:56,715 переписать то, что было когда-либо в что файл с самого начала. 81 00:03:56,715 --> 00:03:57,720 82 00:03:57,720 --> 00:04:00,750 >> Так что, если вы хотите, чтобы добавить в файл, как мы видим, здесь, 83 00:04:00,750 --> 00:04:04,779 Вы просто делаете два больше, чем знаков. 84 00:04:04,779 --> 00:04:05,820 И это будет добавлять к нему. 85 00:04:05,820 --> 00:04:06,750 Это не будет перезаписывать его. 86 00:04:06,750 --> 00:04:09,770 Так что, если вам нужно работать с несколькими Программы и вид держать 87 00:04:09,770 --> 00:04:13,170 трек из того, что все они являются возвращаясь к вам в файле, 88 00:04:13,170 --> 00:04:14,190 это способ сделать это. 89 00:04:14,190 --> 00:04:17,231 Если вы не заботитесь, что в вашем файле и это позволило быть перезаписаны, 90 00:04:17,231 --> 00:04:19,204 Вы можете просто использовать один больше, чем. 91 00:04:19,204 --> 00:04:20,600 Имеет ли это смысл для всех? 92 00:04:20,600 --> 00:04:23,205 93 00:04:23,205 --> 00:04:31,140 >> АУДИТОРИЯ: Как точка слэш привет больше чем выход точка текста, как в два раза, 94 00:04:31,140 --> 00:04:34,030 это просто показывать только на выходе Точка текст второй time-- 95 00:04:34,030 --> 00:04:34,810 >> СПИКЕР 1: Право. 96 00:04:34,810 --> 00:04:40,450 Так что это будет в основном только полностью переписать то, что было там с самого начала. 97 00:04:40,450 --> 00:04:44,260 Если этот файл здесь, output.text уже 98 00:04:44,260 --> 00:04:48,230 существует, в основном все, что вы называете что снова с одной Большого 99 00:04:48,230 --> 00:04:51,920 чем вы можете просто думать об этом как, как он заменил файл. 100 00:04:51,920 --> 00:04:54,824 Например, когда вы сохраняете Слово документ, и вы сохраните как, 101 00:04:54,824 --> 00:04:57,365 и вы сохранением имени, и он полностью переписывает it-- 102 00:04:57,365 --> 00:04:58,680 это то же самое рода вещи. 103 00:04:58,680 --> 00:05:00,380 104 00:05:00,380 --> 00:05:03,550 Кто-нибудь есть какие-либо вопросы по просто вывод в файл? 105 00:05:03,550 --> 00:05:05,051 106 00:05:05,051 --> 00:05:05,550 Удивительный. 107 00:05:05,550 --> 00:05:11,440 >> Так, очевидно, если вы обратите стрелка направление, он может сделать вклад. 108 00:05:11,440 --> 00:05:13,090 109 00:05:13,090 --> 00:05:19,960 Поэтому, когда вы, ребята, были как Цезарь или Visioneer 110 00:05:19,960 --> 00:05:23,195 и вы должны были ввода-то, Вы имели аргумент командной строки 111 00:05:23,195 --> 00:05:24,960 что на самом деле вход он. 112 00:05:24,960 --> 00:05:27,410 Это еще один способ сделать это. 113 00:05:27,410 --> 00:05:30,520 Таким образом, вместо того, чтобы ждать для командной строки, 114 00:05:30,520 --> 00:05:33,800 как и когда вы попросили вашего сообщение Цезаря или Visioneer, 115 00:05:33,800 --> 00:05:36,490 если у вас есть текстовый файл что было сообщение, 116 00:05:36,490 --> 00:05:38,280 Вы можете просто набрать его в том, что. 117 00:05:38,280 --> 00:05:44,930 >> Так что, если бы это было, как точка слэш Цезаря 3 меньше, чем стрелка ввода текста, который 118 00:05:44,930 --> 00:05:47,240 Ваше сообщение, что будет работать нормально. 119 00:05:47,240 --> 00:05:51,310 120 00:05:51,310 --> 00:05:54,020 Когда ваша программа Цезарь фактически попросил ввода пользователя, 121 00:05:54,020 --> 00:05:57,360 это было бы уже есть, потому что вы набрали в этом файле. 122 00:05:57,360 --> 00:05:58,830 Это просто еще один способ. 123 00:05:58,830 --> 00:06:02,445 Просто обратная output-- просто вход для ваших данных. 124 00:06:02,445 --> 00:06:04,570 125 00:06:04,570 --> 00:06:06,680 >> И тогда последний из которых является труба. 126 00:06:06,680 --> 00:06:07,780 Таким образом, этот довольно прохладно. 127 00:06:07,780 --> 00:06:09,890 Потому что он позволяет взять выход один 128 00:06:09,890 --> 00:06:13,695 Программа и положил его в качестве вход в другую программу. 129 00:06:13,695 --> 00:06:15,250 130 00:06:15,250 --> 00:06:18,630 Я не знаю, если кто из вас играл с расшифровкой 131 00:06:18,630 --> 00:06:20,590 что CS50 могут иметь дал вам, но это было бы 132 00:06:20,590 --> 00:06:27,380 позволит вам взять несколько образцов подать, введите его в свой шифрования, 133 00:06:27,380 --> 00:06:30,350 а затем оттуда введите что в вашем расшифровки 134 00:06:30,350 --> 00:06:32,470 чтобы убедиться, что она оказалась такой же. 135 00:06:32,470 --> 00:06:34,050 Так что это вроде как трехходового петли. 136 00:06:34,050 --> 00:06:38,400 137 00:06:38,400 --> 00:06:39,423 Пойти на это. 138 00:06:39,423 --> 00:06:41,785 >> АУДИТОРИЯ: Если программы имеет несколько входов, 139 00:06:41,785 --> 00:06:47,646 есть ли способ, чтобы сказать ему, какой вход использовать текстовый файл или выход для? 140 00:06:47,646 --> 00:06:49,325 >> СПИКЕР 1: Она имеет несколько входов. 141 00:06:49,325 --> 00:06:52,190 142 00:06:52,190 --> 00:07:00,430 Что бы подать input-- когда это задаёте вопрос, что первый раз, это 143 00:07:00,430 --> 00:07:03,240 буду считать, я думаю, что это собирается трубы в весь файл. 144 00:07:03,240 --> 00:07:03,979 145 00:07:03,979 --> 00:07:07,145 Так что если у вас есть несколько входов, вы будет обжигающе в нескольких файлах. 146 00:07:07,145 --> 00:07:08,190 147 00:07:08,190 --> 00:07:12,390 Так что, если вы просите сообщений три раза в коде, 148 00:07:12,390 --> 00:07:15,230 Вы собираетесь положить в трех различных файлов. 149 00:07:15,230 --> 00:07:15,980 И это становится сумасшедшим. 150 00:07:15,980 --> 00:07:18,188 И вы не должны беспокоиться о том, что прямо сейчас. 151 00:07:18,188 --> 00:07:19,150 Но это идея. 152 00:07:19,150 --> 00:07:20,680 153 00:07:20,680 --> 00:07:26,822 >> Так что да, труба только выход один Программа использует вход в другую. 154 00:07:26,822 --> 00:07:27,665 Все там хорошо? 155 00:07:27,665 --> 00:07:28,565 156 00:07:28,565 --> 00:07:29,065 Прохладный. 157 00:07:29,065 --> 00:07:30,170 158 00:07:30,170 --> 00:07:30,932 Хорошо. 159 00:07:30,932 --> 00:07:32,890 Вы, вероятно, не будет иметь сделать слишком много с ним. 160 00:07:32,890 --> 00:07:35,670 Но вы должны понимать, способы вы можете использовать это. 161 00:07:35,670 --> 00:07:38,910 И есть случаи, что Вы, возможно, захотите использовать его. 162 00:07:38,910 --> 00:07:44,590 >> Так подать I / O-, я знаю, что ты saying-- мы привыкли читать с 163 00:07:44,590 --> 00:07:50,500 и писать в наш экран есть, который является стандартным в и стандартный вывод. 164 00:07:50,500 --> 00:07:54,370 И это то, что вы, ребята, были делать с начала класса здесь. 165 00:07:54,370 --> 00:07:58,220 Но вы также можете читать и записывать файлы, который все-файл I / O-, так вход подать, 166 00:07:58,220 --> 00:07:59,850 Выход все это означает. 167 00:07:59,850 --> 00:08:00,930 168 00:08:00,930 --> 00:08:04,360 Так что это в основном означает, что Вы можете хранить ваши данные сейчас. 169 00:08:04,360 --> 00:08:08,460 >> Когда вы просто распечатать его на Экран, это в основном ушли, не так ли? 170 00:08:08,460 --> 00:08:12,507 Как только вы сделаете "Hello Мир "и запустить" Привет, мир " 171 00:08:12,507 --> 00:08:14,090 он печатает "Hello World" на экран. 172 00:08:14,090 --> 00:08:16,370 Но вы не можете действительно сделать что-нибудь с ним оттуда. 173 00:08:16,370 --> 00:08:18,950 Если вы храните в тексте Файл, затем внезапно 174 00:08:18,950 --> 00:08:22,789 у вас есть эти данные, что вы позволили манипулировать или положить его в файл, 175 00:08:22,789 --> 00:08:24,080 или положить его в программу позже. 176 00:08:24,080 --> 00:08:26,370 177 00:08:26,370 --> 00:08:29,290 Одна из причин, почему мы делаем это просто 178 00:08:29,290 --> 00:08:31,560 как способ хранения данных для последующего использования. 179 00:08:31,560 --> 00:08:34,790 180 00:08:34,790 --> 00:08:37,279 >> У меня есть пару шагов здесь просто ходить через стандартный 181 00:08:37,279 --> 00:08:39,450 I / O. На первом этапе, вы нужно создать ссылку 182 00:08:39,450 --> 00:08:43,480 в файл с все колпачки ПОДАТЬ звезды файл. 183 00:08:43,480 --> 00:08:45,740 Так что создает указатель на файл. 184 00:08:45,740 --> 00:08:48,080 185 00:08:48,080 --> 00:08:49,650 Итак, вы хотите, чтобы открыть его. 186 00:08:49,650 --> 00:08:52,940 А вы говорите, в буквальном смысле, просто файл равен FOPEN. 187 00:08:52,940 --> 00:08:57,400 И это собирается вернуться указатель на файл, который вы только что открыли. 188 00:08:57,400 --> 00:08:59,610 189 00:08:59,610 --> 00:09:01,460 Я видел пару вас Парни в рабочее время. 190 00:09:01,460 --> 00:09:07,400 >> Но одна из вещей, является remember-- указатели 191 00:09:07,400 --> 00:09:10,409 может быть какой-то адрес или нулевым, не так ли? 192 00:09:10,409 --> 00:09:12,700 Если мы когда-нибудь случай, когда что-то может вернуться нуль, 193 00:09:12,700 --> 00:09:14,990 Что мы должны сделать, прежде, чем мы когда-либо использовать его? 194 00:09:14,990 --> 00:09:16,220 195 00:09:16,220 --> 00:09:19,000 Мы должны проверить, если это нуль или нет, не так ли? 196 00:09:19,000 --> 00:09:23,600 Потому что некоторые из вас, возможно, были Вопрос, где любой объект 197 00:09:23,600 --> 00:09:26,110 была возвращается в прорыве был нулевым. 198 00:09:26,110 --> 00:09:28,170 Вы пытались выполнить некоторая функция на нем. 199 00:09:28,170 --> 00:09:29,770 И ваш компьютер сайт нарушенными. 200 00:09:29,770 --> 00:09:30,725 Не так ли? 201 00:09:30,725 --> 00:09:33,640 Бьюсь об заклад, пару вас возможно, имели эту проблему. 202 00:09:33,640 --> 00:09:38,890 >> Так с FOPEN, FOPEN будет либо возвращает указатель на файл, 203 00:09:38,890 --> 00:09:41,200 или если что-то пойдет не так, он собирается вернуться нуль. 204 00:09:41,200 --> 00:09:45,980 Таким образом, вы всегда должны проверить что он не вернулся нуль 205 00:09:45,980 --> 00:09:47,880 прежде чем пытаться что-либо сделать. 206 00:09:47,880 --> 00:09:49,110 207 00:09:49,110 --> 00:09:51,974 Это как стандартный парадигмы что вы будете нуждаться здесь. 208 00:09:51,974 --> 00:09:54,390 Если есть все шансы, что что-то может вернуться нуль, 209 00:09:54,390 --> 00:09:56,590 проверить, чтобы убедиться, что его не, прежде чем продолжить. 210 00:09:56,590 --> 00:09:58,911 В противном случае, вы будете чтобы получить прекрасные ошибки сайта. 211 00:09:58,911 --> 00:10:00,410 И никто не любит иметь дело с теми. 212 00:10:00,410 --> 00:10:03,180 213 00:10:03,180 --> 00:10:06,410 >> Так как мы видим здесь, первый аргумент это только путь к файлу. 214 00:10:06,410 --> 00:10:09,380 Если этот файл не существует, он собирается создать файл. 215 00:10:09,380 --> 00:10:10,713 И это просто будет пустым. 216 00:10:10,713 --> 00:10:10,789 217 00:10:10,789 --> 00:10:13,080 И тогда второй аргумент является режим, который вы хотите. 218 00:10:13,080 --> 00:10:14,610 Хотим ли мы, чтобы читать из этого файла? 219 00:10:14,610 --> 00:10:15,560 Хотите написать от него? 220 00:10:15,560 --> 00:10:16,476 Хотите добавить? 221 00:10:16,476 --> 00:10:17,600 222 00:10:17,600 --> 00:10:20,670 Так на самом деле то, что я просто said-- если файл не существует 223 00:10:20,670 --> 00:10:23,400 и вы пытаетесь читать из это, он собирается бросить ошибку. 224 00:10:23,400 --> 00:10:26,890 Если файл name-- нравится, если file.text еще не существует 225 00:10:26,890 --> 00:10:29,250 и вы хотите написать к нему, это создаст 226 00:10:29,250 --> 00:10:33,110 пустой файл с именем file.text для вас. 227 00:10:33,110 --> 00:10:36,612 А если вы хотите добавить, Вы должны сделать то же самое. 228 00:10:36,612 --> 00:10:38,081 Имеет ли это смысл? 229 00:10:38,081 --> 00:10:40,580 Если вы пытаетесь читать из это файл, который еще не существует, 230 00:10:40,580 --> 00:10:41,590 это брошу ошибку. 231 00:10:41,590 --> 00:10:44,340 В противном случае, она будет создавать файл для вас сделать то, что вы хотите с ним. 232 00:10:44,340 --> 00:10:45,970 233 00:10:45,970 --> 00:10:46,470 Прохладный. 234 00:10:46,470 --> 00:10:47,510 235 00:10:47,510 --> 00:10:48,880 Теперь мы можем читать из файла. 236 00:10:48,880 --> 00:10:52,570 И это только отчасти происходит через различные функции 237 00:10:52,570 --> 00:10:58,980 что у нас есть для файла I / O. Это воля необходимо в PSET на этой неделе, 238 00:10:58,980 --> 00:11:00,505 если я правильно помню. 239 00:11:00,505 --> 00:11:02,880 Да, это абсолютно будет необходимо в PSET на этой неделе. 240 00:11:02,880 --> 00:11:04,260 241 00:11:04,260 --> 00:11:07,010 Так fgetc возвращает следующий символ. 242 00:11:07,010 --> 00:11:08,350 243 00:11:08,350 --> 00:11:10,300 fgets просто возвращает строку текста. 244 00:11:10,300 --> 00:11:11,790 245 00:11:11,790 --> 00:11:14,610 Это вернет ничего до Новая линия, и он сломается. 246 00:11:14,610 --> 00:11:15,950 247 00:11:15,950 --> 00:11:18,700 Так FREAD читает определенный количество байт и помещает их 248 00:11:18,700 --> 00:11:20,700 в массив, который что-то вы, возможно, 249 00:11:20,700 --> 00:11:25,485 хочу сделать с повторной размер-- может быть полезно. 250 00:11:25,485 --> 00:11:26,550 251 00:11:26,550 --> 00:11:29,290 >> Сколько людей читать PSET спецификации, кстати? 252 00:11:29,290 --> 00:11:30,980 253 00:11:30,980 --> 00:11:32,261 Хорошо. 254 00:11:32,261 --> 00:11:32,760 [Неразборчиво] 255 00:11:32,760 --> 00:11:35,380 256 00:11:35,380 --> 00:11:36,580 >> СПИКЕР 1: ОК. 257 00:11:36,580 --> 00:11:37,530 Хорошо. 258 00:11:37,530 --> 00:11:41,940 Определенно читать that-- это весело PSET. 259 00:11:41,940 --> 00:11:51,320 Вы добираетесь, чтобы восстановить удаленный память card-- очень интересно, когда он работает. 260 00:11:51,320 --> 00:11:54,100 Но определенно, начать читать что. 261 00:11:54,100 --> 00:11:56,280 Пошли разговоры со мной, если вам есть вопросы по этому поводу. 262 00:11:56,280 --> 00:11:59,290 >> Итак, как я уже говорил, FREAD считывает определенное количество байтов. 263 00:11:59,290 --> 00:12:01,340 264 00:12:01,340 --> 00:12:03,590 Вот некоторые произвольное число что вы собираетесь установить. 265 00:12:03,590 --> 00:12:05,990 266 00:12:05,990 --> 00:12:08,260 А потом FSEEK всего движения в определенном положении. 267 00:12:08,260 --> 00:12:11,150 Так, может быть, вы не заботитесь о следующих 10 байт. 268 00:12:11,150 --> 00:12:12,880 Вы просто хотите, чтобы пропустить вперед. 269 00:12:12,880 --> 00:12:14,030 Вы не заботитесь о них. 270 00:12:14,030 --> 00:12:16,280 Вы хотите читать, начиная с байта 11. 271 00:12:16,280 --> 00:12:18,252 FSEEK позволяет сделать это. 272 00:12:18,252 --> 00:12:20,710 Так что позволяет избирательно о том, что вы читаете. 273 00:12:20,710 --> 00:12:25,880 Потому fgetc, fgets и FREAD чтения с определенного места в файле. 274 00:12:25,880 --> 00:12:27,260 275 00:12:27,260 --> 00:12:35,090 >> Способ думать об этом, если это это наш файл, когда вы впервые открыть его, 276 00:12:35,090 --> 00:12:41,140 у вас есть эта должность в файл который начинается в начале. 277 00:12:41,140 --> 00:12:45,040 Всякий раз, когда вы звоните fgetc, fgetf или FREAD, 278 00:12:45,040 --> 00:12:48,875 он собирается начать с эта позиция маркера. 279 00:12:48,875 --> 00:12:51,340 280 00:12:51,340 --> 00:12:55,245 Допустим, вы просто хотите, чтобы прочитать это часть памяти здесь. 281 00:12:55,245 --> 00:12:56,300 282 00:12:56,300 --> 00:12:57,960 Вы не можете просто позвонить. 283 00:12:57,960 --> 00:13:02,430 Вы должны искать здесь а затем прочитать оттуда 284 00:13:02,430 --> 00:13:06,540 или читать, получает, или ЕОКП, в зависимости от того, что вы хотите. 285 00:13:06,540 --> 00:13:09,310 Так искать только позволяет пропустить участков памяти. 286 00:13:09,310 --> 00:13:11,590 И это только как вы можете пропустить вещи 287 00:13:11,590 --> 00:13:14,012 не читая их в свой буфер. 288 00:13:14,012 --> 00:13:15,470 Имеет ли это смысл для всех? 289 00:13:15,470 --> 00:13:21,110 290 00:13:21,110 --> 00:13:24,780 >> Очевидно, что есть Много параллельных here-- 291 00:13:24,780 --> 00:13:27,780 наш выход, или вход перенаправление, Вы читать и писать. 292 00:13:27,780 --> 00:13:31,800 Так fputc просто пишет характер в файл. 293 00:13:31,800 --> 00:13:33,655 fputs пишет линию. 294 00:13:33,655 --> 00:13:35,030 295 00:13:35,030 --> 00:13:37,420 Fprintf печатает формата вывода. 296 00:13:37,420 --> 00:13:41,190 Так что если у вас есть вкладки, или пространство, или еще много чего. 297 00:13:41,190 --> 00:13:44,180 А потом FWRITE пишет некоторые Массив байтов в файл. 298 00:13:44,180 --> 00:13:48,860 Так что это тот же самый путь FWRITE и FREAD аналогичны 299 00:13:48,860 --> 00:13:57,550 opposites-- fgets, fputs, и затем fputc и fgetc-- много 300 00:13:57,550 --> 00:14:00,710 из сумасшедших, быстрые вещи. 301 00:14:00,710 --> 00:14:05,300 >> Просто вид сохранить этот handy-- Вы будете иметь различные времена 302 00:14:05,300 --> 00:14:08,680 где вы просто хотите один символ за один раз. 303 00:14:08,680 --> 00:14:09,890 Может быть, вы хотите целую линию. 304 00:14:09,890 --> 00:14:14,320 С вашей словаре pset-- который находится в двух psets, 305 00:14:14,320 --> 00:14:19,690 Я считаю, мы даем вам всю словарь в текстовом формате 306 00:14:19,690 --> 00:14:22,252 который имеет каждое слово разделены линией. 307 00:14:22,252 --> 00:14:24,210 Так что, если вы хотели, чтобы прочитать одним словом в то время, 308 00:14:24,210 --> 00:14:31,769 Что вы могли бы использовать, если вы читаете и все они разделены на новых линиях, 309 00:14:31,769 --> 00:14:33,310 и вы просто хотите одно слово за раз? 310 00:14:33,310 --> 00:14:35,320 311 00:14:35,320 --> 00:14:36,040 >> Аудитория: Fgets 312 00:14:36,040 --> 00:14:36,748 >> СПИКЕР 1: Право. 313 00:14:36,748 --> 00:14:39,960 Fgets-- потому что возвращает все, что находится на одной линии. 314 00:14:39,960 --> 00:14:42,750 И если каждое слово является ее собственная линия, мы можем использовать fgets. 315 00:14:42,750 --> 00:14:44,511 316 00:14:44,511 --> 00:14:45,010 Прохладный. 317 00:14:45,010 --> 00:14:47,290 Имеет ли это смысл, все? 318 00:14:47,290 --> 00:14:48,020 Прохладный? 319 00:14:48,020 --> 00:14:50,020 Да, мы собираемся, чтобы добраться до самое интересное с указателями 320 00:14:50,020 --> 00:14:51,728 очень скоро, где вас добраться до займемся математикой. 321 00:14:51,728 --> 00:14:52,776 И это будет здорово. 322 00:14:52,776 --> 00:14:55,690 323 00:14:55,690 --> 00:14:57,740 >> Последнее step-- закрыть файл. 324 00:14:57,740 --> 00:15:01,090 Что так много вещей здесь, один из наших парадигм 325 00:15:01,090 --> 00:15:03,550 является ли она может вернуться нуль, проверьте нуль. 326 00:15:03,550 --> 00:15:06,160 Если вы откроете что-то, Вы бы лучше закрыть его. 327 00:15:06,160 --> 00:15:10,419 ОК, так что вы не сделали, пока вы не сделано, если вы не закрыли его. 328 00:15:10,419 --> 00:15:12,585 Вроде как это не более пока толстая дама поет. 329 00:15:12,585 --> 00:15:14,130 Вот как закрытие файла. 330 00:15:14,130 --> 00:15:16,860 331 00:15:16,860 --> 00:15:19,190 Как говорится здесь, просто чтобы повторить, всегда 332 00:15:19,190 --> 00:15:21,750 открыть файл, прежде чем вы чтения или записи на него. 333 00:15:21,750 --> 00:15:24,450 И всегда закрыть его, если вы открыли ее. 334 00:15:24,450 --> 00:15:25,460 Хорошо? 335 00:15:25,460 --> 00:15:25,960 Прохладный. 336 00:15:25,960 --> 00:15:26,835 >> Так вот пример. 337 00:15:26,835 --> 00:15:29,250 338 00:15:29,250 --> 00:15:34,330 Так tiny-- Я не знаю, если вы Ребята видно, что очень хорошо. 339 00:15:34,330 --> 00:15:36,805 Если бы мы только могли увеличить яркость как-то. 340 00:15:36,805 --> 00:15:40,430 341 00:15:40,430 --> 00:15:45,030 Позвольте мне на самом деле сделать это, если я могу. 342 00:15:45,030 --> 00:15:48,020 343 00:15:48,020 --> 00:15:51,470 ОК, вы, ребята, не могу действительно видеть, что вообще, может вы? 344 00:15:51,470 --> 00:15:52,905 Хорошо, что мы собираемся сделать это, то. 345 00:15:52,905 --> 00:16:35,094 346 00:16:35,094 --> 00:16:35,594 [Неразборчиво] 347 00:16:35,594 --> 00:16:56,670 348 00:16:56,670 --> 00:16:58,605 >> Я полагаю, это намного лучше, чтобы увидеть. 349 00:16:58,605 --> 00:17:17,330 350 00:17:17,330 --> 00:17:19,455 Может кто-нибудь увидеть, где мой мыши пошли в чем вопрос? 351 00:17:19,455 --> 00:17:22,837 Ах, вот оно is-- что борется! 352 00:17:22,837 --> 00:17:48,910 353 00:17:48,910 --> 00:17:49,520 >> Хорошо. 354 00:17:49,520 --> 00:17:53,845 В принципе, вы, ребята, должны иметь вид идеи о том, что это делает. 355 00:17:53,845 --> 00:17:56,740 356 00:17:56,740 --> 00:17:57,600 Это не идеально. 357 00:17:57,600 --> 00:17:58,851 358 00:17:58,851 --> 00:18:02,425 Но я предпочел бы объяснить, чем тратить больше времени, пытаясь отформатировать его должным образом. 359 00:18:02,425 --> 00:18:03,610 360 00:18:03,610 --> 00:18:07,280 В основном, как вы видите здесь, мы начинаем с открытым файлом. 361 00:18:07,280 --> 00:18:09,620 И у нас есть некоторые Файл базы данных, что мы 362 00:18:09,620 --> 00:18:12,300 открытие, что говорит, что это наши студенты. 363 00:18:12,300 --> 00:18:14,020 И мы собираемся писать в него. 364 00:18:14,020 --> 00:18:15,060 365 00:18:15,060 --> 00:18:17,720 Поэтому, конечно, вернуться нуль. 366 00:18:17,720 --> 00:18:19,650 Таким образом, мы должны проверить на нуль. 367 00:18:19,650 --> 00:18:22,930 И потом, если это не нуль, мы идем до конца. 368 00:18:22,930 --> 00:18:25,660 И, как вы видите, мы цикл по здесь. 369 00:18:25,660 --> 00:18:26,960 Есть студенты. 370 00:18:26,960 --> 00:18:30,520 Студенты является хэш определяется как три. 371 00:18:30,520 --> 00:18:34,060 И то, что мы делаем, мы печать в файл, не так ли? 372 00:18:34,060 --> 00:18:36,975 Так что же мы распечатки на наш файл? 373 00:18:36,975 --> 00:18:47,040 374 00:18:47,040 --> 00:18:48,906 >> Аудитория: баллы что в массиве? 375 00:18:48,906 --> 00:18:49,680 >> СПИКЕР 1: Да. 376 00:18:49,680 --> 00:18:50,980 Баллы, которые в array-- точно. 377 00:18:50,980 --> 00:18:53,050 Таким образом, мы открываем этот Файл базы данных, которые 378 00:18:53,050 --> 00:18:56,040 Я предполагаю, что это какая-то из базы данных марок. 379 00:18:56,040 --> 00:19:01,100 И мы просто распечатав оценки каждого студента к этому файлу. 380 00:19:01,100 --> 00:19:02,140 Прохладный? 381 00:19:02,140 --> 00:19:02,640 Хорошо. 382 00:19:02,640 --> 00:19:03,811 383 00:19:03,811 --> 00:19:04,310 Удивительный. 384 00:19:04,310 --> 00:19:05,100 Хорошо. 385 00:19:05,100 --> 00:19:06,950 Давайте вернемся to-- 386 00:19:06,950 --> 00:19:08,646 >> Зала: У меня короткий вопрос. 387 00:19:08,646 --> 00:19:11,570 Является Printf не в течение цикла? 388 00:19:11,570 --> 00:19:12,870 Вот только в если петли? 389 00:19:12,870 --> 00:19:14,370 СПИКЕР 1: Нет, это в течение цикла. 390 00:19:14,370 --> 00:19:16,150 391 00:19:16,150 --> 00:19:18,810 Я не могу видеть мою мышь очень хорошо здесь. 392 00:19:18,810 --> 00:19:21,359 Так что я с трудом Формат, который должным образом. 393 00:19:21,359 --> 00:19:22,525 Этот кронштейн, должны исчезнуть. 394 00:19:22,525 --> 00:19:23,610 395 00:19:23,610 --> 00:19:25,130 Он должен быть здесь. 396 00:19:25,130 --> 00:19:26,605 Это то, что у тебя в течение цикла. 397 00:19:26,605 --> 00:20:10,680 398 00:20:10,680 --> 00:20:11,180 Там. 399 00:20:11,180 --> 00:20:12,160 Теперь это довольно. 400 00:20:12,160 --> 00:20:16,720 Так вот, как это должно be-- исключением для этого последнего кронштейна, что я уволен. 401 00:20:16,720 --> 00:20:17,220 Хорошо. 402 00:20:17,220 --> 00:20:19,491 Имеет ли это смысл для всех? 403 00:20:19,491 --> 00:20:19,990 Хорошо. 404 00:20:19,990 --> 00:20:23,750 Мы собираемся двигаться дальше к следующей вещи then-- 405 00:20:23,750 --> 00:20:26,180 которые, на самом деле, вы собираетесь нуждаться, чтобы увидеть код. 406 00:20:26,180 --> 00:20:28,370 Так что я просто собираюсь скопировать, что более сейчас. 407 00:20:28,370 --> 00:20:31,500 408 00:20:31,500 --> 00:20:32,000 Хорошо. 409 00:20:32,000 --> 00:20:35,110 Так что я собираюсь показать вам, ребята этот код. 410 00:20:35,110 --> 00:20:38,240 И я хочу, чтобы вы попробовали и фигура то, что он должен делать. 411 00:20:38,240 --> 00:20:49,740 412 00:20:49,740 --> 00:20:52,480 >> Поэтому, учитывая, that-- занять минуту или около того. 413 00:20:52,480 --> 00:20:54,440 Попробуйте выяснить, что здесь происходит. 414 00:20:54,440 --> 00:21:58,840 415 00:21:58,840 --> 00:21:59,570 >> Любые идеи? 416 00:21:59,570 --> 00:22:08,180 417 00:22:08,180 --> 00:22:12,470 >> Мы знаем, что у нас есть по крайней мере два Аргументы в командной строке, не так ли? 418 00:22:12,470 --> 00:22:16,270 Я полагаю, одна из которых будет что [неразборчиво] из нашей программы является 419 00:22:16,270 --> 00:22:17,530 а затем что-то еще. 420 00:22:17,530 --> 00:22:19,980 Потому что, если [неразборчиво] меньше чем два, мы кричать на них. 421 00:22:19,980 --> 00:22:21,140 Не так ли? 422 00:22:21,140 --> 00:22:25,300 И от использования, это выглядит как это будет своего рода файл. 423 00:22:25,300 --> 00:22:26,260 Мы все согласны с этим? 424 00:22:26,260 --> 00:22:29,110 425 00:22:29,110 --> 00:22:31,570 Так что теперь, что петля делать? 426 00:22:31,570 --> 00:22:32,570 Что это переживает? 427 00:22:32,570 --> 00:22:35,000 428 00:22:35,000 --> 00:22:36,449 >> АУДИТОРИЯ: Все файлы. 429 00:22:36,449 --> 00:22:37,240 СПИКЕР 1: Точно. 430 00:22:37,240 --> 00:22:39,650 Это происходит через все файлы, которые мы вход там. 431 00:22:39,650 --> 00:22:40,720 432 00:22:40,720 --> 00:22:46,040 Таким образом, для каждого файла, это открывая некоторую строку там. 433 00:22:46,040 --> 00:22:47,560 Это открывает файл. 434 00:22:47,560 --> 00:22:48,060 Не так ли? 435 00:22:48,060 --> 00:22:49,140 436 00:22:49,140 --> 00:22:52,380 И это чтение из него. 437 00:22:52,380 --> 00:22:53,420 438 00:22:53,420 --> 00:22:55,540 Конечно, проверки, если это нуль. 439 00:22:55,540 --> 00:22:57,220 А потом он печатает. 440 00:22:57,220 --> 00:23:01,460 Если это нуль, это просто говорит нам что это не файл, который существует. 441 00:23:01,460 --> 00:23:04,290 Потому что помню, с читать наш файл должен существовать. 442 00:23:04,290 --> 00:23:04,810 Не так ли? 443 00:23:04,810 --> 00:23:06,870 С записи и добавить, Вы можете уйти с ним. 444 00:23:06,870 --> 00:23:08,970 Но с прочитанным, наш файл должен существовать. 445 00:23:08,970 --> 00:23:10,430 446 00:23:10,430 --> 00:23:13,330 >> И потом, если она действительно существует, Что мы здесь делаем? 447 00:23:13,330 --> 00:23:14,810 448 00:23:14,810 --> 00:23:15,780 Давайте просто начать здесь. 449 00:23:15,780 --> 00:23:18,815 Что это do-- этот первый символ. 450 00:23:18,815 --> 00:23:20,960 451 00:23:20,960 --> 00:23:21,790 Что он делает? 452 00:23:21,790 --> 00:23:24,100 Он получает один символ, не так ли? 453 00:23:24,100 --> 00:23:25,400 Так что это делаешь? 454 00:23:25,400 --> 00:23:26,775 Это становится первый символ. 455 00:23:26,775 --> 00:23:28,860 456 00:23:28,860 --> 00:23:30,200 Кто-нибудь знает EOF? 457 00:23:30,200 --> 00:23:31,170 >> АУДИТОРИЯ: Конец файла? 458 00:23:31,170 --> 00:23:32,680 >> СПИКЕР 1: Конец file-- точно. 459 00:23:32,680 --> 00:23:35,310 Так это будет идти через весь файл, не так ли? 460 00:23:35,310 --> 00:23:36,710 461 00:23:36,710 --> 00:23:40,780 И тогда это будет обновить с помощью получать каждый последующий характер. 462 00:23:40,780 --> 00:23:41,565 Не так ли? 463 00:23:41,565 --> 00:23:43,636 И что он делает? 464 00:23:43,636 --> 00:23:44,760 АУДИТОРИЯ: Ввод что in-- 465 00:23:44,760 --> 00:23:46,741 466 00:23:46,741 --> 00:23:49,170 >> СПИКЕР 1: Putchar принты в заставку. 467 00:23:49,170 --> 00:23:50,867 468 00:23:50,867 --> 00:23:51,950 [Неразборчиво] характер. 469 00:23:51,950 --> 00:23:54,300 А потом, когда он [неразборчиво] это закроет файл. 470 00:23:54,300 --> 00:23:57,370 >> АУДИТОРИЯ: Вы не нуждаетесь в [? еще? ?] 471 00:23:57,370 --> 00:23:59,005 >> СПИКЕР 1: Не обязательно. 472 00:23:59,005 --> 00:24:01,480 Я имею в виду, что это своего рода подразумевается в этом. 473 00:24:01,480 --> 00:24:06,780 Из-за этого возвращает, тем не менее, до тех пор, как это не поймать это, вы прекрасны. 474 00:24:06,780 --> 00:24:07,940 475 00:24:07,940 --> 00:24:10,250 Я имею в виду, что это, вероятно, хорошо практиковать делать в другом месте. 476 00:24:10,250 --> 00:24:15,755 Но еще не всегда Необходимо особенно 477 00:24:15,755 --> 00:24:17,610 если у вас есть что-то как возвращение, которое 478 00:24:17,610 --> 00:24:20,640 означает, что в этом случае, если он улавливает это, ваша программа будет в конечном 479 00:24:20,640 --> 00:24:21,850 и это никогда не добраться до этого. 480 00:24:21,850 --> 00:24:23,030 481 00:24:23,030 --> 00:24:29,190 Это больше для случая, когда вы находитесь не обязательно возвращаться что-то. 482 00:24:29,190 --> 00:24:31,370 Потому что, если это не было возвращения ничего, 483 00:24:31,370 --> 00:24:34,430 это будет означать, что если бы это было правдой, Остальные это будет по-прежнему работать. 484 00:24:34,430 --> 00:24:36,138 И в этом случае, вы хотели бы ложным. 485 00:24:36,138 --> 00:24:38,240 Если это возвращение, и окончание вашей программы, 486 00:24:38,240 --> 00:24:41,960 еще не надо все время, в зависимости от контекста. 487 00:24:41,960 --> 00:24:43,084 488 00:24:43,084 --> 00:24:44,375 Джейкоб, ты есть вопрос? 489 00:24:44,375 --> 00:24:46,100 АУДИТОРИЯ: Да. 490 00:24:46,100 --> 00:24:49,300 Так же fgetc получить следующий символ? 491 00:24:49,300 --> 00:24:50,734 Как увеличить персонаж? 492 00:24:50,734 --> 00:24:51,400 СПИКЕР 1: Да. 493 00:24:51,400 --> 00:24:52,774 Так fgetc получает следующий символ. 494 00:24:52,774 --> 00:24:54,140 495 00:24:54,140 --> 00:24:56,866 Вы можете думать об этом как C ++, в некотором смысле. 496 00:24:56,866 --> 00:24:58,350 >> АУДИТОРИЯ: Так что же EOF? 497 00:24:58,350 --> 00:25:00,877 >> СПИКЕР 1: EOF является конец файла. 498 00:25:00,877 --> 00:25:03,960 Это просто маркер, который позволяет узнать, что ты в конце файла. 499 00:25:03,960 --> 00:25:06,742 Так это будет распечатать на свой стандартный вывод. 500 00:25:06,742 --> 00:25:08,950 И тогда это будет закрыть файл, когда это делается. 501 00:25:08,950 --> 00:25:10,700 А потом пойдем в следующий файл, не так ли? 502 00:25:10,700 --> 00:25:12,660 Таким образом в общем, то что это программа? 503 00:25:12,660 --> 00:25:15,402 504 00:25:15,402 --> 00:25:16,090 >> [Неразборчиво] 505 00:25:16,090 --> 00:25:16,900 >> СПИКЕР 1: Да. 506 00:25:16,900 --> 00:25:18,770 Это просто выводит все там. 507 00:25:18,770 --> 00:25:23,270 Так что, если вы, ребята, когда-либо использовал КПП а затем имя какой-то file-- 508 00:25:23,270 --> 00:25:26,240 Я не знаю, если любой из вас есть когда-либо делал, что на вашем терминале. 509 00:25:26,240 --> 00:25:29,630 Но если вы когда-либо использовать Команда CAT-- C-A-T-- 510 00:25:29,630 --> 00:25:31,880 а затем все, что файл у вас есть there-- его 511 00:25:31,880 --> 00:25:37,260 печатает его на терминал, который может быть супер удобно для некоторых вещей. 512 00:25:37,260 --> 00:25:38,746 Я использую это много. 513 00:25:38,746 --> 00:25:40,120 Имеет ли это смысл для всех? 514 00:25:40,120 --> 00:25:41,480 515 00:25:41,480 --> 00:25:42,100 Прохладный? 516 00:25:42,100 --> 00:25:46,530 >> ОК так что ваша задача now-- либо самостоятельно или с людьми вокруг you-- 517 00:25:46,530 --> 00:25:54,930 это просто написать простую программу что будет просто написать "Hello, World!" 518 00:25:54,930 --> 00:25:56,255 в файл. 519 00:25:56,255 --> 00:26:00,215 >> [Неразборчиво] 520 00:26:00,215 --> 00:26:56,210 521 00:26:56,210 --> 00:26:57,040 >> [Неразборчиво] 522 00:26:57,040 --> 00:26:59,248 >> СПИКЕР 1: Я был бы, сделал Я делаю, что плохо на прошлой неделе? 523 00:26:59,248 --> 00:27:00,201 524 00:27:00,201 --> 00:27:01,492 Я не думаю, что это было то, что плохо. 525 00:27:01,492 --> 00:27:02,479 526 00:27:02,479 --> 00:27:03,520 Я рад, что вы все здесь. 527 00:27:03,520 --> 00:27:04,655 Это действительно делает меня счастливым. 528 00:27:04,655 --> 00:27:07,565 529 00:27:07,565 --> 00:27:10,160 Я девушка из простых удовольствий. 530 00:27:10,160 --> 00:27:11,688 Мне просто нравится, когда мой раздел посещает. 531 00:27:11,688 --> 00:27:13,830 532 00:27:13,830 --> 00:27:18,270 Так что я просто получаю это началось для вы, ребята, так что мы можем закодировать вместе. 533 00:27:18,270 --> 00:27:22,290 Я не люблю положить никого на место, если вы не хотите быть. 534 00:27:22,290 --> 00:27:26,486 535 00:27:26,486 --> 00:27:30,086 >> АУДИТОРИЯ: Для викторины, сделать мы должны написать программу? 536 00:27:30,086 --> 00:27:33,260 >> СПИКЕР 1: Вас могут попросить, чтобы писать простые программы вручную. 537 00:27:33,260 --> 00:27:35,940 538 00:27:35,940 --> 00:27:36,590 Ага. 539 00:27:36,590 --> 00:27:38,510 >> АУДИТОРИЯ: Викторина на следующей неделе, не так ли? 540 00:27:38,510 --> 00:27:40,108 >> СПИКЕР 1: Викторина в следующую среду. 541 00:27:40,108 --> 00:27:40,855 542 00:27:40,855 --> 00:27:43,730 Это означает, что есть прекрасный [? CSE?] сортировка партию после этого, который 543 00:27:43,730 --> 00:27:50,390 значит вы получите свои результаты назад, что night-- в какое время? 544 00:27:50,390 --> 00:27:50,890 Кто знает? 545 00:27:50,890 --> 00:27:51,973 Но это будет в тот вечер. 546 00:27:51,973 --> 00:28:02,020 547 00:28:02,020 --> 00:28:02,855 >> Хорошо. 548 00:28:02,855 --> 00:28:04,250 Как мы хотим начать этот? 549 00:28:04,250 --> 00:28:07,964 550 00:28:07,964 --> 00:28:09,630 Я дам вам hint-- начинается с этого. 551 00:28:09,630 --> 00:28:11,455 >> АУДИТОРИЯ: Вы должны открыть файл. 552 00:28:11,455 --> 00:28:12,250 >> СПИКЕР 1: Да. 553 00:28:12,250 --> 00:28:14,060 Так что же вы хотите назвать это? 554 00:28:14,060 --> 00:28:16,150 Вы просто хотите, чтобы называть его "файл"? 555 00:28:16,150 --> 00:28:17,480 Давайте сделаем это легко. 556 00:28:17,480 --> 00:28:26,752 Так fopen-- что наш Выход тест будет? 557 00:28:26,752 --> 00:28:36,130 Назовите это "Привет". 558 00:28:36,130 --> 00:28:37,810 И то, что наша режим? 559 00:28:37,810 --> 00:28:39,764 560 00:28:39,764 --> 00:28:41,055 Что мы делаем, чтобы этот файл? 561 00:28:41,055 --> 00:28:42,676 562 00:28:42,676 --> 00:28:43,500 >> АУДИТОРИЯ: Читать. 563 00:28:43,500 --> 00:28:44,401 564 00:28:44,401 --> 00:28:44,900 Написание. 565 00:28:44,900 --> 00:28:46,191 СПИКЕР 1: Мы пишем к нему. 566 00:28:46,191 --> 00:28:47,360 567 00:28:47,360 --> 00:28:47,860 Прекрасный. 568 00:28:47,860 --> 00:28:50,330 569 00:28:50,330 --> 00:28:52,860 Итак, у нас есть этот файл. 570 00:28:52,860 --> 00:28:54,920 571 00:28:54,920 --> 00:28:56,212 Что мы должны сделать? 572 00:28:56,212 --> 00:28:57,420 АУДИТОРИЯ: Проверьте, если это нуль. 573 00:28:57,420 --> 00:28:59,820 СПИКЕР 1: Проверьте, если это null-- точно. 574 00:28:59,820 --> 00:29:01,980 Вот что я хотел бы услышать. 575 00:29:01,980 --> 00:29:05,930 Это должно быть автоматическим, особенно в значительной степени с этого момента. 576 00:29:05,930 --> 00:29:07,530 577 00:29:07,530 --> 00:29:10,950 Если вы начинаете segfaulting, вы, вероятно, не проверял на нуль где-то. 578 00:29:10,950 --> 00:29:12,480 В девяти случаях из десяти, что это будет вашим ошибке. 579 00:29:12,480 --> 00:29:15,400 Так что, если вы могли бы просто получить в Привычка, всегда проверяйте, если это нуль, 580 00:29:15,400 --> 00:29:18,150 Ваша жизнь будет хороший и easy-- или проще. 581 00:29:18,150 --> 00:29:19,480 >> Так проверьте, чтобы увидеть, если это нуль. 582 00:29:19,480 --> 00:29:21,200 583 00:29:21,200 --> 00:29:24,820 Так что, если это не нулевая, которые это то, что челка равна 584 00:29:24,820 --> 00:29:26,784 означает: не null-- это действует. 585 00:29:26,784 --> 00:29:27,700 Что мы хотим сделать? 586 00:29:27,700 --> 00:29:29,750 587 00:29:29,750 --> 00:29:31,570 Мы просто хотим, чтобы распечатать в этом файле, не так ли? 588 00:29:31,570 --> 00:29:32,923 Так что мы собираемся использовать? 589 00:29:32,923 --> 00:29:34,092 >> АУДИТОРИЯ: Fprintf 590 00:29:34,092 --> 00:29:36,800 >> СПИКЕР 1: Fprintf-- прекрасный. 591 00:29:36,800 --> 00:29:38,150 592 00:29:38,150 --> 00:29:44,000 И fprintf принимает два arguments-- где это это происходит и что мы хотим распечатать. 593 00:29:44,000 --> 00:29:45,820 Так что первым? 594 00:29:45,820 --> 00:29:46,570 Где это происходит? 595 00:29:46,570 --> 00:29:47,490 >> АУДИТОРИЯ: Файл. 596 00:29:47,490 --> 00:29:48,785 >> СПИКЕР 1: Это собирается подать. 597 00:29:48,785 --> 00:29:49,784 598 00:29:49,784 --> 00:29:50,950 И то, что мы хотим напечатаны? 599 00:29:50,950 --> 00:29:52,900 600 00:29:52,900 --> 00:29:58,065 "Привет, мир!" 601 00:29:58,065 --> 00:29:58,565 Хорошо. 602 00:29:58,565 --> 00:30:03,670 У нас есть один последний thing-- еще один большой парадигма здесь. 603 00:30:03,670 --> 00:30:04,479 604 00:30:04,479 --> 00:30:05,145 АУДИТОРИЯ: Закрыть. 605 00:30:05,145 --> 00:30:05,853 СПИКЕР 1: Закрыть. 606 00:30:05,853 --> 00:30:09,990 607 00:30:09,990 --> 00:30:10,540 Там вы идете. 608 00:30:10,540 --> 00:30:13,384 >> АУДИТОРИЯ: это происходит если файл является недействительным? 609 00:30:13,384 --> 00:30:15,050 СПИКЕР 1: Нет, это, если это не нулевая. 610 00:30:15,050 --> 00:30:16,881 АУДИТОРИЯ: О, если это не-- ОК. 611 00:30:16,881 --> 00:30:21,728 612 00:30:21,728 --> 00:30:25,410 Для FOPEN а затем два аргумента, которые идут внутри, 613 00:30:25,410 --> 00:30:27,655 Что же первый аргумент означает снова? 614 00:30:27,655 --> 00:30:30,392 >> СПИКЕР 1: Аргумент так же, как имя файла 615 00:30:30,392 --> 00:30:31,350 что вы хотите пойти. 616 00:30:31,350 --> 00:30:36,020 Таким образом, после этого работает, вы бы есть файл с именем "привет" 617 00:30:36,020 --> 00:30:38,320 что было "Hello, World" в нем. 618 00:30:38,320 --> 00:30:38,820 Это все. 619 00:30:38,820 --> 00:30:39,500 Одно только название. 620 00:30:39,500 --> 00:30:42,685 621 00:30:42,685 --> 00:30:48,650 >> АУДИТОРИЯ: И так как это писать, Файл не должен существовать. 622 00:30:48,650 --> 00:30:49,675 Это то, что вы сказали? 623 00:30:49,675 --> 00:30:50,410 >> СПИКЕР 1: Право. 624 00:30:50,410 --> 00:30:50,910 Точно. 625 00:30:50,910 --> 00:30:53,110 626 00:30:53,110 --> 00:30:55,839 Если "Hello" в виде файла еще не существует, это 627 00:30:55,839 --> 00:30:58,380 собирается создать файл с именем Hello "и писать в него для вас. 628 00:30:58,380 --> 00:30:59,631 629 00:30:59,631 --> 00:31:03,610 >> АУДИТОРИЯ: Когда вы говорите программа для писали в файл, 630 00:31:03,610 --> 00:31:08,075 почему ты пишешь "файл", а не Имя файла и fprintf-- 631 00:31:08,075 --> 00:31:13,600 >> СПИКЕР 1: Потому что в этом случае у нас есть что большая FILE-- все в caps-- звезды, 632 00:31:13,600 --> 00:31:14,260 подать. 633 00:31:14,260 --> 00:31:17,370 Так что это указатель на файл что вы говорите. 634 00:31:17,370 --> 00:31:19,930 Это путь, который мы просто ссылаться на него. 635 00:31:19,930 --> 00:31:24,850 Таким образом, в этом случае, вы может думать о file-- ага, 636 00:31:24,850 --> 00:31:31,271 мы можем использовать this-- файл здесь относится к открытию "Привет" 637 00:31:31,271 --> 00:31:32,145 и позволяя ему писать. 638 00:31:32,145 --> 00:31:34,728 >> АУДИТОРИЯ: Можем ли мы поставить "Привет" вместо [? просто?] е файл? 639 00:31:34,728 --> 00:31:40,160 СПИКЕР 1: Нет, потому что "Привет" должен быть открыт и доступен для записи. 640 00:31:40,160 --> 00:31:41,820 641 00:31:41,820 --> 00:31:45,980 Файл вот как Обозначение что говорит ОК, мы 642 00:31:45,980 --> 00:31:49,190 есть эта file-- hello-- что мы смотрим на. 643 00:31:49,190 --> 00:31:50,680 Он был открыт. 644 00:31:50,680 --> 00:31:52,140 И мы собираемся писать в него. 645 00:31:52,140 --> 00:31:55,130 Если вы просто используете "Привет", что инкапсулируется в нем. 646 00:31:55,130 --> 00:31:56,846 Так это будет волноваться. 647 00:31:56,846 --> 00:31:58,590 648 00:31:58,590 --> 00:32:00,300 Я имею в виду, вы могли бы назвал его. 649 00:32:00,300 --> 00:32:03,960 Вы могли бы сделать файл, звезда, "Привет", равно, что. 650 00:32:03,960 --> 00:32:07,840 Но все дело в том, что вам нужен файл звезда указатель в порядке 651 00:32:07,840 --> 00:32:09,281 чтобы иметь возможность использовать эти функции. 652 00:32:09,281 --> 00:32:11,280 АУДИТОРИЯ: Не могли бы вы сделать Файл, звезда, файл, "Привет" 653 00:32:11,280 --> 00:32:13,113 или вы должны положить звезда файл, файл с ним? 654 00:32:13,113 --> 00:32:16,330 СПИКЕР 1: Вы могли сделать файл, звезда, "Привет". 655 00:32:16,330 --> 00:32:19,790 Вы можете изменить это, чтобы любое имя вы хотите. 656 00:32:19,790 --> 00:32:22,114 Это совершенно произвольно что это имя. 657 00:32:22,114 --> 00:32:23,179 658 00:32:23,179 --> 00:32:24,220 Вы можете назвать это ничего. 659 00:32:24,220 --> 00:32:25,501 660 00:32:25,501 --> 00:32:28,020 Назовите его полет спагетти, если вы хотели. 661 00:32:28,020 --> 00:32:29,690 >> АУДИТОРИЯ: Что такое "ш" в кавычках для? 662 00:32:29,690 --> 00:32:31,540 >> СПИКЕР 1: "ж" это просто режим. 663 00:32:31,540 --> 00:32:33,170 Так что мы пишем в этом файле. 664 00:32:33,170 --> 00:32:34,410 665 00:32:34,410 --> 00:32:35,320 Все хорошо? 666 00:32:35,320 --> 00:32:36,227 Ясно? 667 00:32:36,227 --> 00:32:36,981 Да. 668 00:32:36,981 --> 00:32:40,365 >> АУДИТОРИЯ: Так что, когда он пишет это подать, куда мы потом найти этот файл? 669 00:32:40,365 --> 00:32:43,820 >> СПИКЕР 1: Это будет в том же Каталог, который вы в настоящее время в. 670 00:32:43,820 --> 00:32:45,650 671 00:32:45,650 --> 00:32:48,880 Если вы находитесь в PSET трех и запуске этого, в вашем PSET 672 00:32:48,880 --> 00:32:52,600 три папки будет этот файл называется "Hello". 673 00:32:52,600 --> 00:32:53,160 Прохладный? 674 00:32:53,160 --> 00:32:53,757 Все хорошо? 675 00:32:53,757 --> 00:32:55,840 Я чувствую, что ты все получать его, и это здорово. 676 00:32:55,840 --> 00:32:57,290 677 00:32:57,290 --> 00:32:57,790 Хорошо. 678 00:32:57,790 --> 00:33:05,960 Итак, вернемся к моей слайд show-- Я люблю, когда все работает. 679 00:33:05,960 --> 00:33:08,674 ОК, pointers-- ли вы, ребята, рады? 680 00:33:08,674 --> 00:33:09,465 Указатели велики. 681 00:33:09,465 --> 00:33:11,581 682 00:33:11,581 --> 00:33:13,580 Они берут немного чтобы обернуть вокруг головы. 683 00:33:13,580 --> 00:33:15,288 Это мой второй год учебные указатели. 684 00:33:15,288 --> 00:33:16,850 И я думаю, что я, наконец, получил его. 685 00:33:16,850 --> 00:33:18,650 Так что, если вы боретесь, это нормально. 686 00:33:18,650 --> 00:33:19,940 687 00:33:19,940 --> 00:33:24,070 Как я уже говорил, рисования очень помогает с вещами в CS, 688 00:33:24,070 --> 00:33:27,400 столько, сколько я думаю, что люди, как правило, думать о, мы на компьютере. 689 00:33:27,400 --> 00:33:28,399 Мы должны просто код. 690 00:33:28,399 --> 00:33:30,190 No-- картинки рисования действительно поможет вам. 691 00:33:30,190 --> 00:33:32,773 И я действительно призываю вас подключиться к вашей воспитатель стороны 692 00:33:32,773 --> 00:33:35,010 и вывести мелки или маркеры и ничья. 693 00:33:35,010 --> 00:33:36,110 Потому что это поможет вам. 694 00:33:36,110 --> 00:33:39,380 И если вы видите меня в рабочее время, я будет таскать кипы бумаг 695 00:33:39,380 --> 00:33:41,580 с ручки рисования вещи. 696 00:33:41,580 --> 00:33:44,370 >> Так, особенно с pointers-- рисовать картинки. 697 00:33:44,370 --> 00:33:47,970 И я уверен, что мы на самом деле собираемся быть рисунок несколько фотографий здесь тоже. 698 00:33:47,970 --> 00:33:51,270 >> Так вы, ребята, все увидели Бинки, это круто claymation вещь. 699 00:33:51,270 --> 00:33:54,720 И мы думаем, что это действительно смешно, когда он взрывается в кучу куски. 700 00:33:54,720 --> 00:33:56,280 701 00:33:56,280 --> 00:33:57,755 Это какой-то комический для класса. 702 00:33:57,755 --> 00:34:02,140 703 00:34:02,140 --> 00:34:05,900 С [неразборчиво] это великое умение чтобы быть в состоянии контролировать память. 704 00:34:05,900 --> 00:34:10,090 И это одна из вещей, которые на самом деле делает это такой мощный язык. 705 00:34:10,090 --> 00:34:13,469 Но с приходит великая сила большая ответственность. 706 00:34:13,469 --> 00:34:16,230 И сумасшедшие вещи могут произойти если вы не будете осторожны. 707 00:34:16,230 --> 00:34:18,560 Так что, когда вы используете указатели, вы хотите сделать 708 00:34:18,560 --> 00:34:21,440 что вы понимаете именно то, что вы делаете. 709 00:34:21,440 --> 00:34:25,530 Надеюсь следующий немного Время поможет вам действительно понять 710 00:34:25,530 --> 00:34:27,850 указатели, как их использовать, и как ими манипулировать. 711 00:34:27,850 --> 00:34:29,170 712 00:34:29,170 --> 00:34:33,460 >> Так memory-- я уверен, что мы прежде не видел эту схему. 713 00:34:33,460 --> 00:34:38,540 Так что это всего лишь простой схема как вещи могут храниться память. 714 00:34:38,540 --> 00:34:43,145 Таким образом, вы в основном имеют эти Огромные массивы один байт блоков 715 00:34:43,145 --> 00:34:46,000 является то, что у нас есть here-- небольшое увеличивается на единицу каждый раз. 716 00:34:46,000 --> 00:34:51,810 Это в шестнадцатеричной [неразборчиво] так восемь-битные блоки. 717 00:34:51,810 --> 00:34:55,510 И каждый блок связан с какой-то шестнадцатеричного адреса. 718 00:34:55,510 --> 00:34:58,750 Так что, если вы когда-либо видели 0x, вот только notating 719 00:34:58,750 --> 00:35:00,670 что это адрес шестнадцатеричное. 720 00:35:00,670 --> 00:35:03,970 Вы можете предположить, что это означает некоторые адрес в памяти. 721 00:35:03,970 --> 00:35:06,935 Мы говорим о адресах памяти всякий раз, когда вы видите шестнадцатиричную. 722 00:35:06,935 --> 00:35:10,420 723 00:35:10,420 --> 00:35:14,630 >> У нас есть Интс являются переменными, поплавки переменные, которые хранят. 724 00:35:14,630 --> 00:35:16,260 Так Интс магазина целых чисел. 725 00:35:16,260 --> 00:35:17,430 Плывет магазин плавает. 726 00:35:17,430 --> 00:35:20,260 Таким образом, мы также указатели что адреса памяти и не храните. 727 00:35:20,260 --> 00:35:21,660 Это своего рода карт. 728 00:35:21,660 --> 00:35:24,240 Указатели исключительно для адресов памяти. 729 00:35:24,240 --> 00:35:25,780 730 00:35:25,780 --> 00:35:27,292 Так вот, как вашего типа там. 731 00:35:27,292 --> 00:35:29,550 732 00:35:29,550 --> 00:35:34,470 Ваш прибор является 32-разрядным, а это значит, что ваш адрес памяти четыре байта. 733 00:35:34,470 --> 00:35:37,830 Таким образом, любой указатель, что у вас есть Также будет четыре байта. 734 00:35:37,830 --> 00:35:43,200 Или же, если это четыре байта, память на четыре байта. 735 00:35:43,200 --> 00:35:44,790 Указатели магазин памяти. 736 00:35:44,790 --> 00:35:46,430 Таким образом, они четыре байта. 737 00:35:46,430 --> 00:35:48,460 Cool-- просто хочу, чтобы укрепить это. 738 00:35:48,460 --> 00:35:50,120 739 00:35:50,120 --> 00:35:52,220 >> Вы должны получить этот комикс сейчас. 740 00:35:52,220 --> 00:35:55,040 Я не знаю, как многие из вас являются XKCD поклонники, но я люблю XKCD. 741 00:35:55,040 --> 00:35:55,780 Здорово. 742 00:35:55,780 --> 00:35:57,290 743 00:35:57,290 --> 00:35:57,790 >> Хорошо. 744 00:35:57,790 --> 00:36:01,640 Так создания pointers-- как я уже сказал, это в значительной степени так же, как что-нибудь еще. 745 00:36:01,640 --> 00:36:02,930 У вас есть тип. 746 00:36:02,930 --> 00:36:04,050 У вас есть имя. 747 00:36:04,050 --> 00:36:04,810 Не так ли? 748 00:36:04,810 --> 00:36:10,410 Это то, что у нас там. [? Hex?] Звезда означает, что это указатель, 749 00:36:10,410 --> 00:36:12,250 а затем все, что вы хотите назвать это. 750 00:36:12,250 --> 00:36:15,770 Так тип представляет то, что вы можете хранить. 751 00:36:15,770 --> 00:36:16,850 752 00:36:16,850 --> 00:36:17,990 Хорошо? 753 00:36:17,990 --> 00:36:24,350 Таким же образом, что, если мы делаем целыми, мы знаем, что мы запоминания Int есть. 754 00:36:24,350 --> 00:36:25,990 755 00:36:25,990 --> 00:36:30,280 С указателем, его имеет адрес памяти. 756 00:36:30,280 --> 00:36:34,240 Но что это означает, that-- вот где рисунок собирается пригодится. 757 00:36:34,240 --> 00:36:36,170 758 00:36:36,170 --> 00:36:45,980 Таким образом, в данном случае, мы имеем некоторые value-- скажем четыре. 759 00:36:45,980 --> 00:36:49,306 Четыре находится на адрес одного. 760 00:36:49,306 --> 00:36:49,805 Хорошо? 761 00:36:49,805 --> 00:36:51,550 762 00:36:51,550 --> 00:36:56,170 >> Это первая в данном случае означает что это указатель 2x. 763 00:36:56,170 --> 00:36:56,740 Не так ли? 764 00:36:56,740 --> 00:36:57,628 Это какой-то указатель х. 765 00:36:57,628 --> 00:36:58,852 766 00:36:58,852 --> 00:37:00,940 х может быть что-то, что угодно. 767 00:37:00,940 --> 00:37:01,960 768 00:37:01,960 --> 00:37:05,130 Что бы ни х is-- сказать х четыре. 769 00:37:05,130 --> 00:37:07,280 Это собирается хранить адрес здесь память. 770 00:37:07,280 --> 00:37:12,260 Так INT, звезда, x-- это некоторые другие слот в memory-- 771 00:37:12,260 --> 00:37:13,590 кто знает, что это такое. 772 00:37:13,590 --> 00:37:15,430 Но это будет сохранять адрес здесь. 773 00:37:15,430 --> 00:37:27,040 Так это будет like-- в этом случае, что бы, 774 00:37:27,040 --> 00:37:32,630 хранится в 0x1-- независимо хранятся по адресу, который содержит наш указатель, 775 00:37:32,630 --> 00:37:35,280 должен совпадать с То, что мы назначены. 776 00:37:35,280 --> 00:37:40,330 Таким образом, на 0x1, в данном случае, это х. 777 00:37:40,330 --> 00:37:42,500 778 00:37:42,500 --> 00:37:49,340 Это может быть как никогда INT а мы используем это. 779 00:37:49,340 --> 00:37:52,950 >> Точно так же, если у нас есть другой 1г, независимо 780 00:37:52,950 --> 00:37:59,130 адрес хранится с у есть быть char-- же самое с г. 781 00:37:59,130 --> 00:38:05,840 Таким же образом, когда вы попытаться сделать intx равна 0,4, 782 00:38:05,840 --> 00:38:09,275 это будет кричать на вас и быть вроде нет, вы сказали, что вы хотели Int. 783 00:38:09,275 --> 00:38:10,525 Это, как предполагается, внутр. 784 00:38:10,525 --> 00:38:11,900 Перестаньте пытаться сделать это поплавок. 785 00:38:11,900 --> 00:38:14,150 >> Так что пусть все будет, что они хотят быть. 786 00:38:14,150 --> 00:38:15,159 787 00:38:15,159 --> 00:38:16,200 Пусть все будет себя. 788 00:38:16,200 --> 00:38:19,380 789 00:38:19,380 --> 00:38:23,450 Настолько большой, что просто независимо от типа указателя 790 00:38:23,450 --> 00:38:26,101 это, вот только что вы можете хранить там. 791 00:38:26,101 --> 00:38:26,600 Хорошо? 792 00:38:26,600 --> 00:38:27,910 793 00:38:27,910 --> 00:38:31,160 С практикой, как с на прошлой неделе, все 794 00:38:31,160 --> 00:38:32,817 Кажется, действительно отчасти абстрактный. 795 00:38:32,817 --> 00:38:34,150 Мы собираемся сделать некоторую практику. 796 00:38:34,150 --> 00:38:36,760 Следует иметь больше смысла. 797 00:38:36,760 --> 00:38:44,580 >> Так ссылки и dereferencing-- это Очень важно, чтобы эти прямые. 798 00:38:44,580 --> 00:38:46,630 Я до сих пор, чтобы обновить то и дело. 799 00:38:46,630 --> 00:38:48,450 И я, как ждут, какой я хочу? 800 00:38:48,450 --> 00:38:56,080 Так амперсанд фактически дают Вы ссылка или адрес. 801 00:38:56,080 --> 00:39:00,100 Таким образом, это возвращает адрес в память о котором переменная хранится. 802 00:39:00,100 --> 00:39:01,170 803 00:39:01,170 --> 00:39:07,020 Так это будет на самом деле вернуться к вам шестнадцатеричное, в то время как разыменования его 804 00:39:07,020 --> 00:39:10,641 на самом деле происходит, чтобы дать вам Данные, которые хранятся там. 805 00:39:10,641 --> 00:39:11,140 Хорошо? 806 00:39:11,140 --> 00:39:12,680 807 00:39:12,680 --> 00:39:16,060 Таким образом, мы будем смотреть на пример очень быстро, или на самом деле в следующий раз. 808 00:39:16,060 --> 00:39:18,050 809 00:39:18,050 --> 00:39:19,150 >> Хорошо. 810 00:39:19,150 --> 00:39:21,790 Таким образом, мы должны думать действительно тщательно об этом. 811 00:39:21,790 --> 00:39:23,860 Так вот у нас есть некоторое целое число х. 812 00:39:23,860 --> 00:39:26,485 Я собираюсь попробовать и сделать это из в меру своих способностей. 813 00:39:26,485 --> 00:39:30,230 814 00:39:30,230 --> 00:39:32,410 Таким образом, мы будем иметь этот слот х. 815 00:39:32,410 --> 00:39:35,850 816 00:39:35,850 --> 00:39:37,315 И это хранение пять. 817 00:39:37,315 --> 00:39:38,640 818 00:39:38,640 --> 00:39:40,090 Его адрес 0x4. 819 00:39:40,090 --> 00:39:41,920 820 00:39:41,920 --> 00:39:43,160 Прохладный? 821 00:39:43,160 --> 00:39:44,100 Все хорошо. 822 00:39:44,100 --> 00:39:45,470 >> Так что теперь у нас есть этот указатель. 823 00:39:45,470 --> 00:39:46,916 824 00:39:46,916 --> 00:39:47,990 Это было здесь. 825 00:39:47,990 --> 00:39:52,130 826 00:39:52,130 --> 00:39:57,560 И амперсанд дает нам адрес что-то. 827 00:39:57,560 --> 00:40:00,780 Так, в данном случае, это адрес х. 828 00:40:00,780 --> 00:40:01,875 Что такое адрес х? 829 00:40:01,875 --> 00:40:05,660 830 00:40:05,660 --> 00:40:12,590 04-- и этот указатель находится на 0x08. 831 00:40:12,590 --> 00:40:14,490 832 00:40:14,490 --> 00:40:14,990 Прохладный? 833 00:40:14,990 --> 00:40:16,570 834 00:40:16,570 --> 00:40:21,570 Таким образом, вы можете думать об этом Указатель, 04, просто указывает здесь. 835 00:40:21,570 --> 00:40:22,840 836 00:40:22,840 --> 00:40:25,740 И они называются указатели потому что, как мы получим больше в этом, 837 00:40:25,740 --> 00:40:28,450 Вы будете видеть, указывая на вещи. 838 00:40:28,450 --> 00:40:31,470 И один блок указывая на другой блок сделает намного больше смысла. 839 00:40:31,470 --> 00:40:32,760 840 00:40:32,760 --> 00:40:33,890 Так вот два. 841 00:40:33,890 --> 00:40:38,230 А то у нас некоторые копия, которая является что-- 0x0c. 842 00:40:38,230 --> 00:40:41,290 843 00:40:41,290 --> 00:40:43,420 И это будет разыменовать нашего указателя. 844 00:40:43,420 --> 00:40:46,790 >> Так что это говорю, Хорошо, вот наш указатель. 845 00:40:46,790 --> 00:40:53,090 Значение он хранит это 0x04, И что это говорит, это зайти на этот адрес 846 00:40:53,090 --> 00:40:54,300 и скажите мне, что это значит. 847 00:40:54,300 --> 00:40:55,520 848 00:40:55,520 --> 00:40:57,710 Так вот эффективно что эта стрелка делает. 849 00:40:57,710 --> 00:40:58,750 850 00:40:58,750 --> 00:41:01,280 Вы можете думать об этом как ваш звезды. 851 00:41:01,280 --> 00:41:05,410 Так хорошо, когда мы делаем звезду, это означает следовать. 852 00:41:05,410 --> 00:41:06,810 Перейти на этот адрес. 853 00:41:06,810 --> 00:41:11,430 И это в основном только после эта стрелка на этот кусок памяти. 854 00:41:11,430 --> 00:41:15,380 И дать нам то, что в нем, что на 5. 855 00:41:15,380 --> 00:41:18,840 Это почему наша копия равна 5. 856 00:41:18,840 --> 00:41:20,120 Имеет ли это смысл? 857 00:41:20,120 --> 00:41:22,769 Кто нужен мне, чтобы пройти ли что снова, или медленнее? 858 00:41:22,769 --> 00:41:24,560 Вы хотите, чтобы я через это еще раз? 859 00:41:24,560 --> 00:41:25,060 Хорошо. 860 00:41:25,060 --> 00:41:27,549 861 00:41:27,549 --> 00:41:28,840 Мы собираемся, чтобы перерисовать его снова. 862 00:41:28,840 --> 00:41:31,930 863 00:41:31,930 --> 00:41:37,205 Когда мы начинаем, мы все согласны с тем у нас есть некоторые кусок памяти это переменная 864 00:41:37,205 --> 00:41:40,890 х, что мы устанавливается равным 5. 865 00:41:40,890 --> 00:41:42,910 Мы не контролируем, где он находится в памяти. 866 00:41:42,910 --> 00:41:45,520 Так что это место является просто произвольно назначены. 867 00:41:45,520 --> 00:41:47,770 868 00:41:47,770 --> 00:41:48,731 Хорошо там? 869 00:41:48,731 --> 00:41:49,230 Хорошо. 870 00:41:49,230 --> 00:41:50,420 871 00:41:50,420 --> 00:41:53,330 Тогда мы инициализировать указатель на междунар. 872 00:41:53,330 --> 00:41:56,900 Вот почему он позволил, чтобы указать на х, потому что у нас есть Int в здесь. 873 00:41:56,900 --> 00:42:00,840 У нас есть еще один кусок памяти, потому что этот указатель 874 00:42:00,840 --> 00:42:03,485 является переменной как и все остальное. 875 00:42:03,485 --> 00:42:06,615 Это произвольно назначены некоторое пространство в памяти. 876 00:42:06,615 --> 00:42:07,630 877 00:42:07,630 --> 00:42:10,830 И то, что он хранит это адрес х. 878 00:42:10,830 --> 00:42:13,200 Ampersand означает адрес х. 879 00:42:13,200 --> 00:42:14,575 Так что это адрес х? 880 00:42:14,575 --> 00:42:19,179 881 00:42:19,179 --> 00:42:20,614 >> АУДИТОРИЯ: Это zero-- 882 00:42:20,614 --> 00:42:21,280 СПИКЕР 1: 0x04. 883 00:42:21,280 --> 00:42:24,350 884 00:42:24,350 --> 00:42:25,940 Так then-- последним. 885 00:42:25,940 --> 00:42:30,650 У нас есть некоторые copy-- снова просто еще одна переменная. 886 00:42:30,650 --> 00:42:32,520 Так давайте назначим некоторые произвольные места. 887 00:42:32,520 --> 00:42:35,260 888 00:42:35,260 --> 00:42:38,080 И мы разыменовать нашего указателя. 889 00:42:38,080 --> 00:42:42,490 Звезда означает пойти адрес хранится в моей указателя. 890 00:42:42,490 --> 00:42:44,480 Скажи мне, что есть. 891 00:42:44,480 --> 00:42:47,290 Так адрес, сохраненный в нашем указателя является 0x04. 892 00:42:47,290 --> 00:42:49,070 893 00:42:49,070 --> 00:42:51,310 Так мы идем по этому адресу. 894 00:42:51,310 --> 00:42:52,402 895 00:42:52,402 --> 00:42:54,590 Это указывает на этот адрес. 896 00:42:54,590 --> 00:42:57,481 Что внутри этого блока памяти? 897 00:42:57,481 --> 00:42:57,980 Это пять. 898 00:42:57,980 --> 00:42:59,210 899 00:42:59,210 --> 00:43:01,650 Так вот что мы назначаем нашу копию. 900 00:43:01,650 --> 00:43:03,430 901 00:43:03,430 --> 00:43:04,860 Все хорошо? 902 00:43:04,860 --> 00:43:05,360 Прохладный. 903 00:43:05,360 --> 00:43:07,010 904 00:43:07,010 --> 00:43:08,330 Again-- фотографий. 905 00:43:08,330 --> 00:43:19,750 906 00:43:19,750 --> 00:43:25,200 >> Так отслеживания значения here-- Я позволю вы, ребята, думаете об этом. 907 00:43:25,200 --> 00:43:26,550 908 00:43:26,550 --> 00:43:27,750 Мы можем сделать еще один снимок. 909 00:43:27,750 --> 00:43:31,260 Но я хочу, чтобы вы попробовали и причина через это самостоятельно в течение минуты. 910 00:43:31,260 --> 00:44:01,430 911 00:44:01,430 --> 00:44:04,149 >> Так как они не дают нам пример адрес, 912 00:44:04,149 --> 00:44:06,940 Я просто хочу сделать амперсанд x-- которые должны помочь вести его домой. 913 00:44:06,940 --> 00:44:07,950 Ampersand означает адрес. 914 00:44:07,950 --> 00:44:09,540 915 00:44:09,540 --> 00:44:12,360 >> Таким образом, в первой, все идти с первой линии. 916 00:44:12,360 --> 00:44:15,690 Некоторые х Сета five-- некоторые случайный слот в памяти. 917 00:44:15,690 --> 00:44:17,660 918 00:44:17,660 --> 00:44:23,200 Int звезда указатель равен по адресу х, не так ли? 919 00:44:23,200 --> 00:44:28,180 Создает Int звезда указатель этот блок, называет это указатель, 920 00:44:28,180 --> 00:44:30,650 и присваивает его адрес х. 921 00:44:30,650 --> 00:44:32,750 922 00:44:32,750 --> 00:44:34,230 Я ужасно амперсандами. 923 00:44:34,230 --> 00:44:36,460 924 00:44:36,460 --> 00:44:40,550 >> Теперь то, что мы делаем, мы говорим, ОК, разыменовать нашего указателя. 925 00:44:40,550 --> 00:44:42,760 Так мы идем нормально, что в нашей указателя? 926 00:44:42,760 --> 00:44:44,820 Это амперсанд х. 927 00:44:44,820 --> 00:44:49,400 Перейти к амперсанда х и переназначить его. 928 00:44:49,400 --> 00:44:51,620 929 00:44:51,620 --> 00:44:57,480 >> Так что теперь, амперсанд х будет 35. 930 00:44:57,480 --> 00:45:01,540 931 00:45:01,540 --> 00:45:05,174 Так в основном, если вы разыменования, вы идете в порядке. 932 00:45:05,174 --> 00:45:07,090 Вы собираетесь рисовать Фотографии, как это. 933 00:45:07,090 --> 00:45:09,423 Вы собираетесь рисовать ваши стрелы более, где это. 934 00:45:09,423 --> 00:45:16,030 Так что в этом слоте в памяти и либо дать мне что значение обратно, или изменить его. 935 00:45:16,030 --> 00:45:21,620 В этом случае, потому что мы на это Значение, мы присваиваем это будет 35. 936 00:45:21,620 --> 00:45:24,700 В то время как в прошлом один, если вы заметили, мы 937 00:45:24,700 --> 00:45:27,680 были присвоения, что было здесь что-то другое. 938 00:45:27,680 --> 00:45:30,450 939 00:45:30,450 --> 00:45:32,245 >> Таким образом, они имеют этот удивительный стол. 940 00:45:32,245 --> 00:45:35,000 941 00:45:35,000 --> 00:45:36,890 Это не так уж плохо. 942 00:45:36,890 --> 00:45:37,970 Вы, ребята, работать на нем. 943 00:45:37,970 --> 00:45:39,640 Я собираюсь сделать это на борту. 944 00:45:39,640 --> 00:45:41,306 Мы собираемся заполнить его вместе, хорошо? 945 00:45:41,306 --> 00:45:42,290 946 00:45:42,290 --> 00:45:45,530 Так захватить некоторые бумаги, захват партнером, начать работать. 947 00:45:45,530 --> 00:45:53,897 948 00:45:53,897 --> 00:45:55,605 Я собираюсь получить больше кусок мела. 949 00:45:55,605 --> 00:45:56,624 950 00:45:56,624 --> 00:45:58,150 Потому что это будет много. 951 00:45:58,150 --> 00:45:59,410 952 00:45:59,410 --> 00:45:59,910 Хорошо. 953 00:45:59,910 --> 00:48:08,567 954 00:48:08,567 --> 00:48:09,150 ПРОФЕССОР: ОК. 955 00:48:09,150 --> 00:48:11,599 956 00:48:11,599 --> 00:48:12,890 Начнем с первой строки. 957 00:48:12,890 --> 00:48:14,070 958 00:48:14,070 --> 00:48:16,970 Мы начнем там, то вы, ребята, может возможно работать через несколько больше. 959 00:48:16,970 --> 00:48:17,870 Хорошо. 960 00:48:17,870 --> 00:48:19,810 равна б раз с так, что это? 961 00:48:19,810 --> 00:48:21,420 962 00:48:21,420 --> 00:48:23,260 Это не вопрос с подвохом, я обещаю. 963 00:48:23,260 --> 00:48:24,440 >> СТУДЕНТ: 4 раз в 5. 964 00:48:24,440 --> 00:48:25,420 >> ПРОФЕССОР: 4 раз в 5. 965 00:48:25,420 --> 00:48:25,920 20. 966 00:48:25,920 --> 00:48:26,730 Так что б? 967 00:48:26,730 --> 00:48:27,921 968 00:48:27,921 --> 00:48:28,420 СТУДЕНТ: 4. 969 00:48:28,420 --> 00:48:30,204 970 00:48:30,204 --> 00:48:31,043 >> ПРОФЕССОР: И с? 971 00:48:31,043 --> 00:48:31,542 СТУДЕНТ: 5. 972 00:48:31,542 --> 00:48:32,083 ПРОФЕССОР: 5. 973 00:48:32,083 --> 00:48:35,960 И тогда это просто будет быть амперсанд а, амперсанд б, 974 00:48:35,960 --> 00:48:38,575 амперсанд с, не так ли? 975 00:48:38,575 --> 00:48:39,728 976 00:48:39,728 --> 00:48:40,596 Неплохо. 977 00:48:40,596 --> 00:48:42,081 Это достаточно просто. 978 00:48:42,081 --> 00:48:42,580 Хорошо. 979 00:48:42,580 --> 00:48:44,300 Так на следующий. 980 00:48:44,300 --> 00:48:48,725 А равно раз с, в случае кто не был знаком с этим. 981 00:48:48,725 --> 00:48:49,812 982 00:48:49,812 --> 00:48:53,300 Все ли знакомы со временем, равна? 983 00:48:53,300 --> 00:49:00,105 ОК, все это означает: это сокращение для равняется раз в. 984 00:49:00,105 --> 00:49:04,840 Вы также можете сделать это с разделением, с того, с вычитанием. 985 00:49:04,840 --> 00:49:12,130 Вы можете сделать равных, или плюс равна с означает равен плюс с, минус, равную 986 00:49:12,130 --> 00:49:15,190 C будет равна минус C. 987 00:49:15,190 --> 00:49:16,690 Это просто синтаксический сахар. 988 00:49:16,690 --> 00:49:19,380 989 00:49:19,380 --> 00:49:24,140 >> Так, в данном случае, равна а раз с даст нам то, что? 990 00:49:24,140 --> 00:49:25,910 991 00:49:25,910 --> 00:49:28,186 Опять же, не вопрос с подвохом. 992 00:49:28,186 --> 00:49:28,965 >> СТУДЕНТ: 100. 993 00:49:28,965 --> 00:49:29,300 >> ПРОФЕССОР: 100. 994 00:49:29,300 --> 00:49:30,383 Ли изменить что-нибудь еще? 995 00:49:30,383 --> 00:49:31,790 996 00:49:31,790 --> 00:49:32,290 Нет. 997 00:49:32,290 --> 00:49:37,380 998 00:49:37,380 --> 00:49:39,850 Может быть, я, наконец, получить лучше в моих амперсандами. 999 00:49:39,850 --> 00:49:42,047 >> СТУДЕНТ: ОК, извините, как ты 100? 1000 00:49:42,047 --> 00:49:42,630 ПРОФЕССОР: ОК. 1001 00:49:42,630 --> 00:49:46,594 Так равна раз с, так что раз с. 1002 00:49:46,594 --> 00:49:48,510 СТУДЕНТ: О, вы используете для previous-- 1003 00:49:48,510 --> 00:49:49,135 ПРОФЕССОР: Да. 1004 00:49:49,135 --> 00:49:51,450 Так что это наши последние значения. 1005 00:49:51,450 --> 00:49:53,990 Это то, что вы должны быть используя по мере продвижения вниз, ОК. 1006 00:49:53,990 --> 00:49:57,290 1007 00:49:57,290 --> 00:50:01,520 Так, б является единственным изменение вещь, не так ли? 1008 00:50:01,520 --> 00:50:02,910 Так что давайте заполнить все остальное. 1009 00:50:02,910 --> 00:50:09,110 1010 00:50:09,110 --> 00:50:11,330 B. Что б будет? 1011 00:50:11,330 --> 00:50:13,020 1012 00:50:13,020 --> 00:50:14,140 Быть или не быть. 1013 00:50:14,140 --> 00:50:18,680 1014 00:50:18,680 --> 00:50:20,240 Так что это делаешь? 1015 00:50:20,240 --> 00:50:21,605 Что такое звезда годовых делать? 1016 00:50:21,605 --> 00:50:23,280 1017 00:50:23,280 --> 00:50:25,350 >> СТУДЕНТ: Код для расположения годовых. 1018 00:50:25,350 --> 00:50:26,390 1019 00:50:26,390 --> 00:50:27,480 >> СТУДЕНТ: Нет, не совсем. 1020 00:50:27,480 --> 00:50:29,470 Таким образом, это является ссылкой d. 1021 00:50:29,470 --> 00:50:31,580 >> СТУДЕНТ: Так б вручается стоимость годовых. 1022 00:50:31,580 --> 00:50:37,340 >> ПРОФЕССОР: Да, так ра адрес, не так ли? 1023 00:50:37,340 --> 00:50:42,430 Так говорит пойти туда, где есть сохраняются и дать ему это значение. 1024 00:50:42,430 --> 00:50:43,884 Так что б? 1025 00:50:43,884 --> 00:50:44,425 СТУДЕНТ: 100. 1026 00:50:44,425 --> 00:50:46,534 ПРОФЕССОР: 100. 1027 00:50:46,534 --> 00:50:47,450 Идеальный. 1028 00:50:47,450 --> 00:50:49,879 Итак, рс что меняется. 1029 00:50:49,879 --> 00:50:51,170 Все остальное остается неизменным. 1030 00:50:51,170 --> 00:50:57,160 1031 00:50:57,160 --> 00:50:58,620 Что шт будет? 1032 00:50:58,620 --> 00:51:00,770 1033 00:51:00,770 --> 00:51:01,580 Простой назначение. 1034 00:51:01,580 --> 00:51:03,520 1035 00:51:03,520 --> 00:51:05,990 ПК равна годовых, и то, что в год? 1036 00:51:05,990 --> 00:51:07,049 >> СТУДЕНТ: амперсанд. 1037 00:51:07,049 --> 00:51:07,840 ПРОФЕССОР: Прекрасно. 1038 00:51:07,840 --> 00:51:09,490 1039 00:51:09,490 --> 00:51:10,740 Теперь мы получаем интересный. 1040 00:51:10,740 --> 00:51:12,310 1041 00:51:12,310 --> 00:51:15,230 Хорошо, давайте разберем этот вниз. 1042 00:51:15,230 --> 00:51:21,110 Во-первых, то, что б раз с, потому что это легкая часть этого, не так ли? 1043 00:51:21,110 --> 00:51:22,360 B раз с is-- 1044 00:51:22,360 --> 00:51:23,320 >> СТУДЕНТ: 500. 1045 00:51:23,320 --> 00:51:28,880 >> ПРОФЕССОР: Да, так то, что это один делает, 1046 00:51:28,880 --> 00:51:33,705 Если это звезда пб, что меняется? 1047 00:51:33,705 --> 00:51:35,320 1048 00:51:35,320 --> 00:51:37,242 >> СТУДЕНТ: Что в the-- 1049 00:51:37,242 --> 00:51:38,200 ПРОФЕССОР: Что в б? 1050 00:51:38,200 --> 00:51:41,340 СТУДЕНТ: Что в пространстве что рь указывает на. 1051 00:51:41,340 --> 00:51:43,406 ПРОФЕССОР: И рь указывает to-- 1052 00:51:43,406 --> 00:51:43,905 СТУДЕНТ: Б. 1053 00:51:43,905 --> 00:51:46,740 ПРОФЕССОР: В. Таким образом, единственный вещь изменение является б, верно. 1054 00:51:46,740 --> 00:51:50,800 Так б раз с, 500. 1055 00:51:50,800 --> 00:51:52,367 Так вот, какие изменения сейчас. 1056 00:51:52,367 --> 00:51:59,091 1057 00:51:59,091 --> 00:51:59,590 Прохладный. 1058 00:51:59,590 --> 00:52:00,340 1059 00:52:00,340 --> 00:52:00,840 Прекрасный. 1060 00:52:00,840 --> 00:52:01,905 Вы, ребята, делаете большое. 1061 00:52:01,905 --> 00:52:03,650 1062 00:52:03,650 --> 00:52:06,740 Ладно, разорвать этот один вниз. 1063 00:52:06,740 --> 00:52:08,050 1064 00:52:08,050 --> 00:52:09,630 С меняется, не так ли? 1065 00:52:09,630 --> 00:52:11,530 Таким образом, мы можем заполнить все остальное. 1066 00:52:11,530 --> 00:52:12,540 1067 00:52:12,540 --> 00:52:13,205 Посмотрим. 1068 00:52:13,205 --> 00:52:19,125 1069 00:52:19,125 --> 00:52:19,625 Хорошо. 1070 00:52:19,625 --> 00:52:21,420 1071 00:52:21,420 --> 00:52:24,740 Мы знаем, что с будет произведение двух чисел, не так ли? 1072 00:52:24,740 --> 00:52:26,290 1073 00:52:26,290 --> 00:52:27,980 Какие два числа, хотя? 1074 00:52:27,980 --> 00:52:28,970 >> СТУДЕНТ: и с? 1075 00:52:28,970 --> 00:52:31,930 >> ПРОФЕССОР: Так это Право на первой. 1076 00:52:31,930 --> 00:52:34,385 Таким образом, мы D ссылок Р, не так ли? 1077 00:52:34,385 --> 00:52:35,390 1078 00:52:35,390 --> 00:52:42,870 P из точек до, так что мы знаем, что это будет в 100 раз, что? 1079 00:52:42,870 --> 00:52:46,232 Времена, что делает шт точку? 1080 00:52:46,232 --> 00:52:47,410 1081 00:52:47,410 --> 00:52:48,740 Очки для. 1082 00:52:48,740 --> 00:52:55,038 Так в 100 раз 100 10000. 1083 00:52:55,038 --> 00:52:56,170 Значит ли это, имеет смысл? 1084 00:52:56,170 --> 00:52:57,640 1085 00:52:57,640 --> 00:52:58,200 Прохладный. 1086 00:52:58,200 --> 00:53:00,500 Главная стрейч, ребята, последний ряд. 1087 00:53:00,500 --> 00:53:01,190 Хорошо. 1088 00:53:01,190 --> 00:53:02,160 Что здесь меняется? 1089 00:53:02,160 --> 00:53:05,640 1090 00:53:05,640 --> 00:53:06,935 >> СТУДЕНТ: А. 1091 00:53:06,935 --> 00:53:09,435 ПРОФЕССОР: А. Идеальный, так все остальное может оставаться той же. 1092 00:53:09,435 --> 00:53:16,210 1093 00:53:16,210 --> 00:53:16,710 Хорошо. 1094 00:53:16,710 --> 00:53:17,970 А что такое? 1095 00:53:17,970 --> 00:53:23,610 1096 00:53:23,610 --> 00:53:26,060 Так что это раз и что? 1097 00:53:26,060 --> 00:53:27,120 Это звезда рь. 1098 00:53:27,120 --> 00:53:29,750 1099 00:53:29,750 --> 00:53:34,490 Так звезда рь означает вот рь, Pb точки б. 1100 00:53:34,490 --> 00:53:35,370 >> СТУДЕНТ: 500. 1101 00:53:35,370 --> 00:53:36,230 >> ПРОФЕССОР: 500. 1102 00:53:36,230 --> 00:53:39,236 Таким образом, мы имеем 500 раз 100. 1103 00:53:39,236 --> 00:53:41,758 Это 50000. 1104 00:53:41,758 --> 00:53:43,216 Вот так! 1105 00:53:43,216 --> 00:53:45,646 Посмотрите на это. 1106 00:53:45,646 --> 00:53:47,982 >> СТУДЕНТ: Почему мы должны & C для last-- 1107 00:53:47,982 --> 00:53:48,690 ПРОФЕССОР: Извините. 1108 00:53:48,690 --> 00:53:50,080 СТУДЕНТ: О, хорошо. 1109 00:53:50,080 --> 00:53:51,600 ПРОФЕССОР: Мое плохое. 1110 00:53:51,600 --> 00:53:52,890 Много письменной форме. 1111 00:53:52,890 --> 00:53:53,917 1112 00:53:53,917 --> 00:53:54,500 Все хорошо? 1113 00:53:54,500 --> 00:53:55,630 1114 00:53:55,630 --> 00:53:56,660 Не слишком плохо, не так ли? 1115 00:53:56,660 --> 00:53:58,490 Просто нужно немного в то время как на работу через. 1116 00:53:58,490 --> 00:54:01,080 Если вы разбить его, понять, что каждый неполный 1117 00:54:01,080 --> 00:54:03,197 имеет в виду to-- как со всем, что это, 1118 00:54:03,197 --> 00:54:05,780 yes-- разбить его на несколько проблемы, а затем рекомбинировать, 1119 00:54:05,780 --> 00:54:07,345 и вы можете сделать некоторые удивительные вещи. 1120 00:54:07,345 --> 00:54:08,970 Есть ответы, но мы сделали это. 1121 00:54:08,970 --> 00:54:10,324 1122 00:54:10,324 --> 00:54:11,115 Арифметика указателей. 1123 00:54:11,115 --> 00:54:13,961 1124 00:54:13,961 --> 00:54:14,460 Ах. 1125 00:54:14,460 --> 00:54:15,510 Мои руки все меловой. 1126 00:54:15,510 --> 00:54:17,970 Так сложения или вычитания INT регулирует указатель 1127 00:54:17,970 --> 00:54:21,890 размером от типа указателя. 1128 00:54:21,890 --> 00:54:22,940 1129 00:54:22,940 --> 00:54:28,390 Помните, как каждый тип имеет другой размер? 1130 00:54:28,390 --> 00:54:34,890 Так как двойной или долго долго восемь и интервал в четыре, но символ является одним. 1131 00:54:34,890 --> 00:54:38,360 >> Так что вы хотите сделать, is-- одну вещь, чтобы помнить 1132 00:54:38,360 --> 00:54:44,080 Просто, насколько ваш значение указателя на самом деле изменения 1133 00:54:44,080 --> 00:54:46,550 будет зависеть от тип указателя это. 1134 00:54:46,550 --> 00:54:50,820 1135 00:54:50,820 --> 00:54:51,820 Все хорошо с этим? 1136 00:54:51,820 --> 00:54:52,760 Могу ли я удалить его? 1137 00:54:52,760 --> 00:54:53,440 Мы хорошо? 1138 00:54:53,440 --> 00:54:53,940 Удивительный. 1139 00:54:53,940 --> 00:55:01,020 1140 00:55:01,020 --> 00:55:07,501 >> Так что, если у нас есть некоторые указатель that-- это будет be-- Я 1141 00:55:07,501 --> 00:55:08,834 собирается сделать это интервал указатель. 1142 00:55:08,834 --> 00:55:10,610 1143 00:55:10,610 --> 00:55:12,760 Он хранит это. 1144 00:55:12,760 --> 00:55:14,210 1145 00:55:14,210 --> 00:55:20,170 Если бы вы были сказать указатель плюс один, что он собирается сделать 1146 00:55:20,170 --> 00:55:23,420 будет он собирается обновить это по размеру в междунар 1147 00:55:23,420 --> 00:55:25,950 потому что это тип указателя это. 1148 00:55:25,950 --> 00:55:28,260 >> С С, все очень строгий и регламентированный. 1149 00:55:28,260 --> 00:55:29,440 1150 00:55:29,440 --> 00:55:35,260 Указатель INT собирается обновить путем объем пространства INT бы. 1151 00:55:35,260 --> 00:55:36,260 INT четыре байта. 1152 00:55:36,260 --> 00:55:37,650 1153 00:55:37,650 --> 00:55:39,060 >> Так что бы это превратится? 1154 00:55:39,060 --> 00:55:40,876 1155 00:55:40,876 --> 00:55:44,390 Ты просто добавив четыре на это. 1156 00:55:44,390 --> 00:55:50,040 Теперь указатель будет be-- ОК. 1157 00:55:50,040 --> 00:55:51,820 1158 00:55:51,820 --> 00:55:55,380 >> Так что, если это был символ, и мы сделали указатель плюс один, что бы это было сейчас? 1159 00:55:55,380 --> 00:56:00,300 1160 00:56:00,300 --> 00:56:03,330 Если это started-- притворяясь мы started-- сейчас это 0x08. 1161 00:56:03,330 --> 00:56:04,850 1162 00:56:04,850 --> 00:56:10,850 Давайте теперь сказать, что это было обугливается указатель, и мы добавили один. 1163 00:56:10,850 --> 00:56:11,850 Что бы это изменить, чтобы? 1164 00:56:11,850 --> 00:56:14,989 1165 00:56:14,989 --> 00:56:16,030 Сколько байт является символ? 1166 00:56:16,030 --> 00:56:16,680 >> АУДИТОРИЯ: Один. 1167 00:56:16,680 --> 00:56:17,304 >> СПИКЕР 1: Один. 1168 00:56:17,304 --> 00:56:18,309 АУДИТОРИЯ: Так 0x09. 1169 00:56:18,309 --> 00:56:19,600 СПИКЕР 1: Так что это будет девять. 1170 00:56:19,600 --> 00:56:22,571 1171 00:56:22,571 --> 00:56:23,820 Так что просто что-то, чтобы помнить. 1172 00:56:23,820 --> 00:56:28,340 Просто, когда вы добавляете один, это не добавив к нему один, если это не символ. 1173 00:56:28,340 --> 00:56:34,190 Это добавление сколько байты тип, что это, 1174 00:56:34,190 --> 00:56:36,960 Именно поэтому у нас есть это уравнение здесь. 1175 00:56:36,960 --> 00:56:40,190 Так что это INT раза больше от типа указателя. 1176 00:56:40,190 --> 00:56:42,850 1177 00:56:42,850 --> 00:56:44,730 >> Таким образом, мы имеем пример здесь. 1178 00:56:44,730 --> 00:56:47,250 1179 00:56:47,250 --> 00:56:54,430 у был назначен на эту стоимость, 0x4, когда мы сделали у плюс равен единице. 1180 00:56:54,430 --> 00:56:56,830 Что в ней, что в х, не меняется. 1181 00:56:56,830 --> 00:56:58,610 Что делает изменение это то, что в у. 1182 00:56:58,610 --> 00:57:04,980 Адрес хранится в у обновляются на четыре потому что есть четыре байта в междунар 1183 00:57:04,980 --> 00:57:06,097 и это интервал указатель. 1184 00:57:06,097 --> 00:57:07,290 1185 00:57:07,290 --> 00:57:07,790 >> Хорошо. 1186 00:57:07,790 --> 00:57:09,123 Так что теперь у нас есть другое упражнение. 1187 00:57:09,123 --> 00:57:11,140 1188 00:57:11,140 --> 00:57:13,500 Таким образом, вопрос, что будет печатать. 1189 00:57:13,500 --> 00:57:36,710 1190 00:57:36,710 --> 00:57:37,650 Любые идеи? 1191 00:57:37,650 --> 00:57:41,690 1192 00:57:41,690 --> 00:57:43,699 >> АУДИТОРИЯ: число символы в счастливой кошки? 1193 00:57:43,699 --> 00:57:44,490 СПИКЕР 1: Точно. 1194 00:57:44,490 --> 00:57:45,531 Так хотелось с вашей строке. 1195 00:57:45,531 --> 00:57:47,302 1196 00:57:47,302 --> 00:57:48,260 Все получают ли что? 1197 00:57:48,260 --> 00:57:49,509 Хотим ли мы, чтобы пройти через это? 1198 00:57:49,509 --> 00:57:50,300 1199 00:57:50,300 --> 00:57:52,010 >> Да, хорошо. 1200 00:57:52,010 --> 00:57:57,385 Итак, что мы имеем here-- я как это гораздо больше. 1201 00:57:57,385 --> 00:57:59,340 Я не должен [Неразборчиво] смехотворно. 1202 00:57:59,340 --> 00:58:01,690 >> Так у нас есть здесь строку, счастливые кошки. 1203 00:58:01,690 --> 00:58:02,950 Прекрасный. 1204 00:58:02,950 --> 00:58:05,080 У нас есть счетчик, который мы отслеживания. 1205 00:58:05,080 --> 00:58:11,430 Таким образом, мы имеем некоторую символ * указатель что просто устанавливается равной ул. 1206 00:58:11,430 --> 00:58:14,320 Что это проделывается это присвоения некоторое указатель 1207 00:58:14,320 --> 00:58:16,380 в начале вашей строке. 1208 00:58:16,380 --> 00:58:19,840 Потому что я уверен, что, как это было отмечено в докладе, 1209 00:58:19,840 --> 00:58:22,290 мы дали вам, ребята это тип данных называется строка. 1210 00:58:22,290 --> 00:58:29,070 >> Но на самом деле струны просто Массив of-- как символ *. 1211 00:58:29,070 --> 00:58:32,330 Это указатель на кучу персонажей которые являются смежными в памяти. 1212 00:58:32,330 --> 00:58:33,680 1213 00:58:33,680 --> 00:58:36,280 Так что это просто устанавливает его равна любой строки 1214 00:58:36,280 --> 00:58:38,980 идентифицируется где его первый символ. 1215 00:58:38,980 --> 00:58:42,710 Так что это просто установив некоторую точку равна начало строки. 1216 00:58:42,710 --> 00:58:44,130 Все там хорошо? 1217 00:58:44,130 --> 00:58:44,960 Прохладный. 1218 00:58:44,960 --> 00:58:49,840 >> Так что это разыменования наш указатель. 1219 00:58:49,840 --> 00:58:53,760 Так что на самом деле происходит в дать нам какое-то значение в здесь, 1220 00:58:53,760 --> 00:58:55,610 в нашей строки, что мы говорим о. 1221 00:58:55,610 --> 00:58:58,342 И мы говорим, пока это не пустой терминатор. 1222 00:58:58,342 --> 00:59:00,550 Так продолжать идти, пока вы не получите к концу строки. 1223 00:59:00,550 --> 00:59:02,180 1224 00:59:02,180 --> 00:59:04,190 Обновите указатель на один. 1225 00:59:04,190 --> 00:59:09,250 Так г, он будет обновлять с помощью одного каждый раз, потому что это символ, 1226 00:59:09,250 --> 00:59:09,820 символ *. 1227 00:59:09,820 --> 00:59:10,930 1228 00:59:10,930 --> 00:59:12,340 >> Так это будет проходить. 1229 00:59:12,340 --> 00:59:13,290 Это собирается обновить. 1230 00:59:13,290 --> 00:59:16,705 Так впервые в этом бежит, это будет здесь, в ч. 1231 00:59:16,705 --> 00:59:17,590 Это собирается обновить. 1232 00:59:17,590 --> 00:59:18,185 >> Это будет. 1233 00:59:18,185 --> 00:59:21,310 Это будет р, у, и так далее и тому подобное. 1234 00:59:21,310 --> 00:59:22,300 Мы будем обновлять счетчик. 1235 00:59:22,300 --> 00:59:26,160 Когда он достигает конца, его просто печатает, как далеко это стало. 1236 00:59:26,160 --> 00:59:27,550 1237 00:59:27,550 --> 00:59:28,050 Да. 1238 00:59:28,050 --> 00:59:31,475 >> АУДИТОРИЯ: Так это рассчитывает пространство как один, не так ли? 1239 00:59:31,475 --> 00:59:31,974 Хорошо. 1240 00:59:31,974 --> 00:59:34,294 1241 00:59:34,294 --> 00:59:35,222 >> СПИКЕР 1: Думайте так. 1242 00:59:35,222 --> 00:59:36,830 Это что, question-- 1243 00:59:36,830 --> 00:59:37,746 >> АУДИТОРИЯ: [неразборчиво]. 1244 00:59:37,746 --> 00:59:37,968 1245 00:59:37,968 --> 00:59:38,884 >> СПИКЕР 1: Не беспокойтесь. 1246 00:59:38,884 --> 00:59:39,720 1247 00:59:39,720 --> 00:59:42,736 Это я делаю это. 1248 00:59:42,736 --> 00:59:47,710 Ладно, так одно я понять, что с массивом, 1249 00:59:47,710 --> 00:59:51,736 Вы также можете рассматривать его как указатель, потому что массивы являются просто 1250 00:59:51,736 --> 00:59:52,860 непрерывные пятна памяти. 1251 00:59:52,860 --> 00:59:53,970 1252 00:59:53,970 --> 00:59:56,380 >> Таким образом, вы можете относиться к нему так же. 1253 00:59:56,380 --> 00:59:59,000 Вы можете управлять им с указателями, тоже. 1254 00:59:59,000 --> 01:00:04,770 Так а не делать, в этом Дело, аналогичная вещь 1255 01:00:04,770 --> 01:00:07,490 будет массив 0 равен 1. 1256 01:00:07,490 --> 01:00:08,760 1257 01:00:08,760 --> 01:00:15,210 >> Но таким же образом, что Строка определяется 1258 01:00:15,210 --> 01:00:18,740 к началу где его первый символ, 1259 01:00:18,740 --> 01:00:22,270 Массив определяется где ее первый элемент. 1260 01:00:22,270 --> 01:00:25,120 Потому что мы знаем, что мы гарантируется, что эти 1261 01:00:25,120 --> 01:00:27,985 собираются быть непрерывным блоки памяти. 1262 01:00:27,985 --> 01:00:29,360 Это то, что позволяет нам делать это. 1263 01:00:29,360 --> 01:00:31,193 Мы знаем, что они непрерывно блоки памяти. 1264 01:00:31,193 --> 01:00:32,230 1265 01:00:32,230 --> 01:00:36,500 >> Таким образом, в данном случае, путем разыменования просто массив, который говорит нам: 1266 01:00:36,500 --> 01:00:40,800 ОК, перейдите к началу ваш массив, который находится здесь. 1267 01:00:40,800 --> 01:00:42,640 Таким образом, вы можете установить его равным единице. 1268 01:00:42,640 --> 01:00:48,610 И в этом случае, независимо от вашего массива тип, когда вы обновите его одним, 1269 01:00:48,610 --> 01:00:50,830 вот только как обновление это к следующему индексу. 1270 01:00:50,830 --> 01:00:52,760 1271 01:00:52,760 --> 01:00:56,360 Вы можете сделать это, потому что вы знаю, что в вашем массиве. 1272 01:00:56,360 --> 01:00:59,770 Так что не знает, сколько в обновить указатель на, 1273 01:00:59,770 --> 01:01:02,925 какой адрес, чтобы обновить его до так что вы в следующем временном интервале. 1274 01:01:02,925 --> 01:01:04,740 1275 01:01:04,740 --> 01:01:09,400 >> Так что это просто другой способ писать массив 0 равен 1, 1276 01:01:09,400 --> 01:01:15,114 Массив 1 равна 2, массив Кронштейн 2 равен 3. 1277 01:01:15,114 --> 01:01:16,780 Это просто еще один способ думать об этом. 1278 01:01:16,780 --> 01:01:19,600 Потому что они являются непрерывными блоки в памяти, 1279 01:01:19,600 --> 01:01:21,830 Вы можете обратиться к ним либо массивом notation-- 1280 01:01:21,830 --> 01:01:24,390 который я лично найти easier-- но, может быть, 1281 01:01:24,390 --> 01:01:27,347 Вы должны работать с ним строго по адресам памяти. 1282 01:01:27,347 --> 01:01:28,930 И это, как вы сделали бы это. 1283 01:01:28,930 --> 01:01:30,630 1284 01:01:30,630 --> 01:01:32,630 Вид больше как круто, что вы могли бы сделать 1285 01:01:32,630 --> 01:01:35,213 по сравнению с возможно не то, что вы находитесь на самом деле происходит в реализации. 1286 01:01:35,213 --> 01:01:36,960 1287 01:01:36,960 --> 01:01:38,630 >> Я использую его в 61. 1288 01:01:38,630 --> 01:01:41,710 Вы, ребята, наверное, не нужно беспокоиться об этом слишком много. 1289 01:01:41,710 --> 01:01:43,693 Но если вы заинтересованы, взять 61 в следующем году. 1290 01:01:43,693 --> 01:01:45,269 1291 01:01:45,269 --> 01:01:46,560 Мы на финишной прямой, ребята. 1292 01:01:46,560 --> 01:01:47,510 Я знаю, что это долго. 1293 01:01:47,510 --> 01:01:50,570 1294 01:01:50,570 --> 01:01:58,880 Динамический Allocation-- памяти поэтому мы знаем, что один 1295 01:01:58,880 --> 01:02:01,790 вещей, когда мы говорили во время наш первый раздел вместе, 1296 01:02:01,790 --> 01:02:04,560 мы смотрели на своп Функция, где это было 1297 01:02:04,560 --> 01:02:08,010 выходит за рамки нашей основной функции. 1298 01:02:08,010 --> 01:02:14,370 И мы проходили в этих значений что были эффективно копии. 1299 01:02:14,370 --> 01:02:20,570 >> И как только своп закончил выполняется, он просто оставил пачку. 1300 01:02:20,570 --> 01:02:22,830 Помните, у нас есть стек рамки для подкачки. 1301 01:02:22,830 --> 01:02:26,070 Он оставляет, и те, Значения выйти с ним. 1302 01:02:26,070 --> 01:02:27,050 И они ушли. 1303 01:02:27,050 --> 01:02:28,615 Мы ничего не могли сделать, с ними и нам было грустно 1304 01:02:28,615 --> 01:02:29,989 потому что мы не можем поменять наши ценности. 1305 01:02:29,989 --> 01:02:31,070 1306 01:02:31,070 --> 01:02:36,560 >> Но с C, как я уже говорил, вам есть много власти над памятью. 1307 01:02:36,560 --> 01:02:43,310 Так что вы можете сделать, это вы можете выделить вещи в куче здесь 1308 01:02:43,310 --> 01:02:46,830 что пробудет там до тех пор, Вы говорите им, в противном случае. 1309 01:02:46,830 --> 01:02:48,280 >> Они, как хорошие дети. 1310 01:02:48,280 --> 01:02:49,150 Они остаются там. 1311 01:02:49,150 --> 01:02:50,270 Они не оставляют. 1312 01:02:50,270 --> 01:02:52,750 Они останутся там до тех пор, пока вы как, в порядке, вы можете уйти. 1313 01:02:52,750 --> 01:02:55,920 >> В то время как вещи в стеке, who-- они, как непослушных детей. 1314 01:02:55,920 --> 01:02:59,160 Они просто убежать, если вы хотите быть там, а затем они ушли. 1315 01:02:59,160 --> 01:03:00,160 Вы не можете получить их обратно. 1316 01:03:00,160 --> 01:03:01,350 1317 01:03:01,350 --> 01:03:07,187 >> Так куча is-- мы собираемся говорить о таНос и бесплатно, что 1318 01:03:07,187 --> 01:03:08,895 Я уверен, что вы, ребята, слышали о в лекции. 1319 01:03:08,895 --> 01:03:10,270 1320 01:03:10,270 --> 01:03:14,210 И это в основном способ иметь очень постоянные данные. 1321 01:03:14,210 --> 01:03:18,920 Таким образом, вы можете сохранить данные вокруг до тех пор, как вы хотите. 1322 01:03:18,920 --> 01:03:19,546 Ага. 1323 01:03:19,546 --> 01:03:21,475 >> АУДИТОРИЯ: Можете ли вы определить кучу и стек? 1324 01:03:21,475 --> 01:03:24,030 Они нравятся места, чтобы положить вещи? 1325 01:03:24,030 --> 01:03:26,630 >> СПИКЕР 1: Поэтому они в основном просто-- они 1326 01:03:26,630 --> 01:03:29,530 то, как мы см просто память. 1327 01:03:29,530 --> 01:03:37,300 Так кучи просто места, где память выделяется динамически, 1328 01:03:37,300 --> 01:03:40,960 в то время как стек относится более укладывать кадров 1329 01:03:40,960 --> 01:03:45,950 что более центральное место в Функции, которые на самом деле работает. 1330 01:03:45,950 --> 01:03:47,200 Вы действительно не имеют контроля. 1331 01:03:47,200 --> 01:03:50,690 >> Большая разница, у вас есть контроль по куче, если вы хотите, чтобы. 1332 01:03:50,690 --> 01:03:52,710 У вас есть меньше контроля над стеком. 1333 01:03:52,710 --> 01:03:55,030 Стек зависит Функции, которые работают, 1334 01:03:55,030 --> 01:03:58,320 и порядок, в котором они работать, и, как все вернулись. 1335 01:03:58,320 --> 01:04:01,290 В то время как с кучи, как мы увидим, что вы можете сказать, 1336 01:04:01,290 --> 01:04:06,639 ОК, я хочу, чтобы это значение, чтобы быть вокруг, пока я не скажу вам, иначе. 1337 01:04:06,639 --> 01:04:08,180 Вы не можете избавиться от него. 1338 01:04:08,180 --> 01:04:09,300 Вы не разрешается отменять его. 1339 01:04:09,300 --> 01:04:11,675 Вы собираетесь держать его вокруг до тех пор, как я тебе говорю. 1340 01:04:11,675 --> 01:04:15,780 Вы добираетесь, чтобы быть боссом в куче, в то время как stack-- Возможно, если вы 1341 01:04:15,780 --> 01:04:18,080 как надувать свой путь Вы можете быть боссом. 1342 01:04:18,080 --> 01:04:19,340 Но не совсем. 1343 01:04:19,340 --> 01:04:20,480 1344 01:04:20,480 --> 01:04:22,070 И это на самом деле просто память. 1345 01:04:22,070 --> 01:04:24,260 Это просто разные способы из ссылкой на память. 1346 01:04:24,260 --> 01:04:25,800 1347 01:04:25,800 --> 01:04:26,400 >> Прохладный. 1348 01:04:26,400 --> 01:04:28,630 Так с этим, как контролировать вашу память. 1349 01:04:28,630 --> 01:04:32,070 Это с таНос, которые Вы собираетесь получить в использовании. 1350 01:04:32,070 --> 01:04:37,100 Так что это просто короткая для выделения памяти. 1351 01:04:37,100 --> 01:04:38,459 Это все, что есть. 1352 01:04:38,459 --> 01:04:41,250 Там куча другой прохладно Функции, которые имеют Alloc в конце, 1353 01:04:41,250 --> 01:04:42,750 и они стоят за различными вещами. 1354 01:04:42,750 --> 01:04:43,550 1355 01:04:43,550 --> 01:04:49,050 >> Поэтому, когда вам нужно для хранения, что нужно чтобы пережить текущую функцию так 1356 01:04:49,050 --> 01:04:51,010 что, когда ваш текущий Функция убегает, 1357 01:04:51,010 --> 01:04:55,774 у вас еще есть данные, что вам получил от него, вы хотите использовать таНос. 1358 01:04:55,774 --> 01:04:57,190 Это будет инициализировать его в куче. 1359 01:04:57,190 --> 01:05:00,140 И как я уже сказал, и держать говоря, вы будете держать его там 1360 01:05:00,140 --> 01:05:03,050 пока вы не укажете обратного, которая является важной вещью здесь. 1361 01:05:03,050 --> 01:05:08,450 >> Так что, одно заметить, и это, как правило, очень важно, 1362 01:05:08,450 --> 01:05:13,620 является то, что это SIZEOF это супер полезно использовать 1363 01:05:13,620 --> 01:05:16,440 потому что в зависимости от типа машины вы работаете, 1364 01:05:16,440 --> 01:05:22,470 она может иметь различные количества памяти, что он принимает. 1365 01:05:22,470 --> 01:05:26,870 Таким образом, вы всегда хотите использовать размер так что вы не зависит от машины, 1366 01:05:26,870 --> 01:05:30,300 так что ваш код будет работать на любой машине. 1367 01:05:30,300 --> 01:05:32,360 >> И это только часть писать хороший код. 1368 01:05:32,360 --> 01:05:34,610 Если он работает на одной машине, но не какой-либо из других, 1369 01:05:34,610 --> 01:05:36,440 насколько полезным было ваша программа? 1370 01:05:36,440 --> 01:05:38,420 Таким образом, вы всегда хотите убедитесь, что и использовать SizeOf. 1371 01:05:38,420 --> 01:05:41,306 >> АУДИТОРИЯ: Так что, как размер 10 дюймов [неразборчиво]? 1372 01:05:41,306 --> 01:05:43,698 >> СПИКЕР 1: Это размер 10 целых чисел. 1373 01:05:43,698 --> 01:05:44,197 да. 1374 01:05:44,197 --> 01:05:45,360 1375 01:05:45,360 --> 01:05:48,830 Так размер целых чисел вернется сколько один интервал взять. 1376 01:05:48,830 --> 01:05:51,530 Или размер гольца, как много делает один символ дубль. 1377 01:05:51,530 --> 01:05:54,150 А потом, сколько блоков того, что вы хотите? 1378 01:05:54,150 --> 01:05:57,590 >> Таким образом, в данном случае, мы хотим что-то что мы можем хранить 10 целыми в. 1379 01:05:57,590 --> 01:06:00,240 И он будет работать независимо машины, которые прохладно. 1380 01:06:00,240 --> 01:06:01,720 1381 01:06:01,720 --> 01:06:04,846 Так сколько байт будет что на самом деле дать вам? 1382 01:06:04,846 --> 01:06:06,190 Быстрый математика. 1383 01:06:06,190 --> 01:06:06,787 >> АУДИТОРИЯ: 40. 1384 01:06:06,787 --> 01:06:07,370 СПИКЕР 1: 40. 1385 01:06:07,370 --> 01:06:07,869 Точно. 1386 01:06:07,869 --> 01:06:09,520 1387 01:06:09,520 --> 01:06:12,030 Так еще один большой вещью. 1388 01:06:12,030 --> 01:06:14,840 Указатель или таНос может вернуться нуль. 1389 01:06:14,840 --> 01:06:17,910 >> Итак, еще раз, всегда проверяйте, чтобы увидеть, если он вернулся нуль 1390 01:06:17,910 --> 01:06:19,620 прежде чем попытаться сделать что-нибудь с ним. 1391 01:06:19,620 --> 01:06:23,430 1392 01:06:23,430 --> 01:06:27,350 Если вы попробуете и разыменовать этот указатель теперь, 1393 01:06:27,350 --> 01:06:29,720 это просто будет сегментации потому что вы пошли и пытались 1394 01:06:29,720 --> 01:06:31,730 прикоснуться нуль, когда вы не должны. 1395 01:06:31,730 --> 01:06:34,000 Так всегда проверять нуль. 1396 01:06:34,000 --> 01:06:36,075 Опять же, все это можно сделать. 1397 01:06:36,075 --> 01:06:38,300 1398 01:06:38,300 --> 01:06:39,720 >> Это может вернуть пустой. 1399 01:06:39,720 --> 01:06:42,740 Это будет вернуться нуль, если вы либо из космоса, или по любой причине, 1400 01:06:42,740 --> 01:06:44,350 он бежал в какой-то ошибка памяти. 1401 01:06:44,350 --> 01:06:45,890 1402 01:06:45,890 --> 01:06:47,510 Это иногда просто возвращает нуль. 1403 01:06:47,510 --> 01:06:48,990 Таким образом, вы просто должны проверить это. 1404 01:06:48,990 --> 01:06:51,050 Вот и все, на этом слайде говорит. 1405 01:06:51,050 --> 01:06:53,366 1406 01:06:53,366 --> 01:06:55,240 И тогда то, что у нас есть вот вызов, чтобы освободить. 1407 01:06:55,240 --> 01:07:00,550 Таким образом, в тот же самый путь, что, если вас открыть файл необходимо закрыть файл, 1408 01:07:00,550 --> 01:07:04,340 если вас таНос памяти, вы Вы должны освободить эту память. 1409 01:07:04,340 --> 01:07:06,530 И вы, ребята, получите сделать действительно интересный материал. 1410 01:07:06,530 --> 01:07:09,624 >> И есть программа, которую можно запустить с увидеть, если вы когда-либо утечки памяти. 1411 01:07:09,624 --> 01:07:11,040 Но вы не хотите, чтобы утечка памяти. 1412 01:07:11,040 --> 01:07:11,820 Это действительно плохо. 1413 01:07:11,820 --> 01:07:13,191 1414 01:07:13,191 --> 01:07:15,020 Просто испортите вещи. 1415 01:07:15,020 --> 01:07:20,939 >> Это плохо делать так же, как программирование разумно эффективности проектирования. 1416 01:07:20,939 --> 01:07:22,980 Но это также просто вид плохо для вашего компьютера. 1417 01:07:22,980 --> 01:07:26,780 Так что свободные вещи когда вы Malloc их. 1418 01:07:26,780 --> 01:07:28,190 1419 01:07:28,190 --> 01:07:30,210 >> Вы, ребята, увидите симметрии здесь. 1420 01:07:30,210 --> 01:07:31,180 Супер просто. 1421 01:07:31,180 --> 01:07:33,010 Просто бесплатно, а затем независимо от вашего указатель, 1422 01:07:33,010 --> 01:07:34,843 все, что имя ваш указатель, и это 1423 01:07:34,843 --> 01:07:36,710 будет заботиться о освобождая его для вас. 1424 01:07:36,710 --> 01:07:38,200 1425 01:07:38,200 --> 01:07:38,700 Прохладный. 1426 01:07:38,700 --> 01:07:40,410 1427 01:07:40,410 --> 01:07:42,530 >> Тогда у нас есть это. 1428 01:07:42,530 --> 01:07:44,770 Таким образом, мы только собираемся ходить через эту программу. 1429 01:07:44,770 --> 01:07:46,560 И тогда вы, ребята, сделали. 1430 01:07:46,560 --> 01:07:50,240 >> Так [неразборчиво] только основной. 1431 01:07:50,240 --> 01:07:51,690 Таким образом, мы имеем некоторую INT * указатель. 1432 01:07:51,690 --> 01:07:53,648 Поэтому у нас есть указатель что собирается провести целыми. 1433 01:07:53,648 --> 01:07:54,500 1434 01:07:54,500 --> 01:07:56,170 А сколько Интс он собирается провести? 1435 01:07:56,170 --> 01:07:57,400 1436 01:07:57,400 --> 01:07:58,170 Только один. 1437 01:07:58,170 --> 01:07:59,400 1438 01:07:59,400 --> 01:08:01,100 Размер в междунар. 1439 01:08:01,100 --> 01:08:03,900 >> Мы проверяем, если указатель является нулевым, потому что это 1440 01:08:03,900 --> 01:08:06,130 есть, мы хотим сказать, ничего не делают. 1441 01:08:06,130 --> 01:08:07,065 Это плохо. 1442 01:08:07,065 --> 01:08:08,130 1443 01:08:08,130 --> 01:08:12,130 Так мы печатаем некоторые ошибки из память, наиболее часто возвращают 1, 1444 01:08:12,130 --> 01:08:14,260 как вы, ребята привыкли. 1445 01:08:14,260 --> 01:08:17,390 >> А то у нас здесь, мы разыменовать нашего указателя. 1446 01:08:17,390 --> 01:08:22,840 Значит, мы собираемся хранить что-то на месте, данным нам. 1447 01:08:22,840 --> 01:08:24,350 1448 01:08:24,350 --> 01:08:30,830 Int * указатель, или таНос, возвращает адрес, где он установлен в стороне это 1449 01:08:30,830 --> 01:08:31,750 Память для вас. 1450 01:08:31,750 --> 01:08:32,830 1451 01:08:32,830 --> 01:08:34,800 Так что это в основном давая вам like-- если вас 1452 01:08:34,800 --> 01:08:38,149 думаю о связке дома в окрестности 1453 01:08:38,149 --> 01:08:40,640 что вы хотите поставить Ваша мебель в, таНос 1454 01:08:40,640 --> 01:08:43,850 как хорошо, вы получаете идти в дом три. 1455 01:08:43,850 --> 01:08:45,800 И это дает вам адрес дома три. 1456 01:08:45,800 --> 01:08:48,775 >> Так что это сейчас, это указатель хранит адрес, 1457 01:08:48,775 --> 01:08:50,149 хранит адрес вашего дома. 1458 01:08:50,149 --> 01:08:51,470 1459 01:08:51,470 --> 01:08:54,640 * PTR средства, ОК, я в моем доме. 1460 01:08:54,640 --> 01:08:55,326 Прохладный. 1461 01:08:55,326 --> 01:08:56,580 Мне нужно, чтобы получить некоторое целое число. 1462 01:08:56,580 --> 01:08:59,229 >> Так вы просите кого-то чтобы дать вам мебель сейчас. 1463 01:08:59,229 --> 01:09:00,430 Таким образом, вы получаете некоторое Int. 1464 01:09:00,430 --> 01:09:05,100 И это ставит его в указатель где он, указывая на. 1465 01:09:05,100 --> 01:09:08,670 >> А потом он просто печатает , вы вошли туда, куда. 1466 01:09:08,670 --> 01:09:11,060 И снова, ссылка. 1467 01:09:11,060 --> 01:09:15,649 Так что это, как вы пошли на это решения, и вы видели, что там было. 1468 01:09:15,649 --> 01:09:17,120 1469 01:09:17,120 --> 01:09:17,630 Прохладный? 1470 01:09:17,630 --> 01:09:20,174 >> И тогда, конечно, мы освобождаем нашу указатель. 1471 01:09:20,174 --> 01:09:21,590 Не забудьте освободить указатель. 1472 01:09:21,590 --> 01:09:22,933 Не забудьте проверить нуль. 1473 01:09:22,933 --> 01:09:24,349 Не забудьте освободить указатель. 1474 01:09:24,349 --> 01:09:27,270 У вас есть две вещи вы помните из это, или что вы должны помнить. 1475 01:09:27,270 --> 01:09:27,770 Да. 1476 01:09:27,770 --> 01:09:31,590 АУДИТОРИЯ: [неразборчиво] материал так, символ * ы. 1477 01:09:31,590 --> 01:09:33,760 Как вышло, мы никогда освободить тех? 1478 01:09:33,760 --> 01:09:34,529 >> СПИКЕР 1: Хм? 1479 01:09:34,529 --> 01:09:36,450 >> АУДИТОРИЯ: Есть те, как струны? 1480 01:09:36,450 --> 01:09:39,160 Вы сказали, что строки так же, как символ * с, не так ли? 1481 01:09:39,160 --> 01:09:41,200 Так почему бы нам не освободиться строк? 1482 01:09:41,200 --> 01:09:43,204 >> СПИКЕР 1: Вы только бесплатно, если вы mallocing. 1483 01:09:43,204 --> 01:09:44,620 АУДИТОРИЯ: О, если вы mallocing. 1484 01:09:44,620 --> 01:09:47,399 СПИКЕР 1: Так таНос и бесплатно две вещи 1485 01:09:47,399 --> 01:09:49,000 что вы всегда должны иметь вместе. 1486 01:09:49,000 --> 01:09:51,630 е открытое, е близко, две вещи Вы должны иметь вместе. 1487 01:09:51,630 --> 01:09:54,471 В обоих этих случаях, проверить нуль. 1488 01:09:54,471 --> 01:09:54,971 Да. 1489 01:09:54,971 --> 01:09:57,130 >> АУДИТОРИЯ: Так бесплатно только позволяя что-то еще 1490 01:09:57,130 --> 01:09:59,690 должны быть сохранены там после эта программа используется его? 1491 01:09:59,690 --> 01:10:01,946 >> СПИКЕР 1: Это просто говорю, ОК, я сделал с этим. 1492 01:10:01,946 --> 01:10:03,320 Вам не нужно держать его вокруг. 1493 01:10:03,320 --> 01:10:05,340 1494 01:10:05,340 --> 01:10:08,190 В противном случае ваш компьютер будет просто нравится пробовать и держать его там. 1495 01:10:08,190 --> 01:10:10,910 И тогда вы can't-- это работает в памяти вопросы позже. 1496 01:10:10,910 --> 01:10:13,660 Вы всегда хотите, чтобы освободить его из- он говорит компьютер, ОК, я 1497 01:10:13,660 --> 01:10:15,190 сделано с этого места памяти. 1498 01:10:15,190 --> 01:10:17,190 Вы можете иметь его обратно для меня, чтобы использовать позже. 1499 01:10:17,190 --> 01:10:19,250 1500 01:10:19,250 --> 01:10:20,500 Прохладный? 1501 01:10:20,500 --> 01:10:21,320 Да. 1502 01:10:21,320 --> 01:10:26,950 >> АУДИТОРИЯ: Таким образом, мы использовали% D просто потому что вдвое больше, чем возвращается, 1503 01:10:26,950 --> 01:10:28,330 или почему is-- [неразборчиво]. 1504 01:10:28,330 --> 01:10:30,170 1505 01:10:30,170 --> 01:10:31,620 >> АУДИТОРИЯ: Можете ли вы использовать% я? 1506 01:10:31,620 --> 01:10:32,760 >> СПИКЕР 1: Вы можете использовать% Я. 1507 01:10:32,760 --> 01:10:35,052 1508 01:10:35,052 --> 01:10:36,135 Любые горящие вопросы? 1509 01:10:36,135 --> 01:10:38,310 1510 01:10:38,310 --> 01:10:38,985 Продолжай. 1511 01:10:38,985 --> 01:10:40,610 Аудитория: Я просто быстрый вопрос. 1512 01:10:40,610 --> 01:10:50,200 Так переменная PTR, that's-- как, с INT * PTR = таНос, 1513 01:10:50,200 --> 01:10:54,142 вот только говорю, что это указывая на место в memory-- 1514 01:10:54,142 --> 01:10:55,600 СПИКЕР 1: Вы хотите [неразборчиво]? 1515 01:10:55,600 --> 01:10:58,050 АУДИТОРИЯ: --that это Размер of-- нет, все в порядке. 1516 01:10:58,050 --> 01:11:01,292 Но это просто указывая на место в памяти, что так же, как четыре байта. 1517 01:11:01,292 --> 01:11:02,000 СПИКЕР 1: Право. 1518 01:11:02,000 --> 01:11:03,030 1519 01:11:03,030 --> 01:11:07,070 Так Malloc, размер INT говорит, ОК, я собираюсь пойти бежать, 1520 01:11:07,070 --> 01:11:08,780 найти четыре байта памяти для вас. 1521 01:11:08,780 --> 01:11:10,700 Когда он находит, что четыре байт из памяти, его 1522 01:11:10,700 --> 01:11:14,030 дает резервную адрес от того, где он начинается, 1523 01:11:14,030 --> 01:11:16,160 и вот что хранится в указатель, или PTR. 1524 01:11:16,160 --> 01:11:17,510 1525 01:11:17,510 --> 01:11:18,010 Хорошо. 1526 01:11:18,010 --> 01:11:18,742 1527 01:11:18,742 --> 01:11:21,700 Вы, ребята, выглядят менее запутанной, чем большинство люди, когда я говорю о указателя, 1528 01:11:21,700 --> 01:11:23,670 так что я чувствовал себя довольно хорошо прямо сейчас. 1529 01:11:23,670 --> 01:11:24,520 >> Хорошо. 1530 01:11:24,520 --> 01:11:27,960 Как всегда, вы, ребята, должны иметь все получили свои оценки pset2 сейчас. 1531 01:11:27,960 --> 01:11:32,769 Я знаю, что были некоторые шаткий вещи, где он говорит, формула не действует 1532 01:11:32,769 --> 01:11:33,310 или что-то. 1533 01:11:33,310 --> 01:11:36,166 Если вы получаете, что все Ваши сорта действительны на моей стороне. 1534 01:11:36,166 --> 01:11:38,040 Так что я могу отправить вам скриншоты ваших классах. 1535 01:11:38,040 --> 01:11:39,011 1536 01:11:39,011 --> 01:11:41,760 Просто дайте мне знать, а если вы пропуская ни сорта или что-то 1537 01:11:41,760 --> 01:11:43,060 кажется, не имеет смысла. 1538 01:11:43,060 --> 01:11:43,720 Иди ко мне. 1539 01:11:43,720 --> 01:11:44,830 1540 01:11:44,830 --> 01:11:48,830 >> Я был супер горжусь тобой Ребята уже, так держать. 1541 01:11:48,830 --> 01:11:50,640 И хорошо отдохнуть вашей неделю. 1542 01:11:50,640 --> 01:11:53,440 Я уверен, что я буду видеть некоторые из вас в рабочее время. 1543 01:11:53,440 --> 01:11:55,414