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