1 00:00:00,000 --> 00:00:11,320 2 00:00:11,320 --> 00:00:13,260 >> DAVID малая: Добры дзень, і дабро запрашаем назад у CS50. 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 ахопліваюць ў гэтым класе, ці сапраўды любы ўводны курс, які выкарыстоўвае C. 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 Я сядзеў у Эліат сталовая, седзячы побач з маім TF Нишат Мехта, 30 00:01:22,190 --> 00:01:24,070 які быў жыхаром Elliott House. 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 А тыя, як правіла, exploitations вынікам памылкі, памылкі, якія мы 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 секундны фрагмент трохі Claymation лічбу назваў Binky які быў дастаўлены ў 43 00:01:59,680 --> 00:02:03,020 жыцця нашага сябра ў Стэнфардзе, Прафесар Нік Parlante. 44 00:02:03,020 --> 00:02:06,753 Так што дазвольце мне даць вам гэта тізер Binky тут. 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 >> DAVID малая: Гэта Стэнфардзе інфарматыкі. 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 >> DAVID малая: Прабач, Нік. 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 І я напісаў трохі кода ў шкілетных прасоўвання тут, дзе я сцвярджаю, што X 65 00:02:50,180 --> 00:02:52,500 будзе 1, у 2 будзе. 66 00:02:52,500 --> 00:02:54,810 Я затым раздрукаваць і іх Значэнні F з пячаткай. 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 >> DAVID малая: Джэс? 82 00:03:25,690 --> 00:03:26,540 Падымайся, Джэс. 83 00:03:26,540 --> 00:03:29,180 Калі вы не пярэчыце, мы павінны пакласці Google шкла на вас, каб мы маглі 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 >> JESS: Выбачайце. 98 00:04:05,860 --> 00:04:06,330 >> DAVID малая: Не, няма. 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 >> Тады я збіраюся змяніць значэнне X гэтак жа, як Джэс зрабіў тут з 130 00:05:21,110 --> 00:05:23,200 малако і апельсінавы сок роўным у. 131 00:05:23,200 --> 00:05:27,460 І я збіраюся змяніць Y роўным ня х, таму што цяпер мы будзем 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 Яна называецца noswap.c. 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 >> Такім чынам, дазвольце мне цяпер ісці наперад і перарабіць гэтага не робяць swap. 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 Так што я проста хацеў сказаць пустэчу, своп, Інтэлект, Перахоп INT B, кропкай з коскі. 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 >> DAVID малая: Цалкам дакладна. 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 Друк F з'яўляецца% I, новая радок. 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 раздрукаваць і B яшчэ раз. 214 00:08:53,270 --> 00:08:56,030 Такім чынам, зараз давайце зробім гэта, не рабіце swap. 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, B = 2. 219 00:09:04,000 --> 00:09:06,070 І потым, а роўна 2, B = 1. 220 00:09:06,070 --> 00:09:09,390 Так ён працуе, як і Джэс зрабіў тут ўнутры swap. 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 Калі вы сутыкнуліся з гэтай агляднай Пытанне, можна проста пласкадонку і зрабіць X 224 00:09:19,560 --> 00:09:22,400 Y і якія зменныя замест гэтага? 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 >> Але ў дадзеным выпадку тут, я выкліку функцыі swap. 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.c. 238 00:09:57,760 --> 00:10:00,470 >> Але, аказваецца, ёсць Лепшы спосаб у цэлым. 239 00:10:00,470 --> 00:10:05,600 Дазвольце мне на самай справе вярнуцца і выдаліць раздрукаваць F, усяго спрасціць гэты код. 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 Гэта паняцце, што паказальнік, які Бинки, Claymation характарам, быў 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 І гэта толькі RAM цэлая куча байтаў. 260 00:11:00,520 --> 00:11:03,320 Так што калі ваш Mac ці ваш кампутар мае два гігабайта, у вас ёсць 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 Int, зорка, б. 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 І дай мне іншы адрас Int і называць гэты адрас б. 282 00:11:58,690 --> 00:12:01,120 >> Але цяпер мой код тут павінна змяніцца. 283 00:12:01,120 --> 00:12:03,470 Таму што, калі я заяўляю дзесятковага Temp - 284 00:12:03,470 --> 00:12:05,580 які да гэтага часу тыпу Int - 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 Temp існуе толькі траціну шклянкі Джес існаваў, з якой мэтай? 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 >> Так на самай справе, тое, што я хачу паставіць у Temp не зьяўляецца адрасам, але 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 у B, B зоркі зоркі. 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 >> Калі я тэлефаную swap. 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 Ampersand выгляду гучыць як адрасу. 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 Я сцвярджаю, што мы будзем называць яго swap.c цяпер. 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 паказваюць, што ёсць 2000000000 з гэтых рэчаў. 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 Вельмі нешматлікія з 2000000000. 354 00:15:19,060 --> 00:15:21,120 Але цяпер я збіраюся прапанаваць наступным. 355 00:15:21,120 --> 00:15:27,490 Я збіраюся прапанаваць, каб X збіраецца захаваць нумар 1, а Y будзе 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, Y знаходзіцца ў месцазнаходжанні 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 Аргументы і B памяняць, тое, што я збіраюся напісаць на першым з іх, 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 Я стаўлю адрас X ст там. 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 А цяпер на другі ліст паперы, гэта будзе B, і што я 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 Reach ў там. 425 00:18:30,920 --> 00:18:34,054 Якія каштоўнасці Вы бачыце, і якія каштоўнасці вы бачыце для B? 426 00:18:34,054 --> 00:18:36,740 >> Чарлі: складае 123 і У 127. 427 00:18:36,740 --> 00:18:37,530 >> DAVID малая: ОК, гэта дакладна. 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 >> DAVID малая: Добра, ну не абавязкова паказальнікаў. 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 Ну, з правага боку Наступны радок кода з'яўляецца зоркай б. B, з 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 Зорка B азначае, што, выпадкова кажу? 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 >> І зараз, калі вы кажаце, зоркі B, гэта азначае, што перайсці па адрасе B, якая мае 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 >> DAVID малая: Тэмп, які з'яўляецца адным. 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 CS50 бібліятэку для спрашчэння свету на працягу першых некалькіх тыдняў класа. 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.c. 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 іншы з гэтых радкоў ў зменнай T. 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 2000000000 байт нейкай дзіўнай, патэнцыйна. 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 Star, вядома, азначае адрас, інакш паказальнік. 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 Але, аказваецца, дзякуючы невялікай магіі ў бібліятэцы CS50, усё гэта 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 >> Так што калі ўзяць вяроўку называецца, і я друкую У H-Е-Л-Л-О, прапаноўваць тое, што цяпер атрымаць 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.c, багі? 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 >> DAVID малая: Цалкам дакладна. 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 >> C - 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 захоўванне H-E-L-L-высновы і гэтак далей. 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.c. 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 Колькасць знакаў у Клавіятура і хітоў Enter. 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 Char зоркі. 690 00:30:11,610 --> 00:30:14,560 >> Вось і атрымліваецца, зараз мы можам лупіны таму пласт нулявых. 691 00:30:14,560 --> 00:30:17,500 Аказваецца, NULL - так, відавочна, адмысловы знак. 692 00:30:17,500 --> 00:30:19,190 Але што гэта такое на самай справе? 693 00:30:19,190 --> 00:30:25,220 Сапраўды, NULL проста знак, што мы людзі выкарыстоўваюць для замены нуля, а таксама. 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 На левым баку, дайце мне яшчэ паказальнік на сімвал, і назавем яго T. 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 літаральна будзе ў канчатковым выніку ў T у адпаведнасці з гісторыяй? 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 >> Спачатку я збіраюся сцвярджаць, з Друк F, спекулюючы 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 Давайце пераканаемся, што радок T знаходзіцца ў меры больш за нуль у даўжыню, 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 верхнія - які знаходзіцца ў ctype.h файла. 737 00:32:25,630 --> 00:32:30,800 T Кранштэйн нуля дае мне нуля сімвал радкі т. 738 00:32:30,800 --> 00:32:34,360 І два верхніх таго ж кошту, Вядома, пераўтворыць яго ў верхні рэгістр. 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 У ім сабрана OK. 751 00:33:04,070 --> 00:33:06,500 Дазвольце мне запусціць копію нуля. 752 00:33:06,500 --> 00:33:10,110 Дазвольце мне што небудзь тыпу прывітанне ў усе малыя затым націсніце Enter. 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 які, аказваецца, чатыры байта У CS50 прыбора 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 H-E-L-L-О, зваротны слэш нуля. 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 зменную T. 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 І я буду называць яго T. 801 00:35:28,160 --> 00:35:33,500 >> І зараз, калі мы вернемся да кода зноў, калі я з захоўвання ўнутры т, 802 00:35:33,500 --> 00:35:36,920 тое, што я тэхнічна пакласці ўнутр T? 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 Паколькі T Кранштэйн нуля - 813 00:36:08,870 --> 00:36:12,490 Нагадаем, што гэта стары сінтаксіс. т кранштэйна нуля проста азначае, што калі T з'яўляецца радок, т 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 >> І вось зараз мы можам проста выказаць здагадку, што Zero T кранштэйны ч. 821 00:36:31,120 --> 00:36:35,090 Так што, калі я называю 2 верхніх на гэта, што гэта сапраўды робіце робіць стаўку 822 00:36:35,090 --> 00:36:38,290 маленькая г у верхні H. Але, вядома, тое, што з? 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 Такім чынам, дазвольце мне прапанаваць, і дазвольце мне прадставіць у версіі аднаго з compare.c 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 Давайце зробім тое ж самае з T. 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 Так што цяпер, калі мы накшталт адслойванне гэта пластамі ў CS50, што радок 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 І вы, магчыма, можа думаю зараз, што зусім STR CMP мяркуецца рабіць? 849 00:37:51,270 --> 00:37:52,000 Параўнанне радкоў. 850 00:37:52,000 --> 00:37:55,470 >> Так што калі вы ў праграме Java і раней, Гэта падобна на роўных метаду ў 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 Гэта адбываецца, каб прыйсці ў файл з імем string.h. 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 І гэта будзе выхоўваць Linux Кіраўніцтва праграміста. 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 Я павінен ўключыць string.h. 863 00:38:17,570 --> 00:38:20,590 >> І тут гаворыцца, пад апісаннем " Функцыя параўнання радкоў параўноўвае 864 00:38:20,590 --> 00:38:24,560 два радкі S1 і S2. "І S1 і S2-відаць, з'яўляюцца два 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 >> Так ён параўноўвае два радкі, S1 і S2, і вяртае цэлы лік 871 00:38:40,440 --> 00:38:44,930 або роўная або больш за нуль калі S1 знаходзіцца, адпаведна, быць 872 00:38:44,930 --> 00:38:47,450 менш або супадаюць, або быць больш, чым S2. 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 >> Так што ў гэтай новай версіі, я збіраюся ісці наперад і зрабіць compare1. 883 00:39:13,984 --> 00:39:15,750 Dot параўнаць адну рысу. 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 Char зоркі т, што ж гэта робіш? 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 раней, Malloc. 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 Хутчэй, у нас зараз ёсць функцыя пад назвай Malloc, што робіць менавіта гэта. 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 І Malloc зробіць усё магчымае, каб прасіць аперацыйнай сістэмы - 921 00:40:56,500 --> 00:40:57,630 Linux, у дадзеным выпадку - 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 >> Так і тут - і гэта пераважная ў C, у любы час вы 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 Таму што калі я зрабіць копію Добры дзень і проста рабіць H-E-L-L-O, але я не стаўлю 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 >> Так што нам трэба шэсць байт H-E-L-L-О, зваротны слэш нуля. 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 >> Вось і атрымліваецца, што ёсць гэты аператар называецца SizeOf, што калі вы перадаеце яго 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 Калі Malloc не быў у стане даць мне шэсць развітанняў - што 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 Я тады збіраўся я ад ітэрацыі роўная нуля аж да N, 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 Характар ​​T. 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 і я набраў у слове H-Е-Л-Л-О і ёсць зваротны слеш нуля. 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 Malloc даў мне цэлую кавалак памяці. 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 >> Але як толькі я пачынаю цыкл ад нуля далей, аж да даўжыні S, T 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 T Кранштэйн нуля і з нулявым сярэднім кранштэйнам , Што я збіраюся быць капіяваннем 986 00:44:04,190 --> 00:44:09,875 итеративно г тут, E-L-L-O. Плюс, таму што я зрабіў плюс 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 Таму пераканайцеся, copy1. 992 00:44:28,630 --> 00:44:30,860 Dot слэш copy1. 993 00:44:30,860 --> 00:44:33,670 Я збіраюся ўвесці прывітанне, Enter. 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 Дык што ж гэта значыць? X будзе захаваць адрас Int. 1007 00:45:12,600 --> 00:45:13,520 Вось як усё проста. 1008 00:45:13,520 --> 00:45:16,220 Y мы збіраемся захоўваць адрас Int. 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 З-за памеру дзесятковага гэта наогул чатыры, Malloc з чатырох дае 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 Зорка X азначае, што? 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 Зорка Y азначае ісці да таго, што пры ў , А таксама нумар 13 там. 1021 00:45:47,590 --> 00:45:48,600 >> Але пачакайце хвіліну. 1022 00:45:48,600 --> 00:45:51,640 Што знаходзіцца ў Y на дадзены момант? 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 >> Таму, як толькі мы патрапілі гэтую лінію там, зоркі Y роўна 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 >> -OK. 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 Тое, што яны паказваюць на называюцца pointees, і іх стварэння з'яўляецца 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 Pointees паасобныя. 1053 00:46:56,270 --> 00:46:58,553 Такім чынам, як вы размяркоўваеце pointee? 1054 00:46:58,553 --> 00:46:59,480 >> -OK. 1055 00:46:59,480 --> 00:47:03,707 Ну, гэты код стварае новы цэлыя pointee, і гэтая частка мноства Х 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 >> -OK. 1060 00:47:09,530 --> 00:47:14,110 Я разыменовать х для захоўвання 42 чысла ў свой pointee. 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 Так робяць разнаймення на X наступным стрэлкі для доступу да pointee. 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 >> -OK. 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 Скажам, Бинки, я не думаю, разнаймення Y з'яўляецца добрай ідэяй, 1078 00:47:58,200 --> 00:48:01,370 Паколькі налада pointee з'яўляецца асобнай стадыі. 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 Але мы ніколі не ўсталяваць яго на паказваць на pointee. 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 Вы можаце гэта выправіць, так што ў пунктаў да таго ж, як pointee х? 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 Гэта не тычыцца pointees. 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 Яна мае pointee. 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 >> -OK. 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 І таму, што паказальнікі дзеляцца што адзін pointee, яны 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 І ён паказвае да pointee. 1117 00:49:02,170 --> 00:49:04,160 Але паказальнік і pointee паасобныя. 1118 00:49:04,160 --> 00:49:06,460 А распаўсюджаная памылка заключаецца ў стварыць паказальнік, але 1119 00:49:06,460 --> 00:49:08,540 забудзьцеся далі pointee. 1120 00:49:08,540 --> 00:49:12,460 >> Нумар два, разнаймення паказальніка пачынаецца на паказальнік, прытрымліваючыся сваёй 1121 00:49:12,460 --> 00:49:14,570 стрэлкай на доступ да яго pointee. 1122 00:49:14,570 --> 00:49:18,640 Як мы ўсе ведаем, гэта працуе толькі, калі ёсць з'яўляецца pointee, якая вяртаецца да 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 pointee жа як яшчэ адзін паказальнік. 1126 00:49:25,850 --> 00:49:27,840 Такім чынам, пасля прызначэння, два паказальніка будзе 1127 00:49:27,840 --> 00:49:29,430 паказваць на той жа pointee. 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 >> DAVID малая: Так больш на паказальнікі, больш на Бинки на наступным тыдні. 1133 00:49:36,940 --> 00:49:38,190 Убачымся ў панядзелак. 1134 00:49:38,190 --> 00:49:42,187