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