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