1 00:00:00,000 --> 00:00:02,670 >> [ТЕМА MUSIC] 2 00:00:02,670 --> 00:00:11,834 3 00:00:11,834 --> 00:00:13,365 >> SPEAKER 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 >> Така че нашата програма за today-- просто 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 са пренасочване, файл I / O, и След указатели и динамична памет. 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 Versus опитва да превъртите чрез вашия команден ред. 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 >> SPEAKER 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 Както, когато сте спестяване на Word документ и се запишете като, 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 Awesome. 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 >> Така че, ако това беше като точка наклонена черта Caesar 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 >> SPEAKER 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 Cool. 157 00:07:29,065 --> 00:07:30,170 158 00:07:30,170 --> 00:07:30,932 OK. 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 / О- Знам какво сте 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 / О- така подаде вход, 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 Cool. 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 искате да правите с повторно size-- може да бъде полезно. 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 OK. 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 >> SPEAKER 1: OK. 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 или чете, получава или getc, в зависимост от това какво искате. 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 И след това неуспешно пише някои масив от байтове във файл. 298 00:13:44,180 --> 00:13:48,860 Така че това е по същия начин неуспешно и 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 >> SPEAKER 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 Cool. 317 00:14:45,010 --> 00:14:47,290 Това прави ли смисъл, всеки? 318 00:14:47,290 --> 00:14:48,020 Cool? 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 Cool. 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 >> OK. 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 >> SPEAKER 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 Cool? 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 Awesome. 384 00:19:04,310 --> 00:19:05,100 OK. 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 Дали не ФОРМАТ В за цикъл? 388 00:19:11,570 --> 00:19:12,870 Това е само в случай контур? 389 00:19:12,870 --> 00:19:14,370 SPEAKER 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 OK. 402 00:20:17,220 --> 00:20:19,491 Това прави ли смисъл за всички? 403 00:20:19,491 --> 00:20:19,990 OK. 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 OK. 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 SPEAKER 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 >> SPEAKER 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 >> SPEAKER 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 >> SPEAKER 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 SPEAKER 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 >> SPEAKER 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 >> SPEAKER 1: Да. 506 00:25:16,900 --> 00:25:18,770 Тя просто отпечатва всичко, което има. 507 00:25:18,770 --> 00:25:23,270 Така че, ако вие някога са използвали CAT и след това името на някаква 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 Cool? 516 00:25:42,100 --> 00:25:46,530 >> ОК, така че вашата задача now-- или чрез себе си или с хората около you-- 517 00:25:46,530 --> 00:25:54,930 е просто да напиша една проста програма, че просто ще напиша "Здравей, свят!" 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 >> SPEAKER 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 >> SPEAKER 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 >> SPEAKER 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 >> SPEAKER 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 Наречете го "Hello". 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 SPEAKER 1: Пишем Ви към него. 566 00:28:46,191 --> 00:28:47,360 567 00:28:47,360 --> 00:28:47,860 Lovely. 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 SPEAKER 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 means-- не 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 >> SPEAKER 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 >> АУДИТОРИЯ: File. 596 00:29:47,490 --> 00:29:48,785 >> SPEAKER 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 АУДИТОРИЯ: Close. 605 00:30:05,145 --> 00:30:05,853 SPEAKER 1: Close. 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 SPEAKER 1: Не, това е, ако това не е нищожна. 610 00:30:15,050 --> 00:30:16,881 АУДИТОРИЯ: О, ако това е not-- OK. 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 >> SPEAKER 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 че е "Здравей, свят" в него. 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 >> SPEAKER 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 >> SPEAKER 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-- файл тук се отнася до откриването на "Hello" 637 00:31:31,271 --> 00:31:32,145 и отдаване под наем го напиша. 638 00:31:32,145 --> 00:31:34,728 >> АУДИТОРИЯ: Може ли да се сложи "Hello" вместо [? просто?] е файл? 639 00:31:34,728 --> 00:31:40,160 SPEAKER 1: Не, защото "Hello" трябва да бъде отворена и достъпна за писане. 640 00:31:40,160 --> 00:31:41,820 641 00:31:41,820 --> 00:31:45,980 File тук е като обозначение, което казва ОК, ние 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 Ако просто използвайте "Hello", че е капсулирана в него. 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 Ти би могъл да направи файл, звезда, "Hello", се равнява на това. 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 АУДИТОРИЯ: Може ли да се направи файл, звезда, файл, "Hello" 653 00:32:11,280 --> 00:32:13,113 или имате ли да сложите подаде звезда, файл от него? 654 00:32:13,113 --> 00:32:16,330 SPEAKER 1: Вие може направя файл, звезда, "Hello". 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 >> АУДИТОРИЯ: Какво е "w" в кавички, за? 662 00:32:29,690 --> 00:32:31,540 >> SPEAKER 1: "W" е само режим. 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 >> SPEAKER 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 Cool? 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 OK. 678 00:32:57,790 --> 00:33:05,960 Така че обратно към моя слайд show-- Обичам, когато нещата работят. 679 00:33:05,960 --> 00:33:08,674 OK, 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 >> Така че вие, момчета, всички дойдоха да видят Binky, тази готина 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 C [недоловим] тази велика способност да бъде в състояние да контролира паметта. 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 По същия начин, ако ние правим цели числа, ние знаем, ние сме съхраняване на инт там. 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 OK? 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 адрес се съхранява с Y има да бъде char-- едно и също нещо с Z. 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 OK? 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 Така че това се случва наистина да се върна при теб шестнадесетичен, докато го dereferencing 804 00:39:07,020 --> 00:39:10,641 всъщност ще ви дам данните, които се съхраняват там. 805 00:39:10,641 --> 00:39:11,140 OK? 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 >> OK. 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 Cool? 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 Cool? 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 И след това ние имаме някои копие, което е what-- 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 Така OK, когато правим звезда, това означава, че се следват. 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 Това е защо нашият копие е равно на пет. 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 OK. 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 OK. 870 00:41:49,230 --> 00:41:50,420 871 00:41:50,420 --> 00:41:53,330 Тогава ние се инициализира указател към Int. 872 00:41:53,330 --> 00:41:56,900 Ето защо е позволено да сочи към х, защото имаме инт тук. 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 SPEAKER 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 Cool. 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 >> Сега това, което правим е да кажем OK, сочен нашия показалка. 925 00:44:40,550 --> 00:44:42,760 Така че отиваме OK, това, което е в нашия указател? 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 Така че основно, когато сте dereferencing, отидете OK. 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 OK. 953 00:45:59,910 --> 00:48:08,567 954 00:48:08,567 --> 00:48:09,150 ПРОФЕСОР: OK. 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 OK. 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 >> STUDENT: 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 STUDENT: 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 STUDENT: 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 OK. 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 Добре, всичко това means-- това е стенограмите за равнява пъти в. 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 в ще бъде равнява на минус в. 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 >> STUDENT: 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 >> STUDENT: ОК, съжалявам, как успяхте да получите 100? 1000 00:49:42,047 --> 00:49:42,630 ПРОФЕСОР: OK. 1001 00:49:42,630 --> 00:49:46,594 Така че е равна на пъти в, така че в пъти. 1002 00:49:46,594 --> 00:49:48,510 STUDENT: О, ти, който използвате А за 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 Те са това, което трябва да бъде използване както ние се движат надолу, OK. 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 >> STUDENT: Код за местоположението на годишна база. 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 Така че това е препратка г. 1021 00:50:29,470 --> 00:50:31,580 >> STUDENT: Значи б е ръка стойност на годишна база. 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 STUDENT: 100. 1026 00:50:44,425 --> 00:50:46,534 ПРОФЕСОР: 100. 1027 00:50:46,534 --> 00:50:47,450 Perfect. 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 Pc е равно на БКП, и това, което е годишно? 1036 00:51:05,990 --> 00:51:07,049 >> STUDENT: Амперсант а. 1037 00:51:07,049 --> 00:51:07,840 ПРОФЕСОР: Perfect. 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 В пъти в is-- 1044 00:51:22,360 --> 00:51:23,320 >> STUDENT: 500. 1045 00:51:23,320 --> 00:51:28,880 >> ПРОФЕСОР: Да, така какво е това прави, 1046 00:51:28,880 --> 00:51:33,705 ако това е звезда Pb, какво се променя? 1047 00:51:33,705 --> 00:51:35,320 1048 00:51:35,320 --> 00:51:37,242 >> STUDENT: Какво има в the-- 1049 00:51:37,242 --> 00:51:38,200 ПРОФЕСОР: Какво има в б? 1050 00:51:38,200 --> 00:51:41,340 STUDENT: Какво има в пространството че Pb се посочи. 1051 00:51:41,340 --> 00:51:43,406 ПРОФЕСОР: И Pb сочи to-- 1052 00:51:43,406 --> 00:51:43,905 STUDENT: B. 1053 00:51:43,905 --> 00:51:46,740 ПРОФЕСОР: B. Така че единственият нещо променя, е б, нали. 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 Cool. 1058 00:51:59,590 --> 00:52:00,340 1059 00:52:00,340 --> 00:52:00,840 Lovely. 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 C се променя, нали? 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 OK. 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 >> STUDENT: A и C? 1075 00:52:28,970 --> 00:52:31,930 >> ПРОФЕСОР: Така е точно за първия. 1076 00:52:31,930 --> 00:52:34,385 Така че ние сме По- съотнасяне р а, нали? 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 Times какво прави бр точка за? 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 е 10,000. 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 Cool. 1086 00:52:58,200 --> 00:53:00,500 Начало участък, момчета, последния ред. 1087 00:53:00,500 --> 00:53:01,190 OK. 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 >> STUDENT: A. 1091 00:53:06,935 --> 00:53:09,435 ПРОФЕСОР: A. Perfect, така всичко друго може да остане същата. 1092 00:53:09,435 --> 00:53:16,210 1093 00:53:16,210 --> 00:53:16,710 OK. 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 Това е звезда Pb. 1098 00:53:27,120 --> 00:53:29,750 1099 00:53:29,750 --> 00:53:34,490 Така звезда Pb означава ето Pb, Pb точки до точка Б. 1100 00:53:34,490 --> 00:53:35,370 >> STUDENT: 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 Това е 50,000. 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 >> STUDENT: Защо имаме на & C за last-- 1107 00:53:47,982 --> 00:53:48,690 ПРОФЕСОР: Съжалявам. 1108 00:53:48,690 --> 00:53:50,080 STUDENT: О, OK. 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 Pointer аритметика. 1123 00:54:11,115 --> 00:54:13,961 1124 00:54:13,961 --> 00:54:14,460 Ah. 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 Така че като двойна или дълго време е осем и INT е четири, но Чар е един. 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 Awesome. 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 >> С C, всичко е много строга и регламентирана. 1149 00:55:28,260 --> 00:55:29,440 1150 00:55:29,440 --> 00:55:35,260 Показалецът на инт ще се актуализира от размера на пространството пад ще отнеме. 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-- OK. 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 >> АУДИТОРИЯ: One. 1167 00:56:16,680 --> 00:56:17,304 >> SPEAKER 1: One. 1168 00:56:17,304 --> 00:56:18,309 АУДИТОРИЯ: Така 0x09. 1169 00:56:18,309 --> 00:56:19,600 SPEAKER 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 SPEAKER 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 >> Да, OK. 1200 00:57:52,010 --> 00:57:57,385 Така че това, което имаме here-- I по този начин много повече. 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 Lovely. 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 Cool. 1218 00:58:44,960 --> 00:58:49,840 >> Така че това е нашата dereferencing показалка. 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 Така R, то действително ще се актуализира с един всеки път, защото това е знак, 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 OK. 1240 00:59:31,974 --> 00:59:34,294 1241 00:59:34,294 --> 00:59:35,222 >> SPEAKER 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 >> SPEAKER 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 >> Така че в този случай, от dereferencing само масив, който ни казва, 1266 01:00:36,500 --> 01:00:40,800 OK, отидете в началото на си масив, който е тук. 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 е равно на три. 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 Dynamic Memory 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 MHM. 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 >> SPEAKER 1: Така че те са основно just-- те са 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 >> Cool. 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 Има един куп други готини функции, които имат АПос в края, 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 >> SPEAKER 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 SPEAKER 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 Pointer или изчистване може да се върне нула. 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 това е просто ще segfault защото отиде и се опита 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 Така че просто безплатни неща когато ги изчистване. 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 Cool. 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 е като OK, можете да получите да отиде в къщата на три. 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 Cool. 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 Cool? 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 АУДИТОРИЯ: [недоловим] неща като това, Чар * S. 1477 01:09:31,590 --> 01:09:33,760 Как така никога не сме освободи тези? 1478 01:09:33,760 --> 01:09:34,529 >> SPEAKER 1: Hm? 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 >> SPEAKER 1: Трябва само да безплатно, ако сте mallocing. 1483 01:09:43,204 --> 01:09:44,620 АУДИТОРИЯ: О, ако сте mallocing. 1484 01:09:44,620 --> 01:09:47,399 SPEAKER 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 >> SPEAKER 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 Cool? 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 >> SPEAKER 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 SPEAKER 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 SPEAKER 1: Точно така. 1518 01:11:02,000 --> 01:11:03,030 1519 01:11:03,030 --> 01:11:07,070 Така изчистване на размера на 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