1 00:00:00,000 --> 00:00:02,742 2 00:00:02,742 --> 00:00:05,680 >> ПРЕДСЕДНИК 1: Здраво свима. 3 00:00:05,680 --> 00:00:07,530 Ми ћемо да почнемо. 4 00:00:07,530 --> 00:00:09,330 Мислим да људи и даље иде да се филтрира у. 5 00:00:09,330 --> 00:00:12,840 Али у интересу времена, тако да можемо да те момке одавде на време, 6 00:00:12,840 --> 00:00:14,110 идемо да почне. 7 00:00:14,110 --> 00:00:18,780 Тако добродошли на ЦС50 квиз 0 рецензије. 8 00:00:18,780 --> 00:00:23,020 За оне од вас који нису схватили ипак, имате питање у среду. 9 00:00:23,020 --> 00:00:25,700 Воо-Хоо. 10 00:00:25,700 --> 00:00:29,780 >> Ако нисте почели студирање увек или нису схватили да је ово још увек постоји, 11 00:00:29,780 --> 00:00:34,070 прошлости квизови и све информације о Ваш квиз су на цс50.нет/куиззес. 12 00:00:34,070 --> 00:00:38,090 Има неке прилично добар ствари тамо, последњих квизови од последње 10 13 00:00:38,090 --> 00:00:43,760 година, као и информације О овом квизу и темама 14 00:00:43,760 --> 00:00:46,250 који ће бити покривени. 15 00:00:46,250 --> 00:00:48,980 Дакле, хајде да почнемо. 16 00:00:48,980 --> 00:00:54,240 >> Па ви можда сећате, први дан класе Давидов имали те лампе на. 17 00:00:54,240 --> 00:00:59,650 У суштини, све то иде на испод хаубе једног рачунара је 18 00:00:59,650 --> 00:01:00,860 учињено у бинарни. 19 00:01:00,860 --> 00:01:04,080 Бинарни значи оно што звучи као, 0 је и 1 је. 20 00:01:04,080 --> 00:01:09,290 Она има две вредности које могу бити представљени. 21 00:01:09,290 --> 00:01:14,675 >> Тако да као у првом делу дана када је Давид окренуо на светло 22 00:01:14,675 --> 00:01:21,990 сијалица да заступа на, или 1, наш рачунар разуме бинарни као 0-а и 23 00:01:21,990 --> 00:01:24,110 1 је, или искључите. 24 00:01:24,110 --> 00:01:25,360 Основе бинарно. 25 00:01:25,360 --> 00:01:29,440 26 00:01:29,440 --> 00:01:32,470 Свако место је заступљен у бази два. 27 00:01:32,470 --> 00:01:36,260 Тако да додате 2 до 0 до 1 до 2 скроз горе. 28 00:01:36,260 --> 00:01:41,970 >> Да израчуна шта ваш бинарни је да децимални, само пратите ову једначину 29 00:01:41,970 --> 00:01:42,840 Типе ствар. 30 00:01:42,840 --> 00:01:49,510 Ако имате 1 у било којој од тих места, га помножити год 31 00:01:49,510 --> 00:01:53,820 базу коју је у, додајте га, и добијате децимала. 32 00:01:53,820 --> 00:01:57,930 Дакле, ово је како рачунати до 5 у бинарном. 33 00:01:57,930 --> 00:02:01,400 Баш као што смо радили на последњи слајд, ово је како бисте 34 00:02:01,400 --> 00:02:02,650 представљају 1 до 5. 35 00:02:02,650 --> 00:02:05,320 36 00:02:05,320 --> 00:02:09,660 >> Слично томе, баш као можете да додате и одузмите у децималном или основе 10, или 37 00:02:09,660 --> 00:02:13,040 заиста има основа, на можете да додате и одузимање у бинарни. 38 00:02:13,040 --> 00:02:18,400 Тачно оно што бисте очекивали када сте додајте два горе, ако се једнако веће 39 00:02:18,400 --> 00:02:24,220 од 1, носите 1, чине га 0, и да на тај начин додавања, баш 40 00:02:24,220 --> 00:02:29,910 Као што се може очекивати са редовне децимал или било које друге базе. 41 00:02:29,910 --> 00:02:30,970 Цоол. 42 00:02:30,970 --> 00:02:35,140 >> Дакле, као што сам рекао раније, све што иде на испод хаубе нашег рачунара 43 00:02:35,140 --> 00:02:37,560 се обавља у 0 и 1 је у, или бинарни. 44 00:02:37,560 --> 00:02:43,470 Па како ми изражавамо, на пример, слова, или бројева, или знакова? 45 00:02:43,470 --> 00:02:45,560 А одговор на то је АСЦИИ. 46 00:02:45,560 --> 00:02:49,380 >> АСЦИИ је мапирање између знакова да бисмо нормално видети у 47 00:02:49,380 --> 00:02:53,360 Енглески језик као, б-а, Ц је, наглашавају, цртице, а 48 00:02:53,360 --> 00:02:54,910 тако нешто. 49 00:02:54,910 --> 00:02:57,260 И карте које на АСЦИИ вредности. 50 00:02:57,260 --> 00:03:03,080 АСЦИИ вредност је само број који може разумети ваш рачунар. 51 00:03:03,080 --> 00:03:07,430 И баш као што можете да урадите и додатак одузимање са бројевима, можете да урадите 52 00:03:07,430 --> 00:03:10,890 их са АСЦИИ вредностима. 53 00:03:10,890 --> 00:03:14,050 >> Дакле, у овом примеру, што ће одштампати? 54 00:03:14,050 --> 00:03:26,790 55 00:03:26,790 --> 00:03:35,480 Да, па само простор Б Ц простор простор Д. Где је мој миш оде? 56 00:03:35,480 --> 00:03:39,200 57 00:03:39,200 --> 00:03:43,380 Обратите пажњу можете дефинисати инт у 65. 58 00:03:43,380 --> 00:03:47,080 И када штампате да коришћењем одсто Ц, то ће тумачити као 59 00:03:47,080 --> 00:03:49,330 карактера и да ће одштампати А. 60 00:03:49,330 --> 00:03:52,800 >> Слично томе, можете да прогласи она као цхар. 61 00:03:52,800 --> 00:03:56,860 А када га одштампате коришћењем одсто Ц, то ће тумачити као 62 00:03:56,860 --> 00:04:05,240 посто Д. и баш као што можете додати број, можете да додате ликови 63 00:04:05,240 --> 00:04:06,878 АСЦИИ вредности, у овом случају. 64 00:04:06,878 --> 00:04:11,370 65 00:04:11,370 --> 00:04:16,130 >> Па мало показивач за свакога. 66 00:04:16,130 --> 00:04:19,610 5, као стринг, не заправо једнака 5. 67 00:04:19,610 --> 00:04:26,610 Па како да конвертујете стринг 5 до интегер 5? 68 00:04:26,610 --> 00:04:28,930 Било који идеја? 69 00:04:28,930 --> 00:04:31,630 Да. 70 00:04:31,630 --> 00:04:36,720 >> Дакле, ако имамо 5 као стринг, можемо одузети 0. 71 00:04:36,720 --> 00:04:37,820 Као и да ће нам дати 5. 72 00:04:37,820 --> 00:04:41,670 И слично, ако имамо 5 тако цео, додају да у стринг 0. 73 00:04:41,670 --> 00:04:43,112 А то нам даје стринг 5. 74 00:04:43,112 --> 00:04:46,350 75 00:04:46,350 --> 00:04:48,350 Цоол. 76 00:04:48,350 --> 00:04:52,940 >> Сада, подсетити вратимо на онај у коме предаје разговарали смо о алгоритмима. 77 00:04:52,940 --> 00:04:57,260 Па како да ми заправо желимо компјутер да раде занимљиве ствари? 78 00:04:57,260 --> 00:05:00,460 Знаш, само додавање и одузимање бројеви и штампање ствари да то није 79 00:05:00,460 --> 00:05:01,730 то узбудљиво. 80 00:05:01,730 --> 00:05:04,620 Обично, желимо наше рачунар са врши неку врсту алгоритма. 81 00:05:04,620 --> 00:05:07,820 Нешто мало сложенији него само једноставне аритметике. 82 00:05:07,820 --> 00:05:11,930 >> Алгоритам је само корак по корак сет инструкција о томе како да извршите 83 00:05:11,930 --> 00:05:14,640 извесни таск-- 84 00:05:14,640 --> 00:05:15,660 Баш као рецепт. 85 00:05:15,660 --> 00:05:19,990 Можда се сећате први дан Класа где Давид УС цоунт собу 86 00:05:19,990 --> 00:05:22,550 људи и колико је људи били у соби. 87 00:05:22,550 --> 00:05:24,480 Можда сте користили за бројање један по један. 88 00:05:24,480 --> 00:05:25,860 1, 2, 3, 4. 89 00:05:25,860 --> 00:05:28,010 У том случају, линеарно време алгоритам. 90 00:05:28,010 --> 00:05:31,710 >> Али Давид увео алгоритма за да бројимо људе у соби 91 00:05:31,710 --> 00:05:37,340 где су сви устане, рекли сте да сте број другој особи, додају да 92 00:05:37,340 --> 00:05:39,200 број горе, а једна особа седне. 93 00:05:39,200 --> 00:05:40,410 И ти то поновити. 94 00:05:40,410 --> 00:05:42,910 То је једна врста алгоритма. 95 00:05:42,910 --> 00:05:47,520 Можемо анализирати колико је ефикасан Ан Алгоритам се заснива на то рун време. 96 00:05:47,520 --> 00:05:49,680 Али ми ћемо разговарати мало Више о томе касније. 97 00:05:49,680 --> 00:05:52,740 98 00:05:52,740 --> 00:05:57,090 >> Тако да сви алгоритми се такође буде написан на Псеудокод. 99 00:05:57,090 --> 00:06:01,120 Псеудокод је само енглески као синтакса се користи за представљање 100 00:06:01,120 --> 00:06:02,420 програмски језик. 101 00:06:02,420 --> 00:06:06,070 На пример, ако бисмо желели да питате корисника да погодите мој омиљени број, ми смо 102 00:06:06,070 --> 00:06:08,390 можда има Псеудокод као што је. 103 00:06:08,390 --> 00:06:09,850 >> Гет А усерс погодити. 104 00:06:09,850 --> 00:06:13,570 Ако је претпоставка тачна, реци им они су у праву, друго им реци 105 00:06:13,570 --> 00:06:15,560 они нису у праву. 106 00:06:15,560 --> 00:06:22,530 А Псеудокод је начин лако представља идеју или алгоритам. 107 00:06:22,530 --> 00:06:26,910 Тако да сада можемо да се заиста желимо писати То на језику који рачунар 108 00:06:26,910 --> 00:06:27,980 можда разумевање. 109 00:06:27,980 --> 00:06:35,660 Тако да смо могли писати нашу Псеудокод и тумаче да је у изворни код. 110 00:06:35,660 --> 00:06:41,320 >> До сада је, изворни код мора придржавати на одређени синтакси 111 00:06:41,320 --> 00:06:42,490 програмски језик. 112 00:06:42,490 --> 00:06:45,430 И до сада, у ЦС50, имамо Користим углавном Ц. 113 00:06:45,430 --> 00:06:48,320 Дакле, ово може бити извор код за ц. 114 00:06:48,320 --> 00:06:51,440 Касније у току, ти ноћ доћи у контакт са другим програмима 115 00:06:51,440 --> 00:06:52,480 језицима као што су ПХП. 116 00:06:52,480 --> 00:06:57,540 Или ако чак и предузети друге класе, те може да уради Јава, Питхон, или чак ОЦМЛ. 117 00:06:57,540 --> 00:07:01,570 Али у нашем језику Ц програм, ово је како бисмо могли писати изворни код за 118 00:07:01,570 --> 00:07:04,760 Псеудокод алгоритам који Управо сам описао раније. 119 00:07:04,760 --> 00:07:08,630 120 00:07:08,630 --> 00:07:11,430 >> Па како ваш рачунар заправо разумели? 121 00:07:11,430 --> 00:07:14,490 Као што сам рекао раније, то је само стварно разуме нуле и јединице. 122 00:07:14,490 --> 00:07:17,880 Па како то добије од извора код да нешто што се може 123 00:07:17,880 --> 00:07:18,960 разумео? 124 00:07:18,960 --> 00:07:22,920 Па, ми имамо нешто зове компајлер. 125 00:07:22,920 --> 00:07:28,450 >> Ако се сећате назад већина ваших псетс сте имали неку врсту програма 126 00:07:28,450 --> 00:07:30,370 написан у тачком ц датотеку. 127 00:07:30,370 --> 00:07:32,550 А онда би тип Марка. 128 00:07:32,550 --> 00:07:35,970 Дакле, шта је да ради? 129 00:07:35,970 --> 00:07:39,970 >> Можете да тип Марка компајлирати програм, јер сомеоне-- 130 00:07:39,970 --> 00:07:42,730 Ко год је написао свој п сет; Вероватно Давид-- 131 00:07:42,730 --> 00:07:44,190 створио маке датотеку. 132 00:07:44,190 --> 00:07:51,320 А то говори да да знају да покренете компајлер, назвао цланг, та воља 133 00:07:51,320 --> 00:07:55,560 а затим саставити свој изворни код приговора код, који је нула и јединица 134 00:07:55,560 --> 00:07:57,720 да рачунар разуме. 135 00:07:57,720 --> 00:08:01,610 Али је мало касније, ми ћемо ићи више у дубину око преводиоца. 136 00:08:01,610 --> 00:08:05,640 137 00:08:05,640 --> 00:08:10,800 >> Тако сећам псет 0, где-- Да, имате питање? 138 00:08:10,800 --> 00:08:11,620 >> ПУБЛИКА: [неразумљиво]? 139 00:08:11,620 --> 00:08:12,490 >> ПРЕДСЕДНИК 1: Да. 140 00:08:12,490 --> 00:08:14,960 Мислим да је њима у ствари би требало да буде на мрежи. 141 00:08:14,960 --> 00:08:15,120 Да. 142 00:08:15,120 --> 00:08:16,572 >> Публика: Да ли је као [неразумљиво]? 143 00:08:16,572 --> 00:08:19,476 144 00:08:19,476 --> 00:08:20,830 >> ПРЕДСЕДНИК 1: Није. 145 00:08:20,830 --> 00:08:25,810 Су на цс50.нет/куиззес. 146 00:08:25,810 --> 00:08:32,900 >> Публика: Сласх Квизови, сласх 2013, сласх 0, а само кликните кроз 147 00:08:32,900 --> 00:08:35,956 квизови 2013 и квиз 0, прегледајте одељак слајдова. 148 00:08:35,956 --> 00:08:40,380 >> ПРЕДСЕДНИК 1: Да, тако да ако ви желите да повуците га и погледај га на 149 00:08:40,380 --> 00:08:42,740 сопствени рачунар, то је у реду. 150 00:08:42,740 --> 00:08:43,130 Кажу да поново. 151 00:08:43,130 --> 00:08:44,546 >> ПУБЛИКА: [неразумљиво]. 152 00:08:44,546 --> 00:08:48,780 >> ПРЕДСЕДНИК 1: Да, [неразумљиво] је вештачка променљива. 153 00:08:48,780 --> 00:08:49,644 Ох, да? 154 00:08:49,644 --> 00:08:51,372 >> ПУБЛИКА: [неразумљиво]? 155 00:08:51,372 --> 00:08:54,300 >> СПЕАКЕР 1: Не, штрајкови нису на испиту. 156 00:08:54,300 --> 00:08:55,950 Жао нам је, њено питање је било, било напада на испиту. 157 00:08:55,950 --> 00:08:59,530 И није. 158 00:08:59,530 --> 00:09:05,780 Дакле псет 0, ви треба да имају све реализован нешто коришћењем огреботине. 159 00:09:05,780 --> 00:09:13,100 И научили смо неке основне програмирање градивни блокови користе нуле. 160 00:09:13,100 --> 00:09:15,590 >> Дакле, хајде да погледамо неке ових градивних блокова 161 00:09:15,590 --> 00:09:18,170 који чине програм. 162 00:09:18,170 --> 00:09:20,570 Први је Боолеан израз. 163 00:09:20,570 --> 00:09:24,540 Логички изрази су они и 0 је или било шта што има 164 00:09:24,540 --> 00:09:25,700 два могуће вредности. 165 00:09:25,700 --> 00:09:30,320 У овом случају, тачно или нетачно, или искључите, а да или не. 166 00:09:30,320 --> 00:09:35,390 Пример једноставан, врло једноставан, програм који користи Боолеан 167 00:09:35,390 --> 00:09:39,140 израз овде. 168 00:09:39,140 --> 00:09:43,220 >> Дакле, како би Булових изразе бити од користи, имамо логичке операторе. 169 00:09:43,220 --> 00:09:48,920 То су оператери који се могу користити упоредити одређене вредности. 170 00:09:48,920 --> 00:09:52,820 Дакле, имамо и или не једнако мање, од или једнак или већи од 171 00:09:52,820 --> 00:09:55,130 једнака, и мање од или већи од. 172 00:09:55,130 --> 00:09:59,060 Али ови оператори нису веома корисне осим ако их можемо комбиновати у 173 00:09:59,060 --> 00:10:00,320 услови. 174 00:10:00,320 --> 00:10:04,370 >> Па ви можда сећате од нуле и са п поставља да смо ми 175 00:10:04,370 --> 00:10:05,400 имао услове. 176 00:10:05,400 --> 00:10:09,710 Они су, у суштини, као и виљушке у логика вашег програма који 177 00:10:09,710 --> 00:10:12,670 извршава у зависности од тога да ли услов је испуњен. 178 00:10:12,670 --> 00:10:18,150 Тако да је један од услова које смо имали се користи много пута на овом курсу је 179 00:10:18,150 --> 00:10:21,470 Ако, друго, ако је и друго услови. 180 00:10:21,470 --> 00:10:24,060 >> Ево примера како можда то искористити. 181 00:10:24,060 --> 00:10:28,430 Да ли неко зна разлику између користећи само ако изјаве свих 182 00:10:28,430 --> 00:10:32,530 скроз доле стиховима ако, иначе, Ако, и друго у комбинацији? 183 00:10:32,530 --> 00:10:33,013 Да? 184 00:10:33,013 --> 00:10:34,263 >> ПУБЛИКА: [неразумљиво]. 185 00:10:34,263 --> 00:10:40,741 186 00:10:40,741 --> 00:10:42,160 >> ПРЕДСЕДНИК 1: Управо тако. 187 00:10:42,160 --> 00:10:50,210 Дакле, ако сам имао да скроз ово начин, чак и ако овај услов повратка 188 00:10:50,210 --> 00:10:52,800 Истина, он ће и даље наставити тестирање следећа два. 189 00:10:52,800 --> 00:11:00,120 Док, са другим-ако, на друго изјава, уколико се врати прави, 190 00:11:00,120 --> 00:11:02,640 остали нису тестирани. 191 00:11:02,640 --> 00:11:05,955 Било каквих питања о томе? 192 00:11:05,955 --> 00:11:06,890 Цоол. 193 00:11:06,890 --> 00:11:12,240 >> Тако да користите иф-елсе једног другог Изјава ако знате да је то само може 194 00:11:12,240 --> 00:11:14,470 бити један од ових случајева. 195 00:11:14,470 --> 00:11:21,550 Тако да знамо да ли је к мање од 0, то је дефинитивно неће бити 196 00:11:21,550 --> 00:11:22,890 већи од 0. 197 00:11:22,890 --> 00:11:26,940 198 00:11:26,940 --> 00:11:31,480 >> Даље, још једна зграда блок да смо научили смо Лоопс. 199 00:11:31,480 --> 00:11:33,310 Имамо три врсте петљи. 200 00:11:33,310 --> 00:11:35,830 За петље, а петље, и да док петљи. 201 00:11:35,830 --> 00:11:38,730 И генерално, када седнете да напишем нешто, морате да одлучите 202 00:11:38,730 --> 00:11:40,060 који од три који желите да користите. 203 00:11:40,060 --> 00:11:41,900 Па како да се одлучи који? 204 00:11:41,900 --> 00:11:44,920 205 00:11:44,920 --> 00:11:48,790 >> Ми обично користимо за петљу, ако знамо колико пута желимо да прелазили 206 00:11:48,790 --> 00:11:53,650 кроз нешто или колико пута желимо да изврши задатак. 207 00:11:53,650 --> 00:11:58,830 Ми користимо док петље ако нам је потребно мало услов да би било истинито да настави са радом. 208 00:11:58,830 --> 00:12:03,730 И ми користимо урадимо док врло сличан док, али желимо наш кода ради на 209 00:12:03,730 --> 00:12:04,880 Најмање једном. 210 00:12:04,880 --> 00:12:09,410 >> И ја док год је у Долу ће увек раде на најмање један пут. 211 00:12:09,410 --> 00:12:13,120 Док, с време, то не могу покренути уопште уколико 212 00:12:13,120 --> 00:12:15,490 услов није задовољан. 213 00:12:15,490 --> 00:12:16,740 Сва питања са тим? 214 00:12:16,740 --> 00:12:20,480 215 00:12:20,480 --> 00:12:22,860 >> Тако да структура за петље. 216 00:12:22,860 --> 00:12:23,620 Ви сте сви видели ово. 217 00:12:23,620 --> 00:12:25,320 Ви га покрене. 218 00:12:25,320 --> 00:12:26,600 Имате неку врсту стања. 219 00:12:26,600 --> 00:12:32,340 Тако, на пример, могли бисмо инитиализе Што се тиче ја једнако 0. 220 00:12:32,340 --> 00:12:34,040 и је мање од 10. 221 00:12:34,040 --> 00:12:35,442 И ја ++. 222 00:12:35,442 --> 00:12:39,010 Врло једноставно да смо урадили. 223 00:12:39,010 --> 00:12:42,210 >> За неко време петље, на сличан начин, ви имате да имају неку врсту инитиализатион, 224 00:12:42,210 --> 00:12:44,980 нека врста стања, и нека ажурирања. 225 00:12:44,980 --> 00:12:51,990 Тако да можемо да спроведете наше за петљу и као вхиле петље користи ово. 226 00:12:51,990 --> 00:12:56,000 И слично са радити док петље, можда ћемо имати неку иницијализација, 227 00:12:56,000 --> 00:12:58,640 изврши нешто, ажурирање, и затим проверите стање. 228 00:12:58,640 --> 00:13:03,500 229 00:13:03,500 --> 00:13:05,140 >> Тако да сада функционише. 230 00:13:05,140 --> 00:13:06,460 Ми смо ставили све заједно. 231 00:13:06,460 --> 00:13:10,140 Ми можда желети да напише неки врста функције. 232 00:13:10,140 --> 00:13:12,790 Заједничка функција које ћете можда Већ смо видели је главни. 233 00:13:12,790 --> 00:13:13,770 Главни је функција. 234 00:13:13,770 --> 00:13:16,160 Има повратни тип, Инт. 235 00:13:16,160 --> 00:13:18,470 Она има име функције, главни. 236 00:13:18,470 --> 00:13:20,810 И има аргументе, аргц и аргв. 237 00:13:20,810 --> 00:13:24,040 Тако да је само главна функција. 238 00:13:24,040 --> 00:13:27,230 >> Остале функције можда су користили, принтф-- принтф је фунцтион-- 239 00:13:27,230 --> 00:13:29,330 Тоноване, тоуппер. 240 00:13:29,330 --> 00:13:32,010 Али то се десило да су спроводи за нас 241 00:13:32,010 --> 00:13:33,270 нека врста библиотеке. 242 00:13:33,270 --> 00:13:37,400 Ако се ви сетите укључујући Ова ЦС50.х библиотека или 243 00:13:37,400 --> 00:13:38,510 Стандардни И / О библиотека. 244 00:13:38,510 --> 00:13:39,200 Да, питање? 245 00:13:39,200 --> 00:13:41,610 >> ПУБЛИКА: је главни управо својствене ц? 246 00:13:41,610 --> 00:13:44,740 Да ли је то само врста [неразумљиво]? 247 00:13:44,740 --> 00:13:47,370 >> ПРЕДСЕДНИК 1: Питање је ако је главни је својствен Ц. 248 00:13:47,370 --> 00:13:51,460 И да, све функције имају главну функцију. 249 00:13:51,460 --> 00:13:55,290 То је врста је од неопходне за рачунар да зна где да почнете 250 00:13:55,290 --> 00:13:55,993 ради код. 251 00:13:55,993 --> 00:13:58,108 >> ПУБЛИКА: Дакле, не би [неразумљиво]? 252 00:13:58,108 --> 00:13:59,480 >> ПРЕДСЕДНИК 1: Не 253 00:13:59,480 --> 00:14:00,760 Има ли још питања? 254 00:14:00,760 --> 00:14:03,430 255 00:14:03,430 --> 00:14:04,770 Цоол. 256 00:14:04,770 --> 00:14:08,050 Дакле, само као да можете да користите функцију који је написао за вас, можете такође 257 00:14:08,050 --> 00:14:10,380 напиши своје функције. 258 00:14:10,380 --> 00:14:17,050 То је функција да би неко могао написали да израчуна обим 259 00:14:17,050 --> 00:14:18,395 на к, на пример. 260 00:14:18,395 --> 00:14:21,300 261 00:14:21,300 --> 00:14:29,500 Овде има повратни тип, у овом случају инт, наша функција име К и наше 262 00:14:29,500 --> 00:14:31,360 листу параметара. 263 00:14:31,360 --> 00:14:34,550 >> И имајте на уму да морате да пишете податке тип параметра који желите да 264 00:14:34,550 --> 00:14:38,660 користи иначе функција не знам каква је 265 00:14:38,660 --> 00:14:41,650 параметар треба да буде прихватање. 266 00:14:41,650 --> 00:14:48,110 Дакле, у овом случају, желимо цео као наш улаз. 267 00:14:48,110 --> 00:14:50,390 Па зашто би желимо да користимо функције? 268 00:14:50,390 --> 00:14:52,800 >> Пре свега, одличан за организацију. 269 00:14:52,800 --> 00:14:56,350 Они помажу разбити свој код у више организоване делове и да 270 00:14:56,350 --> 00:14:57,960 лакше за читање. 271 00:14:57,960 --> 00:14:59,760 Поједностављење. 272 00:14:59,760 --> 00:15:01,740 Ово је добро за дизајн. 273 00:15:01,740 --> 00:15:04,570 Када читате део кода а главна функција је заиста, 274 00:15:04,570 --> 00:15:07,750 заиста дуго, то би могло бити теже Разлог о томе шта се дешава. 275 00:15:07,750 --> 00:15:11,710 Па ако га разбити у функцијама, да би било лакше за читање. 276 00:15:11,710 --> 00:15:12,750 И поново-способност. 277 00:15:12,750 --> 00:15:16,940 Ако имате комад кода који је већ био назива или покренути више пута, 278 00:15:16,940 --> 00:15:20,690 уместо преписивање да код 10 пута у главној функцији, и мислио 279 00:15:20,690 --> 00:15:21,440 желе да га поново. 280 00:15:21,440 --> 00:15:25,740 И онда сваки пут морате да користите да део кода, позовите функцију. 281 00:15:25,740 --> 00:15:30,550 282 00:15:30,550 --> 00:15:35,380 >> Дакле, сада, ако се вратимо на нуле запамтите, Такође смо разговарали о неколико концепата, 283 00:15:35,380 --> 00:15:37,680 од којих је једна тхреадинг. 284 00:15:37,680 --> 00:15:41,120 Нит је концепт вишеструких секвенце кода 285 00:15:41,120 --> 00:15:43,040 извршавање у исто време. 286 00:15:43,040 --> 00:15:47,490 Па сетите се првог дана, где Давид ви рачунати Офф броја 287 00:15:47,490 --> 00:15:48,440 људи у соби. 288 00:15:48,440 --> 00:15:50,550 >> У суштини, оно што се дешава на је сви сте били 289 00:15:50,550 --> 00:15:52,370 ради одвојене теме. 290 00:15:52,370 --> 00:15:55,540 И те теме су долазили заједно добити неку врсту одговора. 291 00:15:55,540 --> 00:15:58,890 Слично томе, у нуле, када имате више Спритес, и мислио 292 00:15:58,890 --> 00:16:01,070 имају мачку и пса. 293 00:16:01,070 --> 00:16:08,770 И они ће бити истовремено вођењу сопственог скрипте. 294 00:16:08,770 --> 00:16:10,020 То је пример навоја. 295 00:16:10,020 --> 00:16:12,860 296 00:16:12,860 --> 00:16:18,000 >> А други концепт који је био уведен у нуле био догађаја. 297 00:16:18,000 --> 00:16:22,550 И догађаји су када више делови Ваш код комуницирају једни са другима. 298 00:16:22,550 --> 00:16:26,840 У Огреби, то је било када сте користили Броадцаст контрола и када сам 299 00:16:26,840 --> 00:16:29,500 Рецеиве блокова. 300 00:16:29,500 --> 00:16:35,170 >> И такође, у проблему сет 4, видели смо мало догађаја као добро. 301 00:16:35,170 --> 00:16:38,250 Ви можда користили Гевент библиотека. 302 00:16:38,250 --> 00:16:42,450 И било је функција ваитФорЦлицк у којој сте чекали 303 00:16:42,450 --> 00:16:44,300 за корисника да кликне. 304 00:16:44,300 --> 00:16:47,870 И ваш клик, у овом случају, било би догађај и чекати клик Да ли је ваша 305 00:16:47,870 --> 00:16:49,120 Евент претовар. 306 00:16:49,120 --> 00:16:53,690 307 00:16:53,690 --> 00:16:58,630 >> И такође, током трчање своје псетс и рад на својим псетс сте 308 00:16:58,630 --> 00:17:01,920 Можда су дошли у контакт са неке од ових команди. 309 00:17:01,920 --> 00:17:05,579 То је оно што је уписан у прозор терминала или било прозор 310 00:17:05,579 --> 00:17:12,119 која се појављује на вашем г Измени да, У суштини, навигацију рачунар. 311 00:17:12,119 --> 00:17:19,440 >> Тако на пример, ЛС листе Садржај директоријума. 312 00:17:19,440 --> 00:17:22,510 Направите директоријум креира нови фолдер. 313 00:17:22,510 --> 00:17:24,819 ЦД, промена директоријум. 314 00:17:24,819 --> 00:17:28,400 РМ, уклоните, брише датотеке или неки директоријум. 315 00:17:28,400 --> 00:17:31,050 А затим уклоните директоријум уклања директоријум. 316 00:17:31,050 --> 00:17:32,300 >> ПУБЛИКА: [неразумљиво]? 317 00:17:32,300 --> 00:17:36,978 318 00:17:36,978 --> 00:17:38,370 >> ПРЕДСЕДНИК 1: Да, наравно. 319 00:17:38,370 --> 00:17:42,530 320 00:17:42,530 --> 00:17:46,040 Жао нам је, питање је да ли вас Предложио бих стављајући ово 321 00:17:46,040 --> 00:17:48,840 на Цхеат Схеет. 322 00:17:48,840 --> 00:17:49,440 То би могло помоћи. 323 00:17:49,440 --> 00:17:51,490 Ако имате собу, можете га ставити на. 324 00:17:51,490 --> 00:17:56,170 Такође је само генерално довољно добро да се сетите, јер када га користите 325 00:17:56,170 --> 00:17:59,060 можда ћете желети да само да га запамтио. 326 00:17:59,060 --> 00:18:02,750 То ће учинити ваш живот много лакше. 327 00:18:02,750 --> 00:18:04,000 Да ли сам одговор на ваше питање? 328 00:18:04,000 --> 00:18:10,528 329 00:18:10,528 --> 00:18:14,290 >> Тако да сада, разговарали смо мало Укратко о библиотекама. 330 00:18:14,290 --> 00:18:18,570 Али главни оне две које смо били користећи до сада у току су 331 00:18:18,570 --> 00:18:20,860 Стандардни И / О и ЦС50. 332 00:18:20,860 --> 00:18:25,410 Какве ствари су укључени у стандардном И / О библиотеке? 333 00:18:25,410 --> 00:18:28,410 >> Да, до сада смо користили принтф. 334 00:18:28,410 --> 00:18:31,150 У ЦС50 смо користили Затамњена и ГетСтринг. 335 00:18:31,150 --> 00:18:37,200 А тип података стринг такође дешава да буде проглашена у овом ЦС50 библиотеци. 336 00:18:37,200 --> 00:18:40,250 Ми ћемо разговарати мало више у дубину о како библиотеке раде и како они 337 00:18:40,250 --> 00:18:41,870 интеракцију са остатком кода. 338 00:18:41,870 --> 00:18:46,220 Али они су главни оне две које смо су дошли у контакт са до сада у 339 00:18:46,220 --> 00:18:48,430 Наравно. 340 00:18:48,430 --> 00:18:50,050 >> Типови. 341 00:18:50,050 --> 00:18:58,120 Су добро запамтити колико Сваки тип је представљен и како 342 00:18:58,120 --> 00:19:02,840 многи бајта свака типа рекуирес-- 343 00:19:02,840 --> 00:19:04,990 инт, 4 бајта; цхар, 1 бајт. 344 00:19:04,990 --> 00:19:06,550 Флоат је 4 бајта. 345 00:19:06,550 --> 00:19:07,782 Шта је дупло? 346 00:19:07,782 --> 00:19:09,032 >> ПУБЛИКА: [неразумљиво]. 347 00:19:09,032 --> 00:19:11,398 348 00:19:11,398 --> 00:19:16,240 >> ПРЕДСЕДНИК 1: Да, па пловак али удвостручи величину. 349 00:19:16,240 --> 00:19:17,150 Шта је са дуго? 350 00:19:17,150 --> 00:19:18,400 >> ПУБЛИКА: [неразумљиво]. 351 00:19:18,400 --> 00:19:21,614 352 00:19:21,614 --> 00:19:24,680 >> ПРЕДСЕДНИК 1: У реду. 353 00:19:24,680 --> 00:19:25,410 Шта је дуго? 354 00:19:25,410 --> 00:19:26,660 >> ПУБЛИКА: [неразумљиво]. 355 00:19:26,660 --> 00:19:29,400 356 00:19:29,400 --> 00:19:31,450 >> ПРЕДСЕДНИК 1: Да, дупло инт. 357 00:19:31,450 --> 00:19:34,240 358 00:19:34,240 --> 00:19:34,705 Да. 359 00:19:34,705 --> 00:19:36,100 >> ПУБЛИКА: [неразумљиво]. 360 00:19:36,100 --> 00:19:38,030 >> ПРЕДСЕДНИК 1: Лонг [неразумљиво]. 361 00:19:38,030 --> 00:19:41,860 А онда дуго дуго је дупло. 362 00:19:41,860 --> 00:19:42,814 >> ПУБЛИКА: Не, не. 363 00:19:42,814 --> 00:19:47,107 Дугачак је само Инт. 364 00:19:47,107 --> 00:19:50,910 То зависи од архитектуре пре [неразумљиво] 365 00:19:50,910 --> 00:19:52,922 и инт имају исту величину. 366 00:19:52,922 --> 00:19:54,172 [Неразумљиво]. 367 00:19:54,172 --> 00:19:58,841 368 00:19:58,841 --> 00:20:00,920 >> ПРЕДСЕДНИК 1: Тако дуга и инт су исти. 369 00:20:00,920 --> 00:20:02,943 А онда дуго дуго је дупло Инт. 370 00:20:02,943 --> 00:20:03,910 Цоол. 371 00:20:03,910 --> 00:20:05,550 И онда, шта је последњи тип? 372 00:20:05,550 --> 00:20:06,510 >> Публика: Поинтер. 373 00:20:06,510 --> 00:20:10,350 >> ПРЕДСЕДНИК 1: Да, тако да смо научили мало о показивача. 374 00:20:10,350 --> 00:20:14,015 И без обзира шта је показивач указујући да-- то може да буде знак звезда 375 00:20:14,015 --> 00:20:15,880 или инт стар-- 376 00:20:15,880 --> 00:20:20,530 увек је 4 бајта за показивач. 377 00:20:20,530 --> 00:20:21,633 Питања о томе? 378 00:20:21,633 --> 00:20:22,116 Да? 379 00:20:22,116 --> 00:20:24,531 >> ПУБЛИКА: [неразумљиво]? 380 00:20:24,531 --> 00:20:29,530 >> ПРЕДСЕДНИК 1: Тако дуго и инт су исто у овој ЦС50 апарата. 381 00:20:29,530 --> 00:20:32,302 >> ПУБЛИКА: Апплианце су потпуно заменљиви. 382 00:20:32,302 --> 00:20:33,510 >> ПРЕДСЕДНИК 1: Да. 383 00:20:33,510 --> 00:20:36,610 Па онда дуго дуго дупло Инт. 384 00:20:36,610 --> 00:20:39,250 >> ПУБЛИКА: Ово је 32 бит? 385 00:20:39,250 --> 00:20:40,620 >> ПРЕДСЕДНИК 1: 32 бит, да. 386 00:20:40,620 --> 00:20:43,572 >> ПУБЛИКА: Дакле, [неразумљиво]? 387 00:20:43,572 --> 00:20:46,790 >> ПРЕДСЕДНИК 1: Да, ако се то не деси експлицитно кажем, 388 00:20:46,790 --> 00:20:47,870 треба да преузме 32 бит. 389 00:20:47,870 --> 00:20:50,040 >> ПУБЛИКА: Било би рекао нешто као под претпоставком 390 00:20:50,040 --> 00:20:51,498 Архитектура као апарат. 391 00:20:51,498 --> 00:20:58,800 392 00:20:58,800 --> 00:21:01,710 За 64 бит, једине ствари које Промена су Лонгс и показивачи. 393 00:21:01,710 --> 00:21:05,614 Обојица [неразумљиво]. 394 00:21:05,614 --> 00:21:06,590 >> ПРЕДСЕДНИК 1: Да? 395 00:21:06,590 --> 00:21:07,566 >> Публика: Питање. 396 00:21:07,566 --> 00:21:10,982 Дакле, један од праксе квизове, се пита о једној грозен Инт. 397 00:21:10,982 --> 00:21:15,374 Па како би то се одреди из инт [неразумљиво]? 398 00:21:15,374 --> 00:21:18,140 >> ПРЕДСЕДНИК 1: унсигнед у је 4 бајта. 399 00:21:18,140 --> 00:21:21,172 Али, шта је другачије у вези потписан Инт и грозен Инт? 400 00:21:21,172 --> 00:21:22,422 >> ПУБЛИКА: [неразумљиво]. 401 00:21:22,422 --> 00:21:24,868 402 00:21:24,868 --> 00:21:25,630 >> ПРЕДСЕДНИК 1: Тако је. 403 00:21:25,630 --> 00:21:27,570 Један може да представља негативне вредности. 404 00:21:27,570 --> 00:21:28,580 Али како то да урадим? 405 00:21:28,580 --> 00:21:30,536 >> ПУБЛИКА: [неразумљиво]. 406 00:21:30,536 --> 00:21:36,370 >> ПРЕДСЕДНИК 1: Да, штеди 1 битни да представља знак. 407 00:21:36,370 --> 00:21:40,910 408 00:21:40,910 --> 00:21:45,040 Потписала има једну мало да представља знак. 409 00:21:45,040 --> 00:21:48,886 И непотписани само је све позитивних. 410 00:21:48,886 --> 00:21:50,365 >> Публика: У реду. 411 00:21:50,365 --> 00:21:54,230 Дакле, ви кажете да је двоструки је двапут величине флоат? 412 00:21:54,230 --> 00:21:58,202 >> ПРЕДСЕДНИК 1: Доубле је двоструко величине флоат, да. 413 00:21:58,202 --> 00:22:01,639 >> ПУБЛИКА: Како показивач да дуго дуго [неразумљиво]? 414 00:22:01,639 --> 00:22:06,058 415 00:22:06,058 --> 00:22:10,870 >> ПРЕДСЕДНИК 1: Дакле, питање је како се показивач на дуге лонг-- 416 00:22:10,870 --> 00:22:13,800 Како је то само четири бајтова када дуго дуго њени 8 бајтова. 417 00:22:13,800 --> 00:22:17,310 Дакле, запамтите шта је показивач, у суштини, на веома базне вредности. 418 00:22:17,310 --> 00:22:19,046 >> ПУБЛИКА: [неразумљиво]. 419 00:22:19,046 --> 00:22:22,670 >> ПРЕДСЕДНИК 1: Да, па показивач је само сећање локација. 420 00:22:22,670 --> 00:22:28,040 Тако да није битно колико простора да показивач указује на. 421 00:22:28,040 --> 00:22:32,060 То само треба 4 бајта пратити те меморијску локацију. 422 00:22:32,060 --> 00:22:34,760 423 00:22:34,760 --> 00:22:36,010 Има ли још питања? 424 00:22:36,010 --> 00:22:39,800 425 00:22:39,800 --> 00:22:41,050 Цоол. 426 00:22:41,050 --> 00:22:42,920 427 00:22:42,920 --> 00:22:47,460 >> Тако да последња ствар коју имам је стандардни излаз. 428 00:22:47,460 --> 00:22:51,020 Требало би да их користе често довољно да можете да се сетите. 429 00:22:51,020 --> 00:22:54,800 Али то је, када користимо принтф, на пример. 430 00:22:54,800 --> 00:22:59,260 И ми имамо те симболе који је су позвани кодови формат. 431 00:22:59,260 --> 00:23:03,910 >> Па посто Ц знак, посто сам за инт, и ми исто тако може користити одсто д. 432 00:23:03,910 --> 00:23:05,130 То је иста ствар. 433 00:23:05,130 --> 00:23:08,200 Али, генерално, у ЦС50 ми покушајте да користите одсто и. 434 00:23:08,200 --> 00:23:09,860 Посто Ф флоат. 435 00:23:09,860 --> 00:23:15,620 Посто ЛД дуго дуго и посто С стринг. 436 00:23:15,620 --> 00:23:18,550 >> Слично томе, ми смо користили неколико ових низова. 437 00:23:18,550 --> 00:23:22,431 На пример, обрнуте косе црте н за нову линију. 438 00:23:22,431 --> 00:23:26,910 Ово је само када сте форматирање Ваш код за штампање ф. 439 00:23:26,910 --> 00:23:27,260 Да? 440 00:23:27,260 --> 00:23:28,906 >> ПУБЛИКА: Шта је посто Д? 441 00:23:28,906 --> 00:23:31,850 >> ПРЕДСЕДНИК 1: Дакле, питање је оно што је проценат Д? 442 00:23:31,850 --> 00:23:33,270 Посто је д за интс. 443 00:23:33,270 --> 00:23:37,392 Проценат д и проценат ја су исти. 444 00:23:37,392 --> 00:23:41,130 >> ПУБЛИКА: Која је разлика између бацксласх н и обрнута коса црта р? 445 00:23:41,130 --> 00:23:45,300 >> ПРЕДСЕДНИК 1: Дакле, питање је шта је Разлика између зазора Н и 446 00:23:45,300 --> 00:23:48,615 Зазор р? 447 00:23:48,615 --> 00:23:50,906 Мислим да је инверзна коса црта Р је-- 448 00:23:50,906 --> 00:23:54,340 >> ПУБЛИКА: Дакле, обрнута коса црта р само имплицира враћа на почетак линије 449 00:23:54,340 --> 00:23:56,670 без одласка на нову линију. 450 00:23:56,670 --> 00:24:01,000 Дакле, ако штампате косе црте Р и да се вратимо на почетак линије 451 00:24:01,000 --> 00:24:04,005 онда одштампате више ствари, ви препишете ствари које је већ на 452 00:24:04,005 --> 00:24:04,390 [Неразумљиво]. 453 00:24:04,390 --> 00:24:06,725 Док, н заправо иде на нову линија и иде на [неразумљиво]. 454 00:24:06,725 --> 00:24:10,525 455 00:24:10,525 --> 00:24:13,915 >> ПРЕДСЕДНИК 1: Па, има ли питања? 456 00:24:13,915 --> 00:24:15,430 У реду. 457 00:24:15,430 --> 00:24:18,617 Ја ћу га за руку Дан који ће се наставити. 458 00:24:18,617 --> 00:24:25,078 >> [АППЛАУСЕ] 459 00:24:25,078 --> 00:25:08,814 460 00:25:08,814 --> 00:25:09,720 >> ДАН: У реду. 461 00:25:09,720 --> 00:25:18,590 Тако да ћу да говорим о другом широк Опсег идеја из класе који су 462 00:25:18,590 --> 00:25:23,220 отприлике две недеље представник и Почетак недеље три поласка 463 00:25:23,220 --> 00:25:28,690 са ливење, што је само начин третирање вредност одређеног типа као 464 00:25:28,690 --> 00:25:30,830 вредност различитог типа. 465 00:25:30,830 --> 00:25:34,110 Тако да можемо да урадимо са карактера у ИНТС, плута на интс, и 466 00:25:34,110 --> 00:25:35,360 дуге чезне да удвостручи. 467 00:25:35,360 --> 00:25:38,170 468 00:25:38,170 --> 00:25:44,500 >> Све ове ствари може да се користи као начин лечења неке нумеричке вредности 469 00:25:44,500 --> 00:25:48,370 минус знак неке друге нумеричка вредност. 470 00:25:48,370 --> 00:25:54,480 Тако да постоје неки проблеми са овим, од Наравно, која долази када се баци 471 00:25:54,480 --> 00:25:57,860 ствари као што плутају на интс. 472 00:25:57,860 --> 00:26:00,500 Дакле, ово је мало чудно. 473 00:26:00,500 --> 00:26:03,170 Имамо пловак који је 1.31. 474 00:26:03,170 --> 00:26:05,220 Ми то помножити са 10.000. 475 00:26:05,220 --> 00:26:08,380 А онда смо га одштампате као Инт. 476 00:26:08,380 --> 00:26:09,630 Шта ово излаз? 477 00:26:09,630 --> 00:26:11,600 478 00:26:11,600 --> 00:26:14,020 10.000 пута 1.31. 479 00:26:14,020 --> 00:26:18,761 Дакле 13,000, је то Тхе Гуесс? 480 00:26:18,761 --> 00:26:20,685 >> Публика: Мислим да је 10.000. 481 00:26:20,685 --> 00:26:24,234 >> ДАН: Зато сам га множењем са 10.000 пре него што сам га ливење. 482 00:26:24,234 --> 00:26:25,202 >> Публика: Ох. 483 00:26:25,202 --> 00:26:27,622 Не би ли бити један 9 а неки 0 бројеви? 484 00:26:27,622 --> 00:26:29,270 >> ДАН: Можда има неке чудне цифара. 485 00:26:29,270 --> 00:26:32,410 486 00:26:32,410 --> 00:26:37,670 Дакле у праву, то је 1,3 пута 10.000. 487 00:26:37,670 --> 00:26:40,040 Тако да је то 13.000. 488 00:26:40,040 --> 00:26:41,313 И ово екстра веирд-- 489 00:26:41,313 --> 00:26:42,160 >> Публика: 13,100. 490 00:26:42,160 --> 00:26:42,650 >> ДАН: 13,100. 491 00:26:42,650 --> 00:26:44,910 Хвала ти, Роб. 492 00:26:44,910 --> 00:26:46,610 И ово екстра веирднесс-- 493 00:26:46,610 --> 00:26:48,060 Ова 9,9-- 494 00:26:48,060 --> 00:26:53,860 је једноставно зато што ове ливење завршио заокруживањем доле где 495 00:26:53,860 --> 00:26:55,394 она не би требало да има. 496 00:26:55,394 --> 00:26:55,871 Да. 497 00:26:55,871 --> 00:26:58,256 >> ПУБЛИКА: Ливење деси после било шта друго? 498 00:26:58,256 --> 00:27:03,865 >> ДАН: Зато јер имам то у штампи, она да ли то умножавања пре тога 499 00:27:03,865 --> 00:27:05,230 да ли то ливење. 500 00:27:05,230 --> 00:27:06,140 >> ПУБЛИКА: [неразумљиво]. 501 00:27:06,140 --> 00:27:11,350 >> ДАН: Мислим да би прво цаст, Да, што би било 10.000. 502 00:27:11,350 --> 00:27:12,610 Нешто друго? 503 00:27:12,610 --> 00:27:13,330 Цоол. 504 00:27:13,330 --> 00:27:16,344 Дакле, ово је 13,099. 505 00:27:16,344 --> 00:27:17,840 Зашто се то дешава? 506 00:27:17,840 --> 00:27:18,900 Непрецизности. 507 00:27:18,900 --> 00:27:21,020 >> Пловци нису савршени. 508 00:27:21,020 --> 00:27:27,550 Они могу представљати само бројеве за одређени број значајних личности. 509 00:27:27,550 --> 00:27:35,120 Дакле, ако се одштампа 8 СИГ смокве на Ова плутају, добијамо неку врсту 510 00:27:35,120 --> 00:27:36,800 Угли лоокинг број. 511 00:27:36,800 --> 00:27:45,580 А то је зато што не могу тачно 1,31 бити представљени симпле 512 00:27:45,580 --> 00:27:49,000 овлашћења два у машини. 513 00:27:49,000 --> 00:27:53,530 Тако да заврши узимање најближи Ваљда, која завршава 514 00:27:53,530 --> 00:27:55,710 бити мало низак. 515 00:27:55,710 --> 00:27:57,730 Смисла? 516 00:27:57,730 --> 00:27:59,110 У реду. 517 00:27:59,110 --> 00:28:05,840 >> Сада, замењен је другачији начин ради условне изјаве у којој су сви 518 00:28:05,840 --> 00:28:09,900 нам је стало је једна променљива. 519 00:28:09,900 --> 00:28:16,570 Дакле, у овом конкретном примеру, ми смо добијање цео број од корисника. 520 00:28:16,570 --> 00:28:21,070 А онда гледамо шта је то цео је. 521 00:28:21,070 --> 00:28:23,500 По свој прилици, то је број између једне и четири. 522 00:28:23,500 --> 00:28:24,800 То је оно што ми тражимо. 523 00:28:24,800 --> 00:28:28,450 >> Тако да урадите прекидач Име променљиве. 524 00:28:28,450 --> 00:28:34,290 Онда подесите случајевима евентуалних вредности би могао бити. 525 00:28:34,290 --> 00:28:37,730 Дакле случају један, кажу да је ниско. 526 00:28:37,730 --> 00:28:41,080 А онда се пробије да изађу прекидача стања тако 527 00:28:41,080 --> 00:28:43,270 ти не настави. 528 00:28:43,270 --> 00:28:44,830 >> У следећем цасе-- 529 00:28:44,830 --> 00:28:46,940 тако случају да два и случај три-- 530 00:28:46,940 --> 00:28:51,920 ако је случај двоје само пада на Прва линија кода види као са 531 00:28:51,920 --> 00:28:55,400 предмет се јавиле три док не види паузу. 532 00:28:55,400 --> 00:29:00,430 Дакле разлог добијате случају један до Само Принт ниска је зато што сам 533 00:29:00,430 --> 00:29:01,890 имам овде ову паузу. 534 00:29:01,890 --> 00:29:05,360 Ако ја, рецимо, игнорисао бреак-- ако сам бацио овај бреакаваи-- 535 00:29:05,360 --> 00:29:09,740 би принт ниска, а онда би принт средину, а онда би сломити. 536 00:29:09,740 --> 00:29:12,200 >> Дакле, паузе су важан део прекидача услова и 537 00:29:12,200 --> 00:29:14,340 они би требало да буде тамо. 538 00:29:14,340 --> 00:29:20,070 Било случајева који нису експлицитно наведени бави се подразумевано 539 00:29:20,070 --> 00:29:26,645 случај у прекидача и треба да се баци. 540 00:29:26,645 --> 00:29:31,363 >> ПУБЛИКА: Дакле 1, 2, 3, и 4 ће бити н? 541 00:29:31,363 --> 00:29:33,310 >> ДАН: Вредности које могу бити н. 542 00:29:33,310 --> 00:29:34,654 Да. 543 00:29:34,654 --> 00:29:35,146 Да? 544 00:29:35,146 --> 00:29:37,606 >> ПУБЛИКА: Дакле, када имате да [неразумљиво]? 545 00:29:37,606 --> 00:29:44,002 546 00:29:44,002 --> 00:29:46,830 >> ДАН: Ти би одштампате ниске, а затим би принт средину, и 547 00:29:46,830 --> 00:29:47,400 онда би сломити. 548 00:29:47,400 --> 00:29:50,244 >> ПУБЛИКА: Зашто би то принт Миддле ако [неразумљиво]? 549 00:29:50,244 --> 00:29:54,036 550 00:29:54,036 --> 00:30:00,550 >> ДАН: Значи, све под случаја пре паузе падне испод. 551 00:30:00,550 --> 00:30:09,390 Тако да случај један отисак је испод случај један као што је то следећи Принт. 552 00:30:09,390 --> 00:30:09,890 Да? 553 00:30:09,890 --> 00:30:11,140 >> ПУБЛИКА: [неразумљиво]? 554 00:30:11,140 --> 00:30:15,890 555 00:30:15,890 --> 00:30:22,170 >> ДАН: Дакле, овај број је само посебан вредност која Ова променљива 556 00:30:22,170 --> 00:30:23,420 може да потраје, зар не? 557 00:30:23,420 --> 00:30:26,740 558 00:30:26,740 --> 00:30:28,490 Да ли то смисла? 559 00:30:28,490 --> 00:30:28,990 Да. 560 00:30:28,990 --> 00:30:31,490 >> ПУБЛИКА: [неразумљиво]? 561 00:30:31,490 --> 00:30:34,130 >> ДАН: Да, случај двојица принт средњи и затим разбити. 562 00:30:34,130 --> 00:30:35,380 >> ПУБЛИКА: [неразумљиво]? 563 00:30:35,380 --> 00:30:37,954 564 00:30:37,954 --> 00:30:40,050 >> ДАН: Мислим да је било? 565 00:30:40,050 --> 00:30:43,855 Које друге врсте података можете пребацити? 566 00:30:43,855 --> 00:30:46,320 >> ПУБЛИКА: Можете да укључите преко било које врсте података. 567 00:30:46,320 --> 00:30:50,905 Али то само значи ништа због карактера и интс и такве ствари, јер је 568 00:30:50,905 --> 00:30:55,600 ако преласка показивач то не баш смисла, 569 00:30:55,600 --> 00:30:59,555 пребацивање оптерећења, ако је чак и хајдемо то урадите, због плутајуће тачке 570 00:30:59,555 --> 00:31:02,840 прецизности, не би баш Желим да се то уради у сваком случају. 571 00:31:02,840 --> 00:31:07,320 Дакле прилично, само интс и знакова и слично. 572 00:31:07,320 --> 00:31:12,360 >> ДАН: Да, то је када имате експлицитна Вредности које знате, мислим, могу бити 573 00:31:12,360 --> 00:31:14,250 да је прекидач је заправо корисно. 574 00:31:14,250 --> 00:31:17,094 575 00:31:17,094 --> 00:31:18,990 Добро? 576 00:31:18,990 --> 00:31:21,370 У реду. 577 00:31:21,370 --> 00:31:26,180 >> Обим је опсег да декларисана променљива продужава. 578 00:31:26,180 --> 00:31:32,190 Дакле, у овом малом комад кода имам, било би пуно грешака. 579 00:31:32,190 --> 00:31:41,450 А разлог за то је сам прогласио овај инт и у оквиру овог за петље. 580 00:31:41,450 --> 00:31:46,390 И онда покушавам да референца коју И ван то за обим петље. 581 00:31:46,390 --> 00:31:50,330 >> Дакле, у основи, можете да размислите о обиму као нешто што изјављујете 582 00:31:50,330 --> 00:31:59,750 са унутрашњим скуп заграда само постоји унутар тих заграда. 583 00:31:59,750 --> 00:32:04,990 И ако покушате да користите тај променљиву изван ових заграда, ти ћеш 584 00:32:04,990 --> 00:32:08,356 добити грешку од компајлера. 585 00:32:08,356 --> 00:32:08,812 Да? 586 00:32:08,812 --> 00:32:09,724 >> ПУБЛИКА: Дакле, овај не ради? 587 00:32:09,724 --> 00:32:11,790 >> Дан: Ово не ради, да. 588 00:32:11,790 --> 00:32:17,190 589 00:32:17,190 --> 00:32:18,660 Стрингс. 590 00:32:18,660 --> 00:32:19,780 Стринг цхар *. 591 00:32:19,780 --> 00:32:22,250 Они су управо исти. 592 00:32:22,250 --> 00:32:25,540 Они су само показивачи на ликовима. 593 00:32:25,540 --> 00:32:33,000 И све жице које имате треба да се заврши са бацксласх нуле, што је само 594 00:32:33,000 --> 00:32:34,410 ц конвенција. 595 00:32:34,410 --> 00:32:36,680 >> То се зове НУЛЛ Терминатор. 596 00:32:36,680 --> 00:32:39,050 И НУЛЛ-- 597 00:32:39,050 --> 00:32:41,670 капитал Н, капитал У, капитал Л, капитала Л-- 598 00:32:41,670 --> 00:32:44,290 није исто као НУЛЛ Терминатор. 599 00:32:44,290 --> 00:32:46,640 То је показивач. 600 00:32:46,640 --> 00:32:48,280 То је лик. 601 00:32:48,280 --> 00:32:49,530 Они су веома различити. 602 00:32:49,530 --> 00:32:50,200 Запамтите то. 603 00:32:50,200 --> 00:32:52,320 То ће бити на квизу, вероватно. 604 00:32:52,320 --> 00:32:54,040 Нисам видео квиз. 605 00:32:54,040 --> 00:32:57,880 606 00:32:57,880 --> 00:32:58,840 Да? 607 00:32:58,840 --> 00:33:01,232 >> ПУБЛИКА: Дакле НУЛЛ је, рецимо, показивач? 608 00:33:01,232 --> 00:33:01,995 >> ДАН: Да. 609 00:33:01,995 --> 00:33:05,170 >> ПУБЛИКА: Шта [неразумљиво]? 610 00:33:05,170 --> 00:33:10,050 >> ДАН: Ако је, рецимо, маллоц се позива када вас немају довољно меморије да се 611 00:33:10,050 --> 00:33:14,400 Без обзира на величину сте тражили, маллоц ће се вратити НУЛЛ. 612 00:33:14,400 --> 00:33:19,550 То је, у основи, кад год је функција требало да се врати показивач, ви 613 00:33:19,550 --> 00:33:22,600 Потребно је да проверите против НУЛЛ, јер НУЛЛ је прилично зликовца-- 614 00:33:22,600 --> 00:33:25,260 то је, на неки начин, вредности смеће. 615 00:33:25,260 --> 00:33:27,050 То је нула што се тиче показивачи иде. 616 00:33:27,050 --> 00:33:29,630 617 00:33:29,630 --> 00:33:32,250 >> Кад год ви зовете функцију, која враћа показивач. 618 00:33:32,250 --> 00:33:35,960 Идеш да желите да проверите да буде сигуран да показивач није НУЛЛ 619 00:33:35,960 --> 00:33:37,760 јер НУЛЛ је веома чест. 620 00:33:37,760 --> 00:33:40,160 То је нека врста повратка смећа. 621 00:33:40,160 --> 00:33:44,902 Тако да ако се нешто не иде добро, вратио само НУЛЛ уместо. 622 00:33:44,902 --> 00:33:45,898 >> ПУБЛИКА: [неразумљиво]? 623 00:33:45,898 --> 00:33:48,922 >> ДАН: Да, и то је то. 624 00:33:48,922 --> 00:33:51,750 >> ПУБЛИКА: [неразумљиво]? 625 00:33:51,750 --> 00:33:52,800 >> ДАН: то Спелл као ово. 626 00:33:52,800 --> 00:33:54,150 То је НУЛЛ Терминатор. 627 00:33:54,150 --> 00:33:56,560 То је мала слова Н-У-Л-Л, ако ти га правопис. 628 00:33:56,560 --> 00:33:59,860 >> ПУБЛИКА: И ја само отишао назад и тестирали га. 629 00:33:59,860 --> 00:34:03,010 А ако покушате да стави флоатинг поинт вредност у прекидач, то ће викати на тебе 630 00:34:03,010 --> 00:34:05,916 говорећи, изјава захтева израз целобројног типа. 631 00:34:05,916 --> 00:34:07,166 >> ДАН: Изволи. 632 00:34:07,166 --> 00:34:09,639 633 00:34:09,639 --> 00:34:12,246 Али да, како је опет питање? 634 00:34:12,246 --> 00:34:13,496 >> ПУБЛИКА: [неразумљиво]? 635 00:34:13,496 --> 00:34:16,150 636 00:34:16,150 --> 00:34:23,679 >> ДАН: Тако капитал Н, капитал У, капитал Л, Л је капитал стварна Ц ствар. 637 00:34:23,679 --> 00:34:29,719 То је НУЛЛ показивач и да ће само да се третира, као што су. 638 00:34:29,719 --> 00:34:33,530 Ви никада неће покушати да пише НУЛЛ карактер и видим ниједну 639 00:34:33,530 --> 00:34:35,630 други начин од овога. 640 00:34:35,630 --> 00:34:36,610 Да? 641 00:34:36,610 --> 00:34:42,490 >> ПУБЛИКА: Дакле враћа у цхар Максимални или нешто у белешкама, зар не 642 00:34:42,490 --> 00:34:43,960 оличавају исту функцију као [неразумљиво]? 643 00:34:43,960 --> 00:34:50,655 644 00:34:50,655 --> 00:34:54,949 >> ПУБЛИКА: Дакле, мислите да повратку Чар Мак из гетцхар, или 645 00:34:54,949 --> 00:34:55,444 шта год да је? 646 00:34:55,444 --> 00:34:55,940 >> Публика: Да. 647 00:34:55,940 --> 00:34:58,620 >> Публика: Да, па општи термин за све оне ствари 648 00:34:58,620 --> 00:34:59,920 су Сентинел вредности. 649 00:34:59,920 --> 00:35:03,640 Дакле, као што враћа инт мак из Затамњена и Чар Мак из гетцхар, то је 650 00:35:03,640 --> 00:35:06,010 би требало да буде као, у реду, ако је ове ствари се враћају у нама, 651 00:35:06,010 --> 00:35:07,210 нешто није у реду. 652 00:35:07,210 --> 00:35:09,950 >> За савете, само се деси да имамо То Сентинел вредност која свима 653 00:35:09,950 --> 00:35:10,750 уговара. 654 00:35:10,750 --> 00:35:13,210 И то је ствар коју вратите када ствари крену наопако. 655 00:35:13,210 --> 00:35:15,910 Па Чар Мак је оно што ми користимо да представља нешто 656 00:35:15,910 --> 00:35:18,100 као што нулл или гетцхар. 657 00:35:18,100 --> 00:35:23,420 >> ПУБЛИКА: Дакле, ако сте тестирања гетцхар, молим вас да ставите НУЛЛ? 658 00:35:23,420 --> 00:35:23,910 Да ли би то прави разлику? 659 00:35:23,910 --> 00:35:25,400 >> ДАН: Ниси могао само да проверим НУЛЛ. 660 00:35:25,400 --> 00:35:30,130 Ти би да проверите Чар Мак јер Повратна вредност из функције је 661 00:35:30,130 --> 00:35:35,416 лик није показивач. 662 00:35:35,416 --> 00:35:35,888 Да? 663 00:35:35,888 --> 00:35:38,248 >> ПУБЛИКА: Ово питање пита за дужину стринг. 664 00:35:38,248 --> 00:35:40,136 Да ли то укључује НУЛЛ карактер? 665 00:35:40,136 --> 00:35:41,000 >> ДАН: Не 666 00:35:41,000 --> 00:35:45,930 И то је заправо начин дужина стринг зна да се заустави, јер иде преко 667 00:35:45,930 --> 00:35:49,070 Ваш низ карактера до види нулл карактер. 668 00:35:49,070 --> 00:35:51,030 А онда је као, све Добро, ја сам урадио. 669 00:35:51,030 --> 00:35:52,130 >> ПУБЛИКА: [неразумљиво] пет? 670 00:35:52,130 --> 00:35:53,990 >> ДАН: Здраво ће бити пет. 671 00:35:53,990 --> 00:35:55,240 Да. 672 00:35:55,240 --> 00:35:59,580 673 00:35:59,580 --> 00:36:02,880 Дакле, низови су континуирано блокови меморије. 674 00:36:02,880 --> 00:36:08,480 Они имају тренутни приступ рекавши назив низа, а затим, у Цурли 675 00:36:08,480 --> 00:36:16,720 протеза, шта год индекс желите ићи да, они индексиран од нуле до 676 00:36:16,720 --> 00:36:20,100 дужина низа минус 1. 677 00:36:20,100 --> 00:36:23,070 >> И они су прогласили према врсти Оно што сте складиштење у 678 00:36:23,070 --> 00:36:29,750 Арраи, име низа, а затим без обзира на величину је тог низа. 679 00:36:29,750 --> 00:36:36,660 Тако да је ово цхар низ дужине шест који има ове вредности. 680 00:36:36,660 --> 00:36:42,050 681 00:36:42,050 --> 00:36:42,700 Да? 682 00:36:42,700 --> 00:36:43,950 >> ПУБЛИКА: [неразумљиво]? 683 00:36:43,950 --> 00:36:47,980 684 00:36:47,980 --> 00:36:48,460 >> ДАН: Да. 685 00:36:48,460 --> 00:36:51,340 >> ПУБЛИКА: [неразумљиво]? 686 00:36:51,340 --> 00:36:56,700 >> ДАН: Ако имате шта се дешава у низу већ направили. 687 00:36:56,700 --> 00:37:02,260 Да би могао да, уместо наведете ово као, рецимо, знак, без обзира на име свог 688 00:37:02,260 --> 00:37:12,200 Низ је, празне заграде једнако Цурли припремају Х зарез Е зарез Л зарезима Л цомма 689 00:37:12,200 --> 00:37:16,290 О Цомма НУЛЛ карактер и коврџава браце. 690 00:37:16,290 --> 00:37:18,180 То би такође раде као изјава. 691 00:37:18,180 --> 00:37:20,886 >> ПУБЛИКА: [неразумљиво]? 692 00:37:20,886 --> 00:37:23,110 >> ДАН: Онда морате да имате величина је већ направљен. 693 00:37:23,110 --> 00:37:23,896 >> ПУБЛИКА: [неразумљиво]? 694 00:37:23,896 --> 00:37:25,146 >> ДАН: Да. 695 00:37:25,146 --> 00:37:30,114 696 00:37:30,114 --> 00:37:32,420 У реду. 697 00:37:32,420 --> 00:37:36,430 Командне линије аргументи су начин добијање улаз од корисника као 698 00:37:36,430 --> 00:37:39,380 аргументи за Маин. 699 00:37:39,380 --> 00:37:40,600 Главни узима два аргумента. 700 00:37:40,600 --> 00:37:47,680 Број аргумената који се прошао дуж командне линије и А 701 00:37:47,680 --> 00:37:55,340 стринг вектор или стринг арраи од свих аргумената. 702 00:37:55,340 --> 00:38:07,840 >> Дакле, ако сам, рецимо, зове функција, као што су тачка од 1. Спаце, 2 простора, три, 703 00:38:07,840 --> 00:38:10,110 аргц ће бити 4. 704 00:38:10,110 --> 00:38:17,370 А аргв 0 ће бити тачка напоље. 705 00:38:17,370 --> 00:38:19,130 Аргв1 ће бити 1. 706 00:38:19,130 --> 00:38:23,030 аргв2 би 2. аргв3 би 3, у том конкретном случају. 707 00:38:23,030 --> 00:38:23,310 Да? 708 00:38:23,310 --> 00:38:25,400 >> ПУБЛИКА: [неразумљиво]? 709 00:38:25,400 --> 00:38:34,010 >> ДАН: Последњи елемент у низу јер је дужина низ аргц плус 710 00:38:34,010 --> 00:38:41,050 један од аргб, последњи елемент је НУЛЛ показивач. 711 00:38:41,050 --> 00:38:42,580 То је аргц плус 1. 712 00:38:42,580 --> 00:38:46,210 713 00:38:46,210 --> 00:38:52,150 Дакле, у случају да сам управо рекао, би се аргв 0 је тачка напоље. 714 00:38:52,150 --> 00:38:56,330 аргв 1 1. аргв2 је 2. аргв 3 је 3. 715 00:38:56,330 --> 00:39:03,490 аргв 4, који је један већи него аргц ће бити НУЛЛ. 716 00:39:03,490 --> 00:39:04,870 >> И то је НУЛЛ показивач. 717 00:39:04,870 --> 00:39:06,590 Да. 718 00:39:06,590 --> 00:39:11,250 А то је зато стринг Чар звезда је показивач. 719 00:39:11,250 --> 00:39:14,102 Тако да мора да буде истог типа. 720 00:39:14,102 --> 00:39:14,595 Да? 721 00:39:14,595 --> 00:39:16,074 >> Публика: Два питања. 722 00:39:16,074 --> 00:39:21,004 Тако да се, у чему је разлика између ово и ГетСтринг осим једног типа 723 00:39:21,004 --> 00:39:22,483 у корисничком мотору? 724 00:39:22,483 --> 00:39:25,934 И два, да ли је у оквиру чува Твој Рецент меморија? 725 00:39:25,934 --> 00:39:28,399 Дакле као, ГетСтринг би бити [неразумљиво]? 726 00:39:28,399 --> 00:39:31,357 727 00:39:31,357 --> 00:39:33,650 >> ДАН: Где се чува? 728 00:39:33,650 --> 00:39:34,905 Ја не знам где је то складиште. 729 00:39:34,905 --> 00:39:40,000 >> ПУБЛИКА: Дакле, у ствари, ви знате како било функционише зовете то аргументи 730 00:39:40,000 --> 00:39:42,170 се чувају у стеку? 731 00:39:42,170 --> 00:39:46,610 Тако аргц и аргв су аргументи на главни и они су на стек, или стварно 732 00:39:46,610 --> 00:39:49,131 тик изнад шта мислите како почетак стека. 733 00:39:49,131 --> 00:39:53,490 Који је био други део долази у обзир? 734 00:39:53,490 --> 00:39:56,821 >> ПУБЛИКА: Дакле, шта је [неразумљиво]? 735 00:39:56,821 --> 00:40:00,990 >> ДАН: Да, то је само другачији начин добијања улаз од корисника. 736 00:40:00,990 --> 00:40:06,030 Овај је мало ефикаснији и то је практичнији за скрипте због тебе 737 00:40:06,030 --> 00:40:10,070 могу само да прође аргументе да ваш главни Функција уместо да сачека 738 00:40:10,070 --> 00:40:13,400 за кориснике ако немате никакве корисника. 739 00:40:13,400 --> 00:40:16,280 >> Публика: И да, да конце би [неразумљиво]. 740 00:40:16,280 --> 00:40:17,922 То би смештање ствари која вам је потребна. 741 00:40:17,922 --> 00:40:18,834 >> ДАН: Да? 742 00:40:18,834 --> 00:40:21,114 >> ПУБЛИКА: [неразумљиво]? 743 00:40:21,114 --> 00:40:27,545 >> ДАН: Да, аргв 0 увек укључује тачка сласх од позива функције. 744 00:40:27,545 --> 00:40:28,042 Да? 745 00:40:28,042 --> 00:40:29,292 >> ПУБЛИКА: [неразумљиво]? 746 00:40:29,292 --> 00:40:33,509 747 00:40:33,509 --> 00:40:37,310 >> ДАН: Да, сваки од аргумената су завршио НУЛЛ карактера, јер они 748 00:40:37,310 --> 00:40:38,310 су Стрингс. 749 00:40:38,310 --> 00:40:40,892 >> ПУБЛИКА: [неразумљиво]? 750 00:40:40,892 --> 00:40:44,116 >> ДАН: Да, аргв аргц је НУЛЛ показивач. 751 00:40:44,116 --> 00:40:45,112 >> ПУБЛИКА: [неразумљиво]? 752 00:40:45,112 --> 00:40:47,104 >> ДАН: О, да. 753 00:40:47,104 --> 00:40:48,100 Да, извини. 754 00:40:48,100 --> 00:40:49,594 >> ПУБЛИКА: Дакле, [неразумљиво]? 755 00:40:49,594 --> 00:41:08,518 756 00:41:08,518 --> 00:41:16,340 >> ДАН: Дакле, питање је да ли сте имали командна линија дот сласх тачку од 1, 2, 757 00:41:16,340 --> 00:41:20,410 ће број командне линије аргументи бити два или би то било три? 758 00:41:20,410 --> 00:41:24,420 759 00:41:24,420 --> 00:41:28,240 >> Публика: Мислим да се то не деси битно. 760 00:41:28,240 --> 00:41:31,370 Склон сам да кажем, ох, ниси проћи било аргументе командне линије када, 761 00:41:31,370 --> 00:41:32,730 Очигледно, ви звали функцију. 762 00:41:32,730 --> 00:41:37,950 Па сам тенденцију да гласно искључује функцију из командне линије 763 00:41:37,950 --> 00:41:40,350 аргументи иако је укључени у аргв. 764 00:41:40,350 --> 00:41:42,600 >> ДАН: Али ако је било на тест-- 765 00:41:42,600 --> 00:41:46,550 Да-- и ако кажете нешто Као аргц једнако 3, 766 00:41:46,550 --> 00:41:48,512 ти си у сигурном пласману. 767 00:41:48,512 --> 00:41:49,416 Да? 768 00:41:49,416 --> 00:41:50,666 >> ПУБЛИКА: [неразумљиво]? 769 00:41:50,666 --> 00:42:00,990 770 00:42:00,990 --> 00:42:09,510 >> ДАН: Мислим да ако уместо позивања ове у аргц и аргв стринг загради 771 00:42:09,510 --> 00:42:14,350 али задржао исте врсте и управо звао их нешто друго слично 772 00:42:14,350 --> 00:42:16,640 и Б, да ли би и даље радити? 773 00:42:16,640 --> 00:42:18,790 И још увек ће радити, би само-- 774 00:42:18,790 --> 00:42:21,520 уместо да користите аргц-- требало би да употребите и б. 775 00:42:21,520 --> 00:42:24,436 776 00:42:24,436 --> 00:42:25,408 Да? 777 00:42:25,408 --> 00:42:26,658 >> ПУБЛИКА: [неразумљиво]? 778 00:42:26,658 --> 00:42:34,642 779 00:42:34,642 --> 00:42:38,850 >> ДАН: Дакле, питање је ГетСтринг је ће да сачувате меморију у гомили 780 00:42:38,850 --> 00:42:42,280 јер ГетСтринг је цхар *. 781 00:42:42,280 --> 00:42:47,530 Она чува меморију у гомили, јер позива сада маллоц унутар стварни 782 00:42:47,530 --> 00:42:49,258 имплементација ГетСтринг. 783 00:42:49,258 --> 00:42:53,210 784 00:42:53,210 --> 00:42:55,090 У реду, идемо даље. 785 00:42:55,090 --> 00:42:55,950 >> Безбедност. 786 00:42:55,950 --> 00:43:01,090 Тако да се заиста сигуран, ви се ослањају на бр један и дозволите никакав један приступ неком 787 00:43:01,090 --> 00:43:04,540 ваше информације, због чега свако гради своје машине, 788 00:43:04,540 --> 00:43:09,580 своје оперативне системе, све њихове Програми од нуле, и очигледно 789 00:43:09,580 --> 00:43:13,410 немојте се повеже са било којим другим машинама путем интернета. 790 00:43:13,410 --> 00:43:17,350 Дакле, рачунари су несигурни. 791 00:43:17,350 --> 00:43:19,200 Они су стварно. 792 00:43:19,200 --> 00:43:20,940 Морамо да верујемо друге људе. 793 00:43:20,940 --> 00:43:26,500 >> А идеја безбедности је да си ти покушавајући да ограниче количину 794 00:43:26,500 --> 00:43:27,540 Поверење које вам је потребно. 795 00:43:27,540 --> 00:43:32,080 И један од начина да то урадите је кроз криптографије. 796 00:43:32,080 --> 00:43:34,950 Криптографија је, у суштини, имамо тајне. 797 00:43:34,950 --> 00:43:38,880 >> Понекад морамо да прође наше тајне заједно кроз, рецимо, интернет или 798 00:43:38,880 --> 00:43:39,980 Друге ствари. 799 00:43:39,980 --> 00:43:43,180 А ми не желимо људе да знају ове тајне. 800 00:43:43,180 --> 00:43:50,100 Тако да смо шифровање наше тајне у начин да се надамо нико не може да схвати. 801 00:43:50,100 --> 00:43:51,600 >> Тако смо усед-- 802 00:43:51,600 --> 00:43:54,340 кроз току ове цласс-- 803 00:43:54,340 --> 00:44:00,750 ствари као Цаесар шифра и [Неразумљиво], које су обе веома, веома 804 00:44:00,750 --> 00:44:03,200 несигурни начини шифровања ствари. 805 00:44:03,200 --> 00:44:07,930 Они су лако да схватим шта они су и шта ваше тајне. 806 00:44:07,930 --> 00:44:12,130 Стварни свет користи много више компликоване шеме за шифровање. 807 00:44:12,130 --> 00:44:13,880 И нећемо ући у много више од тога. 808 00:44:13,880 --> 00:44:18,280 809 00:44:18,280 --> 00:44:19,430 >> Дебуггинг. 810 00:44:19,430 --> 00:44:20,785 ГДБ је најбољи. 811 00:44:20,785 --> 00:44:24,014 812 00:44:24,014 --> 00:44:25,810 Идем поново нагласити. 813 00:44:25,810 --> 00:44:30,920 Користите гдб све време сваки пут када имате проблем. 814 00:44:30,920 --> 00:44:36,030 Команде које су корисне у ГДБ су бреак, што сте прошли или линију 815 00:44:36,030 --> 00:44:41,330 број, назив функције, у суштини где је у свом коду желите да зауставите, 816 00:44:41,330 --> 00:44:45,600 и бити у стању да преузме контролу. 817 00:44:45,600 --> 00:44:54,140 >> Принт узима променљиву и исписује шта год да је променљива је у то 818 00:44:54,140 --> 00:44:55,990 Поинт у извршењу. 819 00:44:55,990 --> 00:45:00,130 Следећа премешта извршење дуж једном кораку. 820 00:45:00,130 --> 00:45:05,050 И корак кораке унутар функције у извршењу. 821 00:45:05,050 --> 00:45:10,480 >> Друге ствари су покренути, што је како је ви у ствари покренути свој код. 822 00:45:10,480 --> 00:45:16,630 Наставити узима све кораке потребне да дођете до следеће паузе тачку. 823 00:45:16,630 --> 00:45:18,300 И постоји много, много других. 824 00:45:18,300 --> 00:45:19,040 Види их. 825 00:45:19,040 --> 00:45:19,901 Они су супер. 826 00:45:19,901 --> 00:45:20,863 Да? 827 00:45:20,863 --> 00:45:22,113 >> ПУБЛИКА: [неразумљиво]? 828 00:45:22,113 --> 00:45:26,635 829 00:45:26,635 --> 00:45:28,200 >> ДАН: Да, то је за отклањање грешака. 830 00:45:28,200 --> 00:45:34,230 Па дебуггер је програм који вам омогућава да дебуг програм. 831 00:45:34,230 --> 00:45:39,931 То није програм који проналази грешке за ви, мада то би било сјајно. 832 00:45:39,931 --> 00:45:43,020 833 00:45:43,020 --> 00:45:46,040 >> И последња је за мене Сеарцх. 834 00:45:46,040 --> 00:45:51,470 Па типова потраге које смо разговарали о томе у овој класи су линеарни Сеарцх, 835 00:45:51,470 --> 00:45:55,960 што је само да погледате кроз сваки елемент за претрагу простора, један 836 00:45:55,960 --> 00:46:00,410 елемент у исто време, док не пронађете оно сте у потрази за, или док се не појави 837 00:46:00,410 --> 00:46:03,350 крај вашег простора за претрагу у којој указују кажете да нисте могли наћи 838 00:46:03,350 --> 00:46:06,360 елемент који сте тражили. 839 00:46:06,360 --> 00:46:13,450 А то траје у најбољем константно време, што је 0 од 1, ау најгорем линеарни 840 00:46:13,450 --> 00:46:16,070 време, које је 0 н. 841 00:46:16,070 --> 00:46:19,250 >> Бинарни Сеарцх, који треба Сордид елементи. 842 00:46:19,250 --> 00:46:24,230 Идете на средини ваших елемената, видите да ли је елемент тражите 843 00:46:24,230 --> 00:46:30,120 је већа или мања од елемента да сте у средини. 844 00:46:30,120 --> 00:46:36,510 То је већи, ви кажете да дно вашег претраживања простора Да ли је ваша 845 00:46:36,510 --> 00:46:41,550 тренутна локација, средњи, а ви поново процес. 846 00:46:41,550 --> 00:46:46,150 Ако је мањи, изгледаш кажете да до-- Да, шта има? 847 00:46:46,150 --> 00:46:47,400 >> ПУБЛИКА: [неразумљиво]? 848 00:46:47,400 --> 00:46:51,000 849 00:46:51,000 --> 00:46:54,260 >> ДАН: Да. 850 00:46:54,260 --> 00:46:58,360 Свака врста врсте која је била предаје на класа је фер игра за тестирање. 851 00:46:58,360 --> 00:47:01,504 852 00:47:01,504 --> 00:47:04,920 >> [СМЕХ] 853 00:47:04,920 --> 00:47:10,260 >> ДАН: И чињеница да нисте имали да то уради за проблема сет, то је фер 854 00:47:10,260 --> 00:47:12,420 игра за тест. 855 00:47:12,420 --> 00:47:15,186 >> ПУБЛИКА: Можемо ли преко њега како да-- 856 00:47:15,186 --> 00:47:17,052 >> ДАН: То ће нестати преко. 857 00:47:17,052 --> 00:47:20,496 >> Звучник 2: Стварни број за [Неразумљиво] је на студи.цс50.нет. 858 00:47:20,496 --> 00:47:25,910 859 00:47:25,910 --> 00:47:32,680 Дакле, ако се осврнемо на проблем праксе у стапање методу страници 860 00:47:32,680 --> 00:47:35,880 студи.цс50.нет, постоји код за спровођење мерге врсте. 861 00:47:35,880 --> 00:47:38,550 Тако да не морате да спроводе то се вечерас. 862 00:47:38,550 --> 00:47:42,090 Али проверите да ли сте га разумели радије него само памћења. 863 00:47:42,090 --> 00:47:45,035 >> ПУБЛИКА: [неразумљиво]? 864 00:47:45,035 --> 00:47:49,720 >> Звучник 2: стапања Сортирај страница на студи.цс50.нет, постоји пракса 865 00:47:49,720 --> 00:47:53,570 проблем који, ако кликнете кроз Проблем, на самом крају је 866 00:47:53,570 --> 00:47:56,280 решење, што је стапање Сорт имплементација. 867 00:47:56,280 --> 00:47:58,510 Али проверите да ли сте га разумели уместо да га памћење 868 00:47:58,510 --> 00:47:59,760 или копирањем доле. 869 00:47:59,760 --> 00:48:02,870 870 00:48:02,870 --> 00:48:06,340 >> ПУБЛИКА: И савршено валидан проблем за испит ће бити 871 00:48:06,340 --> 00:48:07,990 нешто као ево листе. 872 00:48:07,990 --> 00:48:12,100 Шта ова листа изгледа као после један корак селекција врсте или 873 00:48:12,100 --> 00:48:13,330 Инсертион сорт или било шта друго. 874 00:48:13,330 --> 00:48:14,940 Једна пуна итерација листе. 875 00:48:14,940 --> 00:48:18,530 Дакле, чак и ако не завршити потребе да кода за њу, морате да га разумемо 876 00:48:18,530 --> 00:48:20,440 довољно да знам како то иде да буде модификовање овај низ. 877 00:48:20,440 --> 00:48:24,144 878 00:48:24,144 --> 00:48:25,394 >> ДАН: То је то за мене. 879 00:48:25,394 --> 00:48:30,604 880 00:48:30,604 --> 00:48:32,588 >> [АППЛАУСЕ] 881 00:48:32,588 --> 00:49:06,316 882 00:49:06,316 --> 00:49:07,410 >> Лукас: Здраво свима. 883 00:49:07,410 --> 00:49:08,390 Моје име је Лукас. 884 00:49:08,390 --> 00:49:16,840 Идем да причам о рекурзије, све сорте које смо научили, и 885 00:49:16,840 --> 00:49:18,050 мало свих показивача. 886 00:49:18,050 --> 00:49:18,740 ОК? 887 00:49:18,740 --> 00:49:20,340 Дакле, пре свега, рекурзије. 888 00:49:20,340 --> 00:49:22,951 Шта то значи да се каже да је функција је рекурзивна? 889 00:49:22,951 --> 00:49:24,675 >> Публика: себе назива. 890 00:49:24,675 --> 00:49:26,500 >> Лукас: У реду, себе назива, да. 891 00:49:26,500 --> 00:49:27,700 Дакле, као што овој слици, на пример. 892 00:49:27,700 --> 00:49:30,280 То је као на слици изнутра од слике и тако даље. 893 00:49:30,280 --> 00:49:35,740 Тако на пример, можете да смо-- као Дан који је говорио о бинарном претрази. 894 00:49:35,740 --> 00:49:41,840 Један од начина на који бинарни претрага је рецурсиве је чињеница да сте 895 00:49:41,840 --> 00:49:43,130 покушава да пронађе број. 896 00:49:43,130 --> 00:49:44,250 Тако да одете на средини. 897 00:49:44,250 --> 00:49:47,130 А онда проверите да ли је број тамо у лево и десно. 898 00:49:47,130 --> 00:49:49,650 >> А онда, ако сте сазнали број ће бити на лево, то је иста 899 00:49:49,650 --> 00:49:53,340 ствар као поново раде потрагу, али само на леве листе. 900 00:49:53,340 --> 00:49:57,350 Дакле, то је како то звучи као да је рекурзивно. 901 00:49:57,350 --> 00:50:01,870 Зато ви имате рецурсиве решење за стапања врсте. 902 00:50:01,870 --> 00:50:04,270 >> У реду, ево примера. 903 00:50:04,270 --> 00:50:07,280 Дакле, хајде да кажем да желим да изаберете сви бројеви од 1 до н. 904 00:50:07,280 --> 00:50:13,790 Ја могу да схватим да збир Н број је н плус н минус 1 до 1. 905 00:50:13,790 --> 00:50:17,810 Али онда, ако погледамо Н минус 1 плус Н минус 2 плус 1, то је иста 906 00:50:17,810 --> 00:50:20,680 ствар као резимирање бројевима до н минус 1. 907 00:50:20,680 --> 00:50:25,890 Тако да могу да кажем суму равноправног суме једнако је Н плус је збиру н минус 1. 908 00:50:25,890 --> 00:50:28,010 Да ли то смисла? 909 00:50:28,010 --> 00:50:32,630 >> И ја бих још нешто зове база случај, а то је да 910 00:50:32,630 --> 00:50:37,440 збир бројева горе на нулу ће бити нула. 911 00:50:37,440 --> 00:50:42,770 Па чим се на број нула, престанем бројање. 912 00:50:42,770 --> 00:50:45,330 Да ли то смисла? 913 00:50:45,330 --> 00:50:48,120 >> Дакле, овде је пример како Ја могу да применимо. 914 00:50:48,120 --> 00:50:49,860 Тако да имају ову функцију у неким. 915 00:50:49,860 --> 00:50:51,700 То заузима цео Н. 916 00:50:51,700 --> 00:50:56,300 Па ево ја први проверим да ли је н мање или једнако нули. 917 00:50:56,300 --> 00:51:00,310 Дакле, ако је то мање или једнако нули, ја врати нулу, што је наш основни случај. 918 00:51:00,310 --> 00:51:05,690 У супротном, могу само да се врати Н плус збир бројева из 919 00:51:05,690 --> 00:51:07,190 један до н минус један. 920 00:51:07,190 --> 00:51:09,360 Смисла? 921 00:51:09,360 --> 00:51:10,100 У реду. 922 00:51:10,100 --> 00:51:11,610 >> Дакле, ево како то изгледа. 923 00:51:11,610 --> 00:51:15,260 Имате суму од 2 једнакима 2 плус суму од 1. 924 00:51:15,260 --> 00:51:18,930 А неки од 1 је 1 плус збир од 0, што је 0. 925 00:51:18,930 --> 00:51:20,216 Смисла? 926 00:51:20,216 --> 00:51:25,342 Дакле, ако се осврнемо на стек вашег Програм, то је оно што изгледа. 927 00:51:25,342 --> 00:51:26,820 >> Прво, имамо главну функцију. 928 00:51:26,820 --> 00:51:30,320 А онда основна функција зове сума 2. 929 00:51:30,320 --> 00:51:36,690 А онда сума 2 ће да каже, ох, сума 2 једнака 2 плус збир једног. 930 00:51:36,690 --> 00:51:39,460 Па додам суму од 1 до стека. 931 00:51:39,460 --> 00:51:43,860 А збир 1 ће позвати збир 0, који је такође ће бити додат 932 00:51:43,860 --> 00:51:44,630 на стек. 933 00:51:44,630 --> 00:51:49,240 А онда свака од ових оних који су на врху другог морају да се врате 934 00:51:49,240 --> 00:51:52,020 пре него што су они други могу да наставим. 935 00:51:52,020 --> 00:51:56,240 >> Тако, на пример, овде, збир 0, Прво, ће да се врати 0. 936 00:51:56,240 --> 00:51:58,320 А затим изабрати суму од 1. 937 00:51:58,320 --> 00:52:00,850 Тада суму од 1 ће се врати 1 у суму од 2. 938 00:52:00,850 --> 00:52:03,900 И на крају, суму од 2 иде да се врате 3 на главни. 939 00:52:03,900 --> 00:52:05,320 Да ли то смисла? 940 00:52:05,320 --> 00:52:09,496 >> То је заиста важно да разумете како стек ради и покушајте да 941 00:52:09,496 --> 00:52:11,980 видим да то има смисла. 942 00:52:11,980 --> 00:52:13,260 У реду, тако да сортирање. 943 00:52:13,260 --> 00:52:16,170 Па зашто је сортирање важно, Пре свега? 944 00:52:16,170 --> 00:52:18,260 Зашто би нам је стало? 945 00:52:18,260 --> 00:52:20,310 Анионе? 946 00:52:20,310 --> 00:52:20,695 Дајте ми пример? 947 00:52:20,695 --> 00:52:21,040 Да? 948 00:52:21,040 --> 00:52:22,968 >> ПУБЛИКА: [неразумљиво]. 949 00:52:22,968 --> 00:52:24,700 >> Лукас: Да, у реду. 950 00:52:24,700 --> 00:52:26,090 Тако да можете претраживати ефикасније. 951 00:52:26,090 --> 00:52:28,580 То је добар начин. 952 00:52:28,580 --> 00:52:32,462 Тако, на пример, имамо доста ствари, заправо, у нашим животима да 953 00:52:32,462 --> 00:52:32,920 су поредани. 954 00:52:32,920 --> 00:52:34,830 На пример, речника. 955 00:52:34,830 --> 00:52:39,210 >> То је веома важно да су сви речи у неком реду који смо 956 00:52:39,210 --> 00:52:41,970 могу лако приступити. 957 00:52:41,970 --> 00:52:43,280 Дакле, то је оно што је он говорио. 958 00:52:43,280 --> 00:52:45,530 Можете претраживати ефикасније. 959 00:52:45,530 --> 00:52:48,740 Размислите о томе како је тешко да би било да се дицтионари у којима су речи у 960 00:52:48,740 --> 00:52:49,500 случајним редоследом. 961 00:52:49,500 --> 00:52:53,120 Ћете морати да погледате, прилично, Свака реч док не пронађете 962 00:52:53,120 --> 00:52:54,720 реч коју тражиш. 963 00:52:54,720 --> 00:52:58,710 >> Ако користите Фацебоок и, када је гледате својим пријатељима, ти си 964 00:52:58,710 --> 00:53:03,540 ће да види да стави свој Фацебоок ближе пријатељ је на врху оне 965 00:53:03,540 --> 00:53:05,470 да не разговарате са толико. 966 00:53:05,470 --> 00:53:08,080 Ако идете скроз на дну листу пријатеља, идете да видите 967 00:53:08,080 --> 00:53:11,250 људи које вероватно ни не запамтите да сте пријатељи са. 968 00:53:11,250 --> 00:53:14,590 А то је зато Фацебоок врста ваши пријатељи на основу тога колико 969 00:53:14,590 --> 00:53:16,472 си близу њих. 970 00:53:16,472 --> 00:53:17,930 >> Тако организовање података. 971 00:53:17,930 --> 00:53:18,450 Такође, Покемон. 972 00:53:18,450 --> 00:53:21,400 Па видиш да све Покемонс имају бројеве. 973 00:53:21,400 --> 00:53:27,210 И то је као лак начин приступа подацима. 974 00:53:27,210 --> 00:53:29,050 >> Публика: Приступ Покемон. 975 00:53:29,050 --> 00:53:29,890 >> Лукас: Да. 976 00:53:29,890 --> 00:53:32,395 >> ПУБЛИКА: [неразумљиво]. 977 00:53:32,395 --> 00:53:33,460 >> Лукас: Да. 978 00:53:33,460 --> 00:53:35,140 У реду, тако да избор врста. 979 00:53:35,140 --> 00:53:41,610 Избор врста ће се изабрати најмања Унсортед вредност листе сваког 980 00:53:41,610 --> 00:53:43,300 Време у свакој итерацији. 981 00:53:43,300 --> 00:53:46,800 То је врста као врсте којом се бавите у својој глави када покушавате да 982 00:53:46,800 --> 00:53:48,430 сортира списак при руци. 983 00:53:48,430 --> 00:53:51,990 >> У суштини, све што урадите је да погледате за најмањи број. 984 00:53:51,990 --> 00:53:54,280 Га ставите на сортираном листи. 985 00:53:54,280 --> 00:53:56,230 А онда тражити Следеће најмањи број. 986 00:53:56,230 --> 00:54:00,080 А онда наставите да радите то и тако даље. 987 00:54:00,080 --> 00:54:04,600 >> Па Избор врста је у основи ви изаберите сваки пут најмањег 988 00:54:04,600 --> 00:54:05,750 Унсортед вредност. 989 00:54:05,750 --> 00:54:10,840 Ставите на крају сортирано део листе. 990 00:54:10,840 --> 00:54:12,370 И наставите да радите то. 991 00:54:12,370 --> 00:54:15,890 Па хајде да видимо шта брзо ово личи. 992 00:54:15,890 --> 00:54:19,340 Дакле, овде је сортирано и Унсортед листе. 993 00:54:19,340 --> 00:54:23,350 >> Дакле, за сортирана листе, то је у почетку празно. 994 00:54:23,350 --> 00:54:26,760 А онда ћу да изаберете најмањи број овде, што је 2. 995 00:54:26,760 --> 00:54:30,650 Тако да сам се број 2 и ја ставио испред листе. 996 00:54:30,650 --> 00:54:34,910 А онда сам тражити следећа најмања елемент, који је 3. 997 00:54:34,910 --> 00:54:37,050 Па сам га ставио на крају из сортиране листе. 998 00:54:37,050 --> 00:54:38,140 А онда сам стално то раде. 999 00:54:38,140 --> 00:54:40,040 Сматрам 4 и ставио га на крају. 1000 00:54:40,040 --> 00:54:41,360 Финд 5 и ставио га на крају. 1001 00:54:41,360 --> 00:54:44,830 >> А погледајте како све те времена које Кажем стави га на крају је, 1002 00:54:44,830 --> 00:54:46,850 У суштини, замене две вредности. 1003 00:54:46,850 --> 00:54:48,100 ОК? 1004 00:54:48,100 --> 00:54:50,140 1005 00:54:50,140 --> 00:54:52,825 А онда последњи, само имају још један елемент. 1006 00:54:52,825 --> 00:54:55,870 Тако да је већ сортирају. 1007 00:54:55,870 --> 00:54:57,800 >> У реду, тако да уметање Сорт. 1008 00:54:57,800 --> 00:55:03,180 Уметање Сорт ћеш имати та ствар да су сортирају и 1009 00:55:03,180 --> 00:55:04,690 Унсортед листа. 1010 00:55:04,690 --> 00:55:14,540 Једина ствар је да сваки пут када сте додавање елемент сортирано 1011 00:55:14,540 --> 00:55:18,170 Листа, само изаберете елемент који је испред неразврстан листе. 1012 00:55:18,170 --> 00:55:20,880 А онда ћеш да пронађете оно позиција би требало да буде у сортиран 1013 00:55:20,880 --> 00:55:22,300 део листе. 1014 00:55:22,300 --> 00:55:25,840 >> Хајде да видимо шта је то толико То има више смисла. 1015 00:55:25,840 --> 00:55:29,360 Дакле у почетку, на пример, ја покушавам да унесете број три у 1016 00:55:29,360 --> 00:55:30,680 Сортед део листе. 1017 00:55:30,680 --> 00:55:31,800 Тако да листа нема ништа. 1018 00:55:31,800 --> 00:55:34,160 Тако да могу само да ставите број 3. 1019 00:55:34,160 --> 00:55:37,480 >> Сада желим да додате број 5 да Сортед део листе. 1020 00:55:37,480 --> 00:55:38,900 Па сам погледати на број 5. 1021 00:55:38,900 --> 00:55:40,450 Приметио сам да је већа од 3. 1022 00:55:40,450 --> 00:55:41,980 Тако да знам да то мора да буде после 3. 1023 00:55:41,980 --> 00:55:44,100 Па сам ставио 3 и 5. 1024 00:55:44,100 --> 00:55:45,940 >> Онда хоћу да унесете број 2. 1025 00:55:45,940 --> 00:55:51,630 Приметио сам да је број 2 је у ствари трају онда како 3 и 5. 1026 00:55:51,630 --> 00:55:54,580 Тако да стварно морам да ставим све Начин на почетку листе. 1027 00:55:54,580 --> 00:55:59,030 Тако да морам да, некако, све схифт елемената у листи поређано тако да могу 1028 00:55:59,030 --> 00:56:01,970 направи места за број 2. 1029 00:56:01,970 --> 00:56:03,160 >> Онда видим број 6. 1030 00:56:03,160 --> 00:56:05,450 Видим да би требало да буде после 5. 1031 00:56:05,450 --> 00:56:06,240 Па сам га ставио тамо. 1032 00:56:06,240 --> 00:56:07,965 И на крају, ја погледамо број 4. 1033 00:56:07,965 --> 00:56:11,030 И ја приметио да би требало бити између 3 и 5. 1034 00:56:11,030 --> 00:56:14,870 И онда сам га ставио тамо и смене сви остали елементи. 1035 00:56:14,870 --> 00:56:16,120 Смисла? 1036 00:56:16,120 --> 00:56:17,880 1037 00:56:17,880 --> 00:56:19,150 >> Буббле Сорт. 1038 00:56:19,150 --> 00:56:25,730 Па Буббле врста је у суштини оно што сте ће урадиш-- га зовемо Буббле 1039 00:56:25,730 --> 00:56:30,113 Сортирај јер идете кроз лист-- то је заправо боље да сам покажем 1040 00:56:30,113 --> 00:56:32,300 желите ово-- 1041 00:56:32,300 --> 00:56:35,030 а ти ћеш да упоредите везана броја. 1042 00:56:35,030 --> 00:56:38,410 И ти ћеш да замене своје позиције ако не 1043 00:56:38,410 --> 00:56:39,190 у правом редоследу. 1044 00:56:39,190 --> 00:56:42,570 >> Дакле, у основи, шта ће се деси је овде, на пример, 1045 00:56:42,570 --> 00:56:44,160 имате 8 и 6. 1046 00:56:44,160 --> 00:56:47,270 Ви знате да је сортиран редослед ће заправо бити 6 и 5, зар не? 1047 00:56:47,270 --> 00:56:49,540 Тако да ћеш да замене наређења. 1048 00:56:49,540 --> 00:56:51,370 Онда видим 8 и 4 Овде. 1049 00:56:51,370 --> 00:56:52,250 И ја исто. 1050 00:56:52,250 --> 00:56:53,400 Поново сам замене. 1051 00:56:53,400 --> 00:56:55,070 И коначно, 2 и 8. 1052 00:56:55,070 --> 00:56:56,670 Ја их и замене. 1053 00:56:56,670 --> 00:57:01,690 >> То се зове Буббле Сорт јер после Свака од ових итерација, заправо, 1054 00:57:01,690 --> 00:57:05,910 највећи број на листи добија све пут до краја листе. 1055 00:57:05,910 --> 00:57:06,940 Да ли то смисла? 1056 00:57:06,940 --> 00:57:11,880 Јер држи га замене и премештања на десно. 1057 00:57:11,880 --> 00:57:14,440 >> У реду, тако да је ово друга итерација. 1058 00:57:14,440 --> 00:57:17,200 То би исто. 1059 00:57:17,200 --> 00:57:20,190 Ја ћу једну замену и онда последњи. 1060 00:57:20,190 --> 00:57:23,290 Ја да нема свопови а Листа је сортирана. 1061 00:57:23,290 --> 00:57:27,460 Дакле, у Буббле Сорт, ми смо у основи задржати иде кроз листу и замене 1062 00:57:27,460 --> 00:57:32,310 ствари док нисам приметио да ја нисам урадио било свап то раде итерација, што 1063 00:57:32,310 --> 00:57:34,270 значи да је списак већ сортирана. 1064 00:57:34,270 --> 00:57:35,520 Смисла? 1065 00:57:35,520 --> 00:57:38,400 1066 00:57:38,400 --> 00:57:40,870 >> Хајде да причамо мало о покретању време. 1067 00:57:40,870 --> 00:57:45,165 Дакле, да ли се сећате момци Биг О, Омега, и Тхета? 1068 00:57:45,165 --> 00:57:49,290 1069 00:57:49,290 --> 00:57:50,990 Да? 1070 00:57:50,990 --> 00:57:53,070 У реду, шта је Биг О, пре свега? 1071 00:57:53,070 --> 00:57:54,315 >> ПУБЛИКА: [неразумљиво]. 1072 00:57:54,315 --> 00:57:59,070 >> Лукас: Да, то се зове најгори случај рунтиме, што само значи да је 1073 00:57:59,070 --> 00:58:03,470 колико очекујете програм да да ради. 1074 00:58:03,470 --> 00:58:04,910 Као, у смислу од-- 1075 00:58:04,910 --> 00:58:06,660 у овом цасе-- н. 1076 00:58:06,660 --> 00:58:09,150 Број елемената у листа у најгорем случају. 1077 00:58:09,150 --> 00:58:12,520 Као и, у најгорем могућем случају. 1078 00:58:12,520 --> 00:58:17,100 >> Дакле, за Буббле Сорт, на пример, имамо Биг О н квадрата. 1079 00:58:17,100 --> 00:58:20,580 Зашто имамо то? 1080 00:58:20,580 --> 00:58:24,716 Зашто је Буббле Сортирај Биг О н квадрат? 1081 00:58:24,716 --> 00:58:27,614 >> ПУБЛИКА: [неразумљиво]. 1082 00:58:27,614 --> 00:58:35,670 >> Лукас: Да, па најгори случај ће бити да ћу морати да урадим н итерација. 1083 00:58:35,670 --> 00:58:39,260 Тако да свака од итерација ће донети највећи елемент до краја 1084 00:58:39,260 --> 00:58:40,290 листе. 1085 00:58:40,290 --> 00:58:44,230 Па најгори случај је да имам да уради ту ствар н пута. 1086 00:58:44,230 --> 00:58:48,550 И за сваки од тих времена, морам да учинити н свопова јер морам да упореде 1087 00:58:48,550 --> 00:58:49,870 свака два елемента. 1088 00:58:49,870 --> 00:58:53,730 Зато је то н квадрат зато што је н пута н. 1089 00:58:53,730 --> 00:59:00,120 >> Затим, селекција врста је н квадрат јер је, за сваку итерација, морам да 1090 00:59:00,120 --> 00:59:02,650 погледај Сваки елемент на листи. 1091 00:59:02,650 --> 00:59:04,980 А затим пронаћи најмањи, што значи да морам да 1092 00:59:04,980 --> 00:59:06,130 погледати кроз н елемената. 1093 00:59:06,130 --> 00:59:11,750 И ја морам да урадим да н пута јер Морам да изаберете све н елемената. 1094 00:59:11,750 --> 00:59:18,273 >> Сортирај уметања је н квадрат јер најгори сценарио ће 1095 00:59:18,273 --> 00:59:20,950 бити један, морам да убаците Н бројеви, зар не? 1096 00:59:20,950 --> 00:59:22,765 Тако да већ знам да ћу да н итерација. 1097 00:59:22,765 --> 00:59:25,466 1098 00:59:25,466 --> 00:59:29,840 Али за сваки од тих бројева, да сам имао да погледате све бројева у 1099 00:59:29,840 --> 00:59:34,380 сортирана листа и ставио га скроз испред, то ће бити н квадрат 1100 00:59:34,380 --> 00:59:36,230 јер ће бити н пута н поново. 1101 00:59:36,230 --> 00:59:38,280 Смисла? 1102 00:59:38,280 --> 00:59:41,512 Шта је са Омега? 1103 00:59:41,512 --> 00:59:42,886 >> ПУБЛИКА: [неразумљиво]. 1104 00:59:42,886 --> 00:59:44,620 >> Лукас: Ово је најбољи сценарио. 1105 00:59:44,620 --> 00:59:48,810 Па то је као, у много пута за сортирање, најбољи сценарио је 1106 00:59:48,810 --> 00:59:50,660 Када је листа већ сортирана. 1107 00:59:50,660 --> 00:59:52,670 Тако да стварно не морају да уради било шта. 1108 00:59:52,670 --> 00:59:56,290 Буббле Сортирај има најбоље сценарио Н. 1109 00:59:56,290 --> 00:59:58,820 Знате ли зашто? 1110 00:59:58,820 --> 01:00:00,620 >> ПУБЛИКА: [неразумљиво]. 1111 01:00:00,620 --> 01:00:05,640 >> Лукас: Да, ако пратите да ли су подаци однос имали свопови или 1112 01:00:05,640 --> 01:00:10,533 не, ако имате нешто као постављено труе ако постоји понављање, уколико 1113 01:00:10,533 --> 01:00:15,140 Листа је већ сортирана, у основи, шта ће се десити је да ћу 1114 01:00:15,140 --> 01:00:17,890 покушавају да мењате свака два суседних елемената. 1115 01:00:17,890 --> 01:00:19,920 Идем да видим нема свопови. 1116 01:00:19,920 --> 01:00:21,230 И само сам се вратити одмах. 1117 01:00:21,230 --> 01:00:24,240 >> Па то значи да сам само морао да Погледајте списак исто време. 1118 01:00:24,240 --> 01:00:28,990 Тако да је н зато што изгледа на н елемената. 1119 01:00:28,990 --> 01:00:30,930 Зашто Избор врста н квадрат? 1120 01:00:30,930 --> 01:00:35,150 1121 01:00:35,150 --> 01:00:45,520 >> Да, чак и ако Листа је сортирана, за свака итерација селекције врсте, ја 1122 01:00:45,520 --> 01:00:47,590 да изаберете минимални елемент. 1123 01:00:47,590 --> 01:00:49,980 То значи да сам да погледам на свим елементима у Унсортед 1124 01:00:49,980 --> 01:00:53,350 навести и наћи минимум за сваку итерација. 1125 01:00:53,350 --> 01:00:54,600 Да ли то смисла? 1126 01:00:54,600 --> 01:00:56,880 1127 01:00:56,880 --> 01:01:04,690 >> И мач уметање је јер н у случај који ја покушавам да убаците 1128 01:01:04,690 --> 01:01:09,320 бројеви и све бројеве, када сам покушати да их убаците, видим да су они 1129 01:01:09,320 --> 01:01:10,510 су у правом положају. 1130 01:01:10,510 --> 01:01:15,120 Не морам да проверим све остале бројеви у некласификовани листи. 1131 01:01:15,120 --> 01:01:17,170 Зато ће то бити н. 1132 01:01:17,170 --> 01:01:19,480 Смисла? 1133 01:01:19,480 --> 01:01:21,035 А шта је тета? 1134 01:01:21,035 --> 01:01:23,410 >> ПУБЛИКА: [неразумљиво]. 1135 01:01:23,410 --> 01:01:24,380 >> Лукас: Шта, извини? 1136 01:01:24,380 --> 01:01:24,960 Понови. 1137 01:01:24,960 --> 01:01:25,666 >> ПУБЛИКА: [неразумљиво]. 1138 01:01:25,666 --> 01:01:26,490 >> Лукас: Тачно. 1139 01:01:26,490 --> 01:01:31,280 Тако да можете видети да само избор чувају у Мерге Сорт имају тхетас. 1140 01:01:31,280 --> 01:01:39,920 А то је зато што само тета ако обе Биг О и Омега су исти. 1141 01:01:39,920 --> 01:01:41,520 У реду. 1142 01:01:41,520 --> 01:01:44,210 И на крају, спојити врста је у дневнику Н. 1143 01:01:44,210 --> 01:01:48,910 >> А онда, као Дан је рекао, Мерге Сорт је врста као исти начин на који 1144 01:01:48,910 --> 01:01:50,320 ти бинарну претрагу. 1145 01:01:50,320 --> 01:01:53,530 Тако добијате листу. 1146 01:01:53,530 --> 01:01:55,170 А ти ћеш да смањи на пола. 1147 01:01:55,170 --> 01:02:00,580 А онда их исећи у мањим половине. 1148 01:02:00,580 --> 01:02:01,730 А онда их спојити. 1149 01:02:01,730 --> 01:02:02,960 Ви се сећате, зар не? 1150 01:02:02,960 --> 01:02:04,960 У реду, како је говорио. 1151 01:02:04,960 --> 01:02:08,330 >> У реду, показивачи. 1152 01:02:08,330 --> 01:02:11,078 Дакле, шта је показивач? 1153 01:02:11,078 --> 01:02:12,050 >> ПУБЛИКА: [неразумљиво]. 1154 01:02:12,050 --> 01:02:12,820 >> Лукас: адреса. 1155 01:02:12,820 --> 01:02:13,720 У реду. 1156 01:02:13,720 --> 01:02:18,530 Знам да Дејвид показује гомилу видео за Бинки и ствари указују 1157 01:02:18,530 --> 01:02:19,080 међусобно. 1158 01:02:19,080 --> 01:02:22,960 Али ја волим да мислим о показивача као пука адресу. 1159 01:02:22,960 --> 01:02:26,110 Тако да је променљива која иде да сачувате адресу. 1160 01:02:26,110 --> 01:02:31,940 >> Тако да је само овај посебан варијабла који је четири бајта дуго. 1161 01:02:31,940 --> 01:02:36,550 Запамтите, да показивач на било шта је увек четири бајта дуге наше 32-бит 1162 01:02:36,550 --> 01:02:39,370 Машина тако случај са апарат. 1163 01:02:39,370 --> 01:02:41,920 1164 01:02:41,920 --> 01:02:47,050 И то само има место променљиве у њему. 1165 01:02:47,050 --> 01:02:50,240 >> У реду, тако да је ово сећање, у основи. 1166 01:02:50,240 --> 01:02:57,420 Тако да сваки блок меморије заправо има етикета, која је адреса 1167 01:02:57,420 --> 01:02:58,890 слотти меморије. 1168 01:02:58,890 --> 01:03:02,370 То значи да могу да имам показивач показује на 1169 01:03:02,370 --> 01:03:03,380 Било који од ових адреса. 1170 01:03:03,380 --> 01:03:09,930 Па разлог зашто ћемо користити показиваче је ако морам да се сетим локације 1171 01:03:09,930 --> 01:03:12,300 да специфична променљива је сећање. 1172 01:03:12,300 --> 01:03:16,560 >> А ви се сећате да је један од оних случајева је ако имам функцију 1173 01:03:16,560 --> 01:03:20,820 ако сам заправо имају желите да свап за реалних бројева, ја заправо 1174 01:03:20,820 --> 01:03:22,110 да пошаљете показивач. 1175 01:03:22,110 --> 01:03:23,460 Није променљива. 1176 01:03:23,460 --> 01:03:25,200 Да ли ви се сећате тога? 1177 01:03:25,200 --> 01:03:26,450 Разлика бетвеен-- 1178 01:03:26,450 --> 01:03:33,350 1179 01:03:33,350 --> 01:03:34,120 како се зове? 1180 01:03:34,120 --> 01:03:36,010 Позивање по вредности и позивом позивањем, зар не? 1181 01:03:36,010 --> 01:03:36,840 >> У реду, да. 1182 01:03:36,840 --> 01:03:38,330 Тако зову по вредности. 1183 01:03:38,330 --> 01:03:43,570 Када само пошаљете променљиву функционишу само шаљете вредност. 1184 01:03:43,570 --> 01:03:45,610 Тако да у ствари шаљете копија променљиве. 1185 01:03:45,610 --> 01:03:49,720 И твој програм није брига о томе да ли иста променљива заиста 1186 01:03:49,720 --> 01:03:51,650 прави копију. 1187 01:03:51,650 --> 01:03:56,330 >> И позивање по референца значи да Уствари шаљем копију 1188 01:03:56,330 --> 01:03:57,550 показивач на ту променљиву. 1189 01:03:57,550 --> 01:04:00,970 Па то значи да шаљем локација тог променљиве. 1190 01:04:00,970 --> 01:04:04,440 Па смислу ја имам локација променљива, кад зовем функција 1191 01:04:04,440 --> 01:04:09,700 са показивачима, ја сам у стању да се заиста промените податке који је био у главни. 1192 01:04:09,700 --> 01:04:12,050 Смисла? 1193 01:04:12,050 --> 01:04:17,560 >> Иако је, показивач је копија, Поинтер још увек има праву адресу 1194 01:04:17,560 --> 01:04:20,090 променљива да желим да промените. 1195 01:04:20,090 --> 01:04:21,920 Смисла? 1196 01:04:21,920 --> 01:04:24,290 >> Тако стварајући показиваче. 1197 01:04:24,290 --> 01:04:28,410 Запамтите, показивач увек тип који је то показује 1198 01:04:28,410 --> 01:04:29,890 на, а затим звезде. 1199 01:04:29,890 --> 01:04:31,030 А онда сте ставили име. 1200 01:04:31,030 --> 01:04:35,765 Дакле, запамтите да кад год имате год стар, то је као показивач на 1201 01:04:35,765 --> 01:04:38,990 да све променљива тип који сте имали. 1202 01:04:38,990 --> 01:04:42,850 >> Дакле, овде у звезду, на пример, то је показивач и цео. 1203 01:04:42,850 --> 01:04:47,680 А онда знак звезда је показивач Чар звезда и тако даље. 1204 01:04:47,680 --> 01:04:47,960 Да? 1205 01:04:47,960 --> 01:04:52,710 >> ПУБЛИКА: Шта ако имамо показивач н до звезда к. 1206 01:04:52,710 --> 01:04:55,255 Знам да креира показивач на к. 1207 01:04:55,255 --> 01:04:59,432 Да ли прогласити к интегер? 1208 01:04:59,432 --> 01:05:05,170 >> Лукас: У реду, тако да када кажете Н Стар Кс, да не правите показивач 1209 01:05:05,170 --> 01:05:06,000 променљива к. 1210 01:05:06,000 --> 01:05:08,170 Правите показивач имену к. 1211 01:05:08,170 --> 01:05:09,396 >> ПУБЛИКА: [неразумљиво]. 1212 01:05:09,396 --> 01:05:14,250 >> Лукас: Дакле, када кажем Н Стар Кс, ја сам говорећи, хеј, у сећању, ја ћу 1213 01:05:14,250 --> 01:05:16,390 добити један од ових три кутије. 1214 01:05:16,390 --> 01:05:20,750 И ја ћу да кажем да је то ће бити Кс, који је 1215 01:05:20,750 --> 01:05:22,000 ће бити показивач. 1216 01:05:22,000 --> 01:05:26,860 1217 01:05:26,860 --> 01:05:30,640 И нешто занимљиво о тројке је да кажемо да они имају 1218 01:05:30,640 --> 01:05:32,620 4 бајта за 32-битни машина. 1219 01:05:32,620 --> 01:05:36,320 А разлог за то је зато што 4 бајта су 32-бита. 1220 01:05:36,320 --> 01:05:40,490 >> И машине које су 64 бита, заправо имају показиваче адресе 1221 01:05:40,490 --> 01:05:43,480 који су дуго 64 бита. 1222 01:05:43,480 --> 01:05:49,820 Па то само значи да величина адресе у машину је другачија. 1223 01:05:49,820 --> 01:05:52,270 >> Тако референци и Дереференцинг. 1224 01:05:52,270 --> 01:05:54,310 Постоје два оператера који ви треба да запамти. 1225 01:05:54,310 --> 01:05:55,450 Први је амперсанд. 1226 01:05:55,450 --> 01:05:56,810 Други је звезда. 1227 01:05:56,810 --> 01:06:05,060 Немојте се збунити та звезда и ово Стар јер имајте на уму да, у 1228 01:06:05,060 --> 01:06:06,950 овај случај, имате н звезду. 1229 01:06:06,950 --> 01:06:08,700 >> То је као целу ствар заједно. 1230 01:06:08,700 --> 01:06:10,720 Нема н Спаце Стар. 1231 01:06:10,720 --> 01:06:12,070 Па то значи да је то тип. 1232 01:06:12,070 --> 01:06:14,870 Запамтите, да када имате променљива звезда, ти си 1233 01:06:14,870 --> 01:06:16,230 говори о типу. 1234 01:06:16,230 --> 01:06:20,540 >> Када имате само звезду, а затим Име променљиве, то значи да 1235 01:06:20,540 --> 01:06:24,100 ви дереференцинг показивач, који значи да гледате 1236 01:06:24,100 --> 01:06:28,290 Поинтер, проналажење адреса је указујући на, одлазак на ту адресу, 1237 01:06:28,290 --> 01:06:30,850 и гледа кад год имате тамо. 1238 01:06:30,850 --> 01:06:34,310 Па кажем мојим студентима да када имате звезда, ви треба да мислите да је то 1239 01:06:34,310 --> 01:06:36,850 скраћеница од садржаја. 1240 01:06:36,850 --> 01:06:39,770 >> Дакле, ако имате показивач и ви имају звезде показивач, то је 1241 01:06:39,770 --> 01:06:41,720 садржај показивача. 1242 01:06:41,720 --> 01:06:44,580 Па идете на све што је указује на и погледати на константном садржаја. 1243 01:06:44,580 --> 01:06:47,730 А амперсанд је исти ствар као адресу. 1244 01:06:47,730 --> 01:06:52,560 >> Тако да ако имам променљиву си-- као, хајдемо кажу да сам Инт једнак 3-- 1245 01:06:52,560 --> 01:06:56,900 ако желим да пронађе адресу која променљива сећање, ја само могу да урадим 1246 01:06:56,900 --> 01:06:58,240 Амперсанд. 1247 01:06:58,240 --> 01:07:00,280 Тако да је адреса. 1248 01:07:00,280 --> 01:07:01,530 Смисла? 1249 01:07:01,530 --> 01:07:03,790 1250 01:07:03,790 --> 01:07:05,040 >> Дакле, овде је пример. 1251 01:07:05,040 --> 01:07:08,370 1252 01:07:08,370 --> 01:07:11,530 Овај недостаје инт б и инт ц. 1253 01:07:11,530 --> 01:07:16,520 Тако инт једнак 3 средства која Идем да иде у меморију. 1254 01:07:16,520 --> 01:07:19,870 И ја ћу да нађем слот и ставите број 3 овде. 1255 01:07:19,870 --> 01:07:22,200 >> А онда инт р једнако 4. 1256 01:07:22,200 --> 01:07:23,100 Ја ћу да урадим исту ствар. 1257 01:07:23,100 --> 01:07:25,840 Идите на меморију и стави број 4 у једном од кутије. 1258 01:07:25,840 --> 01:07:27,100 И Инт једнака 5. 1259 01:07:27,100 --> 01:07:29,740 Пронађу другу кутију и ставите број 5. 1260 01:07:29,740 --> 01:07:36,160 >> Дакле, шта је то линија радите? н звезда ПА једнака амперсанд А. 1261 01:07:36,160 --> 01:07:37,800 Дакле, пре свега, н звезда ПА. 1262 01:07:37,800 --> 01:07:39,050 Шта то ради? 1263 01:07:39,050 --> 01:07:40,930 1264 01:07:40,930 --> 01:07:42,298 >> ПУБЛИКА: [неразумљиво]. 1265 01:07:42,298 --> 01:07:47,890 >> Лукас: Да, па н звезда ПА, прво, декларише показивач зове ПА. 1266 01:07:47,890 --> 01:07:53,720 И онда је додељивање вредности да показивач буде адреса. 1267 01:07:53,720 --> 01:07:55,790 Тако Амперсанд. 1268 01:07:55,790 --> 01:07:58,510 Онда, ако ја стар ПБ, шта је звезда ПБ? 1269 01:07:58,510 --> 01:08:02,418 1270 01:08:02,418 --> 01:08:03,150 >> Ох, извини. 1271 01:08:03,150 --> 01:08:06,330 Ово је такође недостаје. н звезда ПБ. 1272 01:08:06,330 --> 01:08:07,905 Мислим звезда рачунар. 1273 01:08:07,905 --> 01:08:11,200 Тако ми је жао. 1274 01:08:11,200 --> 01:08:11,940 То је иста ствар. 1275 01:08:11,940 --> 01:08:16,408 Али сада сам добро АР креирање показивач Б и потом показивач на ц. 1276 01:08:16,408 --> 01:08:16,886 Да? 1277 01:08:16,886 --> 01:08:18,136 >> ПУБЛИКА: [неразумљиво]? 1278 01:08:18,136 --> 01:08:25,490 1279 01:08:25,490 --> 01:08:26,670 >> Лукас: Да. 1280 01:08:26,670 --> 01:08:32,630 Дакле, ако идете у меморију и одете у кутија која је ознака за ПА, 1281 01:08:32,630 --> 01:08:37,149 заправо ћеш виде адресу. 1282 01:08:37,149 --> 01:08:38,399 ОК? 1283 01:08:38,399 --> 01:08:42,970 1284 01:08:42,970 --> 01:08:43,300 Да? 1285 01:08:43,300 --> 01:08:45,605 >> ПУБЛИКА: [неразумљиво]? 1286 01:08:45,605 --> 01:08:49,260 >> Лукас: Да, показивач адреса. 1287 01:08:49,260 --> 01:08:50,120 Никада не заборавите то. 1288 01:08:50,120 --> 01:08:52,800 То је као најважнији део о показивача. 1289 01:08:52,800 --> 01:08:56,180 Постоји складиштење и адресу до неке променљиве. 1290 01:08:56,180 --> 01:08:56,890 Нешто друго? 1291 01:08:56,890 --> 01:08:58,370 Има ли још питања? 1292 01:08:58,370 --> 01:08:59,189 У реду. 1293 01:08:59,189 --> 01:09:00,399 >> Тако Показивачи и низови. 1294 01:09:00,399 --> 01:09:08,189 Имајте на уму да, када радим инт арраи 3, у основи, оно што ја радим је да сам, некако 1295 01:09:08,189 --> 01:09:12,779 о, изјављујући у показивач. 1296 01:09:12,779 --> 01:09:18,960 Па низ је врста као показивач на специфично место у меморији у којој сам 1297 01:09:18,960 --> 01:09:21,999 издвојила три слота за целих бројева. 1298 01:09:21,999 --> 01:09:23,430 Да ли то смисла? 1299 01:09:23,430 --> 01:09:30,250 >> Дакле, када ја инт низ 3, шта ћу ради, у основи, ствара три 1300 01:09:30,250 --> 01:09:31,479 слота у меморији. 1301 01:09:31,479 --> 01:09:33,899 Тако да сам само наћи три слота у меморији. 1302 01:09:33,899 --> 01:09:38,810 Дакле, ако ја, тада, звезда низ, то у основи значи садржај низа, 1303 01:09:38,810 --> 01:09:46,180 што значи да избришете показивач, идем на том месту да је то указује на, 1304 01:09:46,180 --> 01:09:47,939 и ја сам ставио број један. 1305 01:09:47,939 --> 01:09:53,729 >> А онда, ако будем звезда низ плус 1, то је исто као да сте урадили низ 1306 01:09:53,729 --> 01:09:59,690 захвата један, што само значи да идем у место да се то показује у. 1307 01:09:59,690 --> 01:10:03,000 А онда је, плус 1 марки ми схифт једну позицију. 1308 01:10:03,000 --> 01:10:06,510 Тако да идем у ову позицију, заправо, и ставите број два. 1309 01:10:06,510 --> 01:10:10,900 >> А онда, на крају, када радим Арраи Плус 2, идем где 1310 01:10:10,900 --> 01:10:11,825 АРРАИ је показујући на. 1311 01:10:11,825 --> 01:10:14,690 А онда сам прећи на меморијске блокове. 1312 01:10:14,690 --> 01:10:16,240 А онда сам ставио број три овде. 1313 01:10:16,240 --> 01:10:16,600 Да? 1314 01:10:16,600 --> 01:10:21,400 >> ПУБЛИКА: Дакле, звезда низ једноставно рекавши да је прву тачку. 1315 01:10:21,400 --> 01:10:25,090 А можете додати 1, само зато што смо само стварно 1316 01:10:25,090 --> 01:10:27,295 референцинг тај први адресу. 1317 01:10:27,295 --> 01:10:28,545 >> Лукас: Да. 1318 01:10:28,545 --> 01:10:32,720 1319 01:10:32,720 --> 01:10:36,020 Зашто смо, на пример, кажу арраи 0, арраи 1, и арраи 2? 1320 01:10:36,020 --> 01:10:38,970 1321 01:10:38,970 --> 01:10:42,790 Кажем, зашто радиш 0, 1, 2, 3 уместо 1, 2, 3? 1322 01:10:42,790 --> 01:10:46,550 Један од разлога је, један, рачунарски Програмери воле да почне 1323 01:10:46,550 --> 01:10:47,750 рачунајући од 0. 1324 01:10:47,750 --> 01:10:52,370 Два је јер када радите низ 0, то је иста ствар као прави низ 1325 01:10:52,370 --> 01:10:56,330 Плус 0, што значи да идем у том положају, а ја не 1326 01:10:56,330 --> 01:10:59,320 прескочите све меморије блокова. 1327 01:10:59,320 --> 01:11:01,750 Тако да се не крећу никакве меморијске блокове. 1328 01:11:01,750 --> 01:11:02,015 Да? 1329 01:11:02,015 --> 01:11:03,265 >> ПУБЛИКА: [неразумљиво]? 1330 01:11:03,265 --> 01:11:05,928 1331 01:11:05,928 --> 01:11:12,670 >> Луцас: Она пита шта је разлика између ради 1332 01:11:12,670 --> 01:11:14,000 ово или радите маллоц. 1333 01:11:14,000 --> 01:11:17,550 Једна од разлика је да инт низ 3 је стварање 1334 01:11:17,550 --> 01:11:19,260 арраи на стек. 1335 01:11:19,260 --> 01:11:23,080 А када ја то маллоц, ствара на гомили. 1336 01:11:23,080 --> 01:11:25,250 Да ли то смисла? 1337 01:11:25,250 --> 01:11:28,870 >> Дакле, како се заправо ради маллоц? 1338 01:11:28,870 --> 01:11:32,245 Па зашто смо чак морате да користите маллоц? 1339 01:11:32,245 --> 01:11:35,730 1340 01:11:35,730 --> 01:11:39,700 Ваш састављач врста схвати све променљиве које сте објавили. 1341 01:11:39,700 --> 01:11:44,040 И он отвара простор за све Од њих у стеку. 1342 01:11:44,040 --> 01:11:47,180 Тако да све ваше променљивих иду да се негде у стеку. 1343 01:11:47,180 --> 01:11:49,460 Дакле, овде је променљиве окружења. 1344 01:11:49,460 --> 01:11:53,850 >> Дакле, у основи, простор за оне променљиве у меморији је додељено 1345 01:11:53,850 --> 01:11:55,080 цомпиле време. 1346 01:11:55,080 --> 01:11:58,790 Па то значи да рачунар има да знају све те променљивих 1347 01:11:58,790 --> 01:11:59,790 унапред. 1348 01:11:59,790 --> 01:12:02,500 Она не треба да зна шта је то што идете да стави у њима. 1349 01:12:02,500 --> 01:12:05,490 Али то мора да зна како колико меморије вам је потребно. 1350 01:12:05,490 --> 01:12:09,380 >> Али сада хајде да кажемо да је, на пример, правите низ или узимање 1351 01:12:09,380 --> 01:12:13,430 стринг да сте узимање од корисника. 1352 01:12:13,430 --> 01:12:17,300 Ви не знате колико дуго стринг ће бити, на пример. 1353 01:12:17,300 --> 01:12:20,600 Тако да не знамо тачно колико меморијски блокови ви доделити, зар не? 1354 01:12:20,600 --> 01:12:24,120 >> Тако да заиста не смисла за да кажеш стави 100 карактера. 1355 01:12:24,120 --> 01:12:26,420 И онда шта ако корисник пише 150? 1356 01:12:26,420 --> 01:12:27,670 Идеш да се зезнуо. 1357 01:12:27,670 --> 01:12:30,160 1358 01:12:30,160 --> 01:12:34,620 >> Дакле, у основи, не можете бити сигурни како колико меморије вам је потребно да издвоји 1359 01:12:34,620 --> 01:12:35,960 Када компајлирате програм. 1360 01:12:35,960 --> 01:12:38,240 Ви само знате да је за време извршавања. 1361 01:12:38,240 --> 01:12:39,950 Па зато имате гомилу. 1362 01:12:39,950 --> 01:12:47,610 Па гомила ће имати меморију да сте током расподеле 1363 01:12:47,610 --> 01:12:50,810 трајања програма трчања. 1364 01:12:50,810 --> 01:12:55,780 >> Дакле, у основи, када то урадите маллоц, оно радите издваја сећање на 1365 01:12:55,780 --> 01:13:00,160 рунтиме, што значи да си одлучује право у том тренутку да вас 1366 01:13:00,160 --> 01:13:02,670 треба имати ту меморију. 1367 01:13:02,670 --> 01:13:04,210 Дакле, то је када га доделу. 1368 01:13:04,210 --> 01:13:06,430 Да ли то смисла? 1369 01:13:06,430 --> 01:13:11,690 >> Тако запамтите, стек има променљиве који се стварају на компајлирања. 1370 01:13:11,690 --> 01:13:14,560 А онда гомила има променљиве који су настали као идете 1371 01:13:14,560 --> 01:13:15,600 са маллоц, на пример. 1372 01:13:15,600 --> 01:13:16,850 >> ПУБЛИКА: [неразумљиво]? 1373 01:13:16,850 --> 01:13:19,179 1374 01:13:19,179 --> 01:13:24,340 >> Лукас: Тако је ГетСтринг ће позвати маллоц. 1375 01:13:24,340 --> 01:13:26,710 Дозволите ми да причамо о маллоц, и Ја ћу објаснити ГетСтринг. 1376 01:13:26,710 --> 01:13:32,000 Па маллоц је иста ствар као алокације меморије. 1377 01:13:32,000 --> 01:13:34,600 Тако да ће да издвоји меморија на гомили. 1378 01:13:34,600 --> 01:13:40,010 И то ће да се врати показивач на где је меморија је додељено. 1379 01:13:40,010 --> 01:13:43,090 >> Дакле, када сте урадиш-- 1380 01:13:43,090 --> 01:13:44,910 овде екампле-- 1381 01:13:44,910 --> 01:13:45,830 н звезда Поинтер. 1382 01:13:45,830 --> 01:13:50,520 А онда Поинтер једнако маллоц величина инча раз 10. 1383 01:13:50,520 --> 01:13:52,110 Правим показивач. 1384 01:13:52,110 --> 01:13:59,020 И онда ја ту доделити показивач вредност показивача који маллоц 1385 01:13:59,020 --> 01:13:59,680 ме даје. 1386 01:13:59,680 --> 01:14:04,150 >> Па питам маллоц можете доделити простор за 10 целих бројева. 1387 01:14:04,150 --> 01:14:05,390 То је оно што говори. 1388 01:14:05,390 --> 01:14:09,020 И маллоц ме враћа Поинтер на том месту. 1389 01:14:09,020 --> 01:14:11,460 Смисла? 1390 01:14:11,460 --> 01:14:12,270 У реду. 1391 01:14:12,270 --> 01:14:17,940 Ја и ГетСтринг је, у основи, ради позив на маллоц тако да можете доделити 1392 01:14:17,940 --> 01:14:21,680 Меморија током рада. 1393 01:14:21,680 --> 01:14:26,460 >> Увек имајте на уму да проверите нулл јер маллоц ће да се врати нулл 1394 01:14:26,460 --> 01:14:28,200 ако не може да додели меморију. 1395 01:14:28,200 --> 01:14:31,660 Рецимо да питате за смешна количина меморије. 1396 01:14:31,660 --> 01:14:33,950 Рачунар неће бити у стању да издвоји толико. 1397 01:14:33,950 --> 01:14:36,410 >> Па маллоц је само иде да се врати нулл. 1398 01:14:36,410 --> 01:14:42,210 Дакле, увек запамтите да проверите да ли је поинтер које сте добили од маллоц је 1399 01:14:42,210 --> 01:14:45,640 нулл или не, јер, ако је, можда бити дереференцинг показивач и 1400 01:14:45,640 --> 01:14:48,340 изазива споредне грешке. 1401 01:14:48,340 --> 01:14:50,930 И на крају, не заборавите Твој слободне меморије. 1402 01:14:50,930 --> 01:14:57,800 1403 01:14:57,800 --> 01:15:00,560 >> Маллоц ствара сећање на гомили. 1404 01:15:00,560 --> 01:15:03,436 И морате да ослободи меморију пре него што се програм заврши. 1405 01:15:03,436 --> 01:15:05,370 У реду, то је све за мене. 1406 01:15:05,370 --> 01:15:07,900 Жао ми је, Роб. 1407 01:15:07,900 --> 01:15:07,950 Хвала. 1408 01:15:07,950 --> 01:15:09,878 >> [АППЛАУСЕ] 1409 01:15:09,878 --> 01:15:12,679 >> Лукас: Било Ласт Куестионс пре Роб дође? 1410 01:15:12,679 --> 01:15:13,138 Но? 1411 01:15:13,138 --> 01:15:13,597 Да? 1412 01:15:13,597 --> 01:15:15,892 >> ПУБЛИКА: Нисам видео овај на мрежи. 1413 01:15:15,892 --> 01:15:17,269 Сте га уплоадед још? 1414 01:15:17,269 --> 01:15:19,106 >> Лукас: Ја мислим да је Даве уплоад то ускоро. 1415 01:15:19,106 --> 01:15:19,880 >> Даве: Биће постављен. 1416 01:15:19,880 --> 01:15:20,310 >> Лукас: Биће мрежи. 1417 01:15:20,310 --> 01:15:21,175 >> ПУБЛИКА: То је горе. 1418 01:15:21,175 --> 01:15:22,090 >> Лукас: Ово је горе? 1419 01:15:22,090 --> 01:15:23,157 У реду. 1420 01:15:23,157 --> 01:15:23,644 Да? 1421 01:15:23,644 --> 01:15:27,053 >> ПУБЛИКА: [неразумљиво]? 1422 01:15:27,053 --> 01:15:30,285 >> Лукас: Да, требало би да ослободи све Меморија која се ставља у гомили. 1423 01:15:30,285 --> 01:15:31,535 >> ПУБЛИКА: [неразумљиво]? 1424 01:15:31,535 --> 01:15:34,518 1425 01:15:34,518 --> 01:15:36,160 >> Лукас: Да. 1426 01:15:36,160 --> 01:15:39,980 Сваки пут када имате културе маллоц, требало би да имате културу слободан 1427 01:15:39,980 --> 01:15:42,640 после вас престаните да користите тај променљиву. 1428 01:15:42,640 --> 01:15:44,800 Тако маллоц и фрее су увек заједно. 1429 01:15:44,800 --> 01:15:45,410 Њихови најбољи пријатељи. 1430 01:15:45,410 --> 01:15:46,720 Да. 1431 01:15:46,720 --> 01:15:47,970 Роб? 1432 01:15:47,970 --> 01:15:55,595 1433 01:15:55,595 --> 01:15:56,850 >> Роб: Ја ћу брзо. 1434 01:15:56,850 --> 01:16:00,466 Као и видео ће бити постављена. 1435 01:16:00,466 --> 01:16:01,716 Имам микрофон на. 1436 01:16:01,716 --> 01:16:24,060 1437 01:16:24,060 --> 01:16:26,230 >> У реду, тако да недеље Пет ствари. 1438 01:16:26,230 --> 01:16:27,970 Прва ствар коју ми имамо је стек. 1439 01:16:27,970 --> 01:16:33,390 Дакле, запамтите да постоји само један Стацк фрејм по активног позива функције. 1440 01:16:33,390 --> 01:16:34,710 Ми ћемо видети да у секунди. 1441 01:16:34,710 --> 01:16:37,850 А такође се сећате шта заправо иде у сваком кадру стацк ће бити 1442 01:16:37,850 --> 01:16:41,880 локалне променљиве наших функција, аргументи који су положили у наше 1443 01:16:41,880 --> 01:16:43,880 функције, заједно са неколико Друге ствари које не баш 1444 01:16:43,880 --> 01:16:45,260 треба да бринете о томе. 1445 01:16:45,260 --> 01:16:50,950 >> Дакле, овде је пример програма где је, обавештење, главна је принтфинг повратак 1446 01:16:50,950 --> 01:16:52,830 вредност фоо 4. 1447 01:16:52,830 --> 01:16:57,930 Фоо је само ће да се врати Вредност Бар 4 зарез 6. 1448 01:16:57,930 --> 01:17:02,380 И бар ће поставити неки локални променљива н једнако 4 раз 6. 1449 01:17:02,380 --> 01:17:03,920 И онда се вратити н. 1450 01:17:03,920 --> 01:17:09,130 >> Дакле, хајде да погледамо стека током стварна итерација овог програма. 1451 01:17:09,130 --> 01:17:10,500 Тако да је на дну нашег стека. 1452 01:17:10,500 --> 01:17:12,620 Не заборавите да стек одрасте. 1453 01:17:12,620 --> 01:17:15,370 Дакле, на дну нашег стек, ми имају стек оквир за главне. 1454 01:17:15,370 --> 01:17:17,000 Када програм почиње, главни увек ће бити на 1455 01:17:17,000 --> 01:17:18,560 дно нашег стека. 1456 01:17:18,560 --> 01:17:20,880 >> А шта је унутар наше стек оквир за главни? 1457 01:17:20,880 --> 01:17:23,810 Тако да, иако не постоје локални варијабли Маин, као што сам раније рекао, 1458 01:17:23,810 --> 01:17:29,670 смо аргц и РГВ заузимају простор унутар Маин Стацк оквира. 1459 01:17:29,670 --> 01:17:33,260 Тако да главни сада ће позвати функцију фоо. 1460 01:17:33,260 --> 01:17:35,125 А то значи да ће се Фоо добити свој стек оквир. 1461 01:17:35,125 --> 01:17:36,970 >> Дакле, сада смо унутар функција Фоо. 1462 01:17:36,970 --> 01:17:38,610 И шта треба да иде у Фоо је Стацк фраме? 1463 01:17:38,610 --> 01:17:41,100 Па, Фоо има аргумент Н. 1464 01:17:41,100 --> 01:17:45,440 И н је једнак 4 јер то је оно Главни пролази као аргумент фоо екипе. 1465 01:17:45,440 --> 01:17:48,490 >> Дакле, сада Фоо ће позвати бар. 1466 01:17:48,490 --> 01:17:52,070 Шта се бар ће имати унутра њене "стека оквира? 1467 01:17:52,070 --> 01:17:55,610 Она има к једнак 4 и једнак до шест. 1468 01:17:55,610 --> 01:17:58,540 То није све што ћемо имати у стеку кадру, јер бар 1469 01:17:58,540 --> 01:18:00,580 такође има локалну променљиву н. 1470 01:18:00,580 --> 01:18:03,370 И н ћемо поставити једнака 24. 1471 01:18:03,370 --> 01:18:05,750 >> Дакле, сада бар ће да се врати н. 1472 01:18:05,750 --> 01:18:09,300 Па бар се враћа 24 до стек оквир Фоо. 1473 01:18:09,300 --> 01:18:12,560 И зато што бар сада враћа, да значи да смо кокичара стек оквир 1474 01:18:12,560 --> 01:18:14,250 за бар искључивање стека. 1475 01:18:14,250 --> 01:18:18,430 Тако да све што меморија бар био користите је сада ван стека. 1476 01:18:18,430 --> 01:18:21,550 >> Сада, Фоо такође иде да се врати 24 на главни. 1477 01:18:21,550 --> 01:18:25,470 Дакле, сада је Фу враћа, меморију да Фоо користио у својој ' 1478 01:18:25,470 --> 01:18:27,550 стек оквир је такође нестао. 1479 01:18:27,550 --> 01:18:29,660 А сада, главни ће позвати принтф. 1480 01:18:29,660 --> 01:18:31,660 Тако да је само још један принтф функција. 1481 01:18:31,660 --> 01:18:35,320 Када зовемо принтф, то ће бити други стек оквир за принтф 1482 01:18:35,320 --> 01:18:36,470 позив функције. 1483 01:18:36,470 --> 01:18:37,990 >> Шта ми пролазе принтф? 1484 01:18:37,990 --> 01:18:40,090 То је оно што се дешава да иде на свом стек оквир. 1485 01:18:40,090 --> 01:18:44,970 У најмању руку, ми пролази тај проценат сам бацксласх н и 1486 01:18:44,970 --> 01:18:47,180 аргумент 24. 1487 01:18:47,180 --> 01:18:50,370 То можда има више то је Стацк фраме ако се деси да буду иф користите неке 1488 01:18:50,370 --> 01:18:51,200 локалних променљивих. 1489 01:18:51,200 --> 01:18:51,920 Ми не знамо. 1490 01:18:51,920 --> 01:18:53,810 >> Али све то иде у принтф година стек оквир. 1491 01:18:53,810 --> 01:18:55,740 То ће да изврши принтф. 1492 01:18:55,740 --> 01:18:56,830 Онда иф урадио. 1493 01:18:56,830 --> 01:18:57,820 Он ће се вратити. 1494 01:18:57,820 --> 01:18:58,960 Коначно, главни је завршен. 1495 01:18:58,960 --> 01:18:59,860 Главни ће се вратити. 1496 01:18:59,860 --> 01:19:02,020 А онда наш програм је завршен. 1497 01:19:02,020 --> 01:19:02,480 Да? 1498 01:19:02,480 --> 01:19:04,505 >> Публика: Да ли видите [неразумљиво] 1499 01:19:04,505 --> 01:19:05,900 аргументи [неразумљиво] 1500 01:19:05,900 --> 01:19:06,830 параметри? 1501 01:19:06,830 --> 01:19:09,970 >> РОБ: Дакле, постоји суптилна разлика између аргумената и параметара. 1502 01:19:09,970 --> 01:19:14,400 И заиста, у заједничком говоре, људи су склони да их само помешати све време. 1503 01:19:14,400 --> 01:19:17,550 Али параметри су формални Назив ствари. 1504 01:19:17,550 --> 01:19:20,180 >> Тако аргц и аргв су параметри за Маин. 1505 01:19:20,180 --> 01:19:23,440 Аргументи су оно што заправо прође као тим параметрима. 1506 01:19:23,440 --> 01:19:28,340 Тако да, када зовем Фоо од 4, 4 је аргумент сам пролази у. 1507 01:19:28,340 --> 01:19:31,460 И параметар н, унутар Фоо, преузима вредности 4 1508 01:19:31,460 --> 01:19:32,880 од 4 је био аргумент. 1509 01:19:32,880 --> 01:19:35,826 >> ПУБЛИКА: [неразумљиво]? 1510 01:19:35,826 --> 01:19:37,880 >> Роб: н локална променљива до Бара. 1511 01:19:37,880 --> 01:19:41,420 1512 01:19:41,420 --> 01:19:44,960 н је и даље локалног до фоо, али то је параметар фоо. 1513 01:19:44,960 --> 01:19:48,190 То није локални променљива. 1514 01:19:48,190 --> 01:19:48,546 Да? 1515 01:19:48,546 --> 01:19:51,180 >> ПУБЛИКА: [неразумљиво]? 1516 01:19:51,180 --> 01:19:55,400 >> Роб: Фоо је само зовем бар и враћање шта год бар повратак. 1517 01:19:55,400 --> 01:19:56,786 >> ПУБЛИКА: [неразумљиво]? 1518 01:19:56,786 --> 01:19:59,591 >> Роб: Да, само да видим више стек оквире. 1519 01:19:59,591 --> 01:20:00,082 Да? 1520 01:20:00,082 --> 01:20:03,519 >> ПУБЛИКА: Зашто је Фоо звао пре принтф? 1521 01:20:03,519 --> 01:20:05,920 >> Роб: Зашто је Фоо звао раније принтф? 1522 01:20:05,920 --> 01:20:10,740 Тако да сам могао имати, уместо тога, урадили нешто као инт к једнака фоо од 4 1523 01:20:10,740 --> 01:20:12,980 а затим штампа к. 1524 01:20:12,980 --> 01:20:17,900 Али, уместо тога, у комбинацији сам функцију позвати у принтф аргумент. 1525 01:20:17,900 --> 01:20:23,670 >> Не приметим да не можемо у ствари извршите позив принтф док не 1526 01:20:23,670 --> 01:20:25,610 схватим шта Фоо од 4 је. 1527 01:20:25,610 --> 01:20:27,480 Па ћемо да се процени ово. 1528 01:20:27,480 --> 01:20:32,504 И само једном да је готово иду да се врате и процени то. 1529 01:20:32,504 --> 01:20:32,990 Да? 1530 01:20:32,990 --> 01:20:37,364 >> ПУБЛИКА: Како и бар [неразумљиво] 1531 01:20:37,364 --> 01:20:41,738 вредност, зашто немамо [неразумљиво]? 1532 01:20:41,738 --> 01:20:44,400 >> Роб: Они би требало да буду потпуно Инт. 1533 01:20:44,400 --> 01:20:46,260 То није ухваћен у више пролази. 1534 01:20:46,260 --> 01:20:49,010 Тако да би требало да буде Инт бар и инт Фоо јер како оних 1535 01:20:49,010 --> 01:20:50,460 се враћају целе бројеве. 1536 01:20:50,460 --> 01:20:54,214 Празнина је само уколико не идемо да се врате стварне вредности. 1537 01:20:54,214 --> 01:20:54,692 Да? 1538 01:20:54,692 --> 01:20:58,038 >> ПУБЛИКА: Ако сте имали линију изнад повратак, [неразумљиво]? 1539 01:20:58,038 --> 01:21:01,862 1540 01:21:01,862 --> 01:21:03,730 >> Роб: линија изнад повратка? 1541 01:21:03,730 --> 01:21:04,410 >> Публика: Да. 1542 01:21:04,410 --> 01:21:10,780 Као и ако сте урадили иф и [неразумљиво], би то двапут одштампа? 1543 01:21:10,780 --> 01:21:12,992 >> Роб: Тако унутар фоо? 1544 01:21:12,992 --> 01:21:15,945 Ако смо имали принтф овде? 1545 01:21:15,945 --> 01:21:16,750 >> Публика: Да. 1546 01:21:16,750 --> 01:21:19,510 >> РОБ: Дакле, ако бисмо имали право принтф овде, то би једном штампање. 1547 01:21:19,510 --> 01:21:23,400 Пошто смо се позивају фоо једном у праву овде, онда ћемо ударити принтф. 1548 01:21:23,400 --> 01:21:24,620 Онда ћемо позвати бар. 1549 01:21:24,620 --> 01:21:25,710 А онда Фоо ће се вратити. 1550 01:21:25,710 --> 01:21:26,275 И то је то. 1551 01:21:26,275 --> 01:21:30,985 Ми смо само икада наићи принтф једном. 1552 01:21:30,985 --> 01:21:31,482 Да? 1553 01:21:31,482 --> 01:21:32,973 >> ПУБЛИКА: [неразумљиво] 1554 01:21:32,973 --> 01:21:37,950 иф позивајући фоо, јер смо се први пут смо позивање принтф и онда смо пролази 1555 01:21:37,950 --> 01:21:38,580 аргументи. 1556 01:21:38,580 --> 01:21:40,960 >> РОБ: Дакле, у теорији, није иф називајући фоо? 1557 01:21:40,960 --> 01:21:42,220 Тако да нема. 1558 01:21:42,220 --> 01:21:47,360 Само нареди да Ц ће се извршава ове ствари се, пре него што можемо 1559 01:21:47,360 --> 01:21:49,800 позовите функцију, све аргумената функцији морају да 1560 01:21:49,800 --> 01:21:51,600 бити потпуно оценити. 1561 01:21:51,600 --> 01:21:53,540 Тако да је то потпуно оцењује? 1562 01:21:53,540 --> 01:21:54,610 Да, то је само низ. 1563 01:21:54,610 --> 01:21:55,480 То је само вредност. 1564 01:21:55,480 --> 01:21:57,200 >> Онда морамо да у потпуности оцењује ово. 1565 01:21:57,200 --> 01:21:59,720 Када се то уради, сада сви његови аргументи се оцењују. 1566 01:21:59,720 --> 01:22:01,982 А сада можемо направити позвати на принтф. 1567 01:22:01,982 --> 01:22:02,478 Да? 1568 01:22:02,478 --> 01:22:03,966 >> Публика: Једно питање. 1569 01:22:03,966 --> 01:22:06,942 Ако имате празнину функцију, мора имате повратак запету? 1570 01:22:06,942 --> 01:22:09,910 >> РОБ: Не повратак зарез ако имате воид функцију. 1571 01:22:09,910 --> 01:22:13,370 1572 01:22:13,370 --> 01:22:14,780 У реду. 1573 01:22:14,780 --> 01:22:15,830 Тако да сада неки хеап ствари. 1574 01:22:15,830 --> 01:22:19,640 Па гомила је како ћемо се бавити са динамичким управљање меморијом. 1575 01:22:19,640 --> 01:22:23,100 И то директно у супротности са стек што бисмо ми назвали аутоматски 1576 01:22:23,100 --> 01:22:24,100 управљање меморијом. 1577 01:22:24,100 --> 01:22:27,140 >> Дакле, стек, никад заиста имате да се бави Како локална променљивих 1578 01:22:27,140 --> 01:22:30,400 се гура и убацио Офф све ови Стацк оквири и све те ствари. 1579 01:22:30,400 --> 01:22:31,070 Не морате да бринете о томе. 1580 01:22:31,070 --> 01:22:32,070 То је аутоматски. 1581 01:22:32,070 --> 01:22:36,990 Тако да је хеап употребу. 1582 01:22:36,990 --> 01:22:38,070 А [неразумљиво] 1583 01:22:38,070 --> 01:22:41,260 долази из тих функција маллоц и бесплатно. 1584 01:22:41,260 --> 01:22:43,550 >> Па ево још једног програма. 1585 01:22:43,550 --> 01:22:47,145 Све што ми радимо јесте маллоцинг цео број. 1586 01:22:47,145 --> 01:22:49,360 Ми смо га одложио у звезде к. 1587 01:22:49,360 --> 01:22:52,520 Наравно, морамо да проверимо да видим да ли је к нулл. 1588 01:22:52,520 --> 01:22:56,400 Онда ћемо само поставити шта к указује на до 50. 1589 01:22:56,400 --> 01:23:00,350 1590 01:23:00,350 --> 01:23:03,260 Принт шта к указује на, принт к, а затим слободан к. 1591 01:23:03,260 --> 01:23:08,920 >> Па како је то заправо ће изгледати Ако погледамо наше гомиле и гомиле? 1592 01:23:08,920 --> 01:23:10,950 Па ћемо поново почети. 1593 01:23:10,950 --> 01:23:12,580 Доњи нашег стека као и раније. 1594 01:23:12,580 --> 01:23:15,930 Имајте на уму да те директно хеап противи стек? 1595 01:23:15,930 --> 01:23:18,850 Па ћемо имати врху наше гомиле тамо. 1596 01:23:18,850 --> 01:23:22,590 >> Тако дну нашег стек, имамо наш стек оквир за главни. 1597 01:23:22,590 --> 01:23:28,000 Она има простор за аргц, аргв, а ми сада имају локалну променљиву Кс, који 1598 01:23:28,000 --> 01:23:30,030 е инт звезда. 1599 01:23:30,030 --> 01:23:32,240 Па ћемо поновити кроз овај програм. 1600 01:23:32,240 --> 01:23:34,420 Прва ствар коју ми имамо је позив на маллоц. 1601 01:23:34,420 --> 01:23:36,250 >> Дакле, ми правимо позив маллоц. 1602 01:23:36,250 --> 01:23:37,100 Маллоц је функција. 1603 01:23:37,100 --> 01:23:38,770 То ће добити стек оквир. 1604 01:23:38,770 --> 01:23:40,180 Шта нас пролази на маллоц? 1605 01:23:40,180 --> 01:23:41,610 То ће ићи унутра стека оквира. 1606 01:23:41,610 --> 01:23:45,130 Ми смо пролазећи величину н, што је 4. 1607 01:23:45,130 --> 01:23:49,700 Тако да се прослеђује маллоц. 1608 01:23:49,700 --> 01:23:50,910 >> Шта маллоц радим? 1609 01:23:50,910 --> 01:23:53,820 То нам зграби простор на гомиле. 1610 01:23:53,820 --> 01:23:55,320 Па ћемо да идемо у гомили. 1611 01:23:55,320 --> 01:23:57,990 И ми ћемо да зграби 4 бајта из гомиле. 1612 01:23:57,990 --> 01:24:01,500 Дакле, хајде да само дам произвољна адреса. 1613 01:24:01,500 --> 01:24:06,680 0к123 Само претварати да је адреса која је на гомили. 1614 01:24:06,680 --> 01:24:12,300 >> Дакле, шта је заправо унутар које област меморије на адреси Ок123? 1615 01:24:12,300 --> 01:24:13,080 Смеће. 1616 01:24:13,080 --> 01:24:15,270 Дакле, ми нисмо ништа сачуване у њему. 1617 01:24:15,270 --> 01:24:18,830 Дакле, колико нам је познато, то је може бити било шта. 1618 01:24:18,830 --> 01:24:20,560 Не треба да претпостављате да је нула. 1619 01:24:20,560 --> 01:24:23,870 То највероватније није нула. 1620 01:24:23,870 --> 01:24:26,260 >> Тако да сада маллоц враћа. 1621 01:24:26,260 --> 01:24:28,020 А шта да радимо када маллоц враћа? 1622 01:24:28,020 --> 01:24:29,800 Поставили смо шта је враћа. 1623 01:24:29,800 --> 01:24:32,290 Поставили смо к једнаке ономе она се враћа. 1624 01:24:32,290 --> 01:24:33,690 Дакле, шта је то враћа? 1625 01:24:33,690 --> 01:24:38,150 То враћа 0к123 јер је адреса блока меморије која њему 1626 01:24:38,150 --> 01:24:40,850 само издваја у гомили. 1627 01:24:40,850 --> 01:24:47,160 >> Па се врати 0к123 Кс је сада ће да се постави једнака 0к123 који, сликовито, 1628 01:24:47,160 --> 01:24:52,940 Ми често извући као Кс има стварни арров указујући на тај блок. 1629 01:24:52,940 --> 01:24:55,820 Али к је само чување ту адресу. 1630 01:24:55,820 --> 01:24:58,670 Тако да сада морамо да проверимо да ли је к нулл. 1631 01:24:58,670 --> 01:24:59,120 То није нулл. 1632 01:24:59,120 --> 01:25:02,170 Ми се претварамо да је то маллоц успела. 1633 01:25:02,170 --> 01:25:04,950 >> Тако да сада износи 50 к звезда. 1634 01:25:04,950 --> 01:25:08,450 Па звезда сећа то значи ићи на ту адресу. 1635 01:25:08,450 --> 01:25:12,700 Па 0к123 Идемо у ићи на ту адресу. 1636 01:25:12,700 --> 01:25:14,660 Тако да нас доводи тамо. 1637 01:25:14,660 --> 01:25:16,310 Шта радимо на тој адреси? 1638 01:25:16,310 --> 01:25:19,020 Ми складиштење 50. 1639 01:25:19,020 --> 01:25:22,500 >> Дакле, након ове линије, то је оно што ствари ће изгледати. 1640 01:25:22,500 --> 01:25:24,640 Дакле, сада је то више није смеће тамо. 1641 01:25:24,640 --> 01:25:28,910 Сада знамо да 50 је у томе одређеној адреси, јер 1642 01:25:28,910 --> 01:25:32,410 смо га поставили на то. 1643 01:25:32,410 --> 01:25:32,790 ОК? 1644 01:25:32,790 --> 01:25:34,370 Дакле, сада ћемо да одштампате ф. 1645 01:25:34,370 --> 01:25:38,490 >> Дакле, прво ћемо да одштампате звезде к. 1646 01:25:38,490 --> 01:25:39,640 Дакле, шта је звезда к? 1647 01:25:39,640 --> 01:25:44,300 Опет, звезда к значи идите што указује на к. 1648 01:25:44,300 --> 01:25:47,140 Па је к чување 0к123 ићи на ту. 1649 01:25:47,140 --> 01:25:48,490 Добијамо 50. 1650 01:25:48,490 --> 01:25:50,540 Тако принт Ф то. 1651 01:25:50,540 --> 01:25:54,900 А то значи да ће штампање 50. 1652 01:25:54,900 --> 01:25:56,850 И онда то враћа. 1653 01:25:56,850 --> 01:25:58,340 >> И онда имамо другу принтф. 1654 01:25:58,340 --> 01:25:59,370 Сада смо одсто стр. 1655 01:25:59,370 --> 01:26:01,680 Ако нисте видели, то је колико штампате показивач. 1656 01:26:01,680 --> 01:26:04,960 Тако да имамо одсто И, посто ф, и сви они већ. 1657 01:26:04,960 --> 01:26:07,160 Дакле посто П, штампати показивач. 1658 01:26:07,160 --> 01:26:08,920 >> Тако да је к показивач. 1659 01:26:08,920 --> 01:26:13,440 Дакле, ако ћемо да одштампате к себи, ми штампа шта је заправо унутра 1660 01:26:13,440 --> 01:26:19,220 Кс, што је 0к123 Тако први Принт Ф ће да штампа 50. 1661 01:26:19,220 --> 01:26:23,620 Други Принт Ф иде да одштампате 0к123 Да? 1662 01:26:23,620 --> 01:26:27,460 >> Публика: Да ли користите одсто к да одштампате показивач? 1663 01:26:27,460 --> 01:26:31,200 >> Роб: Па да ли користите одсто к да одштампате показивач? 1664 01:26:31,200 --> 01:26:38,350 Па можете, али посто је само к, Генерално, за као да имате мало 1665 01:26:38,350 --> 01:26:40,325 цео број и желите да одштампате она као хексадецималном. 1666 01:26:40,325 --> 01:26:43,250 1667 01:26:43,250 --> 01:26:44,880 То је само како то радиш. 1668 01:26:44,880 --> 01:26:47,160 >> Док, посто би д принт као децимални. 1669 01:26:47,160 --> 01:26:50,310 То су били добијамо одсто д. Ја је само цео број. 1670 01:26:50,310 --> 01:26:52,690 проценат п је специфично За савете. 1671 01:26:52,690 --> 01:26:54,060 >> Тако да је к показивач. 1672 01:26:54,060 --> 01:26:56,360 Желимо да користимо одсто стр. 1673 01:26:56,360 --> 01:26:57,937 Али посто к може да ради. 1674 01:26:57,937 --> 01:26:58,414 Да? 1675 01:26:58,414 --> 01:26:59,664 >> ПУБЛИКА: [неразумљиво]? 1676 01:26:59,664 --> 01:27:04,138 1677 01:27:04,138 --> 01:27:05,388 >> Роб: Да. 1678 01:27:05,388 --> 01:27:07,870 1679 01:27:07,870 --> 01:27:13,440 Барем за то цалл-- па сам није га укључити овде. 1680 01:27:13,440 --> 01:27:19,850 Али ова два аргументи су нужно унутар овог оквира стека 1681 01:27:19,850 --> 01:27:23,040 заједно са свим локалним варијаблама принтф се дешава да се користи. 1682 01:27:23,040 --> 01:27:27,020 А онда следећи позив сада принтф унутар принтф Стацк оквир 1683 01:27:27,020 --> 01:27:33,960 посто П бацксласх н и без обзира вредност к је, што је 0к123. 1684 01:27:33,960 --> 01:27:34,425 Да? 1685 01:27:34,425 --> 01:27:35,675 >> ПУБЛИКА: [неразумљиво]? 1686 01:27:35,675 --> 01:27:38,145 1687 01:27:38,145 --> 01:27:40,880 >> Роб: То ће одштампати нешто то изгледа овако. 1688 01:27:40,880 --> 01:27:41,846 >> ПУБЛИКА: [неразумљиво]. 1689 01:27:41,846 --> 01:27:44,510 >> Роб: Тако да га штампа у облику адреса. 1690 01:27:44,510 --> 01:27:47,003 Изгледа као адресу. 1691 01:27:47,003 --> 01:27:47,494 Да? 1692 01:27:47,494 --> 01:27:49,458 >> ПУБЛИКА: [неразумљиво]? 1693 01:27:49,458 --> 01:27:51,075 >> Роб: Зашто је шта? 1694 01:27:51,075 --> 01:27:52,920 >> ПУБЛИКА: [неразумљиво]? 1695 01:27:52,920 --> 01:27:55,240 >> Роб: Зашто је ово показивач 4 бајта? 1696 01:27:55,240 --> 01:27:58,500 Тако да постоје гомила од 0 Испред ове. 1697 01:27:58,500 --> 01:28:03,740 Тако да је стварно 0к0000000123. 1698 01:28:03,740 --> 01:28:06,510 На 64-битном систему, не би било цела гомила више нула. 1699 01:28:06,510 --> 01:28:11,410 1700 01:28:11,410 --> 01:28:11,900 Да? 1701 01:28:11,900 --> 01:28:13,150 >> ПУБЛИКА: [неразумљиво]. 1702 01:28:13,150 --> 01:28:17,290 1703 01:28:17,290 --> 01:28:21,130 >> РОБ: Дакле, први принтф ће принт-- 1704 01:28:21,130 --> 01:28:21,980 >> ПУБЛИКА: [неразумљиво]. 1705 01:28:21,980 --> 01:28:24,420 >> Роб: Да, то ће да штампате шта к указује на. 1706 01:28:24,420 --> 01:28:27,030 1707 01:28:27,030 --> 01:28:29,070 Звезда каже шта је ово ствар указујући на. 1708 01:28:29,070 --> 01:28:30,300 Ухвати га. 1709 01:28:30,300 --> 01:28:31,455 Дакле, шта је то указује на? 1710 01:28:31,455 --> 01:28:31,850 50. 1711 01:28:31,850 --> 01:28:32,410 Ухвати га. 1712 01:28:32,410 --> 01:28:33,390 То је оно што ћемо штампати. 1713 01:28:33,390 --> 01:28:37,020 Док, следећи, ми смо само штампање к себе. 1714 01:28:37,020 --> 01:28:38,850 Оно што је унутар Ф? 1715 01:28:38,850 --> 01:28:43,710 0к123. 1716 01:28:43,710 --> 01:28:44,500 У реду. 1717 01:28:44,500 --> 01:28:46,620 >> А онда, на крају, имамо слободан. 1718 01:28:46,620 --> 01:28:48,040 Оно што ми пролази да ослободимо? 1719 01:28:48,040 --> 01:28:49,470 Ми пролази к. 1720 01:28:49,470 --> 01:28:52,380 Тада сам заиста приказује она у стеку кадру. 1721 01:28:52,380 --> 01:28:56,370 >> Па ми пролази вредност 0к123 да ослободе. 1722 01:28:56,370 --> 01:28:59,070 Тако да сада слободан зна, у реду, Морам да идем до гомиле 1723 01:28:59,070 --> 01:29:00,050 и без то меморија. 1724 01:29:00,050 --> 01:29:03,920 То више није оно што користи је на адреси 0к123. 1725 01:29:03,920 --> 01:29:07,010 >> Па слободан ће да ослободи да је из гомиле. 1726 01:29:07,010 --> 01:29:09,490 Сада је наш куча је поново празан. 1727 01:29:09,490 --> 01:29:11,120 Немамо меморије цурења. 1728 01:29:11,120 --> 01:29:12,940 Сада бесплатно ће се вратити. 1729 01:29:12,940 --> 01:29:16,130 Приметићете да је к увек 0к123. 1730 01:29:16,130 --> 01:29:18,240 Али то је сада не важи меморије. 1731 01:29:18,240 --> 01:29:21,220 1732 01:29:21,220 --> 01:29:23,986 Ми треба да више није дереференце к. 1733 01:29:23,986 --> 01:29:24,440 Да? 1734 01:29:24,440 --> 01:29:27,240 >> ПУБЛИКА: Је ретурн 0 непотребном? 1735 01:29:27,240 --> 01:29:28,290 >> Роб: Да ретурен 0 сувишно? 1736 01:29:28,290 --> 01:29:31,110 Да. 1737 01:29:31,110 --> 01:29:33,950 Ми смо само стави да има, јер имамо повратак за ваздух. 1738 01:29:33,950 --> 01:29:36,830 Па то је као да, омогућава укључују повратак 0. 1739 01:29:36,830 --> 01:29:37,310 Да? 1740 01:29:37,310 --> 01:29:38,560 >> ПУБЛИКА: [неразумљиво]? 1741 01:29:38,560 --> 01:29:42,110 1742 01:29:42,110 --> 01:29:45,580 >> РОБ: Дакле, након Фрее Кс, шта се дешава ако је трудимо се да дереференце показивача? 1743 01:29:45,580 --> 01:29:47,240 Могуће је да ништа не крене наопако. 1744 01:29:47,240 --> 01:29:49,330 Могуће је да ћемо ипак добити 50. 1745 01:29:49,330 --> 01:29:53,590 >> Могуће је, такође, да је сећање сада се користи за нешто друго. 1746 01:29:53,590 --> 01:29:57,140 Тако да је недефинисан понашање. 1747 01:29:57,140 --> 01:30:00,772 И недефинисана значи ништа може да се деси. 1748 01:30:00,772 --> 01:30:01,250 Да? 1749 01:30:01,250 --> 01:30:02,500 >> ПУБЛИКА: [неразумљиво]? 1750 01:30:02,500 --> 01:30:07,942 1751 01:30:07,942 --> 01:30:10,830 >> Роб: Не, па ако доделите Кс за нешто друго. 1752 01:30:10,830 --> 01:30:15,870 Дакле, ако овде смо рекли к једнак маллоц нешто елсе-- 1753 01:30:15,870 --> 01:30:17,100 маллоц величина евент-- 1754 01:30:17,100 --> 01:30:20,180 онда је то оригинални блок меморије није ослобођен. 1755 01:30:20,180 --> 01:30:21,490 И ми смо званично изгубили. 1756 01:30:21,490 --> 01:30:23,150 То је осипање меморије. 1757 01:30:23,150 --> 01:30:25,090 Изгубили смо све референце на тај блок меморије. 1758 01:30:25,090 --> 01:30:26,827 Тако да нема шансе да га икада ослободити. 1759 01:30:26,827 --> 01:30:32,074 1760 01:30:32,074 --> 01:30:36,630 У реду, па онда врати 0 значи урадили. 1761 01:30:36,630 --> 01:30:37,900 >> У реду, тако да Стацк Оверфлов. 1762 01:30:37,900 --> 01:30:39,320 Шта је идеја овде? 1763 01:30:39,320 --> 01:30:41,210 Тако запамтите, гомила се иде доле. 1764 01:30:41,210 --> 01:30:43,480 Стек иде горе. 1765 01:30:43,480 --> 01:30:48,000 Дакле, ово је пример из предавања, Мислим, где главна је само ће 1766 01:30:48,000 --> 01:30:51,380 зову ову функцију фоо, која ће да се позове рекурзивно изнова и 1767 01:30:51,380 --> 01:30:52,320 изнова. 1768 01:30:52,320 --> 01:30:55,370 >> Тако да стек оквири ће раде потпуно исто. 1769 01:30:55,370 --> 01:30:58,130 Па ћемо да почнемо са главни као дно стека оквира. 1770 01:30:58,130 --> 01:31:02,000 Онда главни ће позвати фоо, који ће добити стек оквир. 1771 01:31:02,000 --> 01:31:04,260 >> Затим Фоо ће позвати фоо опет, који ће добити 1772 01:31:04,260 --> 01:31:05,500 други Стацк фраме. 1773 01:31:05,500 --> 01:31:08,270 А онда опет, и опет, и опет, и поново до, на крају, трчимо 1774 01:31:08,270 --> 01:31:09,190 у гомили. 1775 01:31:09,190 --> 01:31:11,990 Дакле, ово је како ми се Стацк Оверфлов. 1776 01:31:11,990 --> 01:31:14,910 И у овом тренутку, ви Сец грешку. 1777 01:31:14,910 --> 01:31:17,335 Или ви стварно би сег фаулт раније Ова тачка али да. 1778 01:31:17,335 --> 01:31:19,660 >> Публика: Да ли је језгро депоније исто као Сег грешком? 1779 01:31:19,660 --> 01:31:26,140 >> Роб: Значи, видећете сегментација грешка Цоре бачена. 1780 01:31:26,140 --> 01:31:28,760 Добијате Цоре Думп када је то ти Сег грешку. 1781 01:31:28,760 --> 01:31:32,580 И то је као депоније свега Садржај вашег тренутног меморије тако 1782 01:31:32,580 --> 01:31:36,670 да можете да покушате и идентификујете зашто Сег окривио. 1783 01:31:36,670 --> 01:31:37,135 Да? 1784 01:31:37,135 --> 01:31:38,385 >> ПУБЛИКА: [неразумљиво]? 1785 01:31:38,385 --> 01:31:40,855 1786 01:31:40,855 --> 01:31:45,460 >> РОБ: Дакле Сегментатион фаулт средство постоји гомила прелива. 1787 01:31:45,460 --> 01:31:47,060 Дакле, не мора да значи. 1788 01:31:47,060 --> 01:31:49,880 Сегментација грешка значи да си додиривање меморије на неки начин 1789 01:31:49,880 --> 01:31:50,880 да не би требало да буде. 1790 01:31:50,880 --> 01:31:54,750 Дакле, један начин да се то деси је, када је се стека Оверфлов, почињемо дирљиво 1791 01:31:54,750 --> 01:31:58,736 Меморија на начин који не би требало да буде. 1792 01:31:58,736 --> 01:31:59,208 Да? 1793 01:31:59,208 --> 01:32:00,458 >> ПУБЛИКА: [неразумљиво]? 1794 01:32:00,458 --> 01:32:03,456 1795 01:32:03,456 --> 01:32:05,830 >> Роб: Тако унутар бесконачној петљи. 1796 01:32:05,830 --> 01:32:08,770 Као, то је као рекурзивном Инфините петље па смо добили другу 1797 01:32:08,770 --> 01:32:09,770 Стек оквир сваки пут. 1798 01:32:09,770 --> 01:32:13,540 Али само унутар редовно док бесконачно --виберите-- 1799 01:32:13,540 --> 01:32:16,390 Па, хајде да чак ни штампати ф-- 1800 01:32:16,390 --> 01:32:17,040 нешто. 1801 01:32:17,040 --> 01:32:18,390 Шта год. 1802 01:32:18,390 --> 01:32:20,610 >> Нећемо да се добијање други Стацк фраме. 1803 01:32:20,610 --> 01:32:22,530 Само ћемо да Лоопинг преко овог једној инструкцији. 1804 01:32:22,530 --> 01:32:23,920 Стек не расте. 1805 01:32:23,920 --> 01:32:27,290 То је чињеница да свака рекурзивна Позив нам даје стек оквир. 1806 01:32:27,290 --> 01:32:31,231 Зато имамо гомиле прелива. 1807 01:32:31,231 --> 01:32:31,728 Да? 1808 01:32:31,728 --> 01:32:38,189 >> ПУБЛИКА: Дакле, ако сте рекли да добијете док су петље, а затим [неразумљиво]? 1809 01:32:38,189 --> 01:32:42,000 >> РОБ: Дакле, ако унутар вхиле петље било принтф, још увек би 1810 01:32:42,000 --> 01:32:42,790 Не сег кривица. 1811 01:32:42,790 --> 01:32:46,090 Само нисам желео да збуни ствари. 1812 01:32:46,090 --> 01:32:46,610 Било би петља. 1813 01:32:46,610 --> 01:32:48,225 Ти би се само једна гомила оквир за принтф. 1814 01:32:48,225 --> 01:32:49,580 >> Онда ће се вратити иф. 1815 01:32:49,580 --> 01:32:50,280 Онда би опет петљу. 1816 01:32:50,280 --> 01:32:51,460 Ти би се само једна гомила оквир за принтф. 1817 01:32:51,460 --> 01:32:52,850 То ће се вратити. 1818 01:32:52,850 --> 01:32:54,060 Сингле Стацк фраме. 1819 01:32:54,060 --> 01:33:00,215 Тако да не добијате то бесконачна гомилају стек оквире. 1820 01:33:00,215 --> 01:33:03,185 >> ПУБЛИКА: [неразумљиво]? 1821 01:33:03,185 --> 01:33:04,040 >> Роб: Да. 1822 01:33:04,040 --> 01:33:09,360 Дакле, ово Стацк оверфлов деси јер нико од њих 1823 01:33:09,360 --> 01:33:11,600 позиви ка фоо се враћају. 1824 01:33:11,600 --> 01:33:15,250 Дакле, ако се вратимо, онда бисмо почну да губе стек оквире. 1825 01:33:15,250 --> 01:33:17,870 И онда ми не бисмо стацк оверфлов. 1826 01:33:17,870 --> 01:33:20,070 И то је разлог зашто је потребно основни предмет за ваше личне функције. 1827 01:33:20,070 --> 01:33:22,992 1828 01:33:22,992 --> 01:33:23,479 Да? 1829 01:33:23,479 --> 01:33:27,375 >> Публика: Да ли је величина и потенцијал стек за гомиле исте за 1830 01:33:27,375 --> 01:33:29,880 Сви програми? 1831 01:33:29,880 --> 01:33:31,910 >> Роб: Отприлике. 1832 01:33:31,910 --> 01:33:35,090 Је потенцијал величина стека и куча исти за све програме? 1833 01:33:35,090 --> 01:33:37,180 Отприлике. 1834 01:33:37,180 --> 01:33:40,080 Постоје неки Рандомизатион да где почиње и штос 1835 01:33:40,080 --> 01:33:42,400 где хеап почиње. 1836 01:33:42,400 --> 01:33:45,870 Ако вам се деси да имате цео много глобалне променљиве и ствари, ви можда 1837 01:33:45,870 --> 01:33:49,520 одузме неком простору за ваш гомили. 1838 01:33:49,520 --> 01:33:54,060 >> На 64-битном систему, виртуално има бесконачну меморију. 1839 01:33:54,060 --> 01:33:55,820 Постоји само толико. 1840 01:33:55,820 --> 01:33:59,250 Између 32 бита и 64 бита, тој је значајна разлика. 1841 01:33:59,250 --> 01:34:02,350 >> Ти ћеш више да се цео много стек и гомила простор на 64-битном 1842 01:34:02,350 --> 01:34:05,810 Систем јер постоји само још адресе које могу да користе. 1843 01:34:05,810 --> 01:34:09,360 Али на индивидуалном систему, то ће бити отприлике иста количина стека 1844 01:34:09,360 --> 01:34:10,785 и хеап простора. 1845 01:34:10,785 --> 01:34:13,635 1846 01:34:13,635 --> 01:34:15,530 У реду. 1847 01:34:15,530 --> 01:34:18,220 >> Па последња ствар је компилација. 1848 01:34:18,220 --> 01:34:19,810 Тако да би требало да знате овај процес. 1849 01:34:19,810 --> 01:34:22,240 Постоје четири велике кораке. 1850 01:34:22,240 --> 01:34:24,400 Тако да први треба лако за памћење. 1851 01:34:24,400 --> 01:34:25,085 Пре-обрада. 1852 01:34:25,085 --> 01:34:28,390 Она има префикс пре на њему. 1853 01:34:28,390 --> 01:34:32,080 Тако да долази пре свега. 1854 01:34:32,080 --> 01:34:34,000 >> Ствар коју треба запамтити је хасх. 1855 01:34:34,000 --> 01:34:37,250 Па хасх дефинише и хасх укључује у све оне. 1856 01:34:37,250 --> 01:34:39,560 Они су унапред процесор Директиве. 1857 01:34:39,560 --> 01:34:42,030 То су ствари које су пре процесор брине. 1858 01:34:42,030 --> 01:34:43,680 >> Па шта пре процесор уради? 1859 01:34:43,680 --> 01:34:44,850 То је заиста глупо. 1860 01:34:44,850 --> 01:34:49,380 Све што је у стању да се свих ових копирање и Цут и Пасте операције. 1861 01:34:49,380 --> 01:34:51,790 >> Па хасх укључује стандардну И0 дот х. 1862 01:34:51,790 --> 01:34:52,990 Шта је то ради? 1863 01:34:52,990 --> 01:34:56,610 То је зграбио стандардне и0 дот х филе и налепите га у врх 1864 01:34:56,610 --> 01:34:58,960 где год пише хасх укључује стандардна И0 дот Х. 1865 01:34:58,960 --> 01:35:02,480 >> И било хасх дефинисати које смо види, шта се то ради? 1866 01:35:02,480 --> 01:35:06,730 Његова копирање вредност коју хасх указано је дефинисан као и лепљење да 1867 01:35:06,730 --> 01:35:08,500 где год да се користи вредност. 1868 01:35:08,500 --> 01:35:13,400 Па Препроцессор само ради заиста једноставан текст на бази операције. 1869 01:35:13,400 --> 01:35:15,870 То не ради ништа паметно. 1870 01:35:15,870 --> 01:35:18,920 Па све остало је компликованије. 1871 01:35:18,920 --> 01:35:22,970 >> Дакле, сада је Препроцессор је Доне, заправо саставити. 1872 01:35:22,970 --> 01:35:24,320 Дакле, шта значи састављање? 1873 01:35:24,320 --> 01:35:27,310 Сада ћемо из Ц кода Скупштини коду. 1874 01:35:27,310 --> 01:35:27,570 Да? 1875 01:35:27,570 --> 01:35:28,820 >> ПУБЛИКА: [неразумљиво]? 1876 01:35:28,820 --> 01:35:32,390 1877 01:35:32,390 --> 01:35:34,220 >> Роб: Да, ухватили смо то. 1878 01:35:34,220 --> 01:35:36,880 1879 01:35:36,880 --> 01:35:38,660 Тако састављања. 1880 01:35:38,660 --> 01:35:40,310 Идемо из Ц Скупштини. 1881 01:35:40,310 --> 01:35:42,470 Дакле, ово је стварна промена језика. 1882 01:35:42,470 --> 01:35:45,240 Састављање себе значи иде из виши ниво језика у 1883 01:35:45,240 --> 01:35:47,340 нижи ниво језика. 1884 01:35:47,340 --> 01:35:50,720 >> И Ц је висок ниво језика у односу на Скупштини. 1885 01:35:50,720 --> 01:35:52,320 Шта је Скупштина? 1886 01:35:52,320 --> 01:35:56,440 Њени упутства која су, прилично много, направљен за ваш ЦПУ. 1887 01:35:56,440 --> 01:35:59,130 Али ваш рачунар још увек Не разумем Скупштину. 1888 01:35:59,130 --> 01:36:01,570 То је само разуме јединица и нула. 1889 01:36:01,570 --> 01:36:06,160 Тако да је следећи корак је монтажа, која доводи нас од тих инструкција које 1890 01:36:06,160 --> 01:36:08,760 ваш процесор разуме и заправо преводи их, да 1891 01:36:08,760 --> 01:36:10,820 оне и нула. 1892 01:36:10,820 --> 01:36:13,570 >> Дакле, Ц Скупштини у бинарни. 1893 01:36:13,570 --> 01:36:15,870 Али немам увек извршна. 1894 01:36:15,870 --> 01:36:19,550 Тако мисле о ЦС50 библиотеке. 1895 01:36:19,550 --> 01:36:23,070 Смо вас добили бинарном за Ова ЦС50 библиотека, која има ГетСтринг 1896 01:36:23,070 --> 01:36:24,400 и Тоноване и све то. 1897 01:36:24,400 --> 01:36:25,700 >> Али ЦС50 либрари-- 1898 01:36:25,700 --> 01:36:27,650 у и итселф-- није извршна. 1899 01:36:27,650 --> 01:36:29,570 Она нема главну функцију. 1900 01:36:29,570 --> 01:36:32,230 То је само гомила бинарни које можете да користите. 1901 01:36:32,230 --> 01:36:41,730 Па повезивање је како ћемо окупити сви од ових различитих бинарних фајлова 1902 01:36:41,730 --> 01:36:43,110 у стварне извршне. 1903 01:36:43,110 --> 01:36:45,900 Онај који можете да откуцате дот сласх тачку напоље. 1904 01:36:45,900 --> 01:36:51,660 >> Дакле, ово је као датотеку коју написао, - без обзира на ваш програм је-- 1905 01:36:51,660 --> 01:36:53,620 Цеасер дот ц. 1906 01:36:53,620 --> 01:36:55,100 Али сада то је било састављен до бинарни. 1907 01:36:55,100 --> 01:36:56,480 Па Цеасер дот о. 1908 01:36:56,480 --> 01:36:59,620 А ово је наша ЦС50 библиотеке бинарни. 1909 01:36:59,620 --> 01:37:02,284 А они који се комбинују у једном извршном. 1910 01:37:02,284 --> 01:37:02,758 Да? 1911 01:37:02,758 --> 01:37:04,008 >> ПУБЛИКА: [неразумљиво]? 1912 01:37:04,008 --> 01:37:08,800 1913 01:37:08,800 --> 01:37:12,710 >> РОБ: Дакле, прво укључују, запамтите, хасх укључују заправо 1914 01:37:12,710 --> 01:37:13,810 пре процесор корак. 1915 01:37:13,810 --> 01:37:14,750 Али то је посебан. 1916 01:37:14,750 --> 01:37:20,730 Ако не користите никакве функције су изван вашег једне датотеке онда, 1917 01:37:20,730 --> 01:37:26,100 Не, не треба да повеже све јер имате све. 1918 01:37:26,100 --> 01:37:30,310 >> То је рекао, иф се везан у. 1919 01:37:30,310 --> 01:37:32,820 Ако сте икада користили принтф, то је нешто који треба да буду повезани у 1920 01:37:32,820 --> 01:37:35,740 јер нисте написали то. 1921 01:37:35,740 --> 01:37:39,530 И, у ствари, принтф аутоматски повезани у. 1922 01:37:39,530 --> 01:37:42,760 Знаш како у командној линији или када куцате направити, ви видите да имате 1923 01:37:42,760 --> 01:37:46,690 Дасх л ЦС50, који има везу у ЦС50 библиотеци? 1924 01:37:46,690 --> 01:37:49,070 Принтф, и сличне ствари, иде да буду повезани у аутоматски. 1925 01:37:49,070 --> 01:37:51,730 1926 01:37:51,730 --> 01:37:53,930 Било која друга питања о било чему? 1927 01:37:53,930 --> 01:37:56,280 >> ПУБЛИКА: [неразумљиво]? 1928 01:37:56,280 --> 01:37:58,300 >> Роб: Повезивање? 1929 01:37:58,300 --> 01:38:03,450 Имамо гомилу различитих бинарне датотеке. 1930 01:38:03,450 --> 01:38:06,410 Ово је пример канонска да ми користимо је ЦС50 библиотека. 1931 01:38:06,410 --> 01:38:09,960 Ми смо саставили и дати вам је бинарни за ЦС50 библиотеку. 1932 01:38:09,960 --> 01:38:12,410 >> Желите да користите ГетСтринг у свом програму. 1933 01:38:12,410 --> 01:38:14,750 Зато иди и користите ГетСтринг. 1934 01:38:14,750 --> 01:38:19,700 Али без мог бинарног кода за ГетСтринг, када компајлирати свој код 1935 01:38:19,700 --> 01:38:23,140 доле, не можете заиста водите ваш програм, јер је ГетСтринг Стринг 1936 01:38:23,140 --> 01:38:25,080 још није у потпуности дефинисан. 1937 01:38:25,080 --> 01:38:29,220 >> То је само када се повежете на мом бинарном који садржи ГетСтринг да сада, сви 1938 01:38:29,220 --> 01:38:31,130 Добро, заправо могу да извршава ГетСтринг. 1939 01:38:31,130 --> 01:38:32,330 Мој фајл је завршена. 1940 01:38:32,330 --> 01:38:34,208 И ја могу покренути ово. 1941 01:38:34,208 --> 01:38:34,697 Да? 1942 01:38:34,697 --> 01:38:37,631 >> Публика: Да ли је повезивања цонверт бинарни да извршна? 1943 01:38:37,631 --> 01:38:42,032 Па чак и ако немате други библиотеке, не би она и даље бити 1944 01:38:42,032 --> 01:38:44,477 неопходно превести [неразумљиво]? 1945 01:38:44,477 --> 01:38:48,640 >> Роб: Тако извршна је још увек у бинарни. 1946 01:38:48,640 --> 01:38:51,750 То је само комбинујући целину гомила бинарних. 1947 01:38:51,750 --> 01:38:55,124 1948 01:38:55,124 --> 01:38:56,591 >> ПУБЛИКА: Хвала ти пуно. 1949 01:38:56,591 --> 01:38:58,560 >> Роб: Нема проблема. 1950 01:38:58,560 --> 01:38:59,540 Има ли још питања? 1951 01:38:59,540 --> 01:39:02,001 У супротном, сви смо поставили. 1952 01:39:02,001 --> 01:39:02,690 У реду. 1953 01:39:02,690 --> 01:39:02,990 Хвала. 1954 01:39:02,990 --> 01:39:03,590 >> [АППЛАУСЕ] 1955 01:39:03,590 --> 01:39:04,490 >> Публика: Хвала. 1956 01:39:04,490 --> 01:39:05,740 >> Роб: Да. 1957 01:39:05,740 --> 01:39:06,582