1 00:00:00,000 --> 00:00:11,320 2 00:00:11,320 --> 00:00:13,260 >> Малан ДАВИД: Поздрав, и добродошли назад у ЦС50. 3 00:00:13,260 --> 00:00:14,860 Дакле, ово је крај недеље четири. 4 00:00:14,860 --> 00:00:16,680 Само једна најава прво. 5 00:00:16,680 --> 00:00:19,600 Дакле, такозвана пета понедељак је долази овај долази понедељак. 6 00:00:19,600 --> 00:00:22,800 Ово је прилика да се промени од САТ / УНСАТ на словну оцену, или из 7 00:00:22,800 --> 00:00:24,130 Писмо разред САТ / УНСАТ. 8 00:00:24,130 --> 00:00:27,130 Досадно, тај процес не захтева потпис, јер морате да попуните 9 00:00:27,130 --> 00:00:28,770 из једне од тих ружичастих Адд / пад форме. 10 00:00:28,770 --> 00:00:31,680 >> Јер технички, САТ / УНСАТ верзија и верзија слово разред 11 00:00:31,680 --> 00:00:33,320 имају различите бројеве каталог. 12 00:00:33,320 --> 00:00:34,240 Али ништа страшно. 13 00:00:34,240 --> 00:00:36,620 Само дођи до мене или то Роб или да Лаурен у сваком тренутку. 14 00:00:36,620 --> 00:00:39,550 Или да нам пошаљете емаил ако немате ту врсту папирологије потребно данас, и ми 15 00:00:39,550 --> 00:00:43,410 будите сигурни да ће вам помоћи да се брига да пре понедељка. 16 00:00:43,410 --> 00:00:45,780 >> У реду, тако да данас - 17 00:00:45,780 --> 00:00:47,630 заправо, постоји мало ехо. 18 00:00:47,630 --> 00:00:51,070 Можемо тон ме мало? 19 00:00:51,070 --> 00:00:51,730 ОК. 20 00:00:51,730 --> 00:00:54,850 Тако данас, уводимо тему познат као курсор. 21 00:00:54,850 --> 00:00:57,770 И ја ћу признати да је ово један од сложеније теме које смо склони да 22 00:00:57,770 --> 00:01:00,960 покривају у овој класи, или стварно било Уводни курс који користи Ц. 23 00:01:00,960 --> 00:01:05,510 >> Али, да ми на реч, нарочито Ако је ваш ум осећа мало више склоности 24 00:01:05,510 --> 00:01:07,100 данас и у наредним недељама. 25 00:01:07,100 --> 00:01:10,340 То није представник вам иде ситуација бити још гора то само значи да 26 00:01:10,340 --> 00:01:13,360 то је посебно софистицирана тема Обећавам, да је неколико недеља 27 00:01:13,360 --> 00:01:17,610 Дакле, све ће изгледати превише упадљиво једноставно у ретроспективи. 28 00:01:17,610 --> 00:01:18,720 >> Још увек се сећам и данас. 29 00:01:18,720 --> 00:01:22,190 Ја сам седео у трпезарији Еллиотт, седео поред мог ТФ Нисхат Мехта, 30 00:01:22,190 --> 00:01:24,070 који је био становник Еллиотт куће. 31 00:01:24,070 --> 00:01:26,340 И из неког разлога, ово тема само кликне. 32 00:01:26,340 --> 00:01:29,430 Што ће рећи да сам и ја борила са њим за неки износ, али сам 33 00:01:29,430 --> 00:01:33,610 Учинићу све да се избегне било каква помоћ борба са темом која је на крају 34 00:01:33,610 --> 00:01:34,580 је веома моћан. 35 00:01:34,580 --> 00:01:37,350 >> У ствари, једна од тема ћемо разговарати у недељама које долазе да 36 00:01:37,350 --> 00:01:41,130 за безбедност, и како можете заправо експлоатишу машине на начин 37 00:01:41,130 --> 00:01:42,320 које нису биле намењене. 38 00:01:42,320 --> 00:01:45,850 А ти су обично експлоатисање резултат грешака, грешака које смо 39 00:01:45,850 --> 00:01:49,740 људи праве од не разумевање неких од основне имплементације 40 00:01:49,740 --> 00:01:52,250 Детаљи преко које програми су направљени. 41 00:01:52,250 --> 00:01:55,410 >> Сада изгледа да се то све више корисник пријатељски, мислио сам да игра 10 42 00:01:55,410 --> 00:01:59,680 Други преглед мало цлаиматион фигура названа Бинки који је довео до 43 00:01:59,680 --> 00:02:03,020 живот по један наш пријатељ на Станфорду, професор Ник Парланте. 44 00:02:03,020 --> 00:02:06,753 Дакле, дозволите ми да вам дам ово Теасер од Бинки овде. 45 00:02:06,753 --> 00:02:09,520 >> [ВИДЕО РЕПРОДУКЦИЈА] 46 00:02:09,520 --> 00:02:10,380 >> -Хеј, Бинки. 47 00:02:10,380 --> 00:02:11,050 Пробудите се. 48 00:02:11,050 --> 00:02:13,610 Време је за забаву показивача. 49 00:02:13,610 --> 00:02:14,741 >> -Шта је то? 50 00:02:14,741 --> 00:02:16,440 Сазнајте више о тројке? 51 00:02:16,440 --> 00:02:17,928 О, Гоодие. 52 00:02:17,928 --> 00:02:18,920 >> [ЕНД ВИДЕО РЕПРОДУКЦИЈА] 53 00:02:18,920 --> 00:02:20,670 >> Малан ДАВИД: То је Стенфорд информатика. 54 00:02:20,670 --> 00:02:23,194 Дакле, више о томе да дођу. 55 00:02:23,194 --> 00:02:24,930 >> [Апплаусе] 56 00:02:24,930 --> 00:02:26,660 >> ДАВИД Малан: Извините, Ник. 57 00:02:26,660 --> 00:02:30,680 >> Дакле, подсетити да последњи пут смо завршили на ово стварно узбудљиво Цлиффхангер 58 00:02:30,680 --> 00:02:32,960 којим је та функција једноставно не ради. 59 00:02:32,960 --> 00:02:34,960 Најмање интуитивно, он осећа као да би требало да ради. 60 00:02:34,960 --> 00:02:37,600 Једноставно замене вредности два цела броја. 61 00:02:37,600 --> 00:02:40,915 Али, сећам се да када штампају оригиналне вредности у главном, и један 62 00:02:40,915 --> 00:02:44,210 два, они су ипак били једна и два и два, а не један. 63 00:02:44,210 --> 00:02:46,070 >> Тако да ме заиста пребацити преко на уређај. 64 00:02:46,070 --> 00:02:50,180 И написао сам се мало скелетних кода у напредовати овде, где ја тврдим да је к 65 00:02:50,180 --> 00:02:52,500 ће бити 1, 2 г ће бити. 66 00:02:52,500 --> 00:02:54,810 Ја онда одштампате обостране вредности са штампом ф. 67 00:02:54,810 --> 00:02:57,540 >> Ја онда тврдим овде да ћемо да их замене. 68 00:02:57,540 --> 00:03:00,800 Оставио сам празно место овде за нас да попуните данас за који тренутак. 69 00:03:00,800 --> 00:03:03,380 Затим, ја ћу да тврде да две варијабле су заменили. 70 00:03:03,380 --> 00:03:04,770 Онда ћу да одштампате их поново. 71 00:03:04,770 --> 00:03:07,090 И надам се, да треба да видите 1, 2. 72 00:03:07,090 --> 00:03:07,380 2, 1. 73 00:03:07,380 --> 00:03:09,830 То је супер једноставно Циљ сада. 74 00:03:09,830 --> 00:03:12,430 >> Па како да идемо о премештају две променљиве? 75 00:03:12,430 --> 00:03:17,220 Па ако ја овде предлажем да ове шоље могу да представљају меморије у рачунару. 76 00:03:17,220 --> 00:03:19,070 Ово је неколико залогаја, ово је још неколико залогаја. 77 00:03:19,070 --> 00:03:23,260 Да смо волонтер дођи горе и мик нам неко пиће, ако познато? 78 00:03:23,260 --> 00:03:23,920 Хајде горе. 79 00:03:23,920 --> 00:03:24,815 Како се зовеш? 80 00:03:24,815 --> 00:03:25,260 >> Јесс: Јесс. 81 00:03:25,260 --> 00:03:25,690 >> ДАВИД Малан: Јесс? 82 00:03:25,690 --> 00:03:26,540 Хајде горе, Јесс. 83 00:03:26,540 --> 00:03:29,180 Ако вам не смета, морамо да уложимо Гоогле стакла на вас, тако да можемо 84 00:03:29,180 --> 00:03:30,430 овековече ово. 85 00:03:30,430 --> 00:03:32,800 86 00:03:32,800 --> 00:03:34,670 У реду, стакло. 87 00:03:34,670 --> 00:03:37,250 Снимање видео. 88 00:03:37,250 --> 00:03:43,103 И у реду, ми смо добро идите са Јесс овде. 89 00:03:43,103 --> 00:03:43,810 У реду. 90 00:03:43,810 --> 00:03:45,120 Драго ми је што смо се упознали. 91 00:03:45,120 --> 00:03:47,720 >> Дакле, оно што желим да радим овде - ако можете, веома брзо - 92 00:03:47,720 --> 00:03:51,040 Само нам сипа пола чаше наранџе сок и пола чаше млека, 93 00:03:51,040 --> 00:03:55,710 представља ефикасан начин бројева 1 у једну шољу и 2 у другом купу. 94 00:03:55,710 --> 00:04:01,380 95 00:04:01,380 --> 00:04:02,630 >> Ово ће бити добар снимак. 96 00:04:02,630 --> 00:04:04,910 97 00:04:04,910 --> 00:04:05,860 >> Јесс: Извините. 98 00:04:05,860 --> 00:04:06,330 >> Малан ДАВИД: Не, не. 99 00:04:06,330 --> 00:04:08,703 То је у реду. 100 00:04:08,703 --> 00:04:10,120 Лепо. 101 00:04:10,120 --> 00:04:12,950 У реду, тако да имамо четири бајта вреди сока од наранџе. 102 00:04:12,950 --> 00:04:14,460 Ми ћемо га назвао вредност 1. 103 00:04:14,460 --> 00:04:16,579 Сада још четири бајта у вредности од млека. 104 00:04:16,579 --> 00:04:18,519 Да ли ће га зову вредност 2. 105 00:04:18,519 --> 00:04:20,440 Дакле, Кс и И, респективно. 106 00:04:20,440 --> 00:04:23,450 >> У реду, тако да сада, ако задатак при руци - за тебе, Џес, испред свих 107 00:04:23,450 --> 00:04:24,270 за својим друговима - 108 00:04:24,270 --> 00:04:28,510 је да мењате вредности кии такве да хоћемо да сок од наранџе у 109 00:04:28,510 --> 00:04:32,070 друга чаша и млека у овом купу, како могао да - пре него што заправо 110 00:04:32,070 --> 00:04:34,020 је - ићи ће то урадити? 111 00:04:34,020 --> 00:04:35,220 >> Ок, мудра одлука. 112 00:04:35,220 --> 00:04:36,340 Тако да је потребно мало више меморије. 113 00:04:36,340 --> 00:04:38,190 Па хајде да издвоји привремени шоље, ако хоћете. 114 00:04:38,190 --> 00:04:40,540 А сада наставите да мењате кии. 115 00:04:40,540 --> 00:04:52,950 116 00:04:52,950 --> 00:04:53,530 >> Одлично. 117 00:04:53,530 --> 00:04:54,420 Дакле, врло добро урађено. 118 00:04:54,420 --> 00:04:55,670 Хвала ти пуно, Јесс. 119 00:04:55,670 --> 00:04:59,520 120 00:04:59,520 --> 00:05:00,020 Изволите. 121 00:05:00,020 --> 00:05:01,950 Мали сувенир. 122 00:05:01,950 --> 00:05:04,350 >> ОК, очигледно, идеја супер једноставно. 123 00:05:04,350 --> 00:05:07,500 Потпуно интуитивно да нам је потребно мало више простора за складиштење - у овом облику, 124 00:05:07,500 --> 00:05:09,750 шоља - ако се заиста жели да свап ове две променљиве. 125 00:05:09,750 --> 00:05:11,110 Па хајде да уради управо то. 126 00:05:11,110 --> 00:05:14,330 Овде између где тврдим да сам ће радити неке замене, ја ћу 127 00:05:14,330 --> 00:05:15,720 само напред и прогласи темп. 128 00:05:15,720 --> 00:05:17,980 И ја ћу поставити оно једнако, рецимо, к. 129 00:05:17,980 --> 00:05:21,110 >> Тада ћу променити вредност к као што је овде са Јесс 130 00:05:21,110 --> 00:05:23,200 млеко и сок од наранџе да буде једнака са г. 131 00:05:23,200 --> 00:05:27,460 И ја ћу да се промени и бити једнака да не к, јер сада ће бити 132 00:05:27,460 --> 00:05:29,530 заглављени у кругу, већ темп. 133 00:05:29,530 --> 00:05:33,170 Где сам привремено - или где Џес привремено стави сок од наранџе 134 00:05:33,170 --> 00:05:35,460 пре цлобберинг да шоља са млеком. 135 00:05:35,460 --> 00:05:37,250 >> Па да иде напред и да то сада. 136 00:05:37,250 --> 00:05:39,210 То се зове носвап.ц. 137 00:05:39,210 --> 00:05:41,190 А сада допустите да радим никакву замену. 138 00:05:41,190 --> 00:05:43,910 И заиста ја видим, ако се прошири прозор мало, да 139 00:05:43,910 --> 00:05:45,160 к је 1, и 2. 140 00:05:45,160 --> 00:05:47,230 А онда је к 2, и 1. 141 00:05:47,230 --> 00:05:51,910 >> Но, сетимо се да је у понедељак смо урадили ствари мало другачије којим сам 142 00:05:51,910 --> 00:05:56,760 уместо да спроводи помоћни функцију, ако хоћете, то је у ствари празнина. 143 00:05:56,760 --> 00:05:58,010 Звао сам га мењате. 144 00:05:58,010 --> 00:06:01,600 Дао сам два параметра, и позвао сам их и позвао сам их б. 145 00:06:01,600 --> 00:06:04,380 >> Искрено, ја да их зовем к и и. 146 00:06:04,380 --> 00:06:06,040 Нема ништа заустављање ми у томе. 147 00:06:06,040 --> 00:06:08,140 Али, рекао бих да је то онда мало нејасна. 148 00:06:08,140 --> 00:06:11,910 Јер Подсетимо да смо за понедељак тврдио да су ови параметри су 149 00:06:11,910 --> 00:06:13,650 копије вредности прошло ин 150 00:06:13,650 --> 00:06:15,640 Па се само зеза са вашим ум, мислим да, ако користите 151 00:06:15,640 --> 00:06:17,370 потпуно исте променљиве. 152 00:06:17,370 --> 00:06:20,150 >> Тако да уместо да их називам и Б, само због јасноће. 153 00:06:20,150 --> 00:06:21,840 Али можемо назвати их највише шта желимо. 154 00:06:21,840 --> 00:06:26,280 И ја ћу да копирате и налепите ефикасно овај број од горе 155 00:06:26,280 --> 00:06:27,170 доле у ​​овде. 156 00:06:27,170 --> 00:06:29,110 Пошто сам видео да то ради. 157 00:06:29,110 --> 00:06:30,790 Дакле, то је у прилично добром стању. 158 00:06:30,790 --> 00:06:37,390 И ја ћу променити свој к, у мом к да, моја г у б и мој И да б. 159 00:06:37,390 --> 00:06:39,130 >> Дакле, другим речима, потпуно исти логика. 160 00:06:39,130 --> 00:06:40,850 Исту ствар је урадио Џес. 161 00:06:40,850 --> 00:06:44,350 И онда једна ствар коју треба да урадите горе Овде, наравно, ово је сада призивам 162 00:06:44,350 --> 00:06:45,990 функција, или позовите ову функцију. 163 00:06:45,990 --> 00:06:50,430 Зато ћу позвати ову функцију са два улаза, Кс и И, и погодак Саве. 164 00:06:50,430 --> 00:06:52,300 >> У реду, тако суштински иста ствар. 165 00:06:52,300 --> 00:06:55,570 У ствари, вероватно сам направио програм непотребно искомпликовали 166 00:06:55,570 --> 00:07:00,820 пишете функцију, то је само узимање неких шест линија кода, док сам 167 00:07:00,820 --> 00:07:02,970 раније имплементиран то у само три. 168 00:07:02,970 --> 00:07:06,230 >> Дакле, дозволите ми сада иде напред и преобликује овај, не праве замену. 169 00:07:06,230 --> 00:07:07,920 У реду, ја зајебао овде. 170 00:07:07,920 --> 00:07:11,290 То би требало да буде грешка која можда види све обично као ваш 171 00:07:11,290 --> 00:07:12,380 Програми се сложенији. 172 00:07:12,380 --> 00:07:13,470 Али, ту је лако поправити. 173 00:07:13,470 --> 00:07:15,650 Дозволите ми да се помицати овде. 174 00:07:15,650 --> 00:07:18,190 >> А шта је прва грешка видим? 175 00:07:18,190 --> 00:07:19,520 Имплицитна декларација. 176 00:07:19,520 --> 00:07:21,466 Шта то обично значи? 177 00:07:21,466 --> 00:07:22,830 Заборавио сам прототип. 178 00:07:22,830 --> 00:07:26,900 Заборавио сам да предајем компајлер који своп ће постојати и ако је он 179 00:07:26,900 --> 00:07:28,920 не постоји на самом почетку програма. 180 00:07:28,920 --> 00:07:35,780 Дакле, ја ћу само рећи празнина, замену, инт, инт б, тачка и зарез. 181 00:07:35,780 --> 00:07:37,280 >> Зато нећу да га реимплемент. 182 00:07:37,280 --> 00:07:39,140 Али сада се она подудара шта је доле. 183 00:07:39,140 --> 00:07:42,530 И запазите, одсуство зарезом Овде, који није неопходан када 184 00:07:42,530 --> 00:07:43,200 спровођење. 185 00:07:43,200 --> 00:07:46,010 >> Дакле, дозволите ми да ово римејк, не праве замену. 186 00:07:46,010 --> 00:07:46,910 Много бољем стању. 187 00:07:46,910 --> 00:07:48,130 Покрени нема замену. 188 00:07:48,130 --> 00:07:48,740 И, проклетство. 189 00:07:48,740 --> 00:07:51,650 Сада смо тамо где смо и били у понедељак, где ствар не мењате. 190 00:07:51,650 --> 00:07:55,410 >> А шта је интуитивно објашњење зашто је то тако? 191 00:07:55,410 --> 00:07:56,380 Да? 192 00:07:56,380 --> 00:07:57,630 >> СТУДЕНТ: [ИНАУДИБЛЕ]. 193 00:07:57,630 --> 00:08:04,140 194 00:08:04,140 --> 00:08:05,230 >> ДАВИД Малан: Управо тако. 195 00:08:05,230 --> 00:08:07,330 Дакле, и б су копије к и и. 196 00:08:07,330 --> 00:08:10,680 А у ствари, сваки пут када сте били позивање функција које до сада 197 00:08:10,680 --> 00:08:12,540 неке променљиве као интс - 198 00:08:12,540 --> 00:08:14,470 као замена очекује се овде - 199 00:08:14,470 --> 00:08:16,270 Били сте у пролазу примерака. 200 00:08:16,270 --> 00:08:19,150 >> Сада то значи да је потребно мало времена, делић секунде, за 201 00:08:19,150 --> 00:08:23,270 рачунар да копирате из једног бита променљива у делићима другог. 202 00:08:23,270 --> 00:08:24,610 Али то није тако велика ствар. 203 00:08:24,610 --> 00:08:25,920 Али, они су ипак копија. 204 00:08:25,920 --> 00:08:30,020 >> И тако сада, у контексту замене, Ја сам, у ствари, успешно 205 00:08:30,020 --> 00:08:31,180 А и Б мења. 206 00:08:31,180 --> 00:08:33,000 У ствари, хајде да брзо разум провери. 207 00:08:33,000 --> 00:08:36,830 Штампа је ф% сам, нова линија. 208 00:08:36,830 --> 00:08:38,770 И хајде да се прикључите. 209 00:08:38,770 --> 00:08:41,830 Сада ћемо учинити исту ствар са б. 210 00:08:41,830 --> 00:08:43,640 И хајде да урадимо исту ствар. 211 00:08:43,640 --> 00:08:47,260 >> А сада, дозволите ми да копирате те исте линије поново на дну функције 212 00:08:47,260 --> 00:08:51,250 после моје три линије занимљиво могао да изврши, и 213 00:08:51,250 --> 00:08:53,270 одштампајте и б опет. 214 00:08:53,270 --> 00:08:56,030 Сада хајде да то, не праве замену. 215 00:08:56,030 --> 00:08:58,430 Дозволите ми да прозор терминала мало виши, тако да можемо да видимо 216 00:08:58,430 --> 00:08:59,520 више од тога одједном. 217 00:08:59,520 --> 00:09:00,860 >> И води никакву замену. 218 00:09:00,860 --> 00:09:04,000 к је 1, и 2. је 1, Б 2 је. 219 00:09:04,000 --> 00:09:06,070 И онда, је 2, Б 1. 220 00:09:06,070 --> 00:09:09,390 Тако се ради, баш као Јесс да ли овде унутар свап. 221 00:09:09,390 --> 00:09:13,090 Али, наравно, то има ефекта на променљиве у главни. 222 00:09:13,090 --> 00:09:15,360 >> Дакле, видели смо један трик којим смо могла поправити, зар не? 223 00:09:15,360 --> 00:09:19,560 Када сте суочени са овим одређивање оквира питање, само да немају одговор и да к 224 00:09:19,560 --> 00:09:22,400 и и какве променљиве уместо тога? 225 00:09:22,400 --> 00:09:23,390 >> Можете да их глобална. 226 00:09:23,390 --> 00:09:27,560 Ставите их на самом врху датотеке као што смо урадили, чак и у игри од 15 година. 227 00:09:27,560 --> 00:09:28,890 Ми користимо глобалну променљиву. 228 00:09:28,890 --> 00:09:32,420 Међутим, у контексту игре 15, да је разумно да се глобална 229 00:09:32,420 --> 00:09:37,170 променљива представља таблу, јер укупност 15.ц је све 230 00:09:37,170 --> 00:09:38,650 о спровођењу ту игру. 231 00:09:38,650 --> 00:09:41,470 То је оно што је датотека постоји да уради. 232 00:09:41,470 --> 00:09:44,170 >> Али у овом случају овде, ја сам позивање функција замену. 233 00:09:44,170 --> 00:09:45,380 Желим да замени две променљиве. 234 00:09:45,380 --> 00:09:48,950 И то би требало да почне да се осећа само збуњена ако је решење за све наше 235 00:09:48,950 --> 00:09:51,300 Проблеми кад наиђемо на обим питања је да га глобално. 236 00:09:51,300 --> 00:09:54,730 Јер врло брзо је наш програм постати прилично хаос. 237 00:09:54,730 --> 00:09:57,760 И ми смо то урадили веома штедљиво као резултат у 15.ц. 238 00:09:57,760 --> 00:10:00,470 >> Али испоставило се да постоји бољи начин заједно. 239 00:10:00,470 --> 00:10:05,600 Дозволите ми да се вратим у ствари и брисање принт двојки, само да поједноставе овај код. 240 00:10:05,600 --> 00:10:09,160 И дозволите ми да предложи то, заиста, није лоше. 241 00:10:09,160 --> 00:10:15,990 Али ако уместо тога додати у неким звездицама и звезде, уместо тога ја могу да укључим ово 242 00:10:15,990 --> 00:10:18,670 функција у једну која је заправо оперативан. 243 00:10:18,670 --> 00:10:25,020 >> Дакле, да се вратим овде и признати говорећи звездицу је увек тешко, 244 00:10:25,020 --> 00:10:26,170 па ћу рећи звезде. 245 00:10:26,170 --> 00:10:27,660 Само ћу признај на то. 246 00:10:27,660 --> 00:10:28,190 У реду. 247 00:10:28,190 --> 00:10:30,190 И сад, шта ћу да уместо тога? 248 00:10:30,190 --> 00:10:34,130 >> Дакле, као прво, ја ћу навести да уместо положен у инт 249 00:10:34,130 --> 00:10:37,980 свап функцију, ја сам уместо тога од рећи инт звезду. 250 00:10:37,980 --> 00:10:39,170 Сада, шта указује звезда? 251 00:10:39,170 --> 00:10:41,970 То је тај појам показивачем тог Бинки, цлаиматион лик, био је 252 00:10:41,970 --> 00:10:43,465 мислећи на тренутак пре. 253 00:10:43,465 --> 00:10:47,610 >> Дакле, ако кажемо инт звезду, значење ово сада је да неће бити 254 00:10:47,610 --> 00:10:49,110 донет од стране своје вредности. 255 00:10:49,110 --> 00:10:50,350 Неће да се копира унутра 256 00:10:50,350 --> 00:10:54,700 Уместо тога, адреса је ће бити донет унутра 257 00:10:54,700 --> 00:10:57,840 >> Дакле, подсетити да унутрашњост рачунара је гомила меморије, иначе 258 00:10:57,840 --> 00:10:58,760 познат као РАМ. 259 00:10:58,760 --> 00:11:00,520 А то је само РАМ гомила бајтова. 260 00:11:00,520 --> 00:11:03,320 Дакле, ако је ваш Мац или ПЦ рачунар има два гигабајта, имате 2 261 00:11:03,320 --> 00:11:05,760 милијарду бајтова меморије. 262 00:11:05,760 --> 00:11:08,440 >> Сада хајде да претпоставимо да је само држати ствари лепо и уредно, ми 263 00:11:08,440 --> 00:11:09,450 доделити адресу - 264 00:11:09,450 --> 00:11:10,170 број - 265 00:11:10,170 --> 00:11:12,270 сваком бајту РАМ меморије на вашем рачунару. 266 00:11:12,270 --> 00:11:15,410 Први бајт од оних 2 милијарде је за број нула. 267 00:11:15,410 --> 00:11:18,572 Следећи је бајт број један, број два, скроз горе, дот дот 268 00:11:18,572 --> 00:11:20,530 тачка, на око 2 милијарде. 269 00:11:20,530 --> 00:11:23,640 >> Дакле, можете да број бајтова меморије у рачунару. 270 00:11:23,640 --> 00:11:26,460 Дакле, хајде да претпоставимо да је то оно што подразумевамо под адреси. 271 00:11:26,460 --> 00:11:31,360 Дакле, када видим инт звезда, шта се дешава да буде усвојен у замену сада је 272 00:11:31,360 --> 00:11:32,830 адресу. 273 00:11:32,830 --> 00:11:37,150 Није њена вредност, али без обзира на његов поштанска адреса је, да тако кажем - 274 00:11:37,150 --> 00:11:38,810 његова локација у РАМ. 275 00:11:38,810 --> 00:11:41,250 >> И слично за Б, ја ћу да кажу исту ствар. 276 00:11:41,250 --> 00:11:42,720 Инт, звезда, Б. 277 00:11:42,720 --> 00:11:46,350 Као страну, технички звезде може да иде на другим локацијама. 278 00:11:46,350 --> 00:11:50,140 Али, ми ћемо сада стандардизују на звезде одмах поред типа података. 279 00:11:50,140 --> 00:11:54,080 >> Тако свап потпис сада значи, ми адреса цео број, а позив 280 00:11:54,080 --> 00:11:55,400 то адреса. 281 00:11:55,400 --> 00:11:58,690 И дај ми још једну адресу инт и зовемо б адресу. 282 00:11:58,690 --> 00:12:01,120 >> Али сада ми код овде мора да се промени. 283 00:12:01,120 --> 00:12:03,470 Јер ако ја изјављујем инт темп - 284 00:12:03,470 --> 00:12:05,580 што је и даље типа инт - 285 00:12:05,580 --> 00:12:08,700 али ја у то складиште, какве вредности? 286 00:12:08,700 --> 00:12:12,870 Да буде јасно, ја стављање у код написан као сада? 287 00:12:12,870 --> 00:12:14,360 >> Ја постављам локацији у. 288 00:12:14,360 --> 00:12:16,500 Али ја не занима локација сада, зар не? 289 00:12:16,500 --> 00:12:21,940 Темп постоји само Јесс 'трећу шољу постојала, за коју сврху? 290 00:12:21,940 --> 00:12:23,090 Да бисте сачували вредност. 291 00:12:23,090 --> 00:12:24,830 Млеко или сок од поморанџе. 292 00:12:24,830 --> 00:12:28,520 Није да се заиста складиштење адресу било који од тих ствари, које осећа 293 00:12:28,520 --> 00:12:31,200 мало бесмислено у ово прави Свет контекст у сваком случају. 294 00:12:31,200 --> 00:12:34,990 >> И заиста, оно што желим да ставим у температури није адреса, али 295 00:12:34,990 --> 00:12:36,180 садржај. 296 00:12:36,180 --> 00:12:41,930 Дакле, ако је број као што је 123, ово је 123. бајт меморије да само 297 00:12:41,930 --> 00:12:45,090 се дешава да се окупаторски, да вредност у се дешава да се заузимају. 298 00:12:45,090 --> 00:12:49,040 >> Ако желим да идем на ту адресу, Морам да кажем звезду. 299 00:12:49,040 --> 00:12:52,610 Слично томе, ако би требало да промени оно што је на адресу, мењам 300 00:12:52,610 --> 00:12:53,570 ово за почетак. 301 00:12:53,570 --> 00:12:58,185 Ако желим да сачувате и шта је у локација са оним што је на локацији 302 00:12:58,185 --> 00:13:02,180 на Б, Б звезда звезда. 303 00:13:02,180 --> 00:13:05,340 >> Дакле укратко, чак и ако то није сасвим тоне у још - и ја не очекујем 304 00:13:05,340 --> 00:13:06,560 да би тако брзо - 305 00:13:06,560 --> 00:13:11,100 схвате да све што радим је префикс ове звезде из мојих променљивих, 306 00:13:11,100 --> 00:13:13,350 изрека не зграби вредности. 307 00:13:13,350 --> 00:13:14,520 Не мењајте вредности. 308 00:13:14,520 --> 00:13:17,600 Али радије, идите на те адресе и добила вредност. 309 00:13:17,600 --> 00:13:21,430 Идите на ту адресу и промене ту вредност. 310 00:13:21,430 --> 00:13:25,500 >> Тако да сада дозволите ми да поново помицати до врха, само да отклонимо ову линију, да 311 00:13:25,500 --> 00:13:27,690 промените прототип да одговара. 312 00:13:27,690 --> 00:13:30,280 Али ми сада треба да урадимо још нешто. 313 00:13:30,280 --> 00:13:35,500 Интуитивно, ако сам променио типове аргумената који своп очекује, 314 00:13:35,500 --> 00:13:37,245 шта још треба да се променити у мом коду? 315 00:13:37,245 --> 00:13:39,750 316 00:13:39,750 --> 00:13:40,840 >> Када ја зовем замену. 317 00:13:40,840 --> 00:13:43,340 Зато сада, оно што сам Ја се још увек пролази замени? 318 00:13:43,340 --> 00:13:47,450 Вредност к и вредност и, или млеко и сок од наранџе. 319 00:13:47,450 --> 00:13:48,510 Али ја не желим то да урадим. 320 00:13:48,510 --> 00:13:51,060 Ја уместо тога желим да прође у шта? 321 00:13:51,060 --> 00:13:53,050 Локација к и локација и. 322 00:13:53,050 --> 00:13:55,300 Које су њихове поштанске адресе, да тако кажем. 323 00:13:55,300 --> 00:13:57,600 >> Тако да се то уради, постоји амперсанд. 324 00:13:57,600 --> 00:13:59,260 Амперсанд некако звучи као адресу. 325 00:13:59,260 --> 00:14:03,240 односно н, амперсендом, адреса за к, а адреса и. 326 00:14:03,240 --> 00:14:06,790 Дакле, то је намерно да користимо амперсандс приликом позива функције, 327 00:14:06,790 --> 00:14:10,230 и звездица када декларисање и када спровођење функцију. 328 00:14:10,230 --> 00:14:14,220 >> И замислите амперсанд као адреса оператера, а као звезда 329 00:14:14,220 --> 00:14:15,490 иди тамо оператер - 330 00:14:15,490 --> 00:14:18,640 или, тачније, дереференце оператера. 331 00:14:18,640 --> 00:14:23,480 Дакле, то је много речи само да кажу да је сада, надам се, замена ће 332 00:14:23,480 --> 00:14:24,440 да је тачна. 333 00:14:24,440 --> 00:14:26,550 >> Дозволите ми да иде напред и да - 334 00:14:26,550 --> 00:14:30,940 хајде да заправо преименовали датотеку, да не би Овај програм још увек не може назвати замена. 335 00:14:30,940 --> 00:14:33,240 Ја тврдим да ћемо га назвати свап.ц сада. 336 00:14:33,240 --> 00:14:35,670 Тако да, замени. 337 00:14:35,670 --> 00:14:37,520 Дот, коса црта, замените. 338 00:14:37,520 --> 00:14:40,210 >> А сада заиста, к је 1, и 2. 339 00:14:40,210 --> 00:14:44,040 И онда, је к 2, и је један. 340 00:14:44,040 --> 00:14:46,500 Па да видимо да ли можемо урадити мало другачије о томе шта је 341 00:14:46,500 --> 00:14:47,180 овде дешава. 342 00:14:47,180 --> 00:14:51,250 Прво, дозволите ми да зумирате на нашем цртање екран овде. 343 00:14:51,250 --> 00:14:54,160 И дозволите ми да предложи за тренутак - и кад год сам овде скренем се огледа 344 00:14:54,160 --> 00:14:58,660 тамо сада - дозволите ми да предложи Овде је читава гомила меморије, или 345 00:14:58,660 --> 00:15:00,540 РАМ-а, унутар мог рачунара. 346 00:15:00,540 --> 00:15:04,140 >> И то ће бити број залогај, рецимо, 1. 347 00:15:04,140 --> 00:15:05,720 То ће бити број 2 бајта. 348 00:15:05,720 --> 00:15:08,220 И ја ћу урадити гомилу више, и онда гомила дот дот тачака на 349 00:15:08,220 --> 00:15:10,880 указују да постоји 2 милијарде од ових ствари. 350 00:15:10,880 --> 00:15:13,520 4, 5, и тако даље. 351 00:15:13,520 --> 00:15:17,055 >> Тако да су се првих пет бајтова меморије мог рачунара. 352 00:15:17,055 --> 00:15:17,560 У реду? 353 00:15:17,560 --> 00:15:19,060 Врло мало од 2 милијарде. 354 00:15:19,060 --> 00:15:21,120 Али сада ћу предложити следеће. 355 00:15:21,120 --> 00:15:27,490 Ја ћу да предложим да к ће меморишете број 1, а и иде 356 00:15:27,490 --> 00:15:29,690 да меморишете број 2. 357 00:15:29,690 --> 00:15:35,000 И дозволите ми да иде напред и сада представља ове вредности као што следи. 358 00:15:35,000 --> 00:15:41,510 >> Урадимо то на следећи начин. 359 00:15:41,510 --> 00:15:42,870 Дајте ми само једну секунду. 360 00:15:42,870 --> 00:15:44,150 Један други. 361 00:15:44,150 --> 00:15:45,680 ОК. 362 00:15:45,680 --> 00:15:47,560 Желим да се ово мало - 363 00:15:47,560 --> 00:15:50,440 Хајде да урадимо ово опет. 364 00:15:50,440 --> 00:15:53,250 Иначе ћу и коришћење Исти бројеви, ненамерно, 365 00:15:53,250 --> 00:15:54,230 више пута. 366 00:15:54,230 --> 00:15:57,320 >> Дакле, само тако имамо различите бројеве говорити о, назовимо ову бајт 367 00:15:57,320 --> 00:16:03,391 број 123, 124, 125, 126, и тачка тачка тачка. 368 00:16:03,391 --> 00:16:08,400 И дозволите ми да сада тврдим да ћу стави вредност 1 овде, и вредност 2 369 00:16:08,400 --> 00:16:11,990 Овде, иначе познат као к и и. 370 00:16:11,990 --> 00:16:15,300 Дакле, то је само тако се дешава да ово је к, ово је г. 371 00:16:15,300 --> 00:16:18,180 >> И само по неким случајним случајно, рачунара, оперативни систем, 372 00:16:18,180 --> 00:16:21,890 догодило да стави Кс на локацији број 123. 373 00:16:21,890 --> 00:16:25,590 И година завршила на локацији 124 - 374 00:16:25,590 --> 00:16:26,330 проклетство. 375 00:16:26,330 --> 00:16:28,700 Требало је да то фиксно. 376 00:16:28,700 --> 00:16:34,040 Човече, да ли стварно желим да урадим ово? 377 00:16:34,040 --> 00:16:37,340 Да, желим да поправим ово и б правилно о овоме данас. 378 00:16:37,340 --> 00:16:39,950 Извини, нова у овоме. 379 00:16:39,950 --> 00:16:45,020 >> 127, 131, и није желео да се ово сложен, али зашто да променим 380 00:16:45,020 --> 00:16:46,340 Бројеви тамо? 381 00:16:46,340 --> 00:16:48,360 Зато што желим да се интс заправо бити четири бајта. 382 00:16:48,360 --> 00:16:49,810 Тако ћемо бити супер анални о томе. 383 00:16:49,810 --> 00:16:53,800 Тако да ако се деси да 1 решити 123, 2 ће бити на адреси 384 00:16:53,800 --> 00:16:55,730 127 јер је удаљена само 4 бие. 385 00:16:55,730 --> 00:16:56,210 То је све. 386 00:16:56,210 --> 00:16:58,640 А ми ћемо заборавити све друге адресе у свету. 387 00:16:58,640 --> 00:17:03,320 >> Тако је к на локацији 123, година је на 127 месту. 388 00:17:03,320 --> 00:17:05,770 И сад, шта ја заправо желите да урадите? 389 00:17:05,770 --> 00:17:10,099 Када позовем замену сад, шта је заправо дешава? 390 00:17:10,099 --> 00:17:14,920 Па, кад ја зовем замену, ја сам у пролазу адреса к и и адресу. 391 00:17:14,920 --> 00:17:18,540 Тако на пример, ако се ова два комада папира сада представљају два 392 00:17:18,540 --> 00:17:23,510 аргументи и Б да мењате, шта сам ја Написаћу на први од њих, 393 00:17:23,510 --> 00:17:27,720 коју ћу позвати називамо? 394 00:17:27,720 --> 00:17:30,610 >> Тачно, 123. 395 00:17:30,610 --> 00:17:31,905 Дакле, ја тврдим јесте. 396 00:17:31,905 --> 00:17:32,955 То је параметар. 397 00:17:32,955 --> 00:17:35,856 Ја постављам адресу к унутра. 398 00:17:35,856 --> 00:17:38,152 >> Шта је то? 399 00:17:38,152 --> 00:17:40,890 >> Шта је то? 400 00:17:40,890 --> 00:17:41,190 >> Не, не. 401 00:17:41,190 --> 00:17:41,720 То је у реду. 402 00:17:41,720 --> 00:17:42,570 Ипак добро, и даље добро. 403 00:17:42,570 --> 00:17:43,530 Дакле, ово је. 404 00:17:43,530 --> 00:17:46,240 А сада на другом папиру, ово ће бити Б, а шта сам ја 405 00:17:46,240 --> 00:17:49,010 ће се на писање ово парче папира? 406 00:17:49,010 --> 00:17:50,080 127. 407 00:17:50,080 --> 00:17:53,720 >> Дакле, једино што се променило од Наш претходни причање ове приче је, 408 00:17:53,720 --> 00:17:58,590 него буквално 1 и 2, ја сам ће проћи на 123 и 127. 409 00:17:58,590 --> 00:18:02,130 А сада ћу да ставим ово унутра на овом пољу, у реду? 410 00:18:02,130 --> 00:18:04,640 Тако да сада представља црна кутија свап функцију. 411 00:18:04,640 --> 00:18:07,230 >> У међувремену, хајде да сад имам неког имплементира функцију свап. 412 00:18:07,230 --> 00:18:09,090 Да ли би неко овде да као волонтер? 413 00:18:09,090 --> 00:18:09,560 Хајде горе. 414 00:18:09,560 --> 00:18:11,080 Како се зовеш? 415 00:18:11,080 --> 00:18:11,460 Чарли. 416 00:18:11,460 --> 00:18:12,080 У реду, Чарли. 417 00:18:12,080 --> 00:18:14,810 Хајде горе. 418 00:18:14,810 --> 00:18:17,310 >> Дакле, Чарли ће играти Улога наше црне кутије. 419 00:18:17,310 --> 00:18:21,460 А Чарли, шта желим да урадите Сада се спроводи замену на такав начин 420 00:18:21,460 --> 00:18:25,320 да, с обзиром те две адресе, ви у ствари ишли 421 00:18:25,320 --> 00:18:26,330 за промену вредности. 422 00:18:26,330 --> 00:18:28,290 И ја ћу шапнути на уво како да покрене ТВ овде. 423 00:18:28,290 --> 00:18:29,930 >> Зато само напред, а ти си црна кутија. 424 00:18:29,930 --> 00:18:30,920 Реацх тамо. 425 00:18:30,920 --> 00:18:34,054 Које вредности видиш за, и Које вредности видиш за Б? 426 00:18:34,054 --> 00:18:36,740 >> Цхарлие: је 123 и 127 б је. 427 00:18:36,740 --> 00:18:37,530 >> Малан ДАВИД: У реду, тачно. 428 00:18:37,530 --> 00:18:38,940 Сада застаните на тренутак. 429 00:18:38,940 --> 00:18:41,680 Прва ствар коју ћемо сада да радимо, према коду - што 430 00:18:41,680 --> 00:18:43,220 Сада ћу се попните на екрану - 431 00:18:43,220 --> 00:18:46,750 ће бити да се издвоји мало Мало меморије зове темп. 432 00:18:46,750 --> 00:18:48,850 Дакле, ја ћу ићи напред и дају вам то сећање. 433 00:18:48,850 --> 00:18:52,210 >> Дакле, ово ће бити трећа променљива да сте доступни 434 00:18:52,210 --> 00:18:54,080 ти звао темп. 435 00:18:54,080 --> 00:18:57,120 А шта ћеш написати на темп папиру? 436 00:18:57,120 --> 00:19:02,524 437 00:19:02,524 --> 00:19:03,470 >> Цхарлие: Показивачи, зар не? 438 00:19:03,470 --> 00:19:04,790 >> Малан ДАВИД: У реду, па не нужно показиваче. 439 00:19:04,790 --> 00:19:07,230 Дакле, линија кода које сам ја означено на десној страни, 440 00:19:07,230 --> 00:19:07,900 Почнимо тамо. 441 00:19:07,900 --> 00:19:08,890 Каже звезда. 442 00:19:08,890 --> 00:19:11,670 Тако је тренутно складиштење број 123. 443 00:19:11,670 --> 00:19:16,660 И само интуитивно, оно је стар 123 значи? 444 00:19:16,660 --> 00:19:21,630 >> Али конкретно, ако је 123, звезда значи шта? 445 00:19:21,630 --> 00:19:22,560 Вредност. 446 00:19:22,560 --> 00:19:24,580 Или више лежерно, иди тамо. 447 00:19:24,580 --> 00:19:28,620 Па нека ми предложи да, држећи у руку, само напред и да се третира 448 00:19:28,620 --> 00:19:29,430 као да је то мапа. 449 00:19:29,430 --> 00:19:32,940 И хода да се преко рачунара меморије, а да нам оно што је 450 00:19:32,940 --> 00:19:36,520 на 123 локацији. 451 00:19:36,520 --> 00:19:37,720 Тачно. 452 00:19:37,720 --> 00:19:41,100 >> Дакле, видимо на локацији 123 је оно што, очигледно? 453 00:19:41,100 --> 00:19:44,240 У реду, па шта си ти сада вредност ће ставити у темп? 454 00:19:44,240 --> 00:19:44,750 Тачно. 455 00:19:44,750 --> 00:19:45,600 Зато само напред и урадите то. 456 00:19:45,600 --> 00:19:51,280 И унесите број 1 на комад папир који је тренутно под називом темп. 457 00:19:51,280 --> 00:19:53,540 >> А сада следећи корак који идете да спроведе 458 00:19:53,540 --> 00:19:54,310 ће бити оно. 459 00:19:54,310 --> 00:19:57,820 Па, на десној страни следећа линија кода је стар Б. Б, од 460 00:19:57,820 --> 00:19:59,260 Наравно, складишти адресу. 461 00:19:59,260 --> 00:20:02,270 127 која се бави. 462 00:20:02,270 --> 00:20:06,620 Звезда Б значи шта, узгред говорећи? 463 00:20:06,620 --> 00:20:08,700 >> Иди на тој локацији. 464 00:20:08,700 --> 00:20:14,988 Зато само напред и да нам оно што је на 127 локацији. 465 00:20:14,988 --> 00:20:15,480 ОК. 466 00:20:15,480 --> 00:20:19,170 Наравно, на локацији 127, је и даље вредност 2. 467 00:20:19,170 --> 00:20:24,060 Па шта сада иде у продавницу све што је на локацији у? 468 00:20:24,060 --> 00:20:26,860 Дакле, звезда средства иду на локацију у. 469 00:20:26,860 --> 00:20:29,770 Шта је локација? 470 00:20:29,770 --> 00:20:30,430 >> Тачно. 471 00:20:30,430 --> 00:20:34,190 Па сад, ако желите да промените шта је на тој локацији - 472 00:20:34,190 --> 00:20:36,470 Ја ћу ићи напред и покрените гумица су овде. 473 00:20:36,470 --> 00:20:37,760 И сада га ставите назад на четком. 474 00:20:37,760 --> 00:20:42,190 Који број цес написати Сада у том празном пољу? 475 00:20:42,190 --> 00:20:42,850 >> Тачно. 476 00:20:42,850 --> 00:20:46,470 Дакле, ова линија кода, да буде јасна - нека ја паузирам шта раде и Чарли 477 00:20:46,470 --> 00:20:51,730 нагласим, што он управо урадио је писати у тој кутији на месту 123 478 00:20:51,730 --> 00:20:55,150 вредност која је претходно била у б. 479 00:20:55,150 --> 00:20:59,140 И тако сада смо заиста спроводи ова друга линија кода. 480 00:20:59,140 --> 00:21:01,920 >> Сада, нажалост, постоји преостало још један ред. 481 00:21:01,920 --> 00:21:04,900 Сада оно што је у температури, буквално? 482 00:21:04,900 --> 00:21:06,200 Очигледно је број један. 483 00:21:06,200 --> 00:21:07,020 То није адреса. 484 00:21:07,020 --> 00:21:09,380 То је само број, врста варира од једне недеље. 485 00:21:09,380 --> 00:21:13,520 >> И сада, када кажете стар Б, то значи идите на адреси Б, што је од 486 00:21:13,520 --> 00:21:15,090 Курс овде. 487 00:21:15,090 --> 00:21:16,020 Дакле, кад сте тамо - 488 00:21:16,020 --> 00:21:18,320 Ја ћу ићи напред и избрисати оно што је у ствари тамо - и шта си 489 00:21:18,320 --> 00:21:20,820 сад да пишем на локацији 127? 490 00:21:20,820 --> 00:21:22,010 >> Цхарлие: темп, што је један. 491 00:21:22,010 --> 00:21:23,430 >> ДАВИД Малан: темп, што је један. 492 00:21:23,430 --> 00:21:25,670 А шта се дешава на температури на крају? 493 00:21:25,670 --> 00:21:26,600 Па, ми не знамо. 494 00:21:26,600 --> 00:21:27,420 Ми стварно не занима. 495 00:21:27,420 --> 00:21:31,090 Сваки пут смо имплементирали функцију до сада, било локалне променљиве имате 496 00:21:31,090 --> 00:21:31,890 заиста су локални. 497 00:21:31,890 --> 00:21:33,060 И они су само нестати. 498 00:21:33,060 --> 00:21:35,040 Они су се повратили од стране оперативног Систем крају. 499 00:21:35,040 --> 00:21:39,800 >> Дакле, чињеница да температура и даље има вредност 1 је врста фундаментално 500 00:21:39,800 --> 00:21:41,150 неинтересантна за нас. 501 00:21:41,150 --> 00:21:43,100 У реду, па аплауз ако бисмо могли за Цхарлие. 502 00:21:43,100 --> 00:21:46,400 Врло добро урађено. 503 00:21:46,400 --> 00:21:51,520 >> У реду, па шта више не то значи да може да уради? 504 00:21:51,520 --> 00:21:54,400 Тако испада да смо били говори неколико беле лажи 505 00:21:54,400 --> 00:21:55,540 дуже време. 506 00:21:55,540 --> 00:21:59,990 Заиста, испада да је стринг, све ово време, не баш 507 00:21:59,990 --> 00:22:02,190 низ знакова по себи. 508 00:22:02,190 --> 00:22:03,980 Некако је то интуитивно. 509 00:22:03,980 --> 00:22:08,270 >> Али технички гледано, ниска је тип података које смо прогласили унутар 510 00:22:08,270 --> 00:22:12,170 ЦС50 библиотека да поједностави свет за првих неколико недеља класе. 511 00:22:12,170 --> 00:22:20,130 Оно што је стварно ниска је адреса лика негде у РАМ. 512 00:22:20,130 --> 00:22:25,530 Стринг је заиста број, као што је 123 или 127, то се дешава да одредите 513 00:22:25,530 --> 00:22:28,420 где стринг почиње у меморија рачунара. 514 00:22:28,420 --> 00:22:31,870 >> Али то не представља стринг, по себи, сама. 515 00:22:31,870 --> 00:22:33,460 И можемо да видимо то на следећи начин. 516 00:22:33,460 --> 00:22:35,980 Дозволите ми да иде напред и отвори неки код који је међу 517 00:22:35,980 --> 00:22:38,340 данашњи изворни код примера. 518 00:22:38,340 --> 00:22:42,225 И ја ћу ићи напред и отворите се, рецимо, поредити-0.ц. 519 00:22:42,225 --> 00:22:44,830 520 00:22:44,830 --> 00:22:48,790 Ово је луд програм који ће да се реализује на следећи начин. 521 00:22:48,790 --> 00:22:49,040 >> Прва. 522 00:22:49,040 --> 00:22:50,420 Ја ћу да кажем нешто. 523 00:22:50,420 --> 00:22:52,660 Онда ћу да наставим и добити низ од корисника 524 00:22:52,660 --> 00:22:53,750 у том новом реду. 525 00:22:53,750 --> 00:22:55,370 Онда ћу да поновим. 526 00:22:55,370 --> 00:22:57,540 Онда ћу добити још један стринг од корисника. 527 00:22:57,540 --> 00:23:00,390 >> И запазите, ја показати један од низови у променљиву зове ова, и 528 00:23:00,390 --> 00:23:03,040 још један од тих низова у променљивој под називом Т. 529 00:23:03,040 --> 00:23:07,480 А сада ћу да тврдим, веома разумно, да ако је с једнако т једнака, 530 00:23:07,480 --> 00:23:08,940 жице су исте. 531 00:23:08,940 --> 00:23:09,970 Упишете исту ствар. 532 00:23:09,970 --> 00:23:11,830 Иначе, жице су није иста ствар. 533 00:23:11,830 --> 00:23:15,440 >> На крају крајева, ако се два улаза, два Интс слова, два пловци, две дубл, било које 534 00:23:15,440 --> 00:23:18,400 типови података смо говорили до сада да их упореди - 535 00:23:18,400 --> 00:23:22,070 сећате да смо направили веома јасно пре док да не урадите ово, јер 536 00:23:22,070 --> 00:23:25,840 једним знак једнакости је, наравно, Оператор додељивања. 537 00:23:25,840 --> 00:23:26,820 Дакле, то би био грешка. 538 00:23:26,820 --> 00:23:29,260 >> Ми користимо исти знак једнакости, који заиста пореди 539 00:23:29,260 --> 00:23:31,050 ствари за истинске равноправности. 540 00:23:31,050 --> 00:23:32,275 Али ја тврдим да је луд. 541 00:23:32,275 --> 00:23:37,400 Ако ја идем напред и да упоредите нула, а онда коса црта тачка упоредите нулу. 542 00:23:37,400 --> 00:23:39,700 И ја укуцате, рецимо, здраво. 543 00:23:39,700 --> 00:23:41,590 А онда хајде да кажемо здраво поново. 544 00:23:41,590 --> 00:23:46,040 Буквално иста ствар, компјутер тврди да откуца различите ствари. 545 00:23:46,040 --> 00:23:47,640 >> Сада можда сам нешто мистипед. 546 00:23:47,640 --> 00:23:49,910 Ја ћу откуцате моје име овај пут. 547 00:23:49,910 --> 00:23:52,580 Мислим, здраво. 548 00:23:52,580 --> 00:23:54,770 Здраво. 549 00:23:54,770 --> 00:23:57,360 Другачије је сваки пут. 550 00:23:57,360 --> 00:23:58,430 >> Па, зашто је то тако? 551 00:23:58,430 --> 00:24:00,140 Шта се заиста дешава испод хаубе? 552 00:24:00,140 --> 00:24:03,270 Па, шта се заиста дешава испод хауба је ниска онда 553 00:24:03,270 --> 00:24:07,410 Откуцан у том први пут сам на пример је реч здраво, наравно. 554 00:24:07,410 --> 00:24:11,660 Али ако то представља испод хауба, сећам се да 555 00:24:11,660 --> 00:24:13,470 Стринг је у низу. 556 00:24:13,470 --> 00:24:15,040 А ми смо рекли колико у прошлости. 557 00:24:15,040 --> 00:24:20,200 >> Дакле, ако сам извући такав низ овако, ја сам ће представљати нешто сасвим 558 00:24:20,200 --> 00:24:23,030 слично ономе што смо малопре. 559 00:24:23,030 --> 00:24:25,390 А заправо нешто Посебан овде. 560 00:24:25,390 --> 00:24:28,090 Шта смо утврдили је у сваки крај низа? 561 00:24:28,090 --> 00:24:30,760 Да, ово обрнута коса црта нула, што је само начин представљања, 562 00:24:30,760 --> 00:24:33,610 буквално, 00000000. 563 00:24:33,610 --> 00:24:35,680 Осам 0 бита у низу. 564 00:24:35,680 --> 00:24:37,610 >> Не знам, искрено, шта је после овога. 565 00:24:37,610 --> 00:24:40,090 То је само гомила више РАМ унутар мог рачунара. 566 00:24:40,090 --> 00:24:40,970 Али ово је низ. 567 00:24:40,970 --> 00:24:42,260 Разговарали смо о низовима раније. 568 00:24:42,260 --> 00:24:45,010 А ми обично говоримо о низовима као локација нула, 569 00:24:45,010 --> 00:24:46,580 онда, онда два. 570 00:24:46,580 --> 00:24:47,950 Али, то је само због удобности. 571 00:24:47,950 --> 00:24:49,380 И то је сасвим релативна. 572 00:24:49,380 --> 00:24:53,010 >> Када сте заправо добијате памћење рачунар, то је наравно било 573 00:24:53,010 --> 00:24:55,450 2 милијарде неке чудне бајтова, потенцијално. 574 00:24:55,450 --> 00:24:59,100 Дакле, заиста испод хаубе, све ово време, да. 575 00:24:59,100 --> 00:25:01,670 То може врло добро бити носач нула. 576 00:25:01,670 --> 00:25:04,780 Али ако копају још дубље испод хауба, то је стварно 577 00:25:04,780 --> 00:25:07,000 обрати број 123. 578 00:25:07,000 --> 00:25:09,150 Ова адреса је 124. 579 00:25:09,150 --> 00:25:11,040 То је 125 адреса. 580 00:25:11,040 --> 00:25:12,540 >> И нисам зезнуо овог пута. 581 00:25:12,540 --> 00:25:15,840 Ово је сада један бајта осим из ког разлога? 582 00:25:15,840 --> 00:25:17,930 Колика је знак? 583 00:25:17,930 --> 00:25:19,170 Чар је само један бајт. 584 00:25:19,170 --> 00:25:20,570 Инт је обично четири бајта. 585 00:25:20,570 --> 00:25:24,850 Зато сам га 123, 127, 131 и тако даље. 586 00:25:24,850 --> 00:25:27,560 Сада могу да наставим математика једноставнија и само до плус 1. 587 00:25:27,560 --> 00:25:30,510 И то је сада оно што се заиста догађа на испод хаубе. 588 00:25:30,510 --> 00:25:37,760 >> Дакле, када изјављујем овако нешто, стринг с, то је заправо - 589 00:25:37,760 --> 00:25:39,170 Испоставило се - 590 00:25:39,170 --> 00:25:41,190 Чар звезда. 591 00:25:41,190 --> 00:25:44,640 Звезда, наравно, значи адреса, звани показивач. 592 00:25:44,640 --> 00:25:46,200 Дакле, то је нешто адресу. 593 00:25:46,200 --> 00:25:47,510 Шта је адреса? 594 00:25:47,510 --> 00:25:47,760 >> Па - 595 00:25:47,760 --> 00:25:51,680 Ја сам једини који може да види врло Важно Правим, или мисле 596 00:25:51,680 --> 00:25:52,560 Правим. 597 00:25:52,560 --> 00:25:55,270 Тако ниска - 598 00:25:55,270 --> 00:25:57,180 тужна ствар је да имам монитор тамо где сам 599 00:25:57,180 --> 00:25:58,100 могао да види то. 600 00:25:58,100 --> 00:26:00,990 >> У реду, па шта је с стринг Сам раније изјавио. 601 00:26:00,990 --> 00:26:04,600 Али, испоставља се, захваљујући мало магија у ЦС50 библиотеци, све ово 602 00:26:04,600 --> 00:26:08,780 Време је буквално стринг био знак звезда. 603 00:26:08,780 --> 00:26:11,310 Звезда опет значи показивач или адреса. 604 00:26:11,310 --> 00:26:14,180 Чињеница да је то бочни Чар реч значи да је 605 00:26:14,180 --> 00:26:15,970 адреса лика. 606 00:26:15,970 --> 00:26:23,100 >> Дакле, ако се стринг се зове, и ја упишите у Х-Е-Л-Л-О, шта је сада предлаже се 607 00:26:23,100 --> 00:26:27,330 ниска буквално враћање свих овај пут, иако смо прилично смо 608 00:26:27,330 --> 00:26:29,980 упрошћени свет? 609 00:26:29,980 --> 00:26:33,310 Шта се заправо ниска повратак као своју повратну вредност? 610 00:26:33,310 --> 00:26:35,830 611 00:26:35,830 --> 00:26:38,720 >> 123 у овом случају, на пример. 612 00:26:38,720 --> 00:26:42,630 Ми смо раније рекли да се стринг једноставно враћа стринг, низ 613 00:26:42,630 --> 00:26:43,300 карактера. 614 00:26:43,300 --> 00:26:44,790 Али то је мало беле лажи. 615 00:26:44,790 --> 00:26:48,010 Начин на који се стварно ради жица испод хаубе је што добија 616 00:26:48,010 --> 00:26:48,930 стринг од корисника. 617 00:26:48,930 --> 00:26:51,530 Она Плопс на знакове он или она типови у меморији. 618 00:26:51,530 --> 00:26:54,680 Он ставља нулу обрнуту косу црту на крају оних који низ знакова. 619 00:26:54,680 --> 00:26:57,310 >> Али, онда шта се стринг буквално вратити? 620 00:26:57,310 --> 00:27:02,710 То је буквално враћа адресу Прве бајта РАМ-а да у 621 00:27:02,710 --> 00:27:04,130 то се користи за ту снагу. 622 00:27:04,130 --> 00:27:07,500 И испоставило се да је само повратак једна адреса 623 00:27:07,500 --> 00:27:12,120 Први знак у низу, који је довољна за проналажење целину 624 00:27:12,120 --> 00:27:12,630 стринг. 625 00:27:12,630 --> 00:27:16,930 >> Другим речима, добити стринг нема да се врате 123 и 124 и 125. 626 00:27:16,930 --> 00:27:19,950 То не мора да ми дуго Списак свих бајтова које 627 00:27:19,950 --> 00:27:20,740 мој стринг се користи. 628 00:27:20,740 --> 00:27:22,670 Јер један, сви су ледја у ледја. 629 00:27:22,670 --> 00:27:28,160 И друго, на основу првог обраћања, ја да схватим где стринг завршава. 630 00:27:28,160 --> 00:27:29,910 Како? 631 00:27:29,910 --> 00:27:33,490 >> Посебан НУЛЛ карактер, Обрнута коса црта нула на крају. 632 00:27:33,490 --> 00:27:35,430 Другим речима, ако је прође око - 633 00:27:35,430 --> 00:27:36,530 унутар променљиве - 634 00:27:36,530 --> 00:27:41,300 адреса знак, и преузимате да је на крају било ниске, било 635 00:27:41,300 --> 00:27:45,040 низ знакова, као и ми људи мислим на стрингс, ако претпоставимо да 636 00:27:45,040 --> 00:27:48,600 на крају једног таквог низа постоји обрнута коса црта нула, ви сте златни. 637 00:27:48,600 --> 00:27:52,430 Зато што увек можете наћи крај опруге. 638 00:27:52,430 --> 00:27:54,870 >> Сада шта се стварно дешава онда у овом програму? 639 00:27:54,870 --> 00:27:59,990 Зашто је овај програм, сравни-0.ц, луд? 640 00:27:59,990 --> 00:28:01,690 Шта се у ствари у поређењу? 641 00:28:01,690 --> 00:28:02,420 Да? 642 00:28:02,420 --> 00:28:05,000 >> СТУДЕНТ: [ИНАУДИБЛЕ]. 643 00:28:05,000 --> 00:28:05,730 >> ДАВИД Малан: Управо тако. 644 00:28:05,730 --> 00:28:08,350 То је у односу на локације од жице. 645 00:28:08,350 --> 00:28:12,420 Дакле, ако је корисник откуцао у једном здраво, као и ја, меморија може завршити 646 00:28:12,420 --> 00:28:13,430 изгледа овако. 647 00:28:13,430 --> 00:28:18,210 Уколико корисник онда врсте у Хелло агаин, али позивајући се стринг, ц је 648 00:28:18,210 --> 00:28:21,800 није нарочито паметан ако научити да буде паметан писањем кода. 649 00:28:21,800 --> 00:28:22,430 >> Ц - 650 00:28:22,430 --> 00:28:23,860 и рачунари више уопште - 651 00:28:23,860 --> 00:28:27,370 ако откуцате у речи здраво опет, знаш шта ћеш добити. 652 00:28:27,370 --> 00:28:31,480 Само ћеш добити други низ меморије да, да, дешава се 653 00:28:31,480 --> 00:28:35,510 складиштење Х-Е-Л-Л-О и тако даље. 654 00:28:35,510 --> 00:28:38,240 >> То ће да изгледа исто нас људе, али ова адреса 655 00:28:38,240 --> 00:28:39,460 можда неће бити 123. 656 00:28:39,460 --> 00:28:42,470 То само може да се деси да оперативни систем има на располагању 657 00:28:42,470 --> 00:28:45,430 простор, на пример, на локацији - 658 00:28:45,430 --> 00:28:49,820 рецимо нешто произвољно, овако је 200 локација. 659 00:28:49,820 --> 00:28:51,620 А ово је 201 локација. 660 00:28:51,620 --> 00:28:53,060 А ово је 202 локација. 661 00:28:53,060 --> 00:28:55,730 Немамо појма где је то ће бити у меморији. 662 00:28:55,730 --> 00:28:59,110 >> Али, шта то значи да оно што је Биће на крају чувају у с? 663 00:28:59,110 --> 00:29:00,750 Број 123. 664 00:29:00,750 --> 00:29:04,860 Шта ће се складиштити у т, у овом произвољном примеру? 665 00:29:04,860 --> 00:29:06,300 Број 200. 666 00:29:06,300 --> 00:29:11,410 И све то онда значи да је очигледно, 123 200 није исто. 667 00:29:11,410 --> 00:29:14,940 И то ако је услов никада је труе. 668 00:29:14,940 --> 00:29:18,430 Пошто гет стринг се користи другачија комади меморију сваки пут. 669 00:29:18,430 --> 00:29:20,360 >> Сада можемо да видимо ово поново у другом примеру. 670 00:29:20,360 --> 00:29:23,764 Дозволите ми да иде напред и отвори цопи-0.ц. 671 00:29:23,764 --> 00:29:28,770 Ја тврдим да је овај пример ће покушајте - али не успевају - да копирате две жице 672 00:29:28,770 --> 00:29:29,910 на следећи начин. 673 00:29:29,910 --> 00:29:31,730 >> Ја ћу да кажем нешто кориснику. 674 00:29:31,730 --> 00:29:34,490 Ја ћу онда да се ниска и позвати га с. 675 00:29:34,490 --> 00:29:36,400 И сад, ја радим овде ову проверу. 676 00:29:36,400 --> 00:29:37,990 Поменули смо ово пре неког времена. 677 00:29:37,990 --> 00:29:42,490 Али када би се ништавним стринг повратка, још један специјални знак, односно посебне 678 00:29:42,490 --> 00:29:45,050 Симбол рецимо. 679 00:29:45,050 --> 00:29:45,900 Ако је без меморије. 680 00:29:45,900 --> 00:29:48,970 >> На пример, ако је корисник заиста бити тешка и врсте Злочест 681 00:29:48,970 --> 00:29:51,220 број карактера у тастатуре и притисне Ентер. 682 00:29:51,220 --> 00:29:54,580 Ако је број карактера једноставно не могу стане у РАМ из било лудо 683 00:29:54,580 --> 00:29:57,820 Разлог, па се можда ниска Веома добро вратити нулл. 684 00:29:57,820 --> 00:30:01,080 >> Или ако и сам програм ради много о другим стварима и само постоји 685 00:30:01,080 --> 00:30:03,790 Нема довољно меморије за Гет стринг да успе, може завршити 686 00:30:03,790 --> 00:30:05,240 се враћа нулл. 687 00:30:05,240 --> 00:30:07,160 Али будимо прецизнији о томе шта је то. 688 00:30:07,160 --> 00:30:10,280 Оно што је заиста С је тип података? 689 00:30:10,280 --> 00:30:11,610 Знак звезда. 690 00:30:11,610 --> 00:30:14,560 >> Тако испада да сада можемо пилинг подржати слој нулл. 691 00:30:14,560 --> 00:30:17,500 Испоставило се, нула је - да, очигледно посебан симбол. 692 00:30:17,500 --> 00:30:19,190 Али оно што је заиста? 693 00:30:19,190 --> 00:30:25,220 Заиста, нулл је само симбол који смо људи користе да представљају нулу, као добро. 694 00:30:25,220 --> 00:30:29,010 >> Тако аутори Ц и рачунара уопште, одлучили година 695 00:30:29,010 --> 00:30:30,010 да, знате шта. 696 00:30:30,010 --> 00:30:34,850 Зашто не можемо обезбедити да корисник не Подаци се никада, никада, никада 697 00:30:34,850 --> 00:30:36,730 складишти на збогом нуле? 698 00:30:36,730 --> 00:30:39,610 У ствари, чак иу мом примеру произвољном раније, нисам почне нумерисање 699 00:30:39,610 --> 00:30:40,390 бајтова на нули. 700 00:30:40,390 --> 00:30:41,540 Почео сам на једном. 701 00:30:41,540 --> 00:30:44,950 Зато што сам знао да ће људи у свету су одлучили да резервишу нула 702 00:30:44,950 --> 00:30:47,970 бајт у РАМ никоме као нешто посебно. 703 00:30:47,970 --> 00:30:52,020 >> Разлог за ово је, кад год желите сигнал да нешто није у реду 704 00:30:52,020 --> 00:30:55,960 у вези са адресама, ви сте се вратили нулл - иначе познат као нуле - 705 00:30:55,960 --> 00:30:59,410 и зато што знате да не постоји легитими податке на адреси нула, јасно 706 00:30:59,410 --> 00:31:00,400 то значи грешку. 707 00:31:00,400 --> 00:31:04,080 И зато смо, по обичају, проверите за поништење и повратак нешто 708 00:31:04,080 --> 00:31:06,260 попут оног у тим случајевима. 709 00:31:06,260 --> 00:31:09,300 >> Дакле, ако ми доле помицати сада, ово је само онда нека провера грешака, за сваки случај 710 00:31:09,300 --> 00:31:10,610 нешто није у реду са [? кауцију?] 711 00:31:10,610 --> 00:31:13,470 потпуно и напустио програм по повратку рано. 712 00:31:13,470 --> 00:31:19,030 Ова линија сада може бити преписан како то, што значи шта? 713 00:31:19,030 --> 00:31:23,155 На левој страни, дај ми још један показивач на карактер и назовете је Т. 714 00:31:23,155 --> 00:31:26,935 Шта ја складиштење унутар т, заснован на овој једној линији кода? 715 00:31:26,935 --> 00:31:30,950 716 00:31:30,950 --> 00:31:32,170 >> Ја складиштење локацију. 717 00:31:32,170 --> 00:31:34,742 Конкретно локација да је био у с. 718 00:31:34,742 --> 00:31:39,000 Дакле, ако је корисник откуцао у здраво, и да прво здраво деси да заврше 719 00:31:39,000 --> 00:31:42,567 овде, онда је број 123 ће се вратити из добити 720 00:31:42,567 --> 00:31:43,810 обесити и да се складишти - 721 00:31:43,810 --> 00:31:44,780 као што смо рекли раније - 722 00:31:44,780 --> 00:31:45,440 у с. 723 00:31:45,440 --> 00:31:50,560 >> Када сам сада изјављујем други показивач Чар и зовем т, што је број 724 00:31:50,560 --> 00:31:53,940 буквално ће се завршити у Т према причи? 725 00:31:53,940 --> 00:31:55,420 Тако 123. 726 00:31:55,420 --> 00:32:00,310 >> Дакле, технички и сада и и Т указују на тачан 727 00:32:00,310 --> 00:32:02,410 Исти комади меморије. 728 00:32:02,410 --> 00:32:06,140 Дакле, обратите пажњу шта ћу сада да урадим доказују да је овај програм луд. 729 00:32:06,140 --> 00:32:08,820 >> Прво ћу тврдити, са принт Ф, капитализацијом 730 00:32:08,820 --> 00:32:10,080 копија у низу. 731 00:32:10,080 --> 00:32:11,660 Онда ћу да урадим нешто провере грешака. 732 00:32:11,660 --> 00:32:12,160 Идем да се уверите. 733 00:32:12,160 --> 00:32:16,710 Будимо сигурни да стринг т је у Најмање већи од нуле у дужини, 734 00:32:16,710 --> 00:32:19,190 тако да постоји неки лик да се заиста великим словом. 735 00:32:19,190 --> 00:32:22,840 >> А онда можда сећате из претходних примера. 736 00:32:22,840 --> 00:32:25,630 2 горња - која је у цтипе.х датотека. 737 00:32:25,630 --> 00:32:30,800 Т конзола ми даје нула нула карактер стринг т. 738 00:32:30,800 --> 00:32:34,360 И 2 горњи те исте вредности, од Наравно, претвара се у велика слова. 739 00:32:34,360 --> 00:32:38,230 >> Дакле интуитивно, ово нагласио линију кода се искориштава први 740 00:32:38,230 --> 00:32:40,250 писмо у Т. 741 00:32:40,250 --> 00:32:44,485 Али то није капитализацијом, интуитивно, Прво слово с. 742 00:32:44,485 --> 00:32:48,130 Али ако размишљате унапред, шта сам ја о томе да се види кад сам покренути овај програм 743 00:32:48,130 --> 00:32:54,220 и одштампати и оригинал, е, и тзв копија, Т? 744 00:32:54,220 --> 00:32:55,350 >> Они заправо ће бити исти. 745 00:32:55,350 --> 00:32:56,600 И зашто ће они бити исти? 746 00:32:56,600 --> 00:32:58,970 747 00:32:58,970 --> 00:33:01,020 Они се и указује на потпуно иста ствар. 748 00:33:01,020 --> 00:33:01,610 Дакле, хајде да урадимо то. 749 00:33:01,610 --> 00:33:03,160 >> Направите копије нулу. 750 00:33:03,160 --> 00:33:04,070 Он саставља реду. 751 00:33:04,070 --> 00:33:06,500 Дозволите ми да покренете нула копију. 752 00:33:06,500 --> 00:33:10,110 Дозволите ми да упишете нешто здраво у написани малим словима затим притисните Ентер. 753 00:33:10,110 --> 00:33:16,520 И он тврди да су и оригинални а и копија су заиста идентичне. 754 00:33:16,520 --> 00:33:17,920 >> Дакле, оно што се стварно десило овде? 755 00:33:17,920 --> 00:33:20,100 Дозволите ми да прекраја само ову слику да исприча причу у 756 00:33:20,100 --> 00:33:21,340 мало другачији начин. 757 00:33:21,340 --> 00:33:26,060 Шта се заиста дешава испод настрешнице Изјављујем нешто као 758 00:33:26,060 --> 00:33:30,410 Чар почетак а, или стринг с, Ја добијам показивач - 759 00:33:30,410 --> 00:33:33,090 што се дешава да се четири бајта у ЦС50 апарата 760 00:33:33,090 --> 00:33:34,410 и у много рачунара. 761 00:33:34,410 --> 00:33:36,008 И ја ћу да позовем тог С. 762 00:33:36,008 --> 00:33:39,810 И ово тренутно има нека непозната вредност. 763 00:33:39,810 --> 00:33:43,900 >> Када декларишете променљиву, осим ако себе ставио неку вредност, који 764 00:33:43,900 --> 00:33:44,570 зна шта је тамо. 765 00:33:44,570 --> 00:33:48,110 То може бити неки случајни редослед бита из претходног извршења. 766 00:33:48,110 --> 00:33:52,490 Дакле, када сам, у мом кода не добијете ниска, а затим складиште повратак 767 00:33:52,490 --> 00:33:54,800 вредност у стринг с Гет некако - 768 00:33:54,800 --> 00:33:58,520 и ми ћемо на крају одлепите како се стринг радови, некако издваја 769 00:33:58,520 --> 00:34:00,480 низ који вероватно изгледа Нешто као ово. 770 00:34:00,480 --> 00:34:05,390 Х-Е-Л-Л-О, инверзна коса црта нула. 771 00:34:05,390 --> 00:34:09,510 >> Претпоставимо да је адреса 123 само прво доследност. 772 00:34:09,510 --> 00:34:13,000 Тако се враћа стринг, у истакли линију тамо, враћа 773 00:34:13,000 --> 00:34:15,000 Број смо рекли, 123. 774 00:34:15,000 --> 00:34:17,420 Дакле, оно што се заиста дешава унутар с овде? 775 00:34:17,420 --> 00:34:26,590 >> Па, шта се заиста дешава Унутрашњост је 123 с. 776 00:34:26,590 --> 00:34:29,250 Али, искрено, ја сам све помало збуњени све ове адресе, 777 00:34:29,250 --> 00:34:30,320 све ове произвољних бројева. 778 00:34:30,320 --> 00:34:32,290 123, 124, 127. 779 00:34:32,290 --> 00:34:34,570 Па хајде да ствари поједноставе свет мало. 780 00:34:34,570 --> 00:34:38,800 >> Када говоримо о показивача, искрено, да нас људе, који се сад брига где 781 00:34:38,800 --> 00:34:39,870 ствари које су у меморији? 782 00:34:39,870 --> 00:34:41,080 То је потпуно произвољна. 783 00:34:41,080 --> 00:34:43,370 То ће зависити од тога колико више радне меморије корисник има. 784 00:34:43,370 --> 00:34:46,590 То ће зависити од када се у току дана покренете програм, можда, и 785 00:34:46,590 --> 00:34:48,250 шта улаз корисник вам даје. 786 00:34:48,250 --> 00:34:50,060 Ми смо стан на неважним детаљима. 787 00:34:50,060 --> 00:34:54,230 >> Дакле, хајде да се издвојити и рећи да, када покренете линију кода овако, 788 00:34:54,230 --> 00:34:57,320 Чар звезда а добија повраћај вредност од доћи ниске. 789 00:34:57,320 --> 00:35:02,720 Зашто не бисмо уместо тога извући оно што ми стално зовем показивача као да је то 790 00:35:02,720 --> 00:35:04,140 показујући на нешто? 791 00:35:04,140 --> 00:35:07,000 Тако да сам сада тврде да се ова постоји показивач - 792 00:35:07,000 --> 00:35:08,480 Испод хаубе је адреса. 793 00:35:08,480 --> 00:35:11,330 Али, то је само указује на први бајт у 794 00:35:11,330 --> 00:35:12,780 стринг који је враћен. 795 00:35:12,780 --> 00:35:16,710 >> Ако се сада вратити код овде, шта се дешава у овој линији? 796 00:35:16,710 --> 00:35:20,020 Па, у овом истакнутом реду сада, Ја изјављујући очигледно други 797 00:35:20,020 --> 00:35:21,070 променљива се зове Т. 798 00:35:21,070 --> 00:35:25,700 Али, такође је показивач, па идем извући га као, у теорији, тачан 799 00:35:25,700 --> 00:35:26,710 исте величине кутија. 800 00:35:26,710 --> 00:35:28,160 И ја ћу да га зову Т. 801 00:35:28,160 --> 00:35:33,500 >> А сада, ако се вратимо на кода поново, када сам складиште а унутрашњост т, 802 00:35:33,500 --> 00:35:36,920 шта сам ја технички стављање унутар т? 803 00:35:36,920 --> 00:35:39,350 Па технички, ово је број 123. 804 00:35:39,350 --> 00:35:42,270 Па ја стварно треба да се писмено број 123 тамо. 805 00:35:42,270 --> 00:35:43,900 Али, хајде да се виши ниво. 806 00:35:43,900 --> 00:35:48,090 Т, ако је само показивач, интуитивно, је управо то. 807 00:35:48,090 --> 00:35:49,800 То је све што је био чувају тамо. 808 00:35:49,800 --> 00:35:54,970 >> Тако сада у последњих занимљивих линија кода, када сам се о 809 00:35:54,970 --> 00:36:00,680 капитализацијом знак нуле у т, шта се дешава? 810 00:36:00,680 --> 00:36:06,310 Па, Т носач нула се сада показује на шта лик, вероватно? 811 00:36:06,310 --> 00:36:07,460 >> То указује на х. 812 00:36:07,460 --> 00:36:08,870 Пошто Т носач нула - 813 00:36:08,870 --> 00:36:12,490 сећам, ово је стара синтаксе. Т носач нула само значи да ако је ниска Т, Т 814 00:36:12,490 --> 00:36:15,590 носач нула значи добијање нула лик у тој снази. 815 00:36:15,590 --> 00:36:18,650 Дакле, шта то заправо значи се иде у овај низ - 816 00:36:18,650 --> 00:36:21,520 и да, то може бити 123, ово може да буде 124. 817 00:36:21,520 --> 00:36:22,790 Али, то је све релативно, запамти. 818 00:36:22,790 --> 00:36:25,640 Кад год говоримо о низу, имамо Предност говори о 819 00:36:25,640 --> 00:36:27,000 релативни индекси. 820 00:36:27,000 --> 00:36:31,120 >> И тако сада можемо само да претпоставимо да је т носач нула је ч. 821 00:36:31,120 --> 00:36:35,090 Дакле, ако ја зовем 2 горњи на њему, како је то Заиста се ради капитализацијом 822 00:36:35,090 --> 00:36:38,290 слово ч у велика Х. Али, наравно, шта је с? 823 00:36:38,290 --> 00:36:41,010 То указује на истом проклетом ниске. 824 00:36:41,010 --> 00:36:44,200 >> Дакле, то је све што се дешава у овом коду до сада. 825 00:36:44,200 --> 00:36:45,960 Па шта је онда импликације? 826 00:36:45,960 --> 00:36:48,300 Како да решите ова два проблема? 827 00:36:48,300 --> 00:36:50,870 Како да се упореди са стварним жице? 828 00:36:50,870 --> 00:36:53,720 >> Па интуитивно, како би одете о односу два 829 00:36:53,720 --> 00:36:55,090 жице за истинске равноправности? 830 00:36:55,090 --> 00:36:58,920 831 00:36:58,920 --> 00:37:00,750 >> Шта то значи, ако два жице су једнаки? 832 00:37:00,750 --> 00:37:04,330 Јасно је да не њихове адресе су једнаки у меморији, јер је то низак 833 00:37:04,330 --> 00:37:06,590 реализације на нивоу детаља. 834 00:37:06,590 --> 00:37:08,360 Сви ликови су исти. 835 00:37:08,360 --> 00:37:12,810 Дакле, дозволите ми да предложи, и дозволите ми да представим у верзији један од цомпаре.ц 836 00:37:12,810 --> 00:37:14,970 овде, па упореди-1.ц. 837 00:37:14,970 --> 00:37:19,590 >> Дозволите ми да предложи да се и даље показивач зове ова, а продавница у то 838 00:37:19,590 --> 00:37:20,610 Повратна вредност од доћи ниске. 839 00:37:20,610 --> 00:37:21,750 Хајде да урадимо исту ствар са т. 840 00:37:21,750 --> 00:37:23,230 Дакле, нико од кода је другачија. 841 00:37:23,230 --> 00:37:25,420 Ја ћу додати мало више провера грешака сада. 842 00:37:25,420 --> 00:37:29,390 Дакле, сада када смо врста пилинга леђа ово слојеви у ЦС50 онога ниска 843 00:37:29,390 --> 00:37:33,520 заправо, треба да буде више анални водећи рачуна о томе да не злоупотребљавају 844 00:37:33,520 --> 00:37:35,330 неважеће вредности као што су нула. 845 00:37:35,330 --> 00:37:36,440 >> Дакле, ја ћу само да проверим. 846 00:37:36,440 --> 00:37:41,490 Ако ова не зна једнак ништавним и Т не једнак нулл, што значи да смо у реду. 847 00:37:41,490 --> 00:37:44,460 Гет стринг није зезнуо све било који од тих низова. 848 00:37:44,460 --> 00:37:51,270 А ти можда сада могу погодити, што нема СТР ЦМП вероватно урадити? 849 00:37:51,270 --> 00:37:52,000 Стринг упоредите. 850 00:37:52,000 --> 00:37:55,470 >> Дакле, ако сте програм у Јави раније, ово је као једнакима метода у 851 00:37:55,470 --> 00:37:56,490 стринг класа. 852 00:37:56,490 --> 00:37:57,890 Али за оне који нису програмирао раније, 853 00:37:57,890 --> 00:37:59,320 ово је само Ц функција. 854 00:37:59,320 --> 00:38:02,180 То се дешава да дође у фајл под стринг.х. 855 00:38:02,180 --> 00:38:03,830 То је место где је то изјавио. 856 00:38:03,830 --> 00:38:05,110 >> И гудачки сравни - 857 00:38:05,110 --> 00:38:07,530 Ја стварно заборавити његову употребу, али нема везе то. 858 00:38:07,530 --> 00:38:10,470 Подсетимо се да можемо да урадимо човек, промешајте упоредите. 859 00:38:10,470 --> 00:38:12,590 И ово ће довести до Линук програмери употребу. 860 00:38:12,590 --> 00:38:14,060 И то је, искрено, помало загонетан. 861 00:38:14,060 --> 00:38:15,270 Али се види да, да. 862 00:38:15,270 --> 00:38:17,570 Морам да укључи стринг.х. 863 00:38:17,570 --> 00:38:20,590 >> И овде пише у опису, " ниска упоређивање функција пореди 864 00:38:20,590 --> 00:38:24,560 две жице С1 и С2 "и С1. и С2 су очигледно два 865 00:38:24,560 --> 00:38:26,120 аргументи прошло ин 866 00:38:26,120 --> 00:38:28,650 Не сећам се шта цонст је, али сада приметити - 867 00:38:28,650 --> 00:38:31,480 и можда сте то већ видели када сте користили ман страницу ако 868 00:38:31,480 --> 00:38:32,390 имају све - 869 00:38:32,390 --> 00:38:36,220 Чар је звезда је само синоним канапом. 870 00:38:36,220 --> 00:38:40,440 >> Тако да упоређује две жице, С1 и С2, а враћа цео број мање 871 00:38:40,440 --> 00:38:44,930 од или једнак или већи од нуле Ако је С1 је пронађен, односно, да се 872 00:38:44,930 --> 00:38:47,450 мање, или меч, или бити већи од С2. 873 00:38:47,450 --> 00:38:51,220 То је веома сложен начин да се каже ниска да упоредите повратак 874 00:38:51,220 --> 00:38:55,760 нулу ако две жице су интуитивно идентични, знак за 875 00:38:55,760 --> 00:38:57,120 знак за карактер. 876 00:38:57,120 --> 00:38:59,970 >> Она даје негативан број ако е, по абецедном реду, треба 877 00:38:59,970 --> 00:39:01,010 да дође пред т. 878 00:39:01,010 --> 00:39:05,300 Или даје позитиван број ако а требало да дође после т 879 00:39:05,300 --> 00:39:06,170 абецедном реду. 880 00:39:06,170 --> 00:39:08,360 Дакле, са овом једноставном функцијом, могу Ви, на пример, сортирање 881 00:39:08,360 --> 00:39:09,770 гомила речи? 882 00:39:09,770 --> 00:39:13,984 >> Дакле, у овој новој верзији, ја ћу да иде напред и да цомпаре1. 883 00:39:13,984 --> 00:39:15,750 Дот сласх сравни један. 884 00:39:15,750 --> 00:39:18,030 Ја ћу уписати здраво у свим малим словима. 885 00:39:18,030 --> 00:39:20,300 Идем да куцате у здраво опет све малим словима. 886 00:39:20,300 --> 00:39:23,340 И на срећу сада остварује Откуцао исту ствар сам. 887 00:39:23,340 --> 00:39:27,520 >> У међувремену, ако укуцамо у здраво у доњем случај и здраво у великим словима и 888 00:39:27,520 --> 00:39:29,710 упоредити их, сам откуцао различите ствари. 889 00:39:29,710 --> 00:39:32,530 Јер не само да су адресе другачије, али ми поређења 890 00:39:32,530 --> 00:39:35,350 различитих карактера изнова и изнова. 891 00:39:35,350 --> 00:39:37,320 >> Па идемо и поправити један други проблем сада. 892 00:39:37,320 --> 00:39:41,590 Дозволите ми да отворим једну од верзија примерак, који сада бави 893 00:39:41,590 --> 00:39:42,900 ово питање на следећи начин. 894 00:39:42,900 --> 00:39:45,650 А овај ће да изгледа мало сложенији. 895 00:39:45,650 --> 00:39:49,320 Али, ако мислите о томе шта смо проблем треба да се реши, надамо се да ће бити 896 00:39:49,320 --> 00:39:51,870 јасно за који тренутак сада. 897 00:39:51,870 --> 00:39:57,280 >> Дакле, овај први ред, знак почетак т, у лаике услови да неко предложи 898 00:39:57,280 --> 00:39:59,450 Шта значи ова линија овде? 899 00:39:59,450 --> 00:40:01,050 Знак звезда Т, шта је то ради? 900 00:40:01,050 --> 00:40:06,660 901 00:40:06,660 --> 00:40:07,210 >> Добро. 902 00:40:07,210 --> 00:40:09,500 Креирање показивач на неки место у меморији. 903 00:40:09,500 --> 00:40:10,930 И дозволите ми да прецизирате да је мало. 904 00:40:10,930 --> 00:40:17,180 Декларишете променљиву која ће сачувати само адреса неки знак у меморији, 905 00:40:17,180 --> 00:40:18,480 да буде мало више правилно. 906 00:40:18,480 --> 00:40:21,210 >> У реду, тако да сада на десној страни, имам никада није видео једну од ових функција 907 00:40:21,210 --> 00:40:22,660 пре, маллоц. 908 00:40:22,660 --> 00:40:26,980 Али, шта би то значило? 909 00:40:26,980 --> 00:40:28,050 Алокација меморије. 910 00:40:28,050 --> 00:40:29,410 Заузимање меморије. 911 00:40:29,410 --> 00:40:33,050 >> Испоставља се, до сада, ми смо нису имали заиста моћан начин 912 00:40:33,050 --> 00:40:36,210 пита оперативни систем, дај ми мало меморије. 913 00:40:36,210 --> 00:40:39,980 Уместо тога, сада се позива функција маллоц да ради управо то. 914 00:40:39,980 --> 00:40:42,960 Иако је ово мало дистракција сада, приметити да у 915 00:40:42,960 --> 00:40:46,200 између два заградама је Управо ће то бити број. 916 00:40:46,200 --> 00:40:48,510 Где сам откуцао у питању марака може бити број. 917 00:40:48,510 --> 00:40:51,020 >> А то значи да број, Дај ми 10 бајтова. 918 00:40:51,020 --> 00:40:52,320 Дај ми 20 бајтова. 919 00:40:52,320 --> 00:40:53,820 Дај ми 100 бајтова. 920 00:40:53,820 --> 00:40:56,500 А маллоц ће учинити све да питајте оперативни систем - 921 00:40:56,500 --> 00:40:57,630 Линукс, у овом случају - 922 00:40:57,630 --> 00:40:59,630 Хеј, њихови су 100 бајта РАМ меморије на располагању? 923 00:40:59,630 --> 00:41:04,320 Ако је тако, вратите ти бајтови који ми је повратак на адресу на којој 924 00:41:04,320 --> 00:41:06,610 ти бајтови, можда? 925 00:41:06,610 --> 00:41:07,610 Први коме. 926 00:41:07,610 --> 00:41:10,460 >> Дакле, и овде - а то је преовлађујући у Ц, сваки пут када си 927 00:41:10,460 --> 00:41:11,680 баве адресама? 928 00:41:11,680 --> 00:41:15,830 Ви сте готово увек баве Прва таква адреса, без обзира колики 929 00:41:15,830 --> 00:41:19,490 комад меморије коју се враћен, да тако кажем. 930 00:41:19,490 --> 00:41:20,880 >> Дакле, хајде да зароните овде. 931 00:41:20,880 --> 00:41:23,940 Покушавам да издвоји како бајтова више, тачно? 932 00:41:23,940 --> 00:41:24,080 Добро. 933 00:41:24,080 --> 00:41:26,090 Стринг дужине с - хајде да уради конкретан пример. 934 00:41:26,090 --> 00:41:30,700 Ако је ова хелло је, Х-Е-Л-Л-О, шта је Дужина низа од с, очигледно? 935 00:41:30,700 --> 00:41:32,010 Дакле, то је пет. 936 00:41:32,010 --> 00:41:34,590 Али Радим плус 1 на то, зашто? 937 00:41:34,590 --> 00:41:37,700 Зашто желим шест бајтова уместо пет? 938 00:41:37,700 --> 00:41:38,790 Нулл карактер. 939 00:41:38,790 --> 00:41:41,210 >> Не желим да одем са овог специјални НУЛЛ карактер. 940 00:41:41,210 --> 00:41:45,160 Јер ако направим копију Поздрав и само до Х-Е-Л-Л-О, али ја не стављам 941 00:41:45,160 --> 00:41:50,160 да специјални знак, рачунар можда нема, случајно, обрнуте косе 942 00:41:50,160 --> 00:41:51,730 нула за мене. 943 00:41:51,730 --> 00:41:55,570 И тако, ако ја покушавам да схватим дужина копије, ја мислим да би 944 00:41:55,570 --> 00:41:59,360 то је 20 знакова, или милион знакова да ме никада није једноставно догоде 945 00:41:59,360 --> 00:42:01,050 да удари нулу обрнуту косу црту. 946 00:42:01,050 --> 00:42:05,780 >> Зато нам је потребно шест бајтова за складиштење Х-Е-Л-Л-О, инверзна коса црта нула. 947 00:42:05,780 --> 00:42:07,870 И онда је то само бити супер анални. 948 00:42:07,870 --> 00:42:10,700 Претпоставимо да ја заборавим шта величина Цхар је. 949 00:42:10,700 --> 00:42:12,020 Ми и даље рекавши да је један бајт. 950 00:42:12,020 --> 00:42:12,860 И то је обично. 951 00:42:12,860 --> 00:42:15,425 У теорији, то би могло бити нешто другачије, на другом Мац или 952 00:42:15,425 --> 00:42:16,250 други ПЦ. 953 00:42:16,250 --> 00:42:19,650 >> Тако испада да је овај оператор зове сизеоф да ако прође га на 954 00:42:19,650 --> 00:42:22,680 назив врсте података - као Чар, или инт или флоат - 955 00:42:22,680 --> 00:42:26,930 то ће вам рећи, динамично, колико бајтова цхар заузима на ово 956 00:42:26,930 --> 00:42:28,090 одређеном рачунару. 957 00:42:28,090 --> 00:42:31,360 >> Дакле, ово је практично само исто као и рећи пута 1 или 958 00:42:31,360 --> 00:42:32,440 пута ништа. 959 00:42:32,440 --> 00:42:36,340 Али, ја то радим само да буде супер анални, то само у случају да се разликује знак 960 00:42:36,340 --> 00:42:40,610 на рачунару у односу на моје, ово начин математика ће увек да проверите. 961 00:42:40,610 --> 00:42:43,720 >> На крају, овде сам проверите нулл, што је увек добра пракса - опет, 962 00:42:43,720 --> 00:42:44,920 сваки пут имамо посла са показивачима. 963 00:42:44,920 --> 00:42:47,520 Ако маллоц није био у стању да дају ме шест бие - што је 964 00:42:47,520 --> 00:42:49,210 вероватно, али за сваки случај - 965 00:42:49,210 --> 00:42:50,730 врати један одмах. 966 00:42:50,730 --> 00:42:53,290 А сада, само напред и копирање стринг на следећи начин. 967 00:42:53,290 --> 00:42:57,240 А ово је познато синтакса, иако у другачијој улози. 968 00:42:57,240 --> 00:43:01,210 >> Ја ћу ићи напред и добити низ Дужина с и одлажу га у Н. 969 00:43:01,210 --> 00:43:06,620 Ја ћу онда да бисте прелазили из И једнако нула до и укључујући Н, 970 00:43:06,620 --> 00:43:08,410 веће или једнако. 971 00:43:08,410 --> 00:43:13,540 Тако да на свакој итерацији, ја ставио ИТХ карактер с у ИТХ 972 00:43:13,540 --> 00:43:15,380 карактер т. 973 00:43:15,380 --> 00:43:18,190 >> Дакле, оно што се заиста дешава испод хауба овде? 974 00:43:18,190 --> 00:43:22,140 Па ако је то, на пример, је ова - 975 00:43:22,140 --> 00:43:26,400 и ја сам откуцао у речи Х-Е-Л-Л-О и ту је обрнута коса црта нула. 976 00:43:26,400 --> 00:43:29,020 И опет, то је ова овде указује. 977 00:43:29,020 --> 00:43:30,830 И ево сада је Т. 978 00:43:30,830 --> 00:43:34,860 >> А ово је сада указује на копију меморије, зар не? 979 00:43:34,860 --> 00:43:37,340 Маллоц ми је дао читав меморију. 980 00:43:37,340 --> 00:43:41,440 Ја не знам шта је у почетку у било којој од ових локација. 981 00:43:41,440 --> 00:43:44,340 Зато ћу да мислим од ових као гомила знакова питања. 982 00:43:44,340 --> 00:43:50,190 >> Али чим сам почети од нуле петље на кроз дужине с, т 983 00:43:50,190 --> 00:43:52,790 носач нула и Т конзола 1 - 984 00:43:52,790 --> 00:43:55,080 и ја ћу ставити ово сада на графоскоп - 985 00:43:55,080 --> 00:44:04,190 Т носач нула и нула значи ова конзола да ћу се копирање 986 00:44:04,190 --> 00:44:09,875 итеративно ч овде, е-Л-Л-О. Плус, јер сам плус 987 00:44:09,875 --> 00:44:12,370 1, бацксласх нула. 988 00:44:12,370 --> 00:44:19,060 >> Тако да сада у случају Цомпаре-1.ц, на крају, ако сам одштампати 989 00:44:19,060 --> 00:44:24,760 капитализација т, ми треба видим да је ова непромењен. 990 00:44:24,760 --> 00:44:26,090 Пусти ме напред сада и ово. 991 00:44:26,090 --> 00:44:28,630 Тако да цопи1. 992 00:44:28,630 --> 00:44:30,860 Дот сласх цопи1. 993 00:44:30,860 --> 00:44:33,670 Идем да куцате у здраво, Ентер. 994 00:44:33,670 --> 00:44:37,430 Запазите сада, само копију је капитализован. 995 00:44:37,430 --> 00:44:40,890 Зато што заиста има два комади меморије. 996 00:44:40,890 --> 00:44:44,390 >> Нажалост, можете да урадите неке прилично лоше ствари и прилично опасно овде. 997 00:44:44,390 --> 00:44:49,290 Дозволите ми да се сада повуче пример овде, која нам даје пример неколико 998 00:44:49,290 --> 00:44:51,540 различитих линија. 999 00:44:51,540 --> 00:44:56,040 Дакле, само интуитивно овде, у првом реду кода, инт к звезда, изјављује 1000 00:44:56,040 --> 00:44:57,340 променљива к се зове. 1001 00:44:57,340 --> 00:44:58,810 А шта је тип података те променљиве? 1002 00:44:58,810 --> 00:45:01,820 1003 00:45:01,820 --> 00:45:04,290 Шта је тип података те променљиве? 1004 00:45:04,290 --> 00:45:06,980 То није Цлиффхангер. 1005 00:45:06,980 --> 00:45:08,350 >> Подаци типа инт звезда. 1006 00:45:08,350 --> 00:45:12,600 Дакле, шта то значи? Кс ће складиштење адресу цео број. 1007 00:45:12,600 --> 00:45:13,520 Једноставно тако. 1008 00:45:13,520 --> 00:45:16,220 И ће се чувати адреса цео број. 1009 00:45:16,220 --> 00:45:18,390 Шта је трећа линија кода ради тамо? 1010 00:45:18,390 --> 00:45:21,850 То је издвајање колико бајта, највероватније? 1011 00:45:21,850 --> 00:45:22,350 Четири. 1012 00:45:22,350 --> 00:45:25,460 Због величине цео број је обично четири, од четири маллоц даје 1013 00:45:25,460 --> 00:45:29,950 ми врати адресу на комад меморије, први бајт чији је 1014 00:45:29,950 --> 00:45:32,110 сада чувају у к. 1015 00:45:32,110 --> 00:45:34,410 >> Сада идемо мало брже. 1016 00:45:34,410 --> 00:45:35,760 Звезда к значи шта? 1017 00:45:35,760 --> 00:45:38,480 1018 00:45:38,480 --> 00:45:42,590 То значи ићи на ту адресу и ставио шта број тамо? 1019 00:45:42,590 --> 00:45:43,870 Стави број 42 тамо. 1020 00:45:43,870 --> 00:45:47,590 Звезда г значи прелазак на шта је на И и да је број 13 тамо. 1021 00:45:47,590 --> 00:45:48,600 >> Али, чекај мало. 1022 00:45:48,600 --> 00:45:51,640 Оно што је у и у овом тренутку? 1023 00:45:51,640 --> 00:45:54,950 Шта адреса је г складиштење? 1024 00:45:54,950 --> 00:45:55,770 Ми не знамо, зар не? 1025 00:45:55,770 --> 00:45:59,230 Никада нисмо некада користили задатак оператера који укључује г. 1026 00:45:59,230 --> 00:46:03,370 Дакле, г је објављено на другој линији код неких је само смеће вредност, велика 1027 00:46:03,370 --> 00:46:04,760 знак питања да тако кажем. 1028 00:46:04,760 --> 00:46:07,230 Могло би се насумично показивање да било шта у меморији, који 1029 00:46:07,230 --> 00:46:08,340 је генерално лоша. 1030 00:46:08,340 --> 00:46:13,540 >> Дакле, чим стигнемо тамо ту линију, стар 13 година једнако, нешто лоше, 1031 00:46:13,540 --> 00:46:17,220 нешто веома лоше ради о да се деси да Бинки. 1032 00:46:17,220 --> 00:46:25,810 Па хајде да видимо шта ће се завршити дешава овде Бинки у овом тренутку 1033 00:46:25,810 --> 00:46:26,200 или тако изгледају. 1034 00:46:26,200 --> 00:46:26,490 >> [ВИДЕО РЕПРОДУКЦИЈА] 1035 00:46:26,490 --> 00:46:26,745 >> -Хеј, Бинки. 1036 00:46:26,745 --> 00:46:27,000 Пробудите се. 1037 00:46:27,000 --> 00:46:29,296 Време је за забаву показивача. 1038 00:46:29,296 --> 00:46:30,680 >> -Шта је то? 1039 00:46:30,680 --> 00:46:31,980 Сазнајте више о тројке? 1040 00:46:31,980 --> 00:46:34,010 О, Гоодие. 1041 00:46:34,010 --> 00:46:37,220 >> -Па, за почетак, мислим да смо Требаће ми пар тројки. 1042 00:46:37,220 --> 00:46:37,930 >> -У реду. 1043 00:46:37,930 --> 00:46:41,650 Овај број додељује два показивача што може да укаже на целе бројеве. 1044 00:46:41,650 --> 00:46:43,760 >> -Добро, добро, ја видим два савета. 1045 00:46:43,760 --> 00:46:45,850 Али, они не изгледају указујући на било шта. 1046 00:46:45,850 --> 00:46:46,490 >> -Тако је. 1047 00:46:46,490 --> 00:46:48,630 У почетку, не показивачи указују на било шта. 1048 00:46:48,630 --> 00:46:51,700 У ствари, они указују да се зову поинтеес, и припремајући их је 1049 00:46:51,700 --> 00:46:52,850 посебан корак. 1050 00:46:52,850 --> 00:46:53,740 >> -О, да, да. 1051 00:46:53,740 --> 00:46:54,500 Знао сам то. 1052 00:46:54,500 --> 00:46:56,270 У поинтеес су одвојене. 1053 00:46:56,270 --> 00:46:58,553 Дакле, како да издвоје поинтее? 1054 00:46:58,553 --> 00:46:59,480 >> -У реду. 1055 00:46:59,480 --> 00:47:03,707 Па, овај број додељује нове бројеве поинтее, а овај део сета к 1056 00:47:03,707 --> 00:47:05,520 да укаже на то. 1057 00:47:05,520 --> 00:47:06,760 >> -Хеј, то изгледа боље. 1058 00:47:06,760 --> 00:47:08,520 Тако да то уради нешто. 1059 00:47:08,520 --> 00:47:09,530 >> -У реду. 1060 00:47:09,530 --> 00:47:14,110 Ја ћу дереференце показивач к за складиштење број 42 у свом поинтее. 1061 00:47:14,110 --> 00:47:17,660 За овај трик, ја ћу морати своју магију штапић за дереференцинг. 1062 00:47:17,660 --> 00:47:20,695 >> -Ваш чаробни штапић од дереференцинг? 1063 00:47:20,695 --> 00:47:22,632 Ух, то је супер. 1064 00:47:22,632 --> 00:47:24,620 >> -То је оно што код изгледа. 1065 00:47:24,620 --> 00:47:27,526 Само ћу поставити број, и - 1066 00:47:27,526 --> 00:47:28,250 >> -Хеј, погледајте. 1067 00:47:28,250 --> 00:47:29,680 Ту иде. 1068 00:47:29,680 --> 00:47:34,520 Дакле, ради се о дереференце к следи стрелица за приступ свој поинтее. 1069 00:47:34,520 --> 00:47:36,690 У овом случају, за чување 42 унутра. 1070 00:47:36,690 --> 00:47:40,890 Хеј, покушајте да га користите да меморишете број 13 преко другог показивача, г. 1071 00:47:40,890 --> 00:47:42,125 >> -У реду. 1072 00:47:42,125 --> 00:47:46,810 Само ћу овде да и и се број 13 поставили. 1073 00:47:46,810 --> 00:47:50,890 А онда узме штап од дереференцинг и само - 1074 00:47:50,890 --> 00:47:52,430 вау! 1075 00:47:52,430 --> 00:47:53,030 >> -Ох, хеј. 1076 00:47:53,030 --> 00:47:54,610 То се не ради. 1077 00:47:54,610 --> 00:47:58,200 Рецимо, Бинки, не мислим дереференцинг И је добра идеја, 1078 00:47:58,200 --> 00:48:01,370 због постављања поинтее је посебан корак. 1079 00:48:01,370 --> 00:48:03,460 И не мислим да смо икада урадили. 1080 00:48:03,460 --> 00:48:03,810 >> -Хмм. 1081 00:48:03,810 --> 00:48:05,160 Добро питање. 1082 00:48:05,160 --> 00:48:07,410 >> -Да, ми смо издвојили показивача г. 1083 00:48:07,410 --> 00:48:10,045 Али ми никада га поставили на указују на поинтее. 1084 00:48:10,045 --> 00:48:10,490 >> -Хмм. 1085 00:48:10,490 --> 00:48:12,170 Врло придржава. 1086 00:48:12,170 --> 00:48:13,790 >> -Хеј, ти тражиш добро тамо, Бинки. 1087 00:48:13,790 --> 00:48:16,920 Можеш ли то поправити тако да је и бодова на исти поинтее као Кс? 1088 00:48:16,920 --> 00:48:17,810 >> -Наравно. 1089 00:48:17,810 --> 00:48:20,300 Ја ћу искористити свој чаробни штапић за показивач задатак. 1090 00:48:20,300 --> 00:48:22,240 >> -Да ли ће то бити Проблем као пре? 1091 00:48:22,240 --> 00:48:22,665 >> -Не. 1092 00:48:22,665 --> 00:48:24,300 Ово не дира поинтеес. 1093 00:48:24,300 --> 00:48:27,880 То је само један показивач мења указати за исту ствар као и други. 1094 00:48:27,880 --> 00:48:28,970 >> -О, видим. 1095 00:48:28,970 --> 00:48:31,730 Сада и указује на истом месту где и к. 1096 00:48:31,730 --> 00:48:32,450 Па чекај. 1097 00:48:32,450 --> 00:48:33,490 Сада је фиксна г. 1098 00:48:33,490 --> 00:48:34,630 Има поинтее. 1099 00:48:34,630 --> 00:48:36,520 Дакле, можете да пробате штапић од дереференцинг поново 1100 00:48:36,520 --> 00:48:39,200 да пошаље преко 13. 1101 00:48:39,200 --> 00:48:39,840 >> -У реду. 1102 00:48:39,840 --> 00:48:41,570 Ево иде. 1103 00:48:41,570 --> 00:48:42,870 >> -Хеј, погледај то. 1104 00:48:42,870 --> 00:48:44,320 Сада дереференцинг радова на г. 1105 00:48:44,320 --> 00:48:47,020 И зато што су показивачи дељења да је један поинтее, они 1106 00:48:47,020 --> 00:48:48,585 како види 13. 1107 00:48:48,585 --> 00:48:49,040 >> -Да. 1108 00:48:49,040 --> 00:48:49,670 Дељење. 1109 00:48:49,670 --> 00:48:50,380 Како год. 1110 00:48:50,380 --> 00:48:52,290 Зато ћемо сада заменити места? 1111 00:48:52,290 --> 00:48:52,970 >> -Ох, види. 1112 00:48:52,970 --> 00:48:54,150 Немамо више времена. 1113 00:48:54,150 --> 00:48:55,200 >> -Али - 1114 00:48:55,200 --> 00:48:57,060 >> -Само запамтите три поинтер правила. 1115 00:48:57,060 --> 00:49:00,100 Прво, основна структура је да имате показивач. 1116 00:49:00,100 --> 00:49:02,170 И то указује више на поинтее. 1117 00:49:02,170 --> 00:49:04,160 Али показивач и поинтее су одвојени. 1118 00:49:04,160 --> 00:49:06,460 И Уобичајена грешка је да се подесите показивач, али да 1119 00:49:06,460 --> 00:49:08,540 заборавите да даје поинтее. 1120 00:49:08,540 --> 00:49:12,460 >> Број два, показивач дереференцинг почиње на показивачу и прати његову 1121 00:49:12,460 --> 00:49:14,570 стрелица за приступ преко своје поинтее. 1122 00:49:14,570 --> 00:49:18,640 Као што сви знамо, то функционише само ако постоји је поинтее, која враћа у 1123 00:49:18,640 --> 00:49:19,790 правило број један. 1124 00:49:19,790 --> 00:49:23,670 >> Број три, показивач задатак узима један показивач и промене указују на то да се 1125 00:49:23,670 --> 00:49:25,850 исти као други поинтее показивач. 1126 00:49:25,850 --> 00:49:27,840 Дакле, после задатка, два показивачи ће 1127 00:49:27,840 --> 00:49:29,430 указују на исту поинтее. 1128 00:49:29,430 --> 00:49:31,600 Понекад то се зове дељење. 1129 00:49:31,600 --> 00:49:33,430 И то је све што је на њега, заиста. 1130 00:49:33,430 --> 00:49:33,840 Довиђења сада. 1131 00:49:33,840 --> 00:49:34,300 >> [ЕНД ВИДЕО РЕПРОДУКЦИЈА] 1132 00:49:34,300 --> 00:49:36,940 >> Малан ДАВИД: Па више на показивача, више о Бинки следеће недеље. 1133 00:49:36,940 --> 00:49:38,190 Видимо се у понедељак. 1134 00:49:38,190 --> 00:49:42,187