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