1 00:00:00,000 --> 00:00:06,180 2 00:00:06,180 --> 00:00:07,820 >> Jason Hirschhorn: Welcome līdz A5, ikviens. 3 00:00:07,820 --> 00:00:11,270 Mums ir aizraujoša nedēļas pirms mums, galvenokārt tāpēc, ka ir tik daudz jaunu 4 00:00:11,270 --> 00:00:12,350 saskaras šajā telpā. 5 00:00:12,350 --> 00:00:12,920 Tas ir brīnišķīgi. 6 00:00:12,920 --> 00:00:15,740 Daudzi no jums ir šeit nejauši, kas ir pat labāk. 7 00:00:15,740 --> 00:00:18,220 Tāpēc cerams, jūs pastāvīgi savieno mūs. 8 00:00:18,220 --> 00:00:20,220 >> Šonedēļ mēs esam gatavojas pavadīt lielākā daļa nodaļas 9 00:00:20,220 --> 00:00:21,870 Gatavojoties viktorīnas. 10 00:00:21,870 --> 00:00:26,580 Tātad, par mūsu darba kārtībā, mēs ejam runāt mazliet par resursu klasē, 11 00:00:26,580 --> 00:00:30,350 bet arī viktorīnu, un pēc tam atkal pavada lielāko daļu klases runājot 12 00:00:30,350 --> 00:00:31,390 par jautājumiem. 13 00:00:31,390 --> 00:00:33,900 Pēc tam, kad mēs esam darīts atbildēt uz jūsu jautājumiem, vai ja jūsu jautājumiem 14 00:00:33,900 --> 00:00:39,010 protams, ved mūs uz kādu kodēšanas, es ir izlases problēmas no midterms 15 00:00:39,010 --> 00:00:43,180 pagātnē, mēs kodu dzīvot sadaļā kopā, kas rada arī dažas citas 16 00:00:43,180 --> 00:00:45,420 labas tēmas, lai segtu izdevumus. 17 00:00:45,420 --> 00:00:48,280 >> Tātad, pirmkārt, kā mēs esam izgājuši cauri, lai pēdējo pāris nedēļu laikā, lai atgādinātu jums 18 00:00:48,280 --> 00:00:51,700 puiši, ir ton resursu pieejams šajā kursā. 19 00:00:51,700 --> 00:00:55,020 Daudzi no viņiem būs neticami noderīgi jums, kā jūs turpināt 20 00:00:55,020 --> 00:00:57,280 mācīties viktorīnu 0, jo tā otrdienas pēcpusdienā. 21 00:00:57,280 --> 00:00:59,630 Tāpēc viss, kas jums ir mācās mazliet. 22 00:00:59,630 --> 00:01:02,640 >> Ir lekciju piezīmes un avota kodu, kas jums vajadzētu 23 00:01:02,640 --> 00:01:04,050 noteikti izbraukšana. 24 00:01:04,050 --> 00:01:05,019 Skatīties šorti. 25 00:01:05,019 --> 00:01:07,470 Pārbaudiet study.cs50.net. 26 00:01:07,470 --> 00:01:11,770 Un tad, uzskaitīti turpmāk, numurs no citiem resursiem. 27 00:01:11,770 --> 00:01:14,020 >> Atkal, viktorīna 0 ir rīt plkst 01:00. 28 00:01:14,020 --> 00:01:18,230 Ja vēl neesat to izdarījis, pārbaudiet out Par Viktorīna 0 dokuments par 29 00:01:18,230 --> 00:01:21,370 Protams, mājas lapa, lai noskaidrotu kur jūs lietojat viktorīnas. 30 00:01:21,370 --> 00:01:25,770 Viktorīna sākas 1:10 un beidzas 70 minūtes vēlāk. 31 00:01:25,770 --> 00:01:29,610 Tātad, ja jums parādās pēc 01:10, tu esi gatavojas iegūt, ka daudz mazāk minūtes 32 00:01:29,610 --> 00:01:30,940 nekā 70 veikt testu. 33 00:01:30,940 --> 00:01:33,570 Tāpēc pārliecinieties, ka jūs tur uz laiku. 34 00:01:33,570 --> 00:01:38,690 Ja esat paplašinājums students, vai ir dažas citas pārbaudes apsvērumiem, tā 35 00:01:38,690 --> 00:01:40,400 varētu būt rīt 01:00. 36 00:01:40,400 --> 00:01:43,540 Bet atkal, pārbaudiet Par Quiz 0 dokumentu, lai pārliecinātos, ka jūs zināt, kad 37 00:01:43,540 --> 00:01:44,760 jūs lietojat viktorīnas. 38 00:01:44,760 --> 00:01:46,440 Es uzrakstīju 75 minūtes šeit. 39 00:01:46,440 --> 00:01:48,580 Es domāju, ka ir labi, nevis 70. 40 00:01:48,580 --> 00:01:53,420 >> Tas attiecas uz visu materiālu no nedēļas 0 līdz pagājušās nedēļas lekciju trešdien. 41 00:01:53,420 --> 00:01:59,350 Un atkal, par šo viktorīnu, par ka dokuments, jūs saņemsiet vienu divpusējs un 8 42 00:01:59,350 --> 00:02:03,770 1/2 11 papīra lapas, kas jums izmantot kā piezīmes viktorīnas laikā. 43 00:02:03,770 --> 00:02:08,570 Daudzi cilvēki, ja ne lielākā daļa cilvēku, ir konstatēts, ka vislielākās noderīgs veids 44 00:02:08,570 --> 00:02:11,970 studēt par viktorīnas ir veikt pētījumu diagrammas vai 45 00:02:11,970 --> 00:02:13,730 viena sider, viņu pašu. 46 00:02:13,730 --> 00:02:17,710 Tā paskatās pagātnē tiem, ja jūs esat redzējis pagātnes ones. 47 00:02:17,710 --> 00:02:19,960 Aizsniegt draugiem, lai redzētu, kas viņi liekot uz savējo. 48 00:02:19,960 --> 00:02:23,610 >> Bet rokas uz leju, labākais veids, kā jūs varat Pētījums ir iet cauri visam un 49 00:02:23,610 --> 00:02:26,530 drāzt to uz leju, lai to, kas ir vai neiederas šajā lapā 50 00:02:26,530 --> 00:02:30,570 papīru, jo tas ir tikai patiešām noderīga, lai jūs varētu pārliecināties, 51 00:02:30,570 --> 00:02:33,620 jūs iet cauri visam un ir daži familiaritāte ar to. 52 00:02:33,620 --> 00:02:36,690 Lielākā daļa cilvēku, mēs redzam, pat ja tie ir papīra lapas sēdes tiesības 53 00:02:36,690 --> 00:02:39,840 pie viņiem uz viktorīnu, nav savukārt uz to, ka, atkal, ka ir ļoti 54 00:02:39,840 --> 00:02:43,290 process iet cauri informācija ir palīdzējis viņiem mācīties to. 55 00:02:43,290 --> 00:02:45,370 >> Vai kāds ir kādi jautājumi par viktorīnu 0? 56 00:02:45,370 --> 00:02:50,120 57 00:02:50,120 --> 00:02:51,450 Ir visiem - 58 00:02:51,450 --> 00:02:53,230 Es neesmu gatavojas darīt, paceļot roku. 59 00:02:53,230 --> 00:02:53,550 Nekas. 60 00:02:53,550 --> 00:02:54,790 I gatavojas lūgt kurš sāku studēt. 61 00:02:54,790 --> 00:02:58,360 Bet es negribu, lai jūs visi nepalielinās rokas. 62 00:02:58,360 --> 00:03:01,290 Tātad, piemēram, es teicu - jā, Avi, iet uz priekšu. 63 00:03:01,290 --> 00:03:04,205 >> AVI: Kāds varētu būt noderīga lieta likts uz vienu peidžeri? 64 00:03:04,205 --> 00:03:05,875 >> STUDENTU: Tas ir atkarīgs no jums. 65 00:03:05,875 --> 00:03:08,210 >> Jason Hirschhorn: Jūs saņemsiet izmantot savu spriedumu. 66 00:03:08,210 --> 00:03:13,220 Noderīgas lietas likts uz vienu peidžeri, Ja Jums ir neskaidrības par lielo O 67 00:03:13,220 --> 00:03:17,510 runtime dažāda veida meklējumiem un veidu, nodot, ka uz tur 68 00:03:17,510 --> 00:03:18,760 parocīgs dandy diagramma. 69 00:03:18,760 --> 00:03:22,250 Tādā veidā, ja jūs lūdza, ka viktorīna, jums nav nepieciešams, lai mēģinātu skaitlis 70 00:03:22,250 --> 00:03:23,560 tā veic vai iemesls caur runtime. 71 00:03:23,560 --> 00:03:24,730 Jūs varat vienkārši kopēt to uz leju. 72 00:03:24,730 --> 00:03:28,320 Ja paskatās viktorīnas pagātnē, daudz reizes, tur ir darba laika jautājumus. 73 00:03:28,320 --> 00:03:34,150 Lai būtu piemērs labs lieta, lai jūsu vienu pager. 74 00:03:34,150 --> 00:03:37,450 >> Citas labas lietas, kas likts uz, ja jūs sajaukt par to, kā deklarēt 75 00:03:37,450 --> 00:03:40,570 funkciju vai ko dažādas daļas funkcija deklarācija ir, rakstiet 76 00:03:40,570 --> 00:03:43,400 ka tur, vispārējs versija un tad varbūt piemērs. 77 00:03:43,400 --> 00:03:47,290 Ja jūs sajaukt par norādes, shēma, kā norādes darbs ir 78 00:03:47,290 --> 00:03:48,660 iespējams, patiešām noderīga. 79 00:03:48,660 --> 00:03:52,440 Ja jūs sajaukt par recursion, a paraugu rekursīvā funkcija tur 80 00:03:52,440 --> 00:03:54,980 varētu arī izrādīties ļoti noderīga. 81 00:03:54,980 --> 00:03:57,290 Vai tas dod jums dažas idejas? 82 00:03:57,290 --> 00:04:01,820 >> AVI: Jums ir nepieciešams, lai izprastu Visu apkopojot process, piemēram, 83 00:04:01,820 --> 00:04:03,220 kā tas viss darbojas? 84 00:04:03,220 --> 00:04:06,620 >> Jason Hirschhorn: Viss , kas ir ietvertas varētu 85 00:04:06,620 --> 00:04:08,060 parādās uz viktorīnas. 86 00:04:08,060 --> 00:04:08,930 Jautājumi - 87 00:04:08,930 --> 00:04:11,300 bet atkal, dažas lietas būs svērtā stipri nekā citi. 88 00:04:11,300 --> 00:04:14,330 Dažas lietas ir jānāk klajā atkal un atkal klasē, 89 00:04:14,330 --> 00:04:15,590 lekcija, un apakšpunktu. 90 00:04:15,590 --> 00:04:17,220 Citas lietas ir ne jānāk klajā, kas bieži. 91 00:04:17,220 --> 00:04:22,900 >> Mēs esam daudz runājuši par # ietvert -L kaut ko, un tas, ko tie nozīmē 92 00:04:22,900 --> 00:04:24,390 apkopošanas process. 93 00:04:24,390 --> 00:04:29,120 Mēs esam daudz runājuši par gdb, piekļauties, šie dažādie karogi, ko mēs izmantojam, kad 94 00:04:29,120 --> 00:04:33,100 mēs apkopotu kaut ko, un kādi make15, piemēram, patiešām 95 00:04:33,100 --> 00:04:34,510 nozīmē, un tiešām. 96 00:04:34,510 --> 00:04:38,110 Mēs nerunājam tik daudz par katru soli 97 00:04:38,110 --> 00:04:39,240 apkopošanas process. 98 00:04:39,240 --> 00:04:40,410 Mēs esam vēl runājuši par to. 99 00:04:40,410 --> 00:04:42,550 Tātad, tas ir vēl kaut kas jums jāzina. 100 00:04:42,550 --> 00:04:44,610 Bet atkal, mēs nebrauksim, lai būtu - 101 00:04:44,610 --> 00:04:49,140 lietas, kas nāk klajā biežāk klasē biežāk nākt klajā vairāk 102 00:04:49,140 --> 00:04:52,495 bieži un ir smagāki vērtē uz viktorīnas. 103 00:04:52,495 --> 00:04:53,280 >> Atdzist. 104 00:04:53,280 --> 00:04:54,580 Jebkādi citi jautājumi par viktorīnas 0? 105 00:04:54,580 --> 00:04:57,660 106 00:04:57,660 --> 00:05:00,050 >> Labi, tāpēc man sarakstu tēmas uz kuģa. 107 00:05:00,050 --> 00:05:01,550 Es devos caur mācību programmu. 108 00:05:01,550 --> 00:05:07,340 Es devos caur pārskatīšanas posmā no pēdējā naktī, un šajos slaidos nākt klajā 109 00:05:07,340 --> 00:05:13,710 ar nepilnīgu sarakstu tēmām ka mēs esam uz līdz šim CS50 110 00:05:13,710 --> 00:05:16,800 un lietas, kas varētu parādās uz viktorīnas. 111 00:05:16,800 --> 00:05:19,900 Tāpēc es neesmu gatavojas iet cauri katrs no tiem. 112 00:05:19,900 --> 00:05:22,370 Tas būtu nepieciešams daudz vairāk laiks, nekā mēs esam tagad. 113 00:05:22,370 --> 00:05:26,880 Bet man tas šeit, cerams, jog atmiņas par lietām, kas var 114 00:05:26,880 --> 00:05:28,420 vai var nebūt tik pazīstams ar jums. 115 00:05:28,420 --> 00:05:32,850 >> Un man patīk pavadīt lielāko daļu sadaļā atbildēt uz jūsu jautājumiem par 116 00:05:32,850 --> 00:05:35,130 Šīs tēmas, tēmas, neattiecas šeit. 117 00:05:35,130 --> 00:05:36,130 Mēs varam rakstīt pseido kodu. 118 00:05:36,130 --> 00:05:40,010 Mēs varam rakstīt reālu kodu lai nodrošinātu, ka jūs - 119 00:05:40,010 --> 00:05:44,280 Es varu atbildēt uz Jūsu jautājumu un palīdzēt visi būtiski saprast 120 00:05:44,280 --> 00:05:48,330 no šiem jautājumiem daudz, lai jūs jūtaties sagatavoti un ērti nonākšana 121 00:05:48,330 --> 00:05:50,150 viktorīna rīt. 122 00:05:50,150 --> 00:05:52,300 Tāpēc pārlasīt sarakstu. 123 00:05:52,300 --> 00:05:54,780 Jūs, cerams, ir pienācis sadaļu ar dažiem jautājumiem, kā arī. 124 00:05:54,780 --> 00:05:58,480 Kad esat gatavs, paceliet roku un mēs sāktu. 125 00:05:58,480 --> 00:06:01,590 126 00:06:01,590 --> 00:06:05,200 >> Paturiet prātā, ka jautājumi, kas jums ir, nav muļķīgu jautājumu. 127 00:06:05,200 --> 00:06:06,250 Mēs esam dzirdējuši, ka daudz. 128 00:06:06,250 --> 00:06:09,490 , Un jautājumi, jums ir, es esmu gatavs derēt, daudziem citiem cilvēkiem, gan 129 00:06:09,490 --> 00:06:11,740 te sēžam un skatoties tiešsaistē, ir, kā labi. 130 00:06:11,740 --> 00:06:13,770 Tātad, jūs var tikai palīdzēt cilvēkiem uzdodot jautājumus. 131 00:06:13,770 --> 00:06:15,070 Marcus. 132 00:06:15,070 --> 00:06:18,040 >> Marcus: Starp kaudze un kaudze, vai ir iepriekš piešķirtas 133 00:06:18,040 --> 00:06:22,880 procentos no atmiņas, kas ir definēta kā tas ir kaudze vai kaudzes? 134 00:06:22,880 --> 00:06:25,010 Vai to, kā tas darbojas, tieši tā? 135 00:06:25,010 --> 00:06:26,230 >> Jason Hirschhorn: Great jautājums. 136 00:06:26,230 --> 00:06:28,640 Es esmu gatavojas atgriezties izsekot mazliet. 137 00:06:28,640 --> 00:06:30,910 Vai visiem - 138 00:06:30,910 --> 00:06:31,660 lūdzu, esiet godīgi šeit. 139 00:06:31,660 --> 00:06:34,130 Es zinu, es esmu lūdzot jums paaugstināt savu roku priekšā jūsu vienaudžiem. 140 00:06:34,130 --> 00:06:38,510 Bet ir cilvēki, kas jūtas neērti ar steku un kaudzes 141 00:06:38,510 --> 00:06:42,980 un vēlētos, lai iet pār un ko tie nozīmē? 142 00:06:42,980 --> 00:06:43,880 Paaugstināt savu roku, ja - 143 00:06:43,880 --> 00:06:44,420 OK. 144 00:06:44,420 --> 00:06:45,120 Paldies. 145 00:06:45,120 --> 00:06:48,420 Tāpēc mēs esam gatavojas iet kaudzīti un kaudze tiešām ātri, un pēc tam 146 00:06:48,420 --> 00:06:50,370 pārvietoties atbildot uz jūsu jautājumu. 147 00:06:50,370 --> 00:06:58,250 >> Tātad, ja mēs izņemt lodziņu, lai pārstāvētu atmiņas datorā, kādi ir daži 148 00:06:58,250 --> 00:07:02,160 lietas, kas iet šajā ailē? 149 00:07:02,160 --> 00:07:03,630 Galvenais. 150 00:07:03,630 --> 00:07:04,020 Galvenā funkcija. 151 00:07:04,020 --> 00:07:05,890 Kur tas galvenais aiziet? 152 00:07:05,890 --> 00:07:08,090 >> STUDENTU: [nedzirdama]. 153 00:07:08,090 --> 00:07:09,390 >> Jason Hirschhorn: lai mēs likts galvenais leju šeit. 154 00:07:09,390 --> 00:07:12,180 155 00:07:12,180 --> 00:07:13,430 Kas vēl iet šajā ailē? 156 00:07:13,430 --> 00:07:16,000 157 00:07:16,000 --> 00:07:18,140 >> STUDENTU: funkcijas, kas jums zvana. 158 00:07:18,140 --> 00:07:19,020 >> Jason Hirschhorn: funkcijas ko mēs saucam. 159 00:07:19,020 --> 00:07:20,440 Un kur viņi iet? 160 00:07:20,440 --> 00:07:21,300 >> STUDENTU: kaudze. 161 00:07:21,300 --> 00:07:22,380 >> Jason Hirschhorn: viņi iet kaudze. 162 00:07:22,380 --> 00:07:27,350 Tāpēc mēs esam gatavojas nosaukt šo lieta noteikti šeit kaudze. 163 00:07:27,350 --> 00:07:31,880 Un uz augšu augšu, mums ir kaudze. 164 00:07:31,880 --> 00:07:35,450 Tāpēc atmiņa nav kaste, tāpat kā šis. 165 00:07:35,450 --> 00:07:37,330 Bet tas ir faktiski diezgan līdzīgs. 166 00:07:37,330 --> 00:07:40,840 Tas būs daudz kastes vairāk un vairāk, atkarībā no tā, cik liels jūsu 167 00:07:40,840 --> 00:07:43,730 dators ir vai cik liels jūsu atmiņas. 168 00:07:43,730 --> 00:07:46,950 >> Pie quote-likt pēdiņas beigās "no apakšas" ir kaudze. 169 00:07:46,950 --> 00:07:50,880 Un tur ir vairākas lietas kas iet uz skursteņa. 170 00:07:50,880 --> 00:07:53,840 Un tie ir atkarīgi no funkcijām Jums ir jūsu kodu. 171 00:07:53,840 --> 00:07:57,780 Jums vienmēr ir viena funkcija, kas jūsu kods sauc galvenais, lai tur vienmēr 172 00:07:57,780 --> 00:08:00,480 sadaļa noteikti šeit kaudze veltīta galveno. 173 00:08:00,480 --> 00:08:03,980 >> Šie posmi kaudze sauc kaudze rāmji. 174 00:08:03,980 --> 00:08:09,580 Kad jūs izsauktu citu funkciju, saka galvenais aicina bināro meklēšanas funkciju, 175 00:08:09,580 --> 00:08:11,075 mēs ieliekam vēl vienu kadru uz skursteņa. 176 00:08:11,075 --> 00:08:13,830 177 00:08:13,830 --> 00:08:17,320 Precīzāk, mēs gatavojamies ziedot rieciens atmiņas par mūsu 178 00:08:17,320 --> 00:08:22,960 dators uzglabāt bināro meklēšanu vietējām mainīgie un palaist bināro 179 00:08:22,960 --> 00:08:24,150 meklēšanas kodu. 180 00:08:24,150 --> 00:08:26,810 >> Tāpēc mēs saucam bināro meklēšanu. 181 00:08:26,810 --> 00:08:30,440 182 00:08:30,440 --> 00:08:33,340 Šajā rieciens atmiņas, mēs ejam saglabāt savu vietējo mainīgie. 183 00:08:33,340 --> 00:08:35,270 Mēs ejam, lai saglabātu tās printf zvaniem. 184 00:08:35,270 --> 00:08:38,159 Jebkurā gadījumā, šī funkcija ir būs jāuzglabā labi tur. 185 00:08:38,159 --> 00:08:40,350 Binārā meklēšana gatavojas izpildīt. 186 00:08:40,350 --> 00:08:42,210 Tas notiek, lai pabeigtu izpildi. 187 00:08:42,210 --> 00:08:47,450 Kas ir vārds C, kas nozīmē ka funkcija būtu 188 00:08:47,450 --> 00:08:49,306 pabeigt tā izpildi? 189 00:08:49,306 --> 00:08:50,040 >> STUDENTU: Atgriešanās. 190 00:08:50,040 --> 00:08:50,870 >> Jason Hirschhorn: Atgriešanās. 191 00:08:50,870 --> 00:08:53,230 Tātad, ja jūs redzat atgriešanās paziņojumu, Funkciju gali 192 00:08:53,230 --> 00:08:54,350 kad tas hits to. 193 00:08:54,350 --> 00:08:56,740 Tā binārā meklēšana dosies tās atdevi. 194 00:08:56,740 --> 00:09:01,360 Šī daļa atmiņas būtībā tiek atbrīvots. 195 00:09:01,360 --> 00:09:03,510 Un galvenais dosies atpakaļ uz izpildi. 196 00:09:03,510 --> 00:09:07,240 Tāpēc galvenais būs pauze, kur bija zvans bināro meklēšanu, dabūt atgriezto vērtību, 197 00:09:07,240 --> 00:09:08,700 un turpināt izpildi. 198 00:09:08,700 --> 00:09:10,840 Tas kaudze rāmis dosies prom. 199 00:09:10,840 --> 00:09:14,810 >> Ja mēs saucam rekursīvā funkcija, kas ir funkcija, kas sevi dēvē par vairāk nekā 200 00:09:14,810 --> 00:09:18,480 un vairāk, mēs varētu saņemt - teikt, ka mēs darīja bināro meklēšanu rekursīvi. 201 00:09:18,480 --> 00:09:21,520 Mēs varētu saņemt bināro meklēšanu versiju vienu, binārā meklēšana divi, binārā meklēšana 202 00:09:21,520 --> 00:09:24,090 trīs, bināro meklēšanu četri, bināro meklēšanu pieci. 203 00:09:24,090 --> 00:09:27,950 Un tad šis pēdējais bināro meklēšanu pieci dosies bāzes, un tam ir kaudze 204 00:09:27,950 --> 00:09:31,010 rāmji dosies atpakaļ un saglabāt slēgšanu kamēr mēs saņemam atpakaļ uz galveno. 205 00:09:31,010 --> 00:09:32,530 Mēs varam iet pa rekursijas mazliet. 206 00:09:32,530 --> 00:09:35,530 Bet tas viss ir, ja tu esi zvanot vairākas funkcijas laikā, 207 00:09:35,530 --> 00:09:39,250 tur būs vairāki kaudze rāmji uz skursteņa. 208 00:09:39,250 --> 00:09:42,900 >> Kaudzes, no otras puses, up šeit nav par funkcijām, 209 00:09:42,900 --> 00:09:44,380 nevis vietējo mainīgajiem. 210 00:09:44,380 --> 00:09:48,920 Tas ir dinamiski piešķirta mainīgie. 211 00:09:48,920 --> 00:09:57,210 Tāpēc tie ir mainīgie, kas var būt inicializēts vai nu galveno vai 212 00:09:57,210 --> 00:09:58,640 funkcija, kas galvenās zvanus. 213 00:09:58,640 --> 00:10:00,790 Jebkur jūsu kodu, viņi var tikt inicializēts. 214 00:10:00,790 --> 00:10:04,360 Un, lai sāktu dinamiski piešķirti mainīgs. 215 00:10:04,360 --> 00:10:06,970 Kādu funkciju C mēs izmantojam? 216 00:10:06,970 --> 00:10:07,600 >> STUDENTU: malloc. 217 00:10:07,600 --> 00:10:09,240 >> Jason Hirschhorn: malloc. 218 00:10:09,240 --> 00:10:10,800 Jūs saucat malloc. 219 00:10:10,800 --> 00:10:12,260 Jūs saņemsiet telpu atmiņas. 220 00:10:12,260 --> 00:10:15,020 Un šī vieta atmiņas ir uz kaudzes. 221 00:10:15,020 --> 00:10:18,840 Un šī vieta atmiņas paliek tur līdz brīdim, kad zvanīt bez maksas. 222 00:10:18,840 --> 00:10:22,670 >> Tik dinamiski piešķirti mainīgie kaudze pastāvēs tik ilgi, cik jūs 223 00:10:22,670 --> 00:10:25,250 vēlaties, lai pastāv, un viņiem nebūs iet prom, kamēr jūs skaidri 224 00:10:25,250 --> 00:10:26,760 viņiem saku, lai iet prom. 225 00:10:26,760 --> 00:10:29,670 Jūs varat izveidot tos vienā funkciju. 226 00:10:29,670 --> 00:10:31,930 Šo funkciju žetonu rāmis dosies prom. 227 00:10:31,930 --> 00:10:35,490 Bet tas mainīgais joprojām pastāv kaudzes, kamēr tas atbrīvojas, 228 00:10:35,490 --> 00:10:39,650 iespējams, ar funkciju, ko sauc par bināro meklēšanu vai neatkarīgi. 229 00:10:39,650 --> 00:10:42,580 >> Tātad šie kaudze mainīgie tur uzturēties tik ilgi, cik jūs vēlaties, 230 00:10:42,580 --> 00:10:43,490 viņiem palikt tur. 231 00:10:43,490 --> 00:10:46,090 Un viņiem likts šeit. 232 00:10:46,090 --> 00:10:47,450 Un tad nākamais izpaužas likts tur. 233 00:10:47,450 --> 00:10:50,210 Tie glabāt kļūst aizpildītas, un tie palikt tur līdz brīdim, kad zvanīt bez maksas. 234 00:10:50,210 --> 00:10:52,870 >> Un būtībā, kaudze un kaudze, kļūst Marcus jautājumu, 235 00:10:52,870 --> 00:10:54,500 augt uz otru. 236 00:10:54,500 --> 00:10:57,730 Un, ja tie uzskriet viens otram, jūs esat izmantojis visu atmiņu jūsu 237 00:10:57,730 --> 00:11:01,330 datoru, un jūsu programma būs atmest jo jums nav nekādu vairāk atmiņas 238 00:11:01,330 --> 00:11:02,420 pa kreisi, lai izmantotu. 239 00:11:02,420 --> 00:11:07,290 Starp tiem, ir potenciāli citas lietas. 240 00:11:07,290 --> 00:11:10,980 Bet uz ko attiecas šī, protams, jūs nav jāuztraucas par to. 241 00:11:10,980 --> 00:11:12,020 >> Tā, ka bija atbilde uz jūsu jautājumu. 242 00:11:12,020 --> 00:11:13,520 Neuztraucieties par to. 243 00:11:13,520 --> 00:11:15,550 Bet tas bija sen atbilde. 244 00:11:15,550 --> 00:11:17,800 Viss, kas jums jāzina, ir kaudze un kaudze būs - 245 00:11:17,800 --> 00:11:18,900 kāds sāk apakšā. 246 00:11:18,900 --> 00:11:19,570 Kaudze dara. 247 00:11:19,570 --> 00:11:20,790 Kaudze ir tur augšā. 248 00:11:20,790 --> 00:11:21,990 Tie augs tuvāk viens otram. 249 00:11:21,990 --> 00:11:23,110 >> Un, ja tā skar, kas ir problēma. 250 00:11:23,110 --> 00:11:24,500 Jūs ilga no atmiņas. 251 00:11:24,500 --> 00:11:28,760 Bet arī papildus Zinot, kur tos, kas tiek glabāta gan 252 00:11:28,760 --> 00:11:30,512 kaudze un kaudze. 253 00:11:30,512 --> 00:11:31,410 Curtis. 254 00:11:31,410 --> 00:11:33,570 >> CURTIS: Kad viņi saduras, ir tas, ka kaudze pārplūdes? 255 00:11:33,570 --> 00:11:35,670 >> Jason Hirschhorn: Kad viņi saduras, tas nav kaudze pārplūdes. 256 00:11:35,670 --> 00:11:38,340 Kaudze pārplūdes ir atšķirīgs joma ka mēs varam iet pāri, ja vēlaties. 257 00:11:38,340 --> 00:11:40,020 Labi, mēs būsim atpakaļ, ka mazliet. 258 00:11:40,020 --> 00:11:42,730 >> STUDENTU: Kas ir vārds sauc kad tie hit otru, 259 00:11:42,730 --> 00:11:44,450 kaudze un kaudze? 260 00:11:44,450 --> 00:11:46,640 >> Jason Hirschhorn: Tagad, neuztraucieties par to. 261 00:11:46,640 --> 00:11:47,750 Tikai zinu, - 262 00:11:47,750 --> 00:11:50,530 Es atbildēšu uz šo jautājumu pēc klases. 263 00:11:50,530 --> 00:11:52,680 Ja tie uzskriet viens otram, ilga atmiņas, jo tur ir ne vairāk 264 00:11:52,680 --> 00:11:53,330 kosmosa tur. 265 00:11:53,330 --> 00:11:55,450 >> STUDENTU: Atvainojiet, kas ir seg vaina? 266 00:11:55,450 --> 00:11:58,710 >> Jason Hirschhorn: segments vaina var saukt par - 267 00:11:58,710 --> 00:12:02,240 tas ir atkarīgs, kāpēc SEG vainas ir sauc. 268 00:12:02,240 --> 00:12:06,260 Dažreiz, jūsu kaudze pārplūdes, tas būs saka SEG vainu par kļūdu. 269 00:12:06,260 --> 00:12:08,180 >> STUDENTU: Kas par dereferencing null mainīgais? 270 00:12:08,180 --> 00:12:10,040 Ir tas, ka seg vaina? 271 00:12:10,040 --> 00:12:11,480 >> Jason Hirschhorn: dereferencing null rādītājs - 272 00:12:11,480 --> 00:12:17,850 Labi, tāpēc, ja jums ir rādītājs, ka jums noteikts vienāds ar null, norādes, atgādināt, 273 00:12:17,850 --> 00:12:20,270 veikals atmiņas adreses kā to vērtības. 274 00:12:20,270 --> 00:12:23,660 Un null rādītājs ir būtiski uzglabātu 0, 0-th 275 00:12:23,660 --> 00:12:26,670 jārisina šajā mainīgajā. 276 00:12:26,670 --> 00:12:30,010 Tātad 0x, 0, 0, 0, 0, un tā tālāk. 277 00:12:30,010 --> 00:12:35,030 Ka 0-th adrese atmiņu, kas nav mūsu attēlu, kas ir tur augšā 278 00:12:35,030 --> 00:12:38,800 kaut kur, kas ir aizsargātas uz datora. 279 00:12:38,800 --> 00:12:40,130 Mēs nav atļauts pieskarties to. 280 00:12:40,130 --> 00:12:44,680 >> Tātad, ja jūsu programma ir izpildes, ja kaut kas mēģina iet uz atmiņu 281 00:12:44,680 --> 00:12:48,990 adresi 0, tas zina, ka kas ir tukša vērtība. 282 00:12:48,990 --> 00:12:50,820 Tā zina, nekas būtu tur. 283 00:12:50,820 --> 00:12:53,420 Tātad, ja jūs mēģināt izmantot kaut ko tur un pret kaut ko, piemēram, tur, vai 284 00:12:53,420 --> 00:12:58,355 mēģināt iet uz šo vietu, jūs esat gatavojas iegūt seg vaina vai kļūda. 285 00:12:58,355 --> 00:13:00,520 Tas, ka atbildi uz savu jautājumu? 286 00:13:00,520 --> 00:13:03,170 >> Un tagad mēs iesim atpakaļ kaudze pārplūdes. 287 00:13:03,170 --> 00:13:09,560 Lietas steku, kā jūs puiši ir redzējis, jo - pieņemsim pievērst ciešu 288 00:13:09,560 --> 00:13:11,966 up of skursteni rāmja. 289 00:13:11,966 --> 00:13:15,050 Var visi redzēt, ka? 290 00:13:15,050 --> 00:13:16,650 Tāpēc mums ir kaudze rāmi. 291 00:13:16,650 --> 00:13:23,260 Mēs esam ietaupot masīvu tik vietējā mainīgais šo funkciju. 292 00:13:23,260 --> 00:13:29,510 Tā teikt, mūsu masīvs ir piecas vietas. 293 00:13:29,510 --> 00:13:33,230 Tiks saglabāti visi pieci no tiem šajā kaudze rāmi. 294 00:13:33,230 --> 00:13:37,540 >> Ja mēs sāktu rakstīt tālāk robežas šī masīva - 295 00:13:37,540 --> 00:13:43,990 tāpēc, ja mēs sāktu rakstīt par, pieņemsim, ka ir 0. 296 00:13:43,990 --> 00:13:46,800 Tie ir pieci indeksi Mūsu masīvs. 297 00:13:46,800 --> 00:13:50,980 Ja mēs sāktu rakstīt uz indeksu 5, kas mums nav, kad mums ir 298 00:13:50,980 --> 00:13:55,900 masīva izmēru 5, mēs sākam rakstot uz indekss 6, 7, 8, 9, var iegūt Stack 299 00:13:55,900 --> 00:13:57,960 Pārplūdes kļūda. 300 00:13:57,960 --> 00:14:00,510 >> Parasti tas nav - 301 00:14:00,510 --> 00:14:04,910 jums būs iespējams nokļūt nepatikšanās ja jums iet pār pa vienam. 302 00:14:04,910 --> 00:14:08,640 Bet vispār, jūs nokļūsiet visvairāk nepatikšanas, ja jums iet pār ar daudz 303 00:14:08,640 --> 00:14:12,770 un doties tik tālu pāri, ka jūs rakstāt pār atgriešanās adresi, kas 304 00:14:12,770 --> 00:14:16,080 funkcija, kas atrodas apakšā kaudze rāmja. 305 00:14:16,080 --> 00:14:16,520 >> Tāpēc, vai ne? 306 00:14:16,520 --> 00:14:17,670 Tu - in - sorry. 307 00:14:17,670 --> 00:14:18,550 Nav ", jo labi." 308 00:14:18,550 --> 00:14:20,470 >> Kaudze rāmi, jums ir Jūsu vietējās mainīgie. 309 00:14:20,470 --> 00:14:27,090 Pašā apakšā skursteņa rāmis ir atgriešanās adresi. 310 00:14:27,090 --> 00:14:28,790 Tas ir, ja funkcija iet tad, kad tas ir beidzies. 311 00:14:28,790 --> 00:14:33,750 Un, ja jūs pārrakstīt, ka atgriešanās adresi, tad, kad tas kaudze rāmis, 312 00:14:33,750 --> 00:14:36,680 kad jūs iet caur kaudze rāmis un īstenojot katru pozīciju, jūs esat 313 00:14:36,680 --> 00:14:40,350 gatavojas doties uz savu jauno atpakaļadresi kas ir rakstīts tur, nevis 314 00:14:40,350 --> 00:14:40,910 faktiskais vienu. 315 00:14:40,910 --> 00:14:45,050 Un tas, kā mēs esam redzējuši daži drošības pārkāpumiem 316 00:14:45,050 --> 00:14:46,780 var notikt ar datoru. 317 00:14:46,780 --> 00:14:52,760 >> Tātad kaudze pārplūdes, īsi sakot, ir tad, kad jūs pārrakstīt daļu kaudze 318 00:14:52,760 --> 00:14:55,440 jūs vajadzēja izmantot, vietējās mainīgais jūs vajadzēja izmantot, un 319 00:14:55,440 --> 00:14:58,070 jo īpaši, kad jūs sākat pārrakstīšanu svarīgas lietas, piemēram, 320 00:14:58,070 --> 00:14:59,100 atpakaļ adresi. 321 00:14:59,100 --> 00:15:00,090 Un tas ir, ja jūs saņemsiet kļūdas. 322 00:15:00,090 --> 00:15:03,980 Vai varbūt pat jūs varētu sākt pat rakstot uz - 323 00:15:03,980 --> 00:15:05,370 saka binārā meklēšana bija tieši virs galvenās. 324 00:15:05,370 --> 00:15:07,790 Ja jūs pārrakstīja daudz, jums varētu rakstīt par galveno. 325 00:15:07,790 --> 00:15:10,230 Bet vispār, jūs saņemsiet kļūdas, pirms Pēc tam, ka dators zina 326 00:15:10,230 --> 00:15:12,270 jūs darāt kaut ko nevajadzētu darīt. 327 00:15:12,270 --> 00:15:12,560 Jā. 328 00:15:12,560 --> 00:15:13,910 >> Students: Kāda ir atšķirība starp kaudze pārplūdi 329 00:15:13,910 --> 00:15:16,940 un bufera pārpildes? 330 00:15:16,940 --> 00:15:19,420 >> Jason Hirschhorn: Bufera pārpildes ir vairāk vispārējs veids 331 00:15:19,420 --> 00:15:20,395 ko es tikko aprakstīts. 332 00:15:20,395 --> 00:15:22,610 >> STUDENTU: Tik kaudze pārplūdes ir piemērs bufera pārpildes. 333 00:15:22,610 --> 00:15:23,420 >> Jason Hirschhorn: Tieši tā. 334 00:15:23,420 --> 00:15:28,700 Tas ir masīvs, mēs varam iedomāties, kā buferis, telpu, lai lietas iet iekšā 335 00:15:28,700 --> 00:15:30,600 Tas ir kaudze bufera pārpildes. 336 00:15:30,600 --> 00:15:33,210 Mēs varētu būt kaudze bufera pārpildes. 337 00:15:33,210 --> 00:15:36,870 Ja ir bijis buferis, kas ir vien ir masīvs kaudze, un mēs 338 00:15:36,870 --> 00:15:40,600 pārrakstīja šīs robežas, tad mēs būtu ir kaudze bufera pārpildes. 339 00:15:40,600 --> 00:15:44,870 >> Un plašāki par šo kursu, viņi atklāti mazliet savādāk. 340 00:15:44,870 --> 00:15:48,040 Kompilators ir īpaša veidi, kā atklāt katra. 341 00:15:48,040 --> 00:15:50,660 Bet bufera pārpildes ir vispārīgāka par to, ko es aprakstīju veidu, 342 00:15:50,660 --> 00:15:54,090 kas bija kaudze bufera pārpildes. 343 00:15:54,090 --> 00:15:56,240 Bija, ka atbildi uz savu jautājumu? 344 00:15:56,240 --> 00:15:57,910 Salds. 345 00:15:57,910 --> 00:16:01,850 >> Tur bija kādi citi jautājumi, kas saistīti lai kaudze vai kaudzes? 346 00:16:01,850 --> 00:16:04,920 347 00:16:04,920 --> 00:16:05,510 Jā. 348 00:16:05,510 --> 00:16:08,220 >> STUDENTU: Es zinu, jums ir bezmaksas stīgas tāpēc, ka viņi ir kaudze 349 00:16:08,220 --> 00:16:09,305 un jūs nevēlaties, lai noplūdes atmiņu. 350 00:16:09,305 --> 00:16:12,240 Bet jums ir, lai atbrīvotu globālo mainīgo un sīkumi, piemēram, ka? 351 00:16:12,240 --> 00:16:14,335 Vai arī tie automātiski atbrīvoti? 352 00:16:14,335 --> 00:16:15,700 >> Jason Hirschhorn: Labs jautājums. 353 00:16:15,700 --> 00:16:22,340 Tātad CS50.H, mēs radām šo lietu lai jūs sauc virkni. 354 00:16:22,340 --> 00:16:23,800 String ir patiešām to, ko? 355 00:16:23,800 --> 00:16:24,810 >> STUDENTU: Char zvaigzne. 356 00:16:24,810 --> 00:16:29,180 >> Jason Hirschhorn: char zvaigzne, rādītājs līdz rakstzīmei rādītājs 357 00:16:29,180 --> 00:16:30,650 masīvs rakstzīmes. 358 00:16:30,650 --> 00:16:32,210 Tas ir tas, ko virkne ir. 359 00:16:32,210 --> 00:16:36,050 Tāpēc mums ir nepieciešams, lai atbrīvotu to, jo getstring, kuru mēs izmantojām daudz - 360 00:16:36,050 --> 00:16:38,370 string nosaukums ir vienāds getstring - 361 00:16:38,370 --> 00:16:43,560 ka mallocs mums dažas atmiņas par kaudze, un pēc tam atgriež rādītāju uz 362 00:16:43,560 --> 00:16:47,230 pirmais simbols, kas string, char zvaigzne. 363 00:16:47,230 --> 00:16:52,760 >> Tātad it kā, ja jums nav bijis rakstot free uz kādu no jūsu stīgas 364 00:16:52,760 --> 00:16:55,600 ka jūs esat tik tālu sauc, jums ir nav noplūdes dažas atmiņas. 365 00:16:55,600 --> 00:16:57,430 Protams, mēs neesam runājuši par tā, lai neviens ir gotten 366 00:16:57,430 --> 00:16:58,520 nepatikšanas, lai dara to. 367 00:16:58,520 --> 00:16:59,980 Bet iet uz priekšu, jā. 368 00:16:59,980 --> 00:17:03,990 Kad jūs zvanu getstring, tu esi mallocing dažas vietas uz kaudzes. 369 00:17:03,990 --> 00:17:07,640 Un, ja jums nav zvanīt bez maksas, vēlāk, ka string, jums ir atmiņas noplūde. 370 00:17:07,640 --> 00:17:09,440 Ka atbildi uz savu jautājumu? 371 00:17:09,440 --> 00:17:10,606 >> Yeah 372 00:17:10,606 --> 00:17:15,020 >> STUDENTU: Tātad, lai to izdarītu, mēs izmantojam brīvu tieši pirms atgriešanās? 373 00:17:15,020 --> 00:17:18,510 Tāpat, ietvaros, es domāju, ja mēs sakām, piemēram, int galvenais, laikā 374 00:17:18,510 --> 00:17:24,410 Kodeksa darbības joma, kas ir robežās, kas cirtaini bikšturi, tieši pirms - 375 00:17:24,410 --> 00:17:26,140 jūs zināt, kur jūs vēlaties parasti laiž atpakaļ. 376 00:17:26,140 --> 00:17:27,950 Vai jūs nodot bez maksas pirms tam? 377 00:17:27,950 --> 00:17:31,000 >> Jason Hirschhorn: Tātad jūs varat ievietot bez maksas kur vēlaties ievietot bez maksas. 378 00:17:31,000 --> 00:17:33,810 Tāpēc, ka tie ir dinamiski piešķirta mainīgie, jo tie var 379 00:17:33,810 --> 00:17:39,170 dzīvot neietilpst īpaši funkcija, ja jūs zvanīt malloc in 380 00:17:39,170 --> 00:17:44,140 atsevišķa funkcija, piemēram, getstring, jūs varat zvanīt bez maksas galvenais. 381 00:17:44,140 --> 00:17:46,050 Jums nav nepieciešams, lai izsauktu to konkrētajā funkcijas 382 00:17:46,050 --> 00:17:47,570 kur malloc sauc. 383 00:17:47,570 --> 00:17:50,340 Bet jums ir nepieciešams, lai izsauktu to pirms galvenajām atgriešanās. 384 00:17:50,340 --> 00:17:51,120 >> Un tas tiešām ir atkarīgs. 385 00:17:51,120 --> 00:17:54,960 Tas atkarīgs no tā, kāpēc jums malloced ka telpu pirmajā vietā. 386 00:17:54,960 --> 00:17:57,320 Daži cilvēki zvana atbrīvotu diezgan ātri. 387 00:17:57,320 --> 00:17:59,220 Daži cilvēki nevar zvanīt bez maksas, kamēr end to programmu. 388 00:17:59,220 --> 00:18:00,660 Un tie būs iet cauri un bez maksas viss. 389 00:18:00,660 --> 00:18:03,597 Tas atkarīgs no tā, kāpēc jūs sauc malloc. 390 00:18:03,597 --> 00:18:11,270 >> STUDENTU: Un ko jūs teiktu ja jūs sauc izmantošanas getstring? 391 00:18:11,270 --> 00:18:13,320 Jūs teiktu, ka bez maksas, ko? 392 00:18:13,320 --> 00:18:20,040 >> Jason Hirschhorn: Tātad sintakse bez maksas ir vienkārši bezmaksas, atvērtā paren, close 393 00:18:20,040 --> 00:18:22,130 paren, un nosaukumu rādītāju. 394 00:18:22,130 --> 00:18:26,410 Tātad, ja jūs rakstīt String nosaukums vienāds getstring, jūs likts vārdu šeit. 395 00:18:26,410 --> 00:18:27,760 Tas ir vārds rādītāja. 396 00:18:27,760 --> 00:18:30,570 Un tā zina, lai atbrīvotu šo atmiņu. 397 00:18:30,570 --> 00:18:33,920 >> STUDENTU: Tad, kad tas atbrīvo šo atmiņu, rādītājs joprojām norāda uz šo vietu 398 00:18:33,920 --> 00:18:34,970 atmiņā? 399 00:18:34,970 --> 00:18:39,020 Vai ir rādītājs arī iztukšo adrese, ka tas norāda uz. 400 00:18:39,020 --> 00:18:40,290 >> Jason Hirschhorn: Mums ir jāmēģina to. 401 00:18:40,290 --> 00:18:41,430 Mums vajadzētu kodu, kas. 402 00:18:41,430 --> 00:18:43,880 Let 's nāk atpakaļ, kad mēs nokļūt kodēšanas, un pieņemsim kodu, kas. 403 00:18:43,880 --> 00:18:46,000 Un, ja jūs vēlaties, lai noskaidrotu atbildi to, ka jūs varat arī kods, kas 404 00:18:46,000 --> 00:18:46,690 starplaikā. 405 00:18:46,690 --> 00:18:49,100 Bet tas ir liels jautājums. 406 00:18:49,100 --> 00:18:53,480 >> STUDENTU: Vai ir iespējams bez kaut pārāk ātri? 407 00:18:53,480 --> 00:18:58,530 Tātad, jums joprojām ir nepieciešams to savu programmu, un jūs atbrīvoja, ka atmiņas vietas? 408 00:18:58,530 --> 00:18:59,200 >> Jason Hirschhorn: Jā. 409 00:18:59,200 --> 00:19:03,020 Tas ir iespējams, ja jūs brīvus kaut un tad jūs to izmantot atkal, jums būs 410 00:19:03,020 --> 00:19:06,890 uzskriet kļūda. 411 00:19:06,890 --> 00:19:10,810 Bet tas ir par jums, jo jūs atbrīvoja kaut ko, un sauca to vēlāk. 412 00:19:10,810 --> 00:19:13,940 Tā, ka bija programmētāja kļūda. 413 00:19:13,940 --> 00:19:14,780 Bet jā. 414 00:19:14,780 --> 00:19:17,760 Jūs varētu rakstīt, ka. 415 00:19:17,760 --> 00:19:19,240 >> Kādi vēl jautājumi par - 416 00:19:19,240 --> 00:19:19,760 Jā. 417 00:19:19,760 --> 00:19:22,820 >> STUDENTU: Tātad, ja jums ir paredzēts tikai atbrīvotu to vispār pirms 418 00:19:22,820 --> 00:19:25,490 programmas beigām, tas nozīmē, ja programmas beigām, un jums nav atbrīvot to, 419 00:19:25,490 --> 00:19:27,580 ka atmiņa ir vēl piešķirts? 420 00:19:27,580 --> 00:19:31,330 >> Jason Hirschhorn: Ja jūsu programma beidzas un esat aizmirsis, lai atbrīvotu kaut ko, tad 421 00:19:31,330 --> 00:19:34,390 ka atmiņa tika piešķirti visā kalpošanas jūsu programmā. 422 00:19:34,390 --> 00:19:37,670 Ja jūsu programma aizveras pilnībā, ka atmiņa nav gatavojas 423 00:19:37,670 --> 00:19:39,490 palikt tur uz visiem laikiem. 424 00:19:39,490 --> 00:19:42,080 Dators ir pietiekami gudrs, lai zinātu ka tad, kad programma aizveras, tā 425 00:19:42,080 --> 00:19:46,440 būtu atbrīvoties no visa atmiņu, kas bija saistīta ar šo programmu. 426 00:19:46,440 --> 00:19:51,240 >> Tomēr, ir instrumenti, jūs varat palaist par programmu, lai noteiktu, vai, ja 427 00:19:51,240 --> 00:19:54,720 programma pabeigta, tu aizmirsi , lai atbrīvotu atmiņu. 428 00:19:54,720 --> 00:19:57,960 Un par savu nākamo problēmu noteikt, kur jūs izmantojat malloc un izmantojot 429 00:19:57,960 --> 00:20:02,610 norādes, jums būs darboties šajā programma par savu programmu, lai redzētu, vai, 430 00:20:02,610 --> 00:20:06,530 ja galvenie atgriežas, jums bija dažas lietas, kas bija pa kreisi unfreed. 431 00:20:06,530 --> 00:20:09,130 >> Tātad viņi nav gatavojas palikt malloced uz visiem laikiem savā datorā. 432 00:20:09,130 --> 00:20:11,720 Tas varētu būt izšķērdīgs, jo ļoti ātri, datori 433 00:20:11,720 --> 00:20:12,960 varētu pietrūkt atmiņas. 434 00:20:12,960 --> 00:20:16,450 Bet, ja tie darbojas līdz beigām jūsu programma un viņi nav atbrīvoti un jūsu 435 00:20:16,450 --> 00:20:20,260 programma iziet, tas joprojām ir problēma ka šis instruments palīdzēs jums risināt. 436 00:20:20,260 --> 00:20:21,520 >> STUDENTU: Vai tas Valgrind? 437 00:20:21,520 --> 00:20:22,910 >> Jason Hirschhorn: Ir sauc Valgrind. 438 00:20:22,910 --> 00:20:23,520 Un jūs būsiet - 439 00:20:23,520 --> 00:20:25,780 >> STUDENTU: Bet mums nav jāzina ka viktorīnu, lai gan? 440 00:20:25,780 --> 00:20:27,600 Es domāju, tas bija runāja par mazliet lekciju. 441 00:20:27,600 --> 00:20:33,600 >> Jason Hirschhorn: So Valgrind ir nosaukums šo rīku. 442 00:20:33,600 --> 00:20:37,180 Zinot to, ko tas ir pietiekami viktorīnas. 443 00:20:37,180 --> 00:20:40,200 Bet jums ir neizmanto to vēl par savu Problēma noteikti tāpēc, ka mums nav bijis 444 00:20:40,200 --> 00:20:43,520 Problēma, kas, kas ir skaidri jārisina ar malloc, vai jūs izmantojat malloc. 445 00:20:43,520 --> 00:20:45,330 Tātad jums ir neizmanto Valgrind vēl. 446 00:20:45,330 --> 00:20:47,760 Bet jūs to izmantot agrāk nevis vēlāk. 447 00:20:47,760 --> 00:20:48,710 >> STUDENTU: Vai jūs varat atkārtot kāda Valgrind ir? 448 00:20:48,710 --> 00:20:49,190 >> Jason Hirschhorn: Sorry? 449 00:20:49,190 --> 00:20:51,240 >> STUDENTU: Vai jūs varat atkārtot to, ko mērķis Valgring ir? 450 00:20:51,240 --> 00:20:53,100 >> Jason Hirschhorn: Valgrind ir nosaukums - 451 00:20:53,100 --> 00:20:59,890 piemēram GDB palīdz jums atkļūdot savu programmu, Valgrind palīdz jums saprast, ja 452 00:20:59,890 --> 00:21:03,210 lietas nav atbrīvoti ja jūsu programma aizveras. 453 00:21:03,210 --> 00:21:05,110 Tātad jūs palaist to uz savu programmu. 454 00:21:05,110 --> 00:21:09,230 Un jūsu programma izejām, un tas teiks jūsu programma sauc malloc tas daudz 455 00:21:09,230 --> 00:21:13,670 reizes šo daudz baitu, un jūs tikai sauc par brīvu šo vairākas reizes. 456 00:21:13,670 --> 00:21:16,520 Un lai jūs atstājis šos daudzos baiti bez atbrīvoja. 457 00:21:16,520 --> 00:21:18,050 Vai tas būs, ka jūs esat atbrīvoti visu. 458 00:21:18,050 --> 00:21:19,070 Labs darbs. 459 00:21:19,070 --> 00:21:19,480 >> STUDENTU: OK. 460 00:21:19,480 --> 00:21:21,060 Un to sauc 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 >> STUDENTU: jautājums par norādes. 463 00:21:25,970 --> 00:21:30,080 Tā teikt, jums ir n zvaigzne x ir vienāds ar kaut ko. 464 00:21:30,080 --> 00:21:33,330 Kas ir vienāds, neatkarīgi jūs nodot tur ir tā, ka to, kas tiek likts iekšā 465 00:21:33,330 --> 00:21:36,120 kāda x ir vērsta uz, vai rādītājs no x? 466 00:21:36,120 --> 00:21:37,690 >> Jason Hirschhorn: Vai jūs atkārtot jautājumu? 467 00:21:37,690 --> 00:21:39,340 Mēs varam izdarīt to, kamēr jūs to sakāt? 468 00:21:39,340 --> 00:21:42,710 >> STUDENTU: Ar viktorīnu, faktiski, vienu jūs mūs sūtījis, tas bija, piemēram, char 469 00:21:42,710 --> 00:21:46,520 star patiesība vienāds CS50 klintis, vai ne? 470 00:21:46,520 --> 00:21:52,190 Tātad tas nozīmē, ka šis CS50 ieži ir tas, kas patiesība ir vērsta uz? 471 00:21:52,190 --> 00:21:55,810 >> Jason Hirschhorn: Tātad jūs runājat par char zvaigzne virkni, kā 472 00:21:55,810 --> 00:21:56,460 , kas darbojas? 473 00:21:56,460 --> 00:21:56,890 Jā. 474 00:21:56,890 --> 00:21:57,700 OK. 475 00:21:57,700 --> 00:21:59,140 Pieņemsim izdarīt to vairāk nekā šeit. 476 00:21:59,140 --> 00:22:07,100 >> [SIDE Saruna] 477 00:22:07,100 --> 00:22:11,130 >> Jason Hirschhorn: Tātad šis mainīgais būs tipa char zvaigzne. 478 00:22:11,130 --> 00:22:14,580 Cik liela ir mainīgs Tipa char zvaigzne? 479 00:22:14,580 --> 00:22:15,510 Cik baiti? 480 00:22:15,510 --> 00:22:16,450 >> Studenti: četri. 481 00:22:16,450 --> 00:22:18,210 >> Jason Hirschhorn: Tas ir četri baiti. 482 00:22:18,210 --> 00:22:21,420 Cik tiesības ir mainīgs int tipa zvaigzne? 483 00:22:21,420 --> 00:22:22,210 >> Studenti: četri. 484 00:22:22,210 --> 00:22:24,910 >> Jason Hirschhorn: četri baiti. 485 00:22:24,910 --> 00:22:28,280 Ja tas ir rādītājs, tad tas vienmēr ir četri baiti, jo norādes, to 486 00:22:28,280 --> 00:22:30,070 vērtība ir atmiņas adrese. 487 00:22:30,070 --> 00:22:35,160 Un atmiņas adreses uz CS50 Ierīce ir četri baiti. 488 00:22:35,160 --> 00:22:42,900 Tātad, kad mēs saucam getstring, vai tad, kad mēs teiksim, stringname vienāds, un pēc tam 489 00:22:42,900 --> 00:22:46,140 pēdiņas nodot virkni, mēs esam liekot - 490 00:22:46,140 --> 00:22:46,920 labi, ka ir nedaudz atšķirīgs. 491 00:22:46,920 --> 00:22:48,630 Mēs darīsim getstring kā piemērs. 492 00:22:48,630 --> 00:22:52,150 Vai char zvaigzne kaut vienāds virkni. 493 00:22:52,150 --> 00:22:54,360 Žēl, iedodiet man piemēru izlasīt? 494 00:22:54,360 --> 00:22:57,590 >> STUDENTU: char zvaigzne patiesība ir vienāds "CS50 rocks" pēdiņās. 495 00:22:57,590 --> 00:23:02,260 >> Jason Hirschhorn: Tātad šī zvaigzne, tas mēs saucam šo mainīgo X mūsu 496 00:23:02,260 --> 00:23:04,060 par sugas. 497 00:23:04,060 --> 00:23:05,970 Mēs esam izveidojuši mainīgo sauc x. 498 00:23:05,970 --> 00:23:07,610 Tas ir veids char zvaigzne. 499 00:23:07,610 --> 00:23:10,950 Tas ir rādītājs uz virkni rakstzīmju. 500 00:23:10,950 --> 00:23:12,200 Tātad, šeit lejā - 501 00:23:12,200 --> 00:23:23,710 502 00:23:23,710 --> 00:23:25,890 >> Tātad, tas ir, kā tas būtu strādā atmiņā. 503 00:23:25,890 --> 00:23:27,410 Tas varētu glabāt atmiņas adresi. 504 00:23:27,410 --> 00:23:31,770 Tā varētu glabāt atmiņas adresi pirmais simbols masīvā. 505 00:23:31,770 --> 00:23:33,830 Un tad, kad jūs pēc rādītājs, jūs būtu 506 00:23:33,830 --> 00:23:35,200 iegūt pirmo rakstzīmi. 507 00:23:35,200 --> 00:23:38,780 >> Un, ja jūs lasāt šo lietu, piemēram, string, jūsu dators ir gudrs 508 00:23:38,780 --> 00:23:42,930 pietiekami, lai zinātu, izlasiet visu šo lietu , līdz tas kļūst par pretreakcijas 0. 509 00:23:42,930 --> 00:23:45,530 Bet, ja jūs lasāt to rakstzīmi laiks, lai jūs atkārtojot caur 510 00:23:45,530 --> 00:23:49,910 Tas string, tad jums būs tikai lasīt raksturu laikā, kamēr jums 511 00:23:49,910 --> 00:23:50,850 slīpsvītru 0. 512 00:23:50,850 --> 00:23:52,335 Kas varētu atbildēt uz Jūsu jautājums, though. 513 00:23:52,335 --> 00:23:55,610 >> STUDENTU: Jā, bet jums nav malloced ka kosmoss 514 00:23:55,610 --> 00:23:58,400 vēl par šo rādītāju. 515 00:23:58,400 --> 00:24:02,510 >> Jason Hirschhorn: Tāpēc es neesmu pilnīgi pārliecināts jūs meklējat tieši to, 516 00:24:02,510 --> 00:24:03,640 jo man nav veikt šo testu. 517 00:24:03,640 --> 00:24:06,370 , Kas bija vajadzēja būt noderīgs resursu no cita TF. 518 00:24:06,370 --> 00:24:11,380 Ja jūs veidojat virkni par sakraut vai kā vietējās mainīgo, tas būs 519 00:24:11,380 --> 00:24:16,920 vienkārši masīvs maksas nevis parasti char zvaigzne, kas norāda uz 520 00:24:16,920 --> 00:24:18,600 citu stīgu. 521 00:24:18,600 --> 00:24:20,550 Bet es nezinu. 522 00:24:20,550 --> 00:24:25,065 Tas varētu būt rādītājs uz citu string uz skursteņa, kā arī. 523 00:24:25,065 --> 00:24:27,240 Jā. 524 00:24:27,240 --> 00:24:31,116 >> STUDENTU: Es zinu, ka jums ir nepieciešams, lai piešķirt atmiņu, ja rādītājs ir 525 00:24:31,116 --> 00:24:33,360 kļūst deklarēta iekšpusē citas funkcijas. 526 00:24:33,360 --> 00:24:36,740 Vai jums ir nepieciešams darīt to pašu, ja tas ir tiek pasludināts iekšpusē galvenais, 527 00:24:36,740 --> 00:24:39,570 jūs izmantojat to iekšpusē galvenais? 528 00:24:39,570 --> 00:24:43,590 >> Jason Hirschhorn: Tātad, jā. 529 00:24:43,590 --> 00:24:46,670 Jūs varat deklarēt rādītāju uz jebkuru atmiņas adrese atmiņā. 530 00:24:46,670 --> 00:24:51,440 Tas var būt atmiņas adrese vietējā mainīgs, lai gan nereti, 531 00:24:51,440 --> 00:24:55,760 cilvēki nedeklarē atmiņas adreses vietējiem mainīgie, jo tie iet 532 00:24:55,760 --> 00:24:59,890 prom, kad šī funkcija atgriež, kas Tāpēc mēs parasti malloc lietas. 533 00:24:59,890 --> 00:25:04,630 Bet jā, jūs varētu pasludināt rādītāju uz citu vietējo mainīgo. 534 00:25:04,630 --> 00:25:06,360 Tas ir vienkārši parasti nav izdarīts. 535 00:25:06,360 --> 00:25:09,480 Bet es varētu apskatīt, kas specifiska lieta pēc klases. 536 00:25:09,480 --> 00:25:10,650 Jā. 537 00:25:10,650 --> 00:25:12,350 >> STUDENTU: Es domāju, ka tas ir sava veida par to, kas tiek prasīts. 538 00:25:12,350 --> 00:25:16,930 Tas šķiet dīvaini, lai inicializēšana rādītājs nav tik 539 00:25:16,930 --> 00:25:20,760 adresi, bet to, kas šķiet vērtību. 540 00:25:20,760 --> 00:25:25,970 Šķiet, tāpat CS50 ir tas, kas ir iekšā lieta ir norādīja uz un 541 00:25:25,970 --> 00:25:28,820 nevis faktiskā adrese, vai ne? 542 00:25:28,820 --> 00:25:30,520 >> Jason Hirschhorn: Tāpēc, ka ir nav gadījums, though. 543 00:25:30,520 --> 00:25:32,470 Tas nav tas, kas notiek. 544 00:25:32,470 --> 00:25:35,910 Kad jūs atzīt char zvaigzne, tas ir atmiņas adrese. 545 00:25:35,910 --> 00:25:38,860 Norādes ir visas atmiņas adreses norāda uz kaut ko citu. 546 00:25:38,860 --> 00:25:41,480 Ka kaut kas cits varētu būt kaudze, bet gandrīz vienmēr ir ieslēgts 547 00:25:41,480 --> 00:25:43,440 sakraut tā, kā mēs redzēsim to izmanto. 548 00:25:43,440 --> 00:25:46,860 549 00:25:46,860 --> 00:25:53,500 Bet stringname vienāds dubultās citātu "Getstring," mēs varam redzēt, ka, un mēs 550 00:25:53,500 --> 00:25:55,010 var meklēt, izmantojot šo un kodu, kas. 551 00:25:55,010 --> 00:26:01,190 getstring virkne netiek saglabāts ka mainīgs, vai kāds string 552 00:26:01,190 --> 00:26:04,580 vārds netiek saglabāts, ka mainīgs, jo tas nav kā 553 00:26:04,580 --> 00:26:06,070 norādes strādāt. 554 00:26:06,070 --> 00:26:06,770 Vai tas ir jēga? 555 00:26:06,770 --> 00:26:07,170 >> STUDENTU: Jā. 556 00:26:07,170 --> 00:26:08,570 >> Jason Hirschhorn: OK. 557 00:26:08,570 --> 00:26:11,690 Cerams, ka nebija mulsinoši ikvienam. 558 00:26:11,690 --> 00:26:15,732 Bet, ja tas bija, mēs varam apskatīt to vēlreiz mazliet, jo mēs esam patiesībā notiek 559 00:26:15,732 --> 00:26:19,240 ar kodu kaut ko, kas, cerams, strādā ar stīgām un palīdzēt jums justies 560 00:26:19,240 --> 00:26:22,170 ērtāk ar tiem. 561 00:26:22,170 --> 00:26:24,869 >> Jebkādi citi jautājumi, kas saistīti ar šiem tēmas un citām tēmām, kas 562 00:26:24,869 --> 00:26:26,119 Es nolikšu atpakaļ uz augšu? 563 00:26:26,119 --> 00:26:32,280 564 00:26:32,280 --> 00:26:34,840 Un - 565 00:26:34,840 --> 00:26:36,310 tiesības tagad. 566 00:26:36,310 --> 00:26:37,630 Jā, Alden. 567 00:26:37,630 --> 00:26:39,860 >> ALDEN: Tātad tas ir pilnīgi nesaistīts, bet mēs varam tikai iet pa 568 00:26:39,860 --> 00:26:42,760 ļoti ātri, kas mums ir jāzina par starpību starp 32 un 569 00:26:42,760 --> 00:26:46,345 64-bitu mašīna? 570 00:26:46,345 --> 00:26:47,740 >> Jason Hirschhorn: Jā. 571 00:26:47,740 --> 00:26:52,111 Tātad, 32 biti ir, cik baiti? 572 00:26:52,111 --> 00:26:53,060 >> ALDEN: Tas ir četri baiti. 573 00:26:53,060 --> 00:26:54,360 >> Jason Hirschhorn: Tas ir četri baiti. 574 00:26:54,360 --> 00:26:58,420 Un 64 bitu ir, cik baiti? 575 00:26:58,420 --> 00:26:59,112 >> STUDENTU: Eight. 576 00:26:59,112 --> 00:27:00,610 >> Jason Hirschhorn: Astoņi baiti. 577 00:27:00,610 --> 00:27:03,980 Tātad vēlreiz, astoņi biti ir viens baits. 578 00:27:03,980 --> 00:27:08,340 Tavs CS50 ierīce ir 32-bitu mašīna. 579 00:27:08,340 --> 00:27:13,650 Tāpēc atmiņas adreses četri baiti. 580 00:27:13,650 --> 00:27:17,460 Ir 2 līdz 32 atmiņas adreses. 581 00:27:17,460 --> 00:27:21,310 No 0 līdz 2 līdz 32 mīnus 1. 582 00:27:21,310 --> 00:27:27,630 Un es neesmu pozitīvs, bet tas ir droši vien joma, kas jums ir nepieciešams, lai 583 00:27:27,630 --> 00:27:35,230 zinu par 32 bitu mašīna, ka atmiņa adreses ir, atkal, četri baiti garš, 584 00:27:35,230 --> 00:27:39,620 un tas ir maksimālais apjoms atmiņas adreses. 585 00:27:39,620 --> 00:27:41,680 >> Arī datu tipi - 586 00:27:41,680 --> 00:27:45,020 tas varētu būt kaut kas tik labi, ka ir vērts pieminēt. 587 00:27:45,020 --> 00:27:49,610 Par datu tipu lielums ir atkarīgs mašīna jūs strādājat ar. 588 00:27:49,610 --> 00:27:56,760 Tātad char, viena raksturs, ir veids, kā daudzi baiti uz mūsu CS50 iekārtas? 589 00:27:56,760 --> 00:27:57,980 Vienu baitu. 590 00:27:57,980 --> 00:28:02,310 Un tas ir tiešām viens baits kā labi uz 64-bitu mašīna. 591 00:28:02,310 --> 00:28:05,920 >> Un lielākā daļa datu tipi ir vienādi numuru baitu gan mašīnām. 592 00:28:05,920 --> 00:28:11,620 Bet daži datu tipi būs atšķirīgs uz abām mašīnām. 593 00:28:11,620 --> 00:28:14,590 Lai būtu iespējams Vienīgais, kas jums ir jāzina. 594 00:28:14,590 --> 00:28:16,710 >> Bet pat tas, es domāju, ir ārpus robežas - 595 00:28:16,710 --> 00:28:20,990 Es esmu gandrīz pozitīvs, ja paskatās atpakaļ vecās viktorīnas, tā saka, pieņemt, 596 00:28:20,990 --> 00:28:24,090 kodēšanas problēmas, jūs izmantojat 32-bitu mašīna. 597 00:28:24,090 --> 00:28:26,620 598 00:28:26,620 --> 00:28:30,620 Bet ir, lai iet kopā ar to, kas Gadījumā, ja jūs interesē, ir 599 00:28:30,620 --> 00:28:35,920 datu veidi, kas ir tāds pats lielums uz visām mašīnām. 600 00:28:35,920 --> 00:28:42,670 >> Ja esat redzējis kaut ko līdzīgu uint32_t, jūs var vai 601 00:28:42,670 --> 00:28:43,260 nebūtu redzējis, ka. 602 00:28:43,260 --> 00:28:44,290 Tas ir datu tips. 603 00:28:44,290 --> 00:28:47,570 Kas saka, ka 32 biti vienalga ko mašīna tas ir ieslēgts. 604 00:28:47,570 --> 00:28:50,350 Tātad, kad cilvēki rakstot pārnēsājamu kods, viņi, iespējams, neizmantos Ints. 605 00:28:50,350 --> 00:28:53,260 Tie būs vietā izmantot šos citus datus veidiem, ka viņi zina, kas ir tāds pats 606 00:28:53,260 --> 00:28:54,780 lielums par katru mašīnu. 607 00:28:54,780 --> 00:28:58,080 608 00:28:58,080 --> 00:28:58,250 Madhu. 609 00:28:58,250 --> 00:29:00,150 >> Madhu: Man bija jautājums par apkopošanas process. 610 00:29:00,150 --> 00:29:04,110 Tātad, ja jūs esat rakstiski programma, kas izmanto bibliotēka, piemēram, CS50 vai kaut ko 611 00:29:04,110 --> 00:29:06,840 piemēram, ka es zinu, ka bibliotēka ir, kādā brīdī, būs 612 00:29:06,840 --> 00:29:08,590 apkopoti un saistīti iekšā 613 00:29:08,590 --> 00:29:13,380 Bet cik daudz tas notiek laikā, apkopošana jūsu programmā? 614 00:29:13,380 --> 00:29:15,880 Kāda daļa no šīs bibliotēkas procesu notiek tad, kad tu esi 615 00:29:15,880 --> 00:29:18,560 Sastādot savu programmu? 616 00:29:18,560 --> 00:29:24,020 >> Jason Hirschhorn: Tātad, pieņemsim iet pāri parasti soļi šī procesa. 617 00:29:24,020 --> 00:29:26,280 Jūs rakstāt savu. C failu. 618 00:29:26,280 --> 00:29:33,530 Jūsu. C failu, jums # iekļaut savu header bibliotēkas, piemēram, cs50.h. 619 00:29:33,530 --> 00:29:39,480 Ko tas asas ietver line darīt, lai savu programmu? 620 00:29:39,480 --> 00:29:40,525 Akchar. 621 00:29:40,525 --> 00:29:43,350 >> AKCHAR: Tā piebilst prototipus funkcijas no galvenes 622 00:29:43,350 --> 00:29:45,120 failus bibliotēkās. 623 00:29:45,120 --> 00:29:45,600 >> Jason Hirschhorn: Tieši tā. 624 00:29:45,600 --> 00:29:49,870 Tā piebilst, šo funkciju prototipus savu kodu. 625 00:29:49,870 --> 00:29:55,230 Tātad, ja jūsu kods tiek apkopota sākumposmā, kompilators zina 626 00:29:55,230 --> 00:29:59,250 ka šīs funkcijas patiešām pastāv, un ka kaut kur tie ir definēti. 627 00:29:59,250 --> 00:30:02,460 The. H faili neietver definīcijas šīm funkcijām vai kā 628 00:30:02,460 --> 00:30:03,950 viņi faktiski strādā. 629 00:30:03,950 --> 00:30:07,960 Cs50.h tikai ietver kaut kas saka getstring ir reāla lieta, ka 630 00:30:07,960 --> 00:30:09,270 var notikt. 631 00:30:09,270 --> 00:30:14,240 Un standardio.h saka printf ir reāla lieta, kas var notikt. 632 00:30:14,240 --> 00:30:23,190 >> Tātad jūsu c valoda ar šo. Header failu izpaužas pārvērtās dažus 633 00:30:23,190 --> 00:30:27,750 mašīnlasāmā kods, kas galu galā izpaužas pārvērtās bināro 634 00:30:27,750 --> 00:30:30,030 kodu, 0 s un 1 s. 635 00:30:30,030 --> 00:30:33,590 Un tas ir kods, kas galu galā izpaužas izpildīts. 636 00:30:33,590 --> 00:30:38,550 -L CS50 line - piemēram, kad jūs esat rakstiski šķindēt - 637 00:30:38,550 --> 00:30:41,830 un tad jūs iekļaujat-l CS50, Rakstot, ka iekšā 638 00:30:41,830 --> 00:30:42,180 Un jūs redzēsiet, ka. 639 00:30:42,180 --> 00:30:43,890 Rakstot izdarīt, jūs redzēt, ka līnijas šeit. 640 00:30:43,890 --> 00:30:47,740 Un mēs redzam, ka sekundē, kad mēs kodu vai vēlāk, kad mēs kodu. 641 00:30:47,740 --> 00:30:50,390 >> Bet tas, l CS50 line dara kaut ko nedaudz savādāka nekā 642 00:30:50,390 --> 00:30:52,440 # include cs50.h. 643 00:30:52,440 --> 00:30:56,300 Ko tas-l CS50 līnijas darīt? 644 00:30:56,300 --> 00:30:56,820 Avi? 645 00:30:56,820 --> 00:31:00,310 >> AVI: Es gribu teikt, ka tas ir saistīts Bibliotēka funkcijai 646 00:31:00,310 --> 00:31:02,710 zvanu, piemēram,. o failus. 647 00:31:02,710 --> 00:31:08,200 >> Jason Hirschhorn: Tik ļoti tuvu, ja ne vietas-on. 648 00:31:08,200 --> 00:31:16,220 -L CS50 ņem bināro failu un apvieno to ar savu bināro failu. 649 00:31:16,220 --> 00:31:21,410 Tātad cs50.h, nav jēgas pagrieziena cs50.h no C valodas bināro ik 650 00:31:21,410 --> 00:31:23,130 reizi, kad tas tiek izmantots. 651 00:31:23,130 --> 00:31:26,650 Tas būtu muļķīgi, jo tas varētu atkritumu daudz laika. 652 00:31:26,650 --> 00:31:30,420 Tātad tas jau ir apkopoti un pārvērtās izpildāmā. 653 00:31:30,420 --> 00:31:35,430 Un tagad tas būs jāapvieno ar failu beigās. 654 00:31:35,430 --> 00:31:38,370 Tā, ka šie 1 s un 0 's gatavojas apvienoties ar saviem uzņēmumiem 655 00:31:38,370 --> 00:31:39,150 un 0 s beigās. 656 00:31:39,150 --> 00:31:43,670 Tātad tagad jūs faktiski ir faktiskais 1 s un 0 s, kas nosaka, cik getstring, 657 00:31:43,670 --> 00:31:47,890 Piemēram, darbu, vai arī kā printf, Piemēram, darbojas. 658 00:31:47,890 --> 00:31:52,750 >> Un, lai iegūtu vairāk informācijas, tur īsi kompilatoru, ka Nate dod, ka 659 00:31:52,750 --> 00:31:55,410 Jums vajadzētu pārbaudīt, kas iet caur šiem soļiem. 660 00:31:55,410 --> 00:31:56,050 Bet - 661 00:31:56,050 --> 00:31:56,560 Jā. 662 00:31:56,560 --> 00:32:01,700 >> STUDENTU: Vai tie vienmēr o failus. ja viņi bibliotēkas formā, 663 00:32:01,700 --> 00:32:06,764 gatavi jāapvieno, saistītas - tāpat kā viņi ir bināro kodu? 664 00:32:06,764 --> 00:32:07,600 >> Jason Hirschhorn: OK. 665 00:32:07,600 --> 00:32:08,420 Ko - 666 00:32:08,420 --> 00:32:11,780 >> STUDENTU: Vai tas vienmēr attiecas uz bibliotēkas, kad jūs saite viņiem? 667 00:32:11,780 --> 00:32:12,500 >> Jason Hirschhorn: Jā. 668 00:32:12,500 --> 00:32:17,300 Tātad tur ir. S failus, kas būs mašīnu kodu, kas būs arī 669 00:32:17,300 --> 00:32:17,975 noslēpumains jums. 670 00:32:17,975 --> 00:32:19,410 Jums nav jāuztraucas par tiem. 671 00:32:19,410 --> 00:32:24,930 Bet vispār, jā, tie būs būt. o failus gatavi iet. 672 00:32:24,930 --> 00:32:27,170 >> STUDENTU: Tātad, ja jūs kuģis bibliotēka, tu tikai kuģis 673 00:32:27,170 --> 00:32:28,880 . h un. o? 674 00:32:28,880 --> 00:32:32,210 Jums nav kuģis. C vai. S. 675 00:32:32,210 --> 00:32:33,070 >> Jason Hirschhorn: So - 676 00:32:33,070 --> 00:32:36,260 un tas ir šajā īsajā, kā arī, ja šo informāciju, šķiet, nāk 677 00:32:36,260 --> 00:32:36,700 maz ātri. 678 00:32:36,700 --> 00:32:39,870 Bet īsi par kompilatoru runā par to, kā labi. 679 00:32:39,870 --> 00:32:43,290 Kad jūs kuģis bibliotēku, ja jūs kuģis . h header failu, tos 680 00:32:43,290 --> 00:32:46,290 funkciju prototipus, un 1 s un 0 s, tas ir viss, kas jums ir nepieciešams, lai dotu. 681 00:32:46,290 --> 00:32:50,640 Jums nav nepieciešams, lai dotu kā funkcija darbojas,. c fails. 682 00:32:50,640 --> 00:32:56,360 Sakarā punktu ieguvei, vai punktu API, punkts šajā SPL, 683 00:32:56,360 --> 00:32:59,650 Stanford portatīvie bibliotēka, tā ir Jums nav jāuztraucas par to, kā jaunā 684 00:32:59,650 --> 00:33:04,220 GRect darbus, vai to, kā virzīties uz darbu, vai to, kā pievienot darbus. 685 00:33:04,220 --> 00:33:06,520 Viss, kas jums jāzina, ir tas, ka add ir funkcija, ka jūs varat 686 00:33:06,520 --> 00:33:08,880 izmantot, un tas tiek panākts. 687 00:33:08,880 --> 00:33:12,760 Tātad jums tiešām nav nepieciešams zināt, kā tas ir rakstīts C Jums vienkārši nepieciešams, lai 688 00:33:12,760 --> 00:33:15,460 zināt, šeit ir funkcijas, ko viņi darīt, un šeit ir 1 s un 0 s 689 00:33:15,460 --> 00:33:18,870 ja jūs patiešām vēlaties, lai tos izmantot. 690 00:33:18,870 --> 00:33:19,530 >> Atdzist. 691 00:33:19,530 --> 00:33:26,980 Kādi vēl jautājumi par kompilatoru vai citām tēmām uz kuģa? 692 00:33:26,980 --> 00:33:30,300 >> STUDENTU: Man ir jautājums par Īstenojot rekursīvs funkcijas. 693 00:33:30,300 --> 00:33:31,170 Jautājums par rekursijas. 694 00:33:31,170 --> 00:33:33,030 Man bija sajūta, ka varētu nākt klajā. 695 00:33:33,030 --> 00:33:38,310 Tā ļauj ātri iet cauri rekursijas ar specifisku 696 00:33:38,310 --> 00:33:40,690 Piemēram, faktoriālā funkcija. 697 00:33:40,690 --> 00:33:44,920 Jo tas ir piemērs, kas bieži nāk uz augšu, vai tiek izmantots 698 00:33:44,920 --> 00:33:46,170 lai ilustrētu rekursija. 699 00:33:46,170 --> 00:33:52,390 700 00:33:52,390 --> 00:33:56,410 >> Tāpēc "4!" ir lasāma kā 4 faktori. 701 00:33:56,410 --> 00:33:59,120 Un ko 4 faktoriāls nozīmē? 702 00:33:59,120 --> 00:34:00,696 Ko tas dara? 703 00:34:00,696 --> 00:34:02,235 Kā jūs aprēķināt 4 faktoriālu? 704 00:34:02,235 --> 00:34:05,250 705 00:34:05,250 --> 00:34:07,960 4 reizes 3 reizes 2 reizes 1. 706 00:34:07,960 --> 00:34:11,889 >> Tātad vēl viens veids, kā rakstīt 4 faktoriālu ir rakstīt to. 707 00:34:11,889 --> 00:34:16,780 708 00:34:16,780 --> 00:34:19,022 4 reizes 3 faktori. 709 00:34:19,022 --> 00:34:22,080 Jo 3 faktoriāls ir 3 reizes 2 reizes 1. 710 00:34:22,080 --> 00:34:27,580 SO 4 reizes 3 faktoriāls ir 4 reizes 3 reizes 2 reizes 1. 711 00:34:27,580 --> 00:34:32,679 Tas ir iemesls, kāpēc faktoriāls ir lieliska kandidāts rekursijas, jo tas ir 712 00:34:32,679 --> 00:34:36,630 skaidrs, ka tur ir kaut kas notiek vairāk un vairāk un vairāk par 713 00:34:36,630 --> 00:34:39,820 mazāks vairākas lietas līdz jūs sasniedzat beigām. 714 00:34:39,820 --> 00:34:42,570 Kad jūs sasniedzat 1, 1 faktoriāls ir 1. 715 00:34:42,570 --> 00:34:43,719 Jūs nevarat iet daudz tālāk. 716 00:34:43,719 --> 00:34:47,219 0 faktoriāls tiek definēts kā 1. 717 00:34:47,219 --> 00:34:50,679 Tātad, ja jums ir 1 vai 0, tu esi gada beigās, un jūs varat 718 00:34:50,679 --> 00:34:53,219 sāk iet atpakaļ uz augšu. 719 00:34:53,219 --> 00:34:59,540 Tātad, ja mēs vēlējāmies, lai rakstītu rekursīvo funkciju, lai aprēķinātu faktoriālu, 720 00:34:59,540 --> 00:35:02,170 mēs esam gatavojas rakstīt dažus pseudocode par to tagad. 721 00:35:02,170 --> 00:35:03,300 Pirms mēs rakstām, ka pseudocode - 722 00:35:03,300 --> 00:35:05,660 Es došu jums, puiši pāris minūtes rakstīt pseido kodu vai vienkārši domāju, ka 723 00:35:05,660 --> 00:35:09,600 par to - ir divas lietas, kas ik rekursīvā funkcija ir. 724 00:35:09,600 --> 00:35:12,530 Kas ir šīs divas lietas? 725 00:35:12,530 --> 00:35:13,220 >> JACK: Tas ir, lai izsauktu sevi. 726 00:35:13,220 --> 00:35:13,680 >> Jason Hirschhorn: Noah? 727 00:35:13,680 --> 00:35:14,460 Ak, Jack. 728 00:35:14,460 --> 00:35:15,100 Iet uz priekšu. 729 00:35:15,100 --> 00:35:16,640 >> JACK: Tas ir, lai izsauktu sevi. 730 00:35:16,640 --> 00:35:19,220 >> Jason Hirschhorn: So rekursīvs funkcija ir rekursīvo zvanu, 731 00:35:19,220 --> 00:35:20,220 zvanīt uz sevi. 732 00:35:20,220 --> 00:35:20,770 Tas ir viens. 733 00:35:20,770 --> 00:35:21,510 Un, kas ir cita lieta? 734 00:35:21,510 --> 00:35:22,250 >> JACK: bāzes scenārijs. 735 00:35:22,250 --> 00:35:23,780 >> Jason Hirschhorn: bāzes scenārijs. 736 00:35:23,780 --> 00:35:26,940 Bāzes scenārijs ir, lūk, ja mēs apstāties. 737 00:35:26,940 --> 00:35:29,510 Tātad jūsu funkcija izpaužas sauc. 738 00:35:29,510 --> 00:35:31,410 Bāzes scenārijs ir pirmajā vietā. 739 00:35:31,410 --> 00:35:33,710 Jūs vēlaties zināt, ja jūs beigās. 740 00:35:33,710 --> 00:35:37,110 Un, ja jūs neesat beigās, jūs padarīt jūsu rekursīvas zvanu. 741 00:35:37,110 --> 00:35:39,880 Un jūs iet caur šo funkciju atkal, pārbaudiet savu bāzi lietu vēlreiz. 742 00:35:39,880 --> 00:35:42,575 Ja jūs neesat beigas, jums pelnīt cits rekursīvs zvanu, 743 00:35:42,575 --> 00:35:44,130 un tā tālāk, un tā tālāk. 744 00:35:44,130 --> 00:35:47,110 >> Tas ir iemesls, kāpēc rekursīvas funkcijas vienmēr nepieciešams šos bāzes lietas, un tie, 745 00:35:47,110 --> 00:35:48,210 rekursīvas zvani. 746 00:35:48,210 --> 00:35:51,280 Ja jums nav rekursīvas zvanu, tas nebūtu rekursīvas funkcijas. 747 00:35:51,280 --> 00:35:53,210 Ja jums nav pamata gadījums, Jūs varētu iet uz visiem laikiem, un 748 00:35:53,210 --> 00:35:54,780 nebūtu beigas. 749 00:35:54,780 --> 00:35:57,870 Un bāzes scenārijs vienmēr ir pirmajā vietā, jo jūs vienmēr vēlaties pārbaudīt 750 00:35:57,870 --> 00:36:00,420 ja jūs beigās pirmās. 751 00:36:00,420 --> 00:36:04,770 Tātad, pirms mēs kādu pseudocode, kāpēc nav jūs ņemt minūti, lai padomātu par 752 00:36:04,770 --> 00:36:09,360 cik rekursīvs faktoriāla funkcija būtu rakstīts? 753 00:36:09,360 --> 00:36:23,340 754 00:36:23,340 --> 00:36:26,010 >> Tāpat, kā daudz, kā jūs darāt, rakstot to veic uz papīra ir 755 00:36:26,010 --> 00:36:27,960 ko jūs nāksies darīt viktorīnas rīt. 756 00:36:27,960 --> 00:36:32,160 Tāpēc, iespējams, laba prakse, lai padarītu Noteikti kodu jūs rakstiski 757 00:36:32,160 --> 00:36:34,420 leju uz papīra lapas - 758 00:36:34,420 --> 00:36:35,160 vai jūs varat darīt to. 759 00:36:35,160 --> 00:36:36,710 Jūs zināt, kur semikoliem ir. 760 00:36:36,710 --> 00:36:37,660 Atceraties sintaksi. 761 00:36:37,660 --> 00:36:40,400 Jo jūs nevarēsiet būt kompilators pateikt jums ir pieļāvusi kļūdu. 762 00:36:40,400 --> 00:37:02,356 763 00:37:02,356 --> 00:37:07,240 >> Arī pa šo līniju, rīt, kad Jums ir kodēšanas problēmas, ja jūs 764 00:37:07,240 --> 00:37:11,490 ir steidzās uz laiku, vai arī, ja jūs esat ļoti sajaukt par to, kā jūs vajadzēja 765 00:37:11,490 --> 00:37:16,030 rakstīt konkrētu lietu C, tas varētu pienākties jums rakstīt pseido kodu 766 00:37:16,030 --> 00:37:18,160 vai rakstīt komentārus, kā arī. 767 00:37:18,160 --> 00:37:21,940 Jo tur ir daļēja atlaide par jautājumiem par viktorīnas daudz. 768 00:37:21,940 --> 00:37:24,840 Lai jūs varētu steidzināt, vai arī jūs var tikai sajaukt. 769 00:37:24,840 --> 00:37:28,030 Rakstot komentāros vai pseido-kodu bieži vien ir veidi, kā jūs 770 00:37:28,030 --> 00:37:29,360 var saņemt daļēju kredītu. 771 00:37:29,360 --> 00:37:31,440 >> Tāpēc neatstāj kaut tukšu viktorīnas. 772 00:37:31,440 --> 00:37:33,490 Tur nav sods par liekot lietas iekšā 773 00:37:33,490 --> 00:37:37,650 Patiesībā, ieviešot pseido-kodu vai komentāri ir gatavojas palīdzēt greiders 774 00:37:37,650 --> 00:37:40,410 izdomāt, ja jūs tiešām zināt, ko jūs runājat, un varbūt balvu 775 00:37:40,410 --> 00:37:42,030 Jums dažas daļēju kredītu par to. 776 00:37:42,030 --> 00:37:44,510 >> Arī pa šo līniju, skaidri rakstīt. 777 00:37:44,510 --> 00:37:47,650 Ja mēs nevaram īsti tas, ko jūs esat rakstiski, Mēs nebrauksim, lai zvanu jums 778 00:37:47,650 --> 00:37:49,900 pusnaktī rīt skaitli , ko jūs wrote. 779 00:37:49,900 --> 00:37:51,520 Mēs esam tikai gatavojas pacelties punktus. 780 00:37:51,520 --> 00:37:56,570 Skaidri uzrakstīt, lai mēs varētu dzirdēt, vai drīzāk, mēs varam izlasīt, ko jūs rakstījāt. 781 00:37:56,570 --> 00:38:00,230 >> Un, ja tā saka divus teikumus, nerakstiet punktu. 782 00:38:00,230 --> 00:38:02,280 Sekojiet instrukcijām. 783 00:38:02,280 --> 00:38:03,500 Skaidri rakstīt. 784 00:38:03,500 --> 00:38:07,720 Un rakstīt šos komentārus, vai pseudocode jautājumiem, kas varētu 785 00:38:07,720 --> 00:38:10,270 piešķirt daļēju kredītu. 786 00:38:10,270 --> 00:38:12,520 >> Labi, iesim uz faktori. 787 00:38:12,520 --> 00:38:15,000 Tāpēc mums ir funkcija faktori. 788 00:38:15,000 --> 00:38:18,400 789 00:38:18,400 --> 00:38:21,550 Ja es būtu, lai faktiski rakstīt to C, kas man ir nepieciešams, lai pirms nosaukuma 790 00:38:21,550 --> 00:38:22,800 Funkcijas? 791 00:38:22,800 --> 00:38:24,880 792 00:38:24,880 --> 00:38:30,060 Atgriezes tipa, kas šajā gadījumā, mēs arī tā int. 793 00:38:30,060 --> 00:38:35,450 Un tad iekšpusē cirtaini bikšturi, ir kas notiek iekšpusē cirtaini bikšturi 794 00:38:35,450 --> 00:38:36,850 funkcija? 795 00:38:36,850 --> 00:38:37,950 >> Studenti: Argument veids. 796 00:38:37,950 --> 00:38:39,150 >> Jason Hirschhorn: Tās argumenti. 797 00:38:39,150 --> 00:38:42,680 Tāpēc faktoriāls būs iespējams pieņemt argumentu. 798 00:38:42,680 --> 00:38:44,500 Tas būs iespējams veikt tikai vienu argumentu. 799 00:38:44,500 --> 00:38:49,450 Un mēs sakām tā ņemšu vesels skaitlis sauc x. 800 00:38:49,450 --> 00:38:52,770 Un atkal, rakstot prototips funkcija vai rakstot funkciju 801 00:38:52,770 --> 00:38:57,110 savu kodu pirms definējot to, jums rakstīt datu tipu un nosaukumu 802 00:38:57,110 --> 00:39:01,370 ka mainīgais tikai par šo funkciju. 803 00:39:01,370 --> 00:39:06,350 Tātad jūs varat nodot kādu numuru uz šo funkcija, tas būs minēta kā x 804 00:39:06,350 --> 00:39:07,340 iekšēji. 805 00:39:07,340 --> 00:39:08,755 >> Mums ir mūsu Faktoru funkcija. 806 00:39:08,755 --> 00:39:12,030 807 00:39:12,030 --> 00:39:15,850 Mums ir nepieciešams divas lietas, bāzes lietu un rekursīvas zvanu. 808 00:39:15,850 --> 00:39:20,900 Kas ir bāzes scenārijs par faktoriāls? 809 00:39:20,900 --> 00:39:24,850 Kāds, kurš rakstīja to, un kas nav runā vēl, kas ir pamats 810 00:39:24,850 --> 00:39:26,100 gadījumā faktoriāls? 811 00:39:26,100 --> 00:39:28,400 812 00:39:28,400 --> 00:39:30,930 >> Students: ja n ir mazāks par 2, return 1. 813 00:39:30,930 --> 00:39:33,520 >> Jason Hirschhorn: Ja n ir mazāka par 2, return 1. 814 00:39:33,520 --> 00:39:37,216 Man patīk, ka, jo tas rūpējas par 0 un 1. 815 00:39:37,216 --> 00:39:45,290 Tāpēc mēs darīsim x <2, atgriešanās 1. 816 00:39:45,290 --> 00:39:47,870 Ja mēs pagājis 0, ja mēs pagājis 1, šī funkcija tiks 817 00:39:47,870 --> 00:39:49,790 nekavējoties atgriezties 1. 818 00:39:49,790 --> 00:39:54,020 Ja mēs nodots dažus skaits ir lielāks par vai vienāds ar 2, mēs spēsim 819 00:39:54,020 --> 00:39:55,370 ir mūsu rekursīvas zvanu. 820 00:39:55,370 --> 00:39:57,855 >> Un tā kā tas, ka iet uz darbu? 821 00:39:57,855 --> 00:40:01,070 Vai kāds cits, kas strādāja pie šī kurš nav runājis vēl man 822 00:40:01,070 --> 00:40:07,380 rekursīvas zvans šo funkciju in pseudocode? 823 00:40:07,380 --> 00:40:10,770 Ja mēs tiekam pieņemti skaitļa x un tas ir lielāks par 2, ko 824 00:40:10,770 --> 00:40:13,370 mēs vēlamies darīt? 825 00:40:13,370 --> 00:40:17,930 Mums ir arī piemērs rakstīts puse, kas var sniegt jums mājienu. 826 00:40:17,930 --> 00:40:20,770 >> STUDENTU: Call x reizes faktoriāls no x mīnus 1? 827 00:40:20,770 --> 00:40:22,020 >> Jason Hirschhorn: Tieši labi. 828 00:40:22,020 --> 00:40:24,610 829 00:40:24,610 --> 00:40:37,750 Mēs ejam, lai atgrieztos x reizes faktoriālu x mīnus 1. 830 00:40:37,750 --> 00:40:41,810 Un, lai gan es uzrakstīju uz augšu, Būtībā, ko jūs teicāt, angļu valodā, 831 00:40:41,810 --> 00:40:44,580 Tas faktoriāls funkcija saņems sauc atkal. 832 00:40:44,580 --> 00:40:46,320 Tas būs izpildīt par x mīnus 1. 833 00:40:46,320 --> 00:40:49,320 Tas būs atpakaļ ar kādu skaitlim, un tad tas būs vairoties šīs divas 834 00:40:49,320 --> 00:40:52,050 kopā, un vērtība būs atpakaļ neatkarīgi no to nosauca 835 00:40:52,050 --> 00:40:55,010 faktoriālo funkcija, kas var ir vēl viens piemērs 836 00:40:55,010 --> 00:40:58,420 Tas faktoriāls funkcija. 837 00:40:58,420 --> 00:41:01,360 >> Tātad tas ir piemērs rekursīva funkcija, ļoti 838 00:41:01,360 --> 00:41:02,530 vienkārši rekursīvas funkcijas. 839 00:41:02,530 --> 00:41:04,530 Bet lielākā daļa no tiem būs līdzīgs šim. 840 00:41:04,530 --> 00:41:11,170 Ja vēlaties labu rekursīvo izaicinājums viktorīnas, mēģiniet kodēšana 841 00:41:11,170 --> 00:41:13,230 bināro meklēšanu rekursīvi. 842 00:41:13,230 --> 00:41:18,950 Jo, ja jūs bināro meklēt Problēma noteikti trīs, jūs, iespējams, to darīja 843 00:41:18,950 --> 00:41:21,730 iteratīvi brītiņa cilpa. 844 00:41:21,730 --> 00:41:23,700 >> Bet tā var būt arī rakstīts rekursīvi. 845 00:41:23,700 --> 00:41:26,310 Jūs esat dodas uz nepieciešamību rakstīt savu atsevišķa funkcija, kas prasa zināmu 846 00:41:26,310 --> 00:41:29,020 dažādas komandrindas argumentus - vai nav komandrindas argumentus, daži 847 00:41:29,020 --> 00:41:30,910 dažādas tikai regulāri argumenti. 848 00:41:30,910 --> 00:41:33,870 Bet jūs varētu rakstīt bināro meklēšanu rekursīvi kā arī. 849 00:41:33,870 --> 00:41:36,190 >> STUDENTU: Tātad, jūs varētu būt arī rakstīts, nevis x mīnus 1, jūs 850 00:41:36,190 --> 00:41:39,502 varētu būt arī rakstīts x mīnus mīnus, vai jūs varētu būt 851 00:41:39,502 --> 00:41:40,830 rakstisks mīnus mīnus x. 852 00:41:40,830 --> 00:41:44,740 Vai jūs vienkārši izskaidrot, tiešām ātri, kāpēc tie varētu būt dažādas lietas, 853 00:41:44,740 --> 00:41:49,510 piemēram, kāda atšķirība ir starp x mīnus mīnus un mīnus mīnus x? 854 00:41:49,510 --> 00:41:51,320 >> Jason Hirschhorn: Nē, es neesmu gatavojas iet uz to. 855 00:41:51,320 --> 00:41:55,500 Bet es runāt ar jums par to pēc klasē. x mīnus mīnus mīnus mīnus x 856 00:41:55,500 --> 00:41:57,780 Samazināt x līdz 1. 857 00:41:57,780 --> 00:41:59,090 Bet viņi to dara mazliet savādāk. 858 00:41:59,090 --> 00:42:00,340 Bet es negribu iedziļināties to. 859 00:42:00,340 --> 00:42:04,330 860 00:42:04,330 --> 00:42:09,090 Citi jautājumi par rekursijas vai šī funkcija? 861 00:42:09,090 --> 00:42:10,140 Tas nav īsti pat pseudocode. 862 00:42:10,140 --> 00:42:15,060 Tas būtībā kodu C jūs varētu rakstīt par to. 863 00:42:15,060 --> 00:42:19,393 >> OK, visiem citiem jautājumiem par tēmām šeit? 864 00:42:19,393 --> 00:42:19,864 Jā. 865 00:42:19,864 --> 00:42:23,130 >> STUDENTU: Man ir ātrs nolietota peldošā komata un precizitāte. 866 00:42:23,130 --> 00:42:24,260 >> Jason Hirschhorn: Mainīga punktu un precizitāte. 867 00:42:24,260 --> 00:42:26,920 Vai kāds tiešām ātri man nolietota 868 00:42:26,920 --> 00:42:28,210 peldošā komata un precizitāti? 869 00:42:28,210 --> 00:42:30,420 Jums visiem bija to darīt savu Problēma noteikti, lai jūs visi 870 00:42:30,420 --> 00:42:31,700 iepazinušies ar to. 871 00:42:31,700 --> 00:42:35,090 Vai varbūt ne visi no jums. 872 00:42:35,090 --> 00:42:36,602 Kāds? 873 00:42:36,602 --> 00:42:39,530 Dodiet man sākās vietas. 874 00:42:39,530 --> 00:42:40,750 Peldošā komata un precizitāte. 875 00:42:40,750 --> 00:42:42,380 Kāda ir problēma? 876 00:42:42,380 --> 00:42:42,960 Jā. 877 00:42:42,960 --> 00:42:43,680 Victoria? 878 00:42:43,680 --> 00:42:44,480 >> VANESSA: Vanessa. 879 00:42:44,480 --> 00:42:45,285 >> Jason Hirschhorn: Vanessa. 880 00:42:45,285 --> 00:42:45,680 Piedodiet. 881 00:42:45,680 --> 00:42:51,550 >> VANESSA: Ir tikai ierobežots skaits skaitļu, ka tos var uzskatīt 882 00:42:51,550 --> 00:42:57,930 jo jūs esat par, jo mūsu gadījumā 32 bitu sistēma. 883 00:42:57,930 --> 00:43:03,080 Tātad jūs veida ir izdarīt dažus skaitļus. 884 00:43:03,080 --> 00:43:03,910 >> Jason Hirschhorn: Tāpēc, ka ir tieši labi. 885 00:43:03,910 --> 00:43:08,110 Ir tikai zināma skaitļi, kas var tikt pārstāvētas. 886 00:43:08,110 --> 00:43:11,770 Ja jūs reizināt divas ļoti lielu skaitu, tas varētu pārplūst summu 887 00:43:11,770 --> 00:43:13,950 Telpu jums ir pārstāvēt vesels skaitlis. 888 00:43:13,950 --> 00:43:17,930 Tas ir iemesls, kāpēc dažreiz mēs izmantojam ilgi ilgi nevis int. 889 00:43:17,930 --> 00:43:19,210 Tas ir vairāk vietas. 890 00:43:19,210 --> 00:43:21,210 Kas var turēt lielāku skaitu. 891 00:43:21,210 --> 00:43:24,310 >> Peldošā komata precizitāti, ir saistīts ar ka, bet ir arī saistīts ar 892 00:43:24,310 --> 00:43:29,300 Fakts, ka zīmēm numuri ne vienmēr bija. 893 00:43:29,300 --> 00:43:29,540 Piedodiet. 894 00:43:29,540 --> 00:43:31,280 Ļaujiet man nodot šo atpakaļ uz augšu. 895 00:43:31,280 --> 00:43:36,610 Decimālskaitlis 1.0 ne vienmēr pārstāv tāpat kā jūs varētu gaidīt, 896 00:43:36,610 --> 00:43:40,770 1,000000000. 897 00:43:40,770 --> 00:43:50,360 Tas dažreiz pārstāvēja 1,000000001 vai 0,999999999. 898 00:43:50,360 --> 00:43:52,780 Tas varētu būt pat 89 izmesti tur kaut kur. 899 00:43:52,780 --> 00:43:56,560 Tātad šie zīmēm numuri nav pārstāv tieši tāpat kā jūs būtu 900 00:43:56,560 --> 00:43:58,430 gaidīt tos pārstāvēt. 901 00:43:58,430 --> 00:44:00,010 >> Tātad problēma komplekts - 902 00:44:00,010 --> 00:44:00,860 tas bija divi? - 903 00:44:00,860 --> 00:44:05,290 Problēma noteikti divi, kur mēs aplūkoti peldošā komata skaitļus, kad mēs vēlējāmies 904 00:44:05,290 --> 00:44:08,690 tos pārstāvētu tieši to, ko mēs vēlējāmies tos pārstāv, skaits 905 00:44:08,690 --> 00:44:12,860 pennies vai vairāki centiem, mēs reizinot tos ar 100. 906 00:44:12,860 --> 00:44:14,750 Mēs noapaļota tos. 907 00:44:14,750 --> 00:44:18,660 Un tad mēs nogrieztu visu aiz komata. 908 00:44:18,660 --> 00:44:22,020 Tas bija, lai nodrošinātu, ka tie būtu faktiski vienāda tieši tas, ko mēs vēlējāmies 909 00:44:22,020 --> 00:44:22,410 viņiem vienāds. 910 00:44:22,410 --> 00:44:26,870 >> Jo, kad jūs lietojat kaut ko, kas ir peldēt un pārvērst to int, jūs 911 00:44:26,870 --> 00:44:29,860 nogrieztu visu uz labo pusi no komata. 912 00:44:29,860 --> 00:44:33,900 Jo tur ir dažas peldošā komata neprecizitāte, 100.000 varētu būt 913 00:44:33,900 --> 00:44:37,440 pārstāvēja 99,999999999. 914 00:44:37,440 --> 00:44:40,350 Un, ja jūs vienkārši nogrieztu visu, lai tiesības uzreiz, jūs gatavojas 915 00:44:40,350 --> 00:44:41,600 saņemt nepareizu numuru. 916 00:44:41,600 --> 00:44:44,050 917 00:44:44,050 --> 00:44:44,180 Jā. 918 00:44:44,180 --> 00:44:45,290 >> STUDENTU: Man bija jautājums par liešana. 919 00:44:45,290 --> 00:44:47,500 Kādā secībā tas notiek? 920 00:44:47,500 --> 00:44:54,480 Ja jūs darīt peldēt, kronšteini, 1 dala ar 10, tas dara 1 dalīts ar 10, 921 00:44:54,480 --> 00:44:58,910 tad saņemt 0.1, pēc tam ieslēdziet to pludiņa? 922 00:44:58,910 --> 00:45:01,470 >> Jason Hirschhorn: Ja jūs peldēt 1 dalīts ar 10 - 923 00:45:01,470 --> 00:45:02,550 >> STUDENTU: Jā, un pēc tam ir vienāds - 924 00:45:02,550 --> 00:45:04,240 Nu, tas būtu normāli ir tā vienāda - 925 00:45:04,240 --> 00:45:04,690 Jā. 926 00:45:04,690 --> 00:45:06,760 Jūs vēlaties, lai būtu peldēt, vai ne? 927 00:45:06,760 --> 00:45:12,790 >> Jason Hirschhorn: Labi, tāpēc mēs esam gatavojas izmantot šo segue uz norādītas 928 00:45:12,790 --> 00:45:15,390 atbildes uz šiem jautājumiem izmantojot kodēšanas. 929 00:45:15,390 --> 00:45:18,180 Tāpēc, ka jūs, iespējams, ir daudz Šīs minūtes jautājumus, un labs veids, kā 930 00:45:18,180 --> 00:45:19,100 lai atrisinātu tās ir ar kodēšanu. 931 00:45:19,100 --> 00:45:21,320 Tāpēc mēs esam gatavojas kodu šīs tiesības tagad, un tad mēs atgriezīsimies un 932 00:45:21,320 --> 00:45:24,020 kodu uz jautājumu, jums bija. 933 00:45:24,020 --> 00:45:24,950 >> Tātad pirmā līnija - 934 00:45:24,950 --> 00:45:29,390 Es nebūtu uzrakstījis to - kas ir Pirmā lieta, ko mēs vēlamies darīt, kad mēs 935 00:45:29,390 --> 00:45:32,250 atvērt jaunu failu gedit? 936 00:45:32,250 --> 00:45:34,190 >> STUDENTU: Iekļaut. 937 00:45:34,190 --> 00:45:35,920 >> Jason Hirschhorn: Iekļaut ko? 938 00:45:35,920 --> 00:45:37,952 >> STUDENTU: CS50 bibliotēka. 939 00:45:37,952 --> 00:45:39,920 >> Jason Hirschhorn: OK. 940 00:45:39,920 --> 00:45:42,590 Kas vēl mums būtu jāietver? 941 00:45:42,590 --> 00:45:46,820 Mēs esam tikai gatavojas, lai pārbaudītu, kas notiek kad jūs nodot kaut ko apgrozāmos līdzekļus. 942 00:45:46,820 --> 00:45:48,605 Bet ko darīt, mums ir nepieciešams iekļaut, ja mēs esam gatavojas uzrakstīt C programmu? 943 00:45:48,605 --> 00:45:49,300 >> STUDENTU: 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 Mēs faktiski nav nepieciešama, jo tas programma, cs50.h, pat ja tas ir 946 00:45:54,880 --> 00:45:55,920 vienmēr ir lietderīgi iekļaut to. 947 00:45:55,920 --> 00:45:58,260 Bet mēs vienmēr vajag stdio.h. 948 00:45:58,260 --> 00:45:59,660 >> STUDENTU: Kad kodēšanas C? 949 00:45:59,660 --> 00:46:15,770 >> Jason Hirschhorn: Kad kodēšanas C. 950 00:46:15,770 --> 00:46:17,090 >> Tāpēc es to saglabāt, jo tas. C failu. 951 00:46:17,090 --> 00:46:18,590 Man kādu jauku sintakse izceļot. 952 00:46:18,590 --> 00:46:22,890 Es uzrakstīju tukšumu iekšā galvenais. 953 00:46:22,890 --> 00:46:24,792 Kāda spēkā neesošu nozīmē? 954 00:46:24,792 --> 00:46:26,740 >> STUDENTU: neveic nekādus komandrindas argumentus. 955 00:46:26,740 --> 00:46:28,900 >> Jason Hirschhorn: Void līdzekļi, jo šis gadījumā, galvenais neuzņemas nekādu atbildību 956 00:46:28,900 --> 00:46:29,700 komandrindas argumentus. 957 00:46:29,700 --> 00:46:32,720 Citos gadījumos, tas nozīmē, ka funkcija neņem komandrindas argumentus. 958 00:46:32,720 --> 00:46:36,560 Vai funkciju, ja man bija rakstīt par spēkā neesošu galvenais (spēkā neesošs), kas teiktu galvenos s 959 00:46:36,560 --> 00:46:38,460 neatgriezīsies neko. 960 00:46:38,460 --> 00:46:39,960 Tāpēc spēkā neesošu tikai nozīmē neko. 961 00:46:39,960 --> 00:46:42,510 Ko es varētu rakstīt, ja es būtu veikt komandrindas argumentus? 962 00:46:42,510 --> 00:46:45,250 963 00:46:45,250 --> 00:46:47,150 >> STUDENTU: int loka c virkne loka v 964 00:46:47,150 --> 00:46:49,055 >> Jason Hirschhorn: int argc string argv. 965 00:46:49,055 --> 00:46:54,050 966 00:46:54,050 --> 00:46:55,572 Tas ir labi? 967 00:46:55,572 --> 00:46:58,720 >> STUDENTU: Tas ir char zvaigzne ARGV iekavās. 968 00:46:58,720 --> 00:47:01,730 >> Jason Hirschhorn: Tātad, jūs varētu uzrakstīt string ARGV kronšteini vai char zvaigzne argv 969 00:47:01,730 --> 00:47:03,710 kronšteini, bet jums ir nepieciešams iekavās. 970 00:47:03,710 --> 00:47:06,290 Jo argv ir masīvs stīgas, atcerēties. 971 00:47:06,290 --> 00:47:07,360 Tas ir ne tikai viens string. 972 00:47:07,360 --> 00:47:10,350 Tāpēc string argv ir, šeit ir viens string sauc argv. 973 00:47:10,350 --> 00:47:13,630 String ARGV kronšteini ir, lūk, masīvs stīgas. 974 00:47:13,630 --> 00:47:17,865 Tāpēc int argc virkne ARGV kronšteini būtu kaut kas man 975 00:47:17,865 --> 00:47:18,810 droši vien rakstīt. 976 00:47:18,810 --> 00:47:23,050 >> Tātad jūs vēlētos, lai saglabātu veselam skaitlim? 977 00:47:23,050 --> 00:47:24,285 >> STUDENTU: Jā, vesels skaitlis. 978 00:47:24,285 --> 00:47:25,840 Vai peldēt. 979 00:47:25,840 --> 00:47:26,710 >> Jason Hirschhorn: In apgrozāmos līdzekļus? 980 00:47:26,710 --> 00:47:30,790 Tāpat, float x ir 1 dalīts ar 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 Kā es varu izdrukāt peldēt printf? 984 00:47:42,240 --> 00:47:45,100 985 00:47:45,100 --> 00:47:46,714 Kas? 986 00:47:46,714 --> 00:47:47,560 >> STUDENTU:% f. 987 00:47:47,560 --> 00:47:48,300 >> Jason Hirschhorn:% f. 988 00:47:48,300 --> 00:47:50,810 Kas ir vesels skaitlis? 989 00:47:50,810 --> 00:47:52,110 d vai i. 990 00:47:52,110 --> 00:47:53,000 Kas ir virkne? 991 00:47:53,000 --> 00:47:54,240 >> STUDENTU: s. 992 00:47:54,240 --> 00:47:56,140 >> Jason Hirschhorn: s. 993 00:47:56,140 --> 00:47:57,550 Kā es varu iegūt jaunu rindu? 994 00:47:57,550 --> 00:47:58,800 >> STUDENTU: Reversā slīpsvītra n. 995 00:47:58,800 --> 00:48:04,610 996 00:48:04,610 --> 00:48:07,100 >> Jason Hirschhorn: Ko es varu atgriezties ja galvenās darbojas pareizi? 997 00:48:07,100 --> 00:48:08,360 >> STUDENTU: 0. 998 00:48:08,360 --> 00:48:09,430 Vai man ir nepieciešams rakstīt šo līniju, lai gan? 999 00:48:09,430 --> 00:48:10,170 >> STUDENT: Nē. 1000 00:48:10,170 --> 00:48:11,513 Labi, mēs ne rakstīt, tad. 1001 00:48:11,513 --> 00:48:16,450 1002 00:48:16,450 --> 00:48:17,190 Vai visi lasīt, ka? 1003 00:48:17,190 --> 00:48:18,485 Tas izskatās mazliet maza. 1004 00:48:18,485 --> 00:48:20,160 Var ikviens redzētu, vai būtu Es padarītu to lielāku? 1005 00:48:20,160 --> 00:48:23,480 1006 00:48:23,480 --> 00:48:25,100 Es domāju, ka par kameru, mēs veiksim tā nedaudz lielāks, lai gan. 1007 00:48:25,100 --> 00:48:35,750 1008 00:48:35,750 --> 00:48:38,410 >> Jason Hirschhorn: Ja es gribu, lai ieslēgtu šo . C failu izpildāmā, ko 1009 00:48:38,410 --> 00:48:39,260 es varu rakstīt? 1010 00:48:39,260 --> 00:48:41,610 >> STUDENTU: Marka testu. 1011 00:48:41,610 --> 00:48:42,080 >> Jason Hirschhorn: Sorry? 1012 00:48:42,080 --> 00:48:42,790 >> STUDENTU: Marka testu. 1013 00:48:42,790 --> 00:48:44,040 >> Jason Hirschhorn: Marka testu. 1014 00:48:44,040 --> 00:48:46,700 1015 00:48:46,700 --> 00:48:48,410 Mēs runājām par Šī līnija agrāk. 1016 00:48:48,410 --> 00:48:49,140 Šķindēt. 1017 00:48:49,140 --> 00:48:51,270 Kas ir šķindēt? 1018 00:48:51,270 --> 00:48:52,200 Par kompilatoru nosaukums. 1019 00:48:52,200 --> 00:48:53,920 Kas ir šī pozīcija? 1020 00:48:53,920 --> 00:48:55,580 >> STUDENTU: iestata to izmantošanai gdb. 1021 00:48:55,580 --> 00:48:59,230 >> Jason Hirschhorn: Sets it up izmantošanas gdb. 1022 00:48:59,230 --> 00:49:02,338 Šī līnija, kas ir kas? 1023 00:49:02,338 --> 00:49:03,290 >> STUDENTU: Pirmkods. 1024 00:49:03,290 --> 00:49:06,010 >> Jason Hirschhorn: Tas ir avota failu. c fails. 1025 00:49:06,010 --> 00:49:08,150 Ko šīs divas līnijas darīt? 1026 00:49:08,150 --> 00:49:10,245 Vai šie divi nav rindas. 1027 00:49:10,245 --> 00:49:12,300 >> STUDENTU: Tā nosaukumus tā pārbaudītu. 1028 00:49:12,300 --> 00:49:15,410 >> Jason Hirschhorn: Tātad domuzīme o saka: nosaukt to kaut ko savādāk. 1029 00:49:15,410 --> 00:49:16,790 Un šeit jūs aicināt to pārbaude. 1030 00:49:16,790 --> 00:49:18,900 Ja man nebija, ka, kāda būtu to nosaukt šo? 1031 00:49:18,900 --> 00:49:20,260 >> STUDENTU: a.out. 1032 00:49:20,260 --> 00:49:22,340 >> Jason Hirschhorn: a.out. 1033 00:49:22,340 --> 00:49:25,366 Ko tas dara? 1034 00:49:25,366 --> 00:49:27,670 >> STUDENTU: Saites math bibliotēka. 1035 00:49:27,670 --> 00:49:29,550 >> Jason Hirschhorn: Tas saista in math bibliotēkā. 1036 00:49:29,550 --> 00:49:32,880 Mēs neiekļāva math bibliotēka, bet jo tas ir tik bieži, tie esam 1037 00:49:32,880 --> 00:49:35,780 rakstīts make vienmēr iekļaut math bibliotēka. 1038 00:49:35,780 --> 00:49:39,050 Un tāpat, tas ietver CS50 bibliotēka. 1039 00:49:39,050 --> 00:49:43,010 >> Labi, tāpēc, ja mēs sarakstā, mums tagad ir izpildāmā sauc tests. 1040 00:49:43,010 --> 00:49:45,150 To izpildīt, es rakstīt testu. 1041 00:49:45,150 --> 00:49:48,330 Es redzu, ka mans peldošo punktu, kā plānots, ir vienāds ar 0. 1042 00:49:48,330 --> 00:49:50,890 1043 00:49:50,890 --> 00:49:51,590 Tas, ka - 1044 00:49:51,590 --> 00:49:52,060 tā - 1045 00:49:52,060 --> 00:49:55,210 >> STUDENTU: Tad, ja jūs nodot peldēt tagad, kā jūs nodot to kā apgrozāmos līdzekļus - 1046 00:49:55,210 --> 00:49:56,870 >> Jason Hirschhorn: Cast 1 pludiņa? 1047 00:49:56,870 --> 00:49:59,180 >> STUDENTU: Nē, lietie pilnu lieta - 1048 00:49:59,180 --> 00:49:59,500 yeah. 1049 00:49:59,500 --> 00:50:02,460 Ja jūs tikko bija, ka būtu kas padara to 0,1? 1050 00:50:02,460 --> 00:50:07,170 >> Jason Hirschhorn: Labi, tāpēc tiešām ātri, 1 dalīts ar 10, tie ir 1051 00:50:07,170 --> 00:50:08,690 veseli skaitļi tiek sadalīta. 1052 00:50:08,690 --> 00:50:13,580 Tātad, ja jūs sadalīt skaitļu, viņi 0, un jūs ietaupīt, ka 0 1053 00:50:13,580 --> 00:50:17,170 peldēt, jo slīpsvītru ir tikai skaitlis sadalīšanu. 1054 00:50:17,170 --> 00:50:19,180 Tāpēc tagad mēs esam pagrieziena kaut uz apgrozāmos līdzekļus. 1055 00:50:19,180 --> 00:50:21,650 >> Let 's redzēt, kas notiek. 1056 00:50:21,650 --> 00:50:22,900 Mēs veiksim testu. 1057 00:50:22,900 --> 00:50:25,870 1058 00:50:25,870 --> 00:50:31,090 Tāpēc tagad mēs redzam, ka tas slash nav skaitlis sadalījumu, tas bija peldošs 1059 00:50:31,090 --> 00:50:32,640 punktu sadalījums. 1060 00:50:32,640 --> 00:50:35,700 Jo viena no tās argumentus tika nodotas uz apgrozāmos līdzekļus. 1061 00:50:35,700 --> 00:50:38,380 Tāpēc tagad tas jau teicu, pret šo sadalījums, piemēram, mums ir darīšana ar 1062 00:50:38,380 --> 00:50:40,140 peldošās punkti, nevis ar veseliem skaitļiem. 1063 00:50:40,140 --> 00:50:42,760 Un tāpēc mēs saņemt atbildi mēs sagaidām. 1064 00:50:42,760 --> 00:50:44,620 >> Paskatīsimies, kas notiek - 1065 00:50:44,620 --> 00:50:47,103 Ups. 1066 00:50:47,103 --> 00:50:51,646 Ja es gribēju drukāt vairāk decimāldaļu plankumi, kā es varētu darīt? 1067 00:50:51,646 --> 00:50:55,550 >> STUDENTU: Point dot f, vai tik daudz, zīmēm aiz komata, cik vēlaties. 1068 00:50:55,550 --> 00:51:02,280 1069 00:51:02,280 --> 00:51:04,440 >> Jason Hirschhorn: Tāpēc es drukāt 10 zīmēm plankumi. 1070 00:51:04,440 --> 00:51:06,610 Un mēs tagad redzam, mēs esam nonākuši daži dīvaini sīkumi. 1071 00:51:06,610 --> 00:51:09,650 Un tas iet atpakaļ uz savu jautājumu par peldošā komata neprecizitātes. 1072 00:51:09,650 --> 00:51:10,950 Ir dīvaini sīkumi saglabāti šeit. 1073 00:51:10,950 --> 00:51:13,650 1074 00:51:13,650 --> 00:51:15,275 >> Labi, tas, ka atbildi uz savu jautājumu? 1075 00:51:15,275 --> 00:51:18,550 1076 00:51:18,550 --> 00:51:20,200 Kas vēl jūs vēlaties ar kodu ātri? 1077 00:51:20,200 --> 00:51:25,470 >> STUDENTU: Es tikai gribēju redzēt, vai nē, ja jūs atbrīvoja kādu rādītāju, 1078 00:51:25,470 --> 00:51:30,410 vai šis rādītājs joprojām ir saglabāta tā adrese, kas tas bija 1079 00:51:30,410 --> 00:51:32,170 norādot uz iepriekš. 1080 00:51:32,170 --> 00:51:34,100 >> Jason Hirschhorn: OK, tāpēc pieņemsim darīt. 1081 00:51:34,100 --> 00:51:38,030 Char zvaigzne PTR, tas rada mainīgo sauc PTR tipa char zvaigzne. 1082 00:51:38,030 --> 00:51:39,280 Kā es varu uzrakstīt malloc? 1083 00:51:39,280 --> 00:51:40,550 Alden? 1084 00:51:40,550 --> 00:51:41,800 >> ALDEN: Just malloc. 1085 00:51:41,800 --> 00:51:44,820 1086 00:51:44,820 --> 00:51:51,040 Bet tad tas ir jābūt lielumu, un Šajā gadījumā, es domāju, jūs gribētu 1087 00:51:51,040 --> 00:51:52,465 ir vērsta uz char. 1088 00:51:52,465 --> 00:51:54,450 Tāpēc tas lūdzu būt char. 1089 00:51:54,450 --> 00:51:57,520 >> Jason Hirschhorn: Labi, tāpēc vairāk vispārīgi, Inside - 1090 00:51:57,520 --> 00:51:58,770 pieņemsim rediģēt. 1091 00:51:58,770 --> 00:52:05,100 1092 00:52:05,100 --> 00:52:09,260 Iekšā malloc, jūs vēlaties numuru baitu no kaudzes. 1093 00:52:09,260 --> 00:52:12,320 Vispār, ko mēs esam redzējuši, ka mēs esam dara, ir, mēs ejam uz malloc 1094 00:52:12,320 --> 00:52:14,940 virknes, piemēram, vai bloki no veseliem skaitļiem. 1095 00:52:14,940 --> 00:52:21,600 Tātad, ja mēs gribam 10 veseli skaitļi, vai 10 simboli, 10 dos mums 10. 1096 00:52:21,600 --> 00:52:24,370 Un tad izmērs chars dotu mums, ka izmērs simboliem, kas 1097 00:52:24,370 --> 00:52:25,120 šī lieta ir 1 baits. 1098 00:52:25,120 --> 00:52:26,250 Mēs saņemam 10 baiti. 1099 00:52:26,250 --> 00:52:28,540 Ja mēs būtu rakstīt izmēru int, kas dod mums 40 baiti. 1100 00:52:28,540 --> 00:52:31,520 >> Tātad vairāk vispārīgi, iekšpusē malloc ir baitu skaits, ko vēlaties. 1101 00:52:31,520 --> 00:52:34,620 Šajā gadījumā mēs esam nonākuši 1 baitu. 1102 00:52:34,620 --> 00:52:36,900 Kas šķiet dīvaini izmantošanu no malloc, bet mūsu 1103 00:52:36,900 --> 00:52:38,470 mērķiem ir jēga. 1104 00:52:38,470 --> 00:52:40,420 Tāpēc tur ir, ka. 1105 00:52:40,420 --> 00:52:43,420 >> Mēs ejam, lai izsauktu bezmaksas. 1106 00:52:43,420 --> 00:52:47,040 Mēs atbrīvoties no tā, un mēs izmantojam PTR atkal. 1107 00:52:47,040 --> 00:52:48,750 Un ko jūs vēlaties pārbaudīt? 1108 00:52:48,750 --> 00:52:50,550 >> STUDENTU: Es tikai gribēju, lai pārbaudītu, vai vai tur bija kaut kas 1109 00:52:50,550 --> 00:52:51,900 iekšpusē no tā. 1110 00:52:51,900 --> 00:52:53,050 >> Jason Hirschhorn: Tātad, vai tā norādīja uz kaut ko? 1111 00:52:53,050 --> 00:52:57,740 >> STUDENTU: Jā, tieši tā, vai tas joprojām bija atmiņas adresi. 1112 00:52:57,740 --> 00:53:02,220 >> Jason Hirschhorn: Tātad jūs vēlaties lai pārbaudītu vērtību PTR? 1113 00:53:02,220 --> 00:53:03,470 >> STUDENTU: Jā, tieši tā. 1114 00:53:03,470 --> 00:53:07,940 1115 00:53:07,940 --> 00:53:10,160 >> Jason Hirschhorn: Ko es rakstīt šeit ja es gribu, lai pārbaudītu vērtību 1116 00:53:10,160 --> 00:53:11,880 punkts - kas ir, Jordan teica, vērtība? 1117 00:53:11,880 --> 00:53:13,720 Vai kas tiek glabāts iekšpusē PTR? 1118 00:53:13,720 --> 00:53:14,620 >> STUDENTU: atmiņas adrese. 1119 00:53:14,620 --> 00:53:16,330 >> Jason Hirschhorn: atmiņas adrese. 1120 00:53:16,330 --> 00:53:20,520 Tātad, ja es rakstu tikai to, tas būs iedodiet man vērtību PTR. 1121 00:53:20,520 --> 00:53:22,800 Un kā es varu izdrukāt atmiņas adrese? 1122 00:53:22,800 --> 00:53:26,470 Kas ir formāta virkne par atmiņas adresi? 1123 00:53:26,470 --> 00:53:27,430 >> STUDENTU:% p. 1124 00:53:27,430 --> 00:53:28,050 >> Jason Hirschhorn:% p. 1125 00:53:28,050 --> 00:53:29,500 % S ir virkne. 1126 00:53:29,500 --> 00:53:30,750 % P par rādītāju. 1127 00:53:30,750 --> 00:53:40,820 1128 00:53:40,820 --> 00:53:43,540 Tas ir labi? 1129 00:53:43,540 --> 00:53:44,790 Tas ir labi. 1130 00:53:44,790 --> 00:53:49,450 1131 00:53:49,450 --> 00:53:51,040 Tā PTR vienāds - 1132 00:53:51,040 --> 00:53:53,350 tas joprojām ir kaut kas tajā. 1133 00:53:53,350 --> 00:53:56,110 1134 00:53:56,110 --> 00:53:57,645 Tas ir iespējams, vairāk interesants jautājums. 1135 00:53:57,645 --> 00:53:59,198 Ko tas līnija darīt? 1136 00:53:59,198 --> 00:54:00,830 >> STUDENTU: SEG defekti. 1137 00:54:00,830 --> 00:54:01,310 >> Jason Hirschhorn: Kas? 1138 00:54:01,310 --> 00:54:02,678 >> STUDENTU: Es domāju, ka tas seg kļūdas. 1139 00:54:02,678 --> 00:54:03,574 >> Jason Hirschhorn: Hm? 1140 00:54:03,574 --> 00:54:04,920 >> STUDENTU: Es domāju, ka tas būs seg vaina. 1141 00:54:04,920 --> 00:54:08,265 >> Jason Hirschhorn: Tātad, šī līnija no koda, zvaigzne PTR, ko 1142 00:54:08,265 --> 00:54:10,152 tas zvaigzne nozīmē? 1143 00:54:10,152 --> 00:54:11,240 >> STUDENTU: saturs. 1144 00:54:11,240 --> 00:54:11,560 >> Jason Hirschhorn: Jā. 1145 00:54:11,560 --> 00:54:13,910 Iet, lai iegūtu saturu. 1146 00:54:13,910 --> 00:54:16,830 Tāpēc tas ir gatavojas iet uz atmiņas risināt tur, un man to. 1147 00:54:16,830 --> 00:54:21,030 Es mēdzu% c tieši šeit, jo tur ir rakstzīmes glabāti tur. 1148 00:54:21,030 --> 00:54:23,390 Tāpēc mēs esam gatavojas iet uz šo adresi mēs tikko redzēju - vai tas būs iespējams, 1149 00:54:23,390 --> 00:54:25,190 mazliet atšķirīgs šo reizi, kad mēs palaist programmu. 1150 00:54:25,190 --> 00:54:28,010 Bet mēs iesim uz šo adresi ko mēs zinām, joprojām pastāv 1151 00:54:28,010 --> 00:54:29,260 un redzēt, kas ir tur. 1152 00:54:29,260 --> 00:54:35,640 1153 00:54:35,640 --> 00:54:37,110 >> Tāpēc tas nav seg vaina. 1154 00:54:37,110 --> 00:54:38,970 Tas vienkārši nedeva mums neko. 1155 00:54:38,970 --> 00:54:43,350 Tas varētu būt tiešām devusi mums kaut ko, mēs vienkārši nevaram redzēt. 1156 00:54:43,350 --> 00:54:45,110 Un tas iet atpakaļ uz šo ideju - 1157 00:54:45,110 --> 00:54:47,270 un mēs neesam gatavojas saņemt pārāk daudz to, jo tas ir ārpus 1158 00:54:47,270 --> 00:54:48,460 apjoms šajā kursā. 1159 00:54:48,460 --> 00:54:51,260 Bet mēs runājām par to tieši šeit, ja mēs gāja aiz robežas masīva ar 1160 00:54:51,260 --> 00:54:54,890 1, mēs nevarētu nokļūt nepatikšanās. 1161 00:54:54,890 --> 00:54:58,550 >> Dažreiz, kad jūs vienkārši iet off par 1, jūs darāt kaut ko nepareizi, un jums 1162 00:54:58,550 --> 00:54:59,220 varētu nokļūt nepatikšanās. 1163 00:54:59,220 --> 00:55:00,820 Bet jūs ne vienmēr iekļūt nepatikšanās. 1164 00:55:00,820 --> 00:55:05,170 Tas atkarīgs no tā, cik daudz slikti jums Vai, jūs gatavojas nokļūt nepatikšanās. 1165 00:55:05,170 --> 00:55:07,790 Kas nav teikt, apliets ar savu kodu. 1166 00:55:07,790 --> 00:55:12,080 Bet tas ir, programma nebūs vienmēr atmest, pat ja jūs kaut kur aiziet 1167 00:55:12,080 --> 00:55:14,130 jūs neesat vajadzēja iet. 1168 00:55:14,130 --> 00:55:18,170 >> Labs piemērs tam ir daudz cilvēki savu problēmu noteikts 3, kas 1169 00:55:18,170 --> 00:55:22,350 bija 15, nepārbaudīja robežas no kuģa. 1170 00:55:22,350 --> 00:55:25,860 Tātad jūs paskatījās pa kreisi, izskatījās labi, skatījās uz augšu, izskatījās 1171 00:55:25,860 --> 00:55:27,000 uz leju. 1172 00:55:27,000 --> 00:55:31,540 Bet jums nav pārbaudīt, lai redzētu, vai top faktiski būs uz kuģa. 1173 00:55:31,540 --> 00:55:35,220 Un daudz cilvēku, kas to izdarīja, un Izrādījās, ka, viņu programma strādāja 1174 00:55:35,220 --> 00:55:38,960 lieliski, jo, ja tas, ka padome uzglabā atmiņā, ja jums gāja viens 1175 00:55:38,960 --> 00:55:42,300 virs tā vai arī pārbaudīts, ka atmiņa adresi, tur nebija nekas 1176 00:55:42,300 --> 00:55:44,870 īpaši briesmīgs par to, lai jūsu programma nebija 1177 00:55:44,870 --> 00:55:45,970 gatavojas kliegt pie jums. 1178 00:55:45,970 --> 00:55:48,870 >> Bet mēs joprojām varētu pacelties punktus, ja jums nav pārbaudīt, ka, jo jūs 1179 00:55:48,870 --> 00:55:50,850 darīja kaut ko nebija vajadzēja darīt, un jums varētu būt 1180 00:55:50,850 --> 00:55:51,860 gotten nepatikšanas. 1181 00:55:51,860 --> 00:55:54,040 Izredzes ir, lai gan, jūs, iespējams, nav. 1182 00:55:54,040 --> 00:55:57,790 Tātad šis ir parādīt, ka, jā, mēs vēl varam iet uz to. 1183 00:55:57,790 --> 00:55:59,010 Un mēs esam nesaņemu problēmas šajā lietā. 1184 00:55:59,010 --> 00:56:04,000 Ja mēs mēģinājām darīt izlasītu Nākamie 100 rakstzīmes, mēs gribētu 1185 00:56:04,000 --> 00:56:06,000 iespējams nokļūt nepatikšanās. 1186 00:56:06,000 --> 00:56:09,400 Un jūs varat kodu lasīt nākamo 100 rakstzīmes, ja jūs vēlaties, darot kādu 1187 00:56:09,400 --> 00:56:10,110 veida cilpa. 1188 00:56:10,110 --> 00:56:10,850 Jā. 1189 00:56:10,850 --> 00:56:16,250 >> STUDENTU: Tā kā mums tika piešķirtas, ka kosmosa faktisko vērtību, mēs nebūtu 1190 00:56:16,250 --> 00:56:17,050 faktiski varētu redzēt neko. 1191 00:56:17,050 --> 00:56:21,740 Mums vajadzētu mēģināt to ar ko nosaka, ka vienāds ar, piemēram, C vai kaut ko? 1192 00:56:21,740 --> 00:56:22,640 >> Jason Hirschhorn: Great jautājums. 1193 00:56:22,640 --> 00:56:25,340 Kā es varu noteikt šo vērtību - 1194 00:56:25,340 --> 00:56:28,980 kāda līnija koda man rakstīt uz līnijas septiņi darīt to, ko jūs teicāt? 1195 00:56:28,980 --> 00:56:34,040 >> STUDENTU: Star PTR vienāds single quote c beidzas vienu citātu. 1196 00:56:34,040 --> 00:56:36,970 >> Jason Hirschhorn: Tātad, kas ir liekot raksturs, c, šajā vietā, kas 1197 00:56:36,970 --> 00:56:40,200 jo atkal, ka zvaigzne nozīmē iet tur. 1198 00:56:40,200 --> 00:56:43,320 Un ja to izmanto kreisajā pusē uzdevums operators, kas ir vienāds 1199 00:56:43,320 --> 00:56:47,270 parakstīt, mēs nebrauksim, lai iegūtu, ka vērtība tik daudz, kā noteikts šo vērtību. 1200 00:56:47,270 --> 00:56:48,520 Tagad pieņemsim redzēt, kas notiek. 1201 00:56:48,520 --> 00:56:54,700 1202 00:56:54,700 --> 00:56:56,770 >> Mēs kaut ko tur un tas bija tur. 1203 00:56:56,770 --> 00:56:58,000 Mēs sauc par brīvu. 1204 00:56:58,000 --> 00:57:00,100 Daži sīkumi, iespējams, noticis uz kaudzes. 1205 00:57:00,100 --> 00:57:01,890 Tāpēc tas nav tur vairs. 1206 00:57:01,890 --> 00:57:07,440 Bet atkal, mēs esam nesaņemu nepatikšanas par iet tur. 1207 00:57:07,440 --> 00:57:10,260 >> Es daru to, kas ar kodu, lai ilustrētu ka daudzi no šiem 1208 00:57:10,260 --> 00:57:12,410 jautājumi, kas jums ir, viņi patiešām interesanti 1209 00:57:12,410 --> 00:57:13,650 atbildes daudz laika. 1210 00:57:13,650 --> 00:57:15,260 Un viņi patiešām labi jautājumi. 1211 00:57:15,260 --> 00:57:19,010 Un jūs varat saprast tos uz savu, ja, piemēram, 1212 00:57:19,010 --> 00:57:19,990 mēs neesam sadaļā. 1213 00:57:19,990 --> 00:57:20,940 Jā. 1214 00:57:20,940 --> 00:57:24,430 >> STUDENTU: Tā kā jūs neesat sūtīt Pointer jebkur, jums ir nepieciešams, lai 1215 00:57:24,430 --> 00:57:26,530 lietošanā malloc? 1216 00:57:26,530 --> 00:57:28,400 >> Jason Hirschhorn: Tātad tas iet atpakaļ uz savu sākotnējo jautājumu. 1217 00:57:28,400 --> 00:57:28,620 [? ?] 1218 00:57:28,620 --> 00:57:29,980 Tas ir tikai vietējās mainīgais? 1219 00:57:29,980 --> 00:57:32,280 Malloc šeit nav tik pārliecinošs. 1220 00:57:32,280 --> 00:57:35,260 Gada malloc izmantošana šeit nav ka pārliecinoši, jo tas ir 1221 00:57:35,260 --> 00:57:36,500 tikai vietējā mainīgs. 1222 00:57:36,500 --> 00:57:40,970 >> STUDENTU: Tātad jūs varētu darīt char star PTR vienāds sveiki? 1223 00:57:40,970 --> 00:57:41,400 >> Jason Hirschhorn: Ak. 1224 00:57:41,400 --> 00:57:43,300 Tātad, mēs ejam, lai tagad saņemtu atpakaļ uz savu sākotnējo jautājumu. 1225 00:57:43,300 --> 00:57:46,885 Es domāju, ka jūs nebijāt apmierināts ar manu atbildi. 1226 00:57:46,885 --> 00:57:48,220 OK? 1227 00:57:48,220 --> 00:57:49,226 Piemēram, ka? 1228 00:57:49,226 --> 00:57:49,682 >> STUDENTU: Jā. 1229 00:57:49,682 --> 00:57:50,932 Gaidīt. 1230 00:57:50,932 --> 00:57:54,090 1231 00:57:54,090 --> 00:57:57,850 >> Jason Hirschhorn: Un kur Vai jūs vēlaties izdrukāt? 1232 00:57:57,850 --> 00:58:00,026 Tāpēc mēs izdrukāt virkni, piemēram, ka? 1233 00:58:00,026 --> 00:58:06,380 1234 00:58:06,380 --> 00:58:07,630 >> STUDENTU: Interesanti. 1235 00:58:07,630 --> 00:58:09,900 1236 00:58:09,900 --> 00:58:14,285 >> Jason Hirschhorn: Tātad tas saka, ka tas arguments ir par raksturu veidu. 1237 00:58:14,285 --> 00:58:17,200 1238 00:58:17,200 --> 00:58:18,620 Tāpēc tas ir raksturs. 1239 00:58:18,620 --> 00:58:25,170 1240 00:58:25,170 --> 00:58:26,280 >> STUDENTU: Just notiek pirmā. 1241 00:58:26,280 --> 00:58:28,610 >> Jason Hirschhorn: Tātad šis ir tas, ko es teicu iepriekš. 1242 00:58:28,610 --> 00:58:34,240 Tāpat kā es teicu, tas nav glabāšanai string iekšpusē mainīgo rādītāju. 1243 00:58:34,240 --> 00:58:35,120 Tas ir glabāšanai - 1244 00:58:35,120 --> 00:58:36,350 >> STUDENTU: Pirmā vērtība virknes. 1245 00:58:36,350 --> 00:58:40,810 >> Jason Hirschhorn: adreses pirmā vērtība virkni. 1246 00:58:40,810 --> 00:58:46,940 Ja mēs būtu izdrukāt šo, mēs esam iegūt vērtību iekšā rādītājs. 1247 00:58:46,940 --> 00:58:51,005 Un mēs redzam, ka ir, protams, atmiņas adrese. 1248 00:58:51,005 --> 00:58:53,595 1249 00:58:53,595 --> 00:58:56,440 >> Vai tas ir jēga? 1250 00:58:56,440 --> 00:58:56,940 Piedodiet. 1251 00:58:56,940 --> 00:58:58,996 Pagaidiet, tas, kas atbildētu uz jūsu jautājums, lai gan? 1252 00:58:58,996 --> 00:58:59,790 >> STUDENTU: Jā. 1253 00:58:59,790 --> 00:59:05,830 >> Jason Hirschhorn: Šī līnija kods ir radot virkni un tad vēl 1254 00:59:05,830 --> 00:59:09,115 mainīgais rādītājs, kas ir vērsta uz šo virkni, kas masīvs. 1255 00:59:09,115 --> 00:59:14,320 1256 00:59:14,320 --> 00:59:14,980 Jā. 1257 00:59:14,980 --> 00:59:19,200 >> STUDENTU: Tātad, ja mēs gājām vienu atmiņu risināt tālāk, vai mēs saņemt h? 1258 00:59:19,200 --> 00:59:21,990 1259 00:59:21,990 --> 00:59:23,150 Vai tas ir saglabāts kā virkne? 1260 00:59:23,150 --> 00:59:24,400 >> Jason Hirschhorn: Tāpat kā, mēs to izdarījām - 1261 00:59:24,400 --> 00:59:28,540 1262 00:59:28,540 --> 00:59:30,790 tāpēc tas ir vērtīgs, lai darīt. 1263 00:59:30,790 --> 00:59:33,780 Šis ir punkts aritmētiskais, ko jūs guys ir redzējis, un ir jābūt 1264 00:59:33,780 --> 00:59:35,550 samērā ērti. 1265 00:59:35,550 --> 00:59:36,905 Tas ir līdzīgs rakstot - 1266 00:59:36,905 --> 00:59:41,980 1267 00:59:41,980 --> 00:59:46,350 ja mēs rakstīt šo līniju kodu, mēs esam redzējuši masīva pierakstu pirms tam. 1268 00:59:46,350 --> 00:59:55,900 Tam vajadzētu dot mums par otro vērtība šajā masīvs, h. 1269 00:59:55,900 --> 01:00:05,010 >> Ja mēs to darījām, tas arī dod mums otrā vērtība šajā masīvā. 1270 01:00:05,010 --> 01:00:08,320 Jo tas notiek nevis ar atmiņu adrese pirmā lieta, bet 1271 01:00:08,320 --> 01:00:10,530 atmiņas adrese lieta vienu vairāk. 1272 01:00:10,530 --> 01:00:14,360 Un tad zvaigzne operators dereferences ka rādītājs. 1273 01:00:14,360 --> 01:00:16,940 Un atkal, paskatīsimies. 1274 01:00:16,940 --> 01:00:18,664 Mēs h vēlreiz. 1275 01:00:18,664 --> 01:00:20,980 >> STUDENTU: Ko tieši dereference nozīmē? 1276 01:00:20,980 --> 01:00:23,650 >> Jason Hirschhorn: Nedefinētās vērtibas ir iedomāts vārds doties. 1277 01:00:23,650 --> 01:00:26,390 Iet uz to un saņemt to, kas tur ir dereference rādītājs. 1278 01:00:26,390 --> 01:00:28,240 Tas ir tikai iedomātā vārdu par to. 1279 01:00:28,240 --> 01:00:29,986 >> Students: Ja mēs vēlējāmies, lai drukāt visa virkne, mēs varētu 1280 01:00:29,986 --> 01:00:31,930 to aizvieto & zīmes rādītāju? 1281 01:00:31,930 --> 01:00:33,490 >> Jason Hirschhorn: Labi, mēs esam gatavojas, lai apturētu šeit. 1282 01:00:33,490 --> 01:00:35,480 Mēs gatavojas pārtraukt šeit. 1283 01:00:35,480 --> 01:00:41,760 Ampersand dod jums adresi vietu, tad, kad jūs aizvieto & zīmes ar 1284 01:00:41,760 --> 01:00:44,080 mainīgs, tas dod jums adresi ja šis mainīgais tiek saglabāts. 1285 01:00:44,080 --> 01:00:48,580 Ampersand rādītājs dos jums adrese PTR kur PTR ir atmiņā. 1286 01:00:48,580 --> 01:00:50,140 >> Mēs nebrauksim, lai dotos uz šim piemēram. 1287 01:00:50,140 --> 01:00:52,640 Jūs varat izrēķināt šos lietas, par savu. 1288 01:00:52,640 --> 01:00:55,740 Bet atkal, tas pat varētu būt robežojas bit tikai to, kas jums ir nepieciešams zināt 1289 01:00:55,740 --> 01:00:58,000 joma šajā vidusposmā - 1290 01:00:58,000 --> 01:00:59,070 vai tas viktorīna, diezgan. 1291 01:00:59,070 --> 01:01:00,270 Piedodiet. 1292 01:01:00,270 --> 01:01:03,770 >> Mēs gatavojamies virzīties uz priekšu, jo es būtu vēlētos darīt vienu kodēšanas problēmu 1293 01:01:03,770 --> 01:01:05,100 pirms laika ir uz augšu. 1294 01:01:05,100 --> 01:01:09,340 Un mēs ar kodu, ko es domāju, ir visvairāk pārliecinoši no šiem 1295 01:01:09,340 --> 01:01:11,020 piemēri, atoi. 1296 01:01:11,020 --> 01:01:14,520 Tātad tas bija jautājums par to, viktorīna pirms diviem gadiem. 1297 01:01:14,520 --> 01:01:17,810 Un man ir tas uz kuģa šeit. 1298 01:01:17,810 --> 01:01:20,680 >> Cilvēki uzdeva par viktorīnas - 1299 01:01:20,680 --> 01:01:23,640 viņiem tika dota nedaudz vairāk tesxt in jautājums, bet es likvidēta 1300 01:01:23,640 --> 01:01:26,640 teksts, jo tas bija nevajadzīgs mūsu mērķiem tagad. 1301 01:01:26,640 --> 01:01:29,180 Tas bija tikai daži fona par to atoi darīja. 1302 01:01:29,180 --> 01:01:31,425 Bet jūs visi zināt, un ir ļoti iepazinušies ar atoi. 1303 01:01:31,425 --> 01:01:35,620 >> Es iesaku jums kodu šo uz papīra loksnes. 1304 01:01:35,620 --> 01:01:39,310 Es arī iesakām izmantot stratēģiju ka mēs esam pārgājuši 1305 01:01:39,310 --> 01:01:41,040 daudz mūsu sadaļā. 1306 01:01:41,040 --> 01:01:44,130 Pirmkārt, pārliecinieties, ka jūs saprotat ko atoi dara. 1307 01:01:44,130 --> 01:01:47,580 Uzzīmēt attēlu vai nākt klajā ar kādu garīgās attēlu no tā galvu. 1308 01:01:47,580 --> 01:01:51,120 Tālāk, rakstīt pseudocode šim. 1309 01:01:51,120 --> 01:01:53,120 Uz viktorīnu, ja viss jums ir pseudocode, vismaz jūs 1310 01:01:53,120 --> 01:01:54,550 likt kaut ko uz leju. 1311 01:01:54,550 --> 01:02:00,070 Un tad karte, kas pseudocode uz C. Ja jums ir pārbaudīt ar jūsu 1312 01:02:00,070 --> 01:02:03,760 pseudocode, piemēram, pārbaudīt, ja kaut kas ir 1, ka kartes uz ja 1313 01:02:03,760 --> 01:02:05,750 stāvoklis un tā tālāk. 1314 01:02:05,750 --> 01:02:07,850 Un visbeidzot, kodētu programmu C. 1315 01:02:07,850 --> 01:02:15,000 >> Lai iet atpakaļ uz atoi un veikt piecas minūtes kodēt to uz lapas 1316 01:02:15,000 --> 01:02:19,480 papīrs, kas ir iespējams, ir apmēram cik ilgi jūs varētu uzņemties 1317 01:02:19,480 --> 01:02:21,260 viktorīna kodeksa atoi. 1318 01:02:21,260 --> 01:02:27,060 Piecas līdz 15 minūtes, no pieciem līdz 12, piecu līdz 10 minūtes, ir par summu 1319 01:02:27,060 --> 01:02:30,150 reizi, kad jūs vēlaties tērēt par šo jautājums viktorīnas. 1320 01:02:30,150 --> 01:02:31,670 Tātad, ņem piecas minūtes tagad, lūdzu. 1321 01:02:31,670 --> 01:02:35,957 Un, ja jums ir kādi jautājumi, paaugstināt savu roku un es atnākšu apkārt. 1322 01:02:35,957 --> 01:06:39,570 1323 01:06:39,570 --> 01:06:41,066 >> [SIDE SARUNAS] 1324 01:06:41,066 --> 01:08:35,279 1325 01:08:35,279 --> 01:08:37,580 >> Jason Hirschhorn: OK, lai tas bija piecas minūtes. 1326 01:08:37,580 --> 01:08:39,880 , Kas, iespējams, bija par summu laika jūs tērējat ka viktorīnu, 1327 01:08:39,880 --> 01:08:42,120 varbūt zemas šajā laikā. 1328 01:08:42,120 --> 01:08:44,010 Mēs Atgādinājums mazliet. 1329 01:08:44,010 --> 01:08:45,740 Sāksim kodēšanas to. 1330 01:08:45,740 --> 01:08:49,479 Un, ja mēs nesaņem visu ceļu cauri, atbildes uz šo un to 1331 01:08:49,479 --> 01:08:54,189 viktorīna jautājums ir pieejami, atkal, 2011 Rudens ir tad, kad šis jautājums 1332 01:08:54,189 --> 01:08:54,913 parādījās uz viktorīnas. 1333 01:08:54,913 --> 01:08:57,830 >> Un tas bija tā vērts astoņi punkti uz viktorīnas tad. 1334 01:08:57,830 --> 01:09:01,140 Astoņi punkti ir par augstu beigām punktu summa kaut ir vērts. 1335 01:09:01,140 --> 01:09:04,790 Lielākā daļa jautājumu ir diapazonā ar vienu līdz sešiem punktiem. 1336 01:09:04,790 --> 01:09:08,500 Tāpēc tas ir daudz grūtāks Jautājums, protams. 1337 01:09:08,500 --> 01:09:09,750 Var kāds saņemt mani sākās? 1338 01:09:09,750 --> 01:09:13,260 1339 01:09:13,260 --> 01:09:15,380 >> Vispār, ko mēs gatavojamies vēlaties darīt ar šo 1340 01:09:15,380 --> 01:09:17,550 darboties atoi, loģiski? 1341 01:09:17,550 --> 01:09:19,569 Ko mēs vēlamies darīt? 1342 01:09:19,569 --> 01:09:22,279 Tāpēc mēs esam gatavojas rakstīt daži pseudocode. 1343 01:09:22,279 --> 01:09:24,090 >> STUDENTU: Pārvērst rakstzīmes uz veseliem skaitļiem. 1344 01:09:24,090 --> 01:09:26,700 >> Jason Hirschhorn: Pārvērst rakstzīmes uz veseliem skaitļiem. 1345 01:09:26,700 --> 01:09:27,479 OK. 1346 01:09:27,479 --> 01:09:30,870 Tātad, cik rakstzīmes mēs esam būs nepieciešama, lai iet cauri? 1347 01:09:30,870 --> 01:09:32,295 >> STUDENTU: Visi no tiem. 1348 01:09:32,295 --> 01:09:34,100 >> STUDENTU: Visi simboli virknē. 1349 01:09:34,100 --> 01:09:35,540 >> Jason Hirschhorn: Visi rakstzīmes virknē. 1350 01:09:35,540 --> 01:09:42,180 Tātad, ja mēs vēlējāmies, lai iet caur katru rakstzīmju virknē, kas ir lieta 1351 01:09:42,180 --> 01:09:44,560 C mēs esam redzējuši, kas ļāva mums iet cauri katram 1352 01:09:44,560 --> 01:09:45,939 rakstzīmju virknē? 1353 01:09:45,939 --> 01:09:46,819 >> Studenti: uz cilpas. 1354 01:09:46,819 --> 01:09:48,069 >> Jason Hirschhorn: uz cilpas. 1355 01:09:48,069 --> 01:09:52,020 1356 01:09:52,020 --> 01:09:55,330 Tāpēc mēs esam gatavojas cilpa ar Katram varonim s. 1357 01:09:55,330 --> 01:10:00,940 >> Tad ko mēs gatavojas vēlaties darīt kad mēs iegūtu specifisko raksturu? 1358 01:10:00,940 --> 01:10:02,480 Saka, ka mēs esam kļūst pagājis 90. 1359 01:10:02,480 --> 01:10:03,460 Mēs saņemam 9. 1360 01:10:03,460 --> 01:10:04,240 Tas ir raksturs. 1361 01:10:04,240 --> 01:10:07,440 Ko mēs vēlamies darīt ar ka raksturs 9? 1362 01:10:07,440 --> 01:10:10,082 >> STUDENTU: Atņemt to no rakstura 0? 1363 01:10:10,082 --> 01:10:11,860 >> STUDENTU: Add 0? 1364 01:10:11,860 --> 01:10:13,350 >> Jason Hirschhorn: Atņemt to no rakstura 0? 1365 01:10:13,350 --> 01:10:13,800 >> STUDENTU: Jā. 1366 01:10:13,800 --> 01:10:15,573 >> Jason Hirschhorn: Kāpēc Jūs vēlaties to darīt? 1367 01:10:15,573 --> 01:10:16,560 >> STUDENTU: [dzirdams] 1368 01:10:16,560 --> 01:10:17,010 vērtību. 1369 01:10:17,010 --> 01:10:18,380 Tās int vērtību. 1370 01:10:18,380 --> 01:10:21,580 >> Jason Hirschhorn: Labi, tāpēc mēs raksturu 9, atņemt to no 1371 01:10:21,580 --> 01:10:25,820 raksturs 0 nokļūt Faktiskais skaitlis 9. 1372 01:10:25,820 --> 01:10:27,070 Salds. 1373 01:10:27,070 --> 01:10:31,255 1374 01:10:31,255 --> 01:10:37,000 Un kā jūs zināt, ka raksturu 9 mīnus 0 raksturs ir 9? 1375 01:10:37,000 --> 01:10:39,222 Kas diagrammas jūs apskatīt? 1376 01:10:39,222 --> 01:10:43,130 >> STUDENTU: Ir loģiski deviņi vietu starp 9 un 0. 1377 01:10:43,130 --> 01:10:44,620 Vai jūs varētu apskatīt ASCII tabulu. 1378 01:10:44,620 --> 01:10:45,120 >> Jason Hirschhorn: ASCII tabulu. 1379 01:10:45,120 --> 01:10:46,490 Bet jā, jūs pareizi, kā arī. 1380 01:10:46,490 --> 01:10:47,780 Tāpēc mēs atņemt 0. 1381 01:10:47,780 --> 01:10:49,010 Tāpēc tagad mums ir vesels skaitlis 9. 1382 01:10:49,010 --> 01:10:49,970 Un tas, ko mēs vēlamies darīt ar to? 1383 01:10:49,970 --> 01:10:54,970 Ja mums ir 90, tas ir pirmais skaitlis Mēs esam tas, ko mēs vēlamies darīt? 1384 01:10:54,970 --> 01:10:58,180 >> STUDENTU: Es gribētu īstenot pagaidu skaitlim masīvs, tad do math, lai to 1385 01:10:58,180 --> 01:11:02,088 vēlāk, lai padarītu to beigām. 1386 01:11:02,088 --> 01:11:03,020 >> Jason Hirschhorn: OK. 1387 01:11:03,020 --> 01:11:06,990 >> STUDENTU: Jūs varat sākt beigās masīvs un pēc tam virzīties uz priekšu, lai 1388 01:11:06,990 --> 01:11:10,350 ka katru reizi, kad jūs virzīties uz priekšu, jūs reizināt to ar 10. 1389 01:11:10,350 --> 01:11:10,830 >> Jason Hirschhorn: OK. 1390 01:11:10,830 --> 01:11:12,250 Tas izklausās diezgan pārliecinoši ideja. 1391 01:11:12,250 --> 01:11:16,040 Mēs var sākt beigās mūsu masīva, un mēs varam izmantot strleng. 1392 01:11:16,040 --> 01:11:17,030 Mēs varam izmantot strleng šeit. 1393 01:11:17,030 --> 01:11:18,870 Mēs iegūtu garuma mūsu virknes. 1394 01:11:18,870 --> 01:11:20,100 Mēs sākas beigās. 1395 01:11:20,100 --> 01:11:29,170 Un + pirmo, mēs tikai pieņemt, ka skaitlis, un varbūt mēs radām, piemēram 1396 01:11:29,170 --> 01:11:32,270 Jaunais skaitlis mainīgais up top, kur mēs esam glabāšanai viss. 1397 01:11:32,270 --> 01:11:37,340 Tāpēc mēs cilpa ar katru char s no atpakaļ uz priekšu, mēs atņemt 0, un 1398 01:11:37,340 --> 01:11:42,790 tad mēs ņemt to, un atkarībā no tā, ja tā ir, mēs pavairot to 1399 01:11:42,790 --> 01:11:45,860 ar jaudu 10. 1400 01:11:45,860 --> 01:11:50,644 Tāpēc, ka pirmais, ko mēs reizināt rightmost rakstzīmi? 1401 01:11:50,644 --> 01:11:51,440 >> Students: 10 līdz 0. 1402 01:11:51,440 --> 01:11:53,170 >> Jason Hirschhorn: 10 līdz 0. 1403 01:11:53,170 --> 01:11:56,010 Ko mēs reizināt otrajā tālākais raksturs, ko? 1404 01:11:56,010 --> 01:11:57,450 >> STUDENTU: [nedzirdama]. 1405 01:11:57,450 --> 01:11:57,960 >> Jason Hirschhorn: Kas? 1406 01:11:57,960 --> 01:11:59,150 >> Students: 10 ar 1. 1407 01:11:59,150 --> 01:12:00,420 >> Jason Hirschhorn: 10 ar 1. 1408 01:12:00,420 --> 01:12:03,754 Trešo tālākais raksturs? 1409 01:12:03,754 --> 01:12:04,580 >> Students: 10 ar 2. 1410 01:12:04,580 --> 01:12:05,350 >> Jason Hirschhorn: 10 uz 2. 1411 01:12:05,350 --> 01:12:07,200 >> STUDENTU: Atvainojiet, es nesaprotu tas, ko mēs darām šeit. 1412 01:12:07,200 --> 01:12:08,640 >> Jason Hirschhorn: OK, iesim atpakaļ, tad. 1413 01:12:08,640 --> 01:12:12,500 Tāpēc mēs esam gatavojas saņemt nodots virknē. 1414 01:12:12,500 --> 01:12:14,470 Tāpēc, ka mēs esam rakstiski atoi. 1415 01:12:14,470 --> 01:12:15,260 Lai mēs iegūtu pagājis virknē. 1416 01:12:15,260 --> 01:12:17,640 Saka, ka mēs esam kļūst nodots virknē 90. 1417 01:12:17,640 --> 01:12:19,930 >> Pirmā lieta, ko mēs gatavojamies darīt, ir noteikt jauna skaitlim mainīgais, kas mēs esam 1418 01:12:19,930 --> 01:12:22,150 tikai gatavojas, lai radītu kā mūsu jauno skaitlim. 1419 01:12:22,150 --> 01:12:24,630 Tas ir tas, ko mēs gatavojamies atgriezties beigās. 1420 01:12:24,630 --> 01:12:30,110 Mums ir nepieciešams, lai iet caur katru rakstura string jo mēs esam noteikuši, 1421 01:12:30,110 --> 01:12:34,430 ka mums ir nepieciešams, lai pieskarties katru vienu un Pēc tam pievienojiet to uz mūsu jauno skaitlim. 1422 01:12:34,430 --> 01:12:36,330 >> Bet mēs nevaram vienkārši pievienojiet to kā skaitli. 1423 01:12:36,330 --> 01:12:38,270 Mēs nevaram vienkārši ņemt 9 un Pievienot 9 mūsu skaitlim. 1424 01:12:38,270 --> 01:12:40,560 Tas atkarīgs no tā, kādu vietu tas ir virknē. 1425 01:12:40,560 --> 01:12:42,960 Mēs ejam, lai ir vairoties tas ar jaudu 10. 1426 01:12:42,960 --> 01:12:45,580 , Jo tas ir kā bāze 10 darbi. 1427 01:12:45,580 --> 01:12:49,050 >> Tāpēc mēs esam gatavojas saņemt faktisko raksturs, vai faktiskais skaitlis 1428 01:12:49,050 --> 01:12:53,860 numuru, atņemot raksturs 0 No rakstura 9, kā mēs to darījām ar 1429 01:12:53,860 --> 01:12:57,560 atņemot rakstzīmju kapitāla A no kāds raksturs mums bija viens no 1430 01:12:57,560 --> 01:12:58,120 šīs problēmas. 1431 01:12:58,120 --> 01:13:04,190 Tāpēc mēs faktiski iegūtu numuru no 0 līdz 9 saglabāts kā reālu skaitli, un mēs 1432 01:13:04,190 --> 01:13:07,590 reizināt to ar 10 jauda atkarībā par to, kur mēs esam virknē. 1433 01:13:07,590 --> 01:13:19,430 1434 01:13:19,430 --> 01:13:22,575 Un tad mēs ejam, lai pievienotu to atpakaļ mūsu jaunajā skaitlim mainīgo. 1435 01:13:22,575 --> 01:13:32,840 1436 01:13:32,840 --> 01:13:37,890 >> Tātad, ko tas izskatās būtu ir - mēs izdarīt vairāk nekā šeit. 1437 01:13:37,890 --> 01:13:40,086 Ja mēs nodots virknē 90 - 1438 01:13:40,086 --> 01:13:41,336 >> STUDENTU: [nedzirdama]. 1439 01:13:41,336 --> 01:13:43,190 1440 01:13:43,190 --> 01:13:45,540 >> Jason Hirschhorn: Bet atoi notiek virkni. 1441 01:13:45,540 --> 01:13:46,350 Tāpēc mēs esam gatavojas iet cauri saimniecība. 1442 01:13:46,350 --> 01:13:49,900 Mēs dabūsim pieņemts 90. 1443 01:13:49,900 --> 01:13:51,540 Mēs ejam no aizmugures uz priekšu. 1444 01:13:51,540 --> 01:13:53,920 Ņemam 0. 1445 01:13:53,920 --> 01:13:55,080 >> STUDENTU: Es atvainojos. 1446 01:13:55,080 --> 01:13:55,880 Varbūt tas ir stulbi. 1447 01:13:55,880 --> 01:13:59,440 Ja mēs esam kļūst pieņemts virkni, kāpēc ir 90, ko mēs esam 1448 01:13:59,440 --> 01:14:00,260 kļūst pieņemts? 1449 01:14:00,260 --> 01:14:03,160 Jo 90 ir vesels skaitlis. 1450 01:14:03,160 --> 01:14:06,820 >> Jason Hirschhorn: Tā atoi notiek stīgu un pārvērš to skaitlim 1451 01:14:06,820 --> 01:14:08,320 pārstāvība šīs virknes. 1452 01:14:08,320 --> 01:14:13,650 Bet string 90 nav vesels skaitlis 90 vai numuru 90. 1453 01:14:13,650 --> 01:14:17,920 String 90 ir masīvs no divām vai trīs rakstzīmes, bet, 9 1454 01:14:17,920 --> 01:14:22,740 raksturs, 0 raksturs, un slīpsvītru 0 raksturs. 1455 01:14:22,740 --> 01:14:26,260 >> Un mēs esam rakstiski atoi, jo, Piemēram, ja jūs lietojat komandu 1456 01:14:26,260 --> 01:14:30,230 line arguments, un tas ir saglabāts argv, tas ir saglabāts kā virkni. 1457 01:14:30,230 --> 01:14:32,940 Bet, ja jūs vēlaties, lai ārstētu to kā numuru, Jums ir nepieciešams, lai pārvērstu to 1458 01:14:32,940 --> 01:14:34,700 Faktiskais skaitlis. 1459 01:14:34,700 --> 01:14:37,210 Ko mēs darījām vienu no mūsu problēmu kopu. 1460 01:14:37,210 --> 01:14:38,800 Ko mēs darījām vairākos mūsu problēmu kopu. 1461 01:14:38,800 --> 01:14:41,690 Ikvienam, kas bija veselam skaitlim kā komandrindas arguments. 1462 01:14:41,690 --> 01:14:46,490 Tātad, tas ir, kāpēc mūsu atoi funkcija aizņem virkni. 1463 01:14:46,490 --> 01:14:51,910 >> Tātad vēlreiz, mūsu piemērā šeit, mēs esam gatavojas pieņemt pēdējais. 1464 01:14:51,910 --> 01:14:55,050 Mēs ejam, lai atņemtu raksturu 0 no tā, jo rakstzīmes 0 1465 01:14:55,050 --> 01:14:58,810 atņemti ar raksturu 0 dod jums Faktiskais skaitlis 0, saskaņā ar 1466 01:14:58,810 --> 01:15:00,950 ASCII math, ko mēs darām. 1467 01:15:00,950 --> 01:15:04,870 >> Jo rakstzīmes tiek pārstāvēja savādāki nekā to faktiskā - 1468 01:15:04,870 --> 01:15:08,830 raksturs, piemēram, mazie ir 97. 1469 01:15:08,830 --> 01:15:10,260 Tas nav - Oops! 1470 01:15:10,260 --> 01:15:13,290 Tas nav, ko jūs sagaidāt ka tas ir, 0, for example. 1471 01:15:13,290 --> 01:15:16,200 Tātad jums ir, lai atņemtu raksturs, lai saņemtu 0. 1472 01:15:16,200 --> 01:15:18,950 >> Tāpēc mēs gatavojamies darīt, ka šeit lai iegūtu faktisko skaitu. 1473 01:15:18,950 --> 01:15:22,560 Un tad mēs reizināt to ar jauda 10, atkarībā no tā, kur to 1474 01:15:22,560 --> 01:15:27,030 ir virknē, un tad tas un pievienot to mūsu vietā īpašniekam 1475 01:15:27,030 --> 01:15:32,520 mainīgais, lai mēs varētu nākt klajā ar mūsu gala jaunu skaitlim. 1476 01:15:32,520 --> 01:15:35,080 Vai tas ir jēga, lai visiem? 1477 01:15:35,080 --> 01:15:37,730 >> Tāpēc mēs nebrauksim kodēt šo tieši tagad, jo mēs esam 1478 01:15:37,730 --> 01:15:38,830 iegūt īsā laikā. 1479 01:15:38,830 --> 01:15:40,860 Es atvainojos par to laiku, kas. 1480 01:15:40,860 --> 01:15:44,620 Bet tas ir tas, kas, cerams, jūs varētu varētu darīt uz viktorīnas - pie 1481 01:15:44,620 --> 01:15:47,710 Vismaz, saņemt šo pseudocode uzrakstīts. 1482 01:15:47,710 --> 01:15:50,840 >> Un tad, ja mēs rakstītu pseudocode, patiesībā, mēs varētu to izdarīt 1483 01:15:50,840 --> 01:15:51,490 diezgan ātri. 1484 01:15:51,490 --> 01:15:55,230 Katrs no komentāriem līniju mēs rakstījām šeit pārveido par 1485 01:15:55,230 --> 01:15:56,970 viena līnija C kodu. 1486 01:15:56,970 --> 01:16:01,780 Deklarē jaunu mainīgo, rakstot cilpa, daži atņemšanu, daži 1487 01:16:01,780 --> 01:16:07,070 reizināšanu, un daži uzdevums. 1488 01:16:07,070 --> 01:16:09,020 Mēs droši vien arī vēlas, lai rakstīt atgriešanās līniju. 1489 01:16:09,020 --> 01:16:12,040 Mēs varētu arī vēlaties, lai dažas pārbaudes šeit. 1490 01:16:12,040 --> 01:16:12,655 Jā. 1491 01:16:12,655 --> 01:16:15,720 >> STUDENTU: Tātad mēs varam ārstēt s kā faktisko virknes? 1492 01:16:15,720 --> 01:16:18,730 Jo es zinu, tas ir tikai adresi. 1493 01:16:18,730 --> 01:16:22,090 Tāpat, kā jūs saņemsiet garumu string ir pabijuši? 1494 01:16:22,090 --> 01:16:25,310 >> Jason Hirschhorn: Tātad, kā to darīja garuma virknes? 1495 01:16:25,310 --> 01:16:25,830 Strlen. 1496 01:16:25,830 --> 01:16:26,660 >> STUDENTU: strlen, jā. 1497 01:16:26,660 --> 01:16:30,550 Bet jūs varat nodot s kā arguments par to? 1498 01:16:30,550 --> 01:16:34,620 >> Jason Hirschhorn: So strlen aizņem char zvaigzne. 1499 01:16:34,620 --> 01:16:38,090 Un no tā izriet, ka char zvaigzne, un tas tur skaitot līdz tas izpaužas 1500 01:16:38,090 --> 01:16:41,865 slīpsvītru 0. strlen faktiski viens no citas programmas, mēs 1501 01:16:41,865 --> 01:16:42,850 gatavojas kodu. 1502 01:16:42,850 --> 01:16:44,560 Tas ir vēl viens labs vienu kodu. 1503 01:16:44,560 --> 01:16:47,270 Tas viens ir mazliet vieglāk, jo, ja jūs gatavojas domāt par to, ka 1504 01:16:47,270 --> 01:16:47,830 konceptuāli - 1505 01:16:47,830 --> 01:16:51,620 Es tikai teicu to skaļi - strlen šādi rādītājs un tur notiek, un 1506 01:16:51,620 --> 01:16:54,210 skaitīšanas un sekotu līdz jūs sasniedzat slīpsvītru 0. 1507 01:16:54,210 --> 01:16:56,530 >> STUDENTU: Labi, got to. 1508 01:16:56,530 --> 01:17:00,200 >> Jason Hirschhorn: Tāpēc novēlu luck par viktorīnas 0 rīt. 1509 01:17:00,200 --> 01:17:03,170 Ja Jums ir kādi jautājumi, es ņemšu jāatrodas ārpus pēc tam. 1510 01:17:03,170 --> 01:17:05,610 Justies brīvi, rakstiet man. 1511 01:17:05,610 --> 01:17:08,480 Panākt, lai jūsu pašu TF, ja esat nav manā sadaļā, vai arī saņemt savu 1512 01:17:08,480 --> 01:17:10,005 e-pastu, ja jūs vēlaties to. 1513 01:17:10,005 --> 01:17:13,140 >> Ja jūs vēlaties, lai ķēms, un tikai sūtīt man e-pastu, freakout e-pastu, es ņemšu 1514 01:17:13,140 --> 01:17:16,710 nosūtīt jums atpakaļ, piemēram, smiley sejas, vai, piemēram, joks vai kaut ko. 1515 01:17:16,710 --> 01:17:18,190 Lai justies brīvi darīt, kā labi. 1516 01:17:18,190 --> 01:17:20,750 Good luck atkal, un es ņemšu see you all nākamnedēļ. 1517 01:17:20,750 --> 01:17:23,435