1 00:00:00,000 --> 00:00:02,742 2 00:00:02,742 --> 00:00:05,680 >> SPEAKER 1: Saluton ĉiuj. 3 00:00:05,680 --> 00:00:07,530 Ni tuj komencu. 4 00:00:07,530 --> 00:00:09,330 Mi pensas, ke homoj ankoraŭ irante esti filtrita en. 5 00:00:09,330 --> 00:00:12,840 Sed en la intereso de tempo, tial ni povas ekiru infanoj el tie ĝustatempe, 6 00:00:12,840 --> 00:00:14,110 Ni tuj komencu. 7 00:00:14,110 --> 00:00:18,780 Do bonvenon al la CS50 Kvizo 0 recenzo. 8 00:00:18,780 --> 00:00:23,020 Por tiuj de vi kiu ne rimarkis tamen, vi havas demandon merkrede. 9 00:00:23,020 --> 00:00:25,700 Woo-hu. 10 00:00:25,700 --> 00:00:29,780 >> Se vi ne komencis studi ankoraŭ aŭ ne konsciis ke tio ekzistas ankoraŭ, 11 00:00:29,780 --> 00:00:34,070 estinteco kvizojn kaj ĉiuj informoj pri via kvizo estas sur cs50.net/quizzes. 12 00:00:34,070 --> 00:00:38,090 Ekzistas iuj sufiĉe bonaj aĵoj en tie, estinteco kvizojn el la lasta 10 13 00:00:38,090 --> 00:00:43,760 jaroj tiel kiel informo pri tiu demandaro kaj temoj 14 00:00:43,760 --> 00:00:46,250 ke estos kovrita. 15 00:00:46,250 --> 00:00:48,980 Do ni komencu. 16 00:00:48,980 --> 00:00:54,240 >> Do vi uloj povas memori la unuan tago de klaso David tiuj lampoj sur. 17 00:00:54,240 --> 00:00:59,650 Do esence, ĉiu kiu iras sur sub la kapuĉo de komputilo estas 18 00:00:59,650 --> 00:01:00,860 farita en duuma. 19 00:01:00,860 --> 00:01:04,080 Duuma signifas kion ĝi sonas kiel, 0-aj kaj 1-oj. 20 00:01:04,080 --> 00:01:09,290 Ĝi havas du valoroj kiuj povas esti reprezentitaj. 21 00:01:09,290 --> 00:01:14,675 >> Do ĝuste kiel en la unua tago de la sekcio Kiam David ŝaltis lumon 22 00:01:14,675 --> 00:01:21,990 bulbo reprezenti, aŭ 1, nia komputilo komprenas binaran kiel 0-aj kaj 23 00:01:21,990 --> 00:01:24,110 1-oj, sur aŭ ekstere. 24 00:01:24,110 --> 00:01:25,360 Bazaj de Binaraj. 25 00:01:25,360 --> 00:01:29,440 26 00:01:29,440 --> 00:01:32,470 CXiu loko estas reprezentita en bazo du. 27 00:01:32,470 --> 00:01:36,260 Do vi aldonas 2 al la 0 al la 1 por la 2 tutan vojon supren. 28 00:01:36,260 --> 00:01:41,970 >> Kalkuli kio via binara estas decimala, vi nur sekvas ĉi ekvacio 29 00:01:41,970 --> 00:01:42,840 tipo afero. 30 00:01:42,840 --> 00:01:49,510 Se vi havas 1 en ajna el tiuj lokoj, vi multigos gxin per nenial 31 00:01:49,510 --> 00:01:53,820 bazi ĝi estas, aldonu ĝin, kaj vi havos la dekuma. 32 00:01:53,820 --> 00:01:57,930 Do jen kiel vi kalkuli 5 en duuma. 33 00:01:57,930 --> 00:02:01,400 Ĝuste kiel kion ni faris en la lasta diapozitivoj, jen kiel vi farus 34 00:02:01,400 --> 00:02:02,650 reprezenti 1 ĝis 5. 35 00:02:02,650 --> 00:02:05,320 36 00:02:05,320 --> 00:02:09,660 >> Simile, simple ŝatas vin povas aldoni kaj subtrahi en dekuma aŭ bazo 10, aŭ 37 00:02:09,660 --> 00:02:13,040 vere neniun bazon, sur povas aldoni kaj subtrahi en duuma. 38 00:02:13,040 --> 00:02:18,400 Ĝuste kiel atendite kiam aldonu la du supren, se ĝi egalas granda 39 00:02:18,400 --> 00:02:24,220 ol 1, vi portas 1, faru gxin al 0, kaj fari la aldono ke vojo, nur 40 00:02:24,220 --> 00:02:29,910 kiel atendite per regulaj dekuma aŭ ajna alia bazo. 41 00:02:29,910 --> 00:02:30,970 Cool. 42 00:02:30,970 --> 00:02:35,140 >> Tiel kiel mi diris antaŭe, ĉio daŭrigas sub la kapuĉo de nia komputilo 43 00:02:35,140 --> 00:02:37,560 estas farita en 0-aj kaj 1-oj aux binaraj. 44 00:02:37,560 --> 00:02:43,470 Do kiel ni esprimas, ekzemple, literoj aŭ ciferoj, aŭ karakteroj? 45 00:02:43,470 --> 00:02:45,560 Kaj la respondo al tio estas ASCII. 46 00:02:45,560 --> 00:02:49,380 >> ASCII estas surĵeto inter karakteroj ke ni kutime vidas en la 47 00:02:49,380 --> 00:02:53,360 Angla lingvo kiel A'S B, C estas, substreki, streketoj, kaj 48 00:02:53,360 --> 00:02:54,910 io simila. 49 00:02:54,910 --> 00:02:57,260 Kaj mapas ke al ASCII valoro. 50 00:02:57,260 --> 00:03:03,080 An ASCII valoro estas nur numero kiu povas esti komprenita per via komputilo. 51 00:03:03,080 --> 00:03:07,430 Kaj kiel vi povas fari krom kaj subtraho kun nombroj, vi povas fari 52 00:03:07,430 --> 00:03:10,890 ilin per ASCII valoroj. 53 00:03:10,890 --> 00:03:14,050 >> Do en ĉi tiu ekzemplo, kion estos ĉi elprinti? 54 00:03:14,050 --> 00:03:26,790 55 00:03:26,790 --> 00:03:35,480 Yeah, do nur Spaco B spaco C spaco D. Kien mia muso iras? 56 00:03:35,480 --> 00:03:39,200 57 00:03:39,200 --> 00:03:43,380 Rimarku vi povas difini int ĉe 65. 58 00:03:43,380 --> 00:03:47,080 Kaj kiam vi presas ke el uzanta procento C, ĝi devos interpreti tion kiel 59 00:03:47,080 --> 00:03:49,330 karaktero kaj presi A. 60 00:03:49,330 --> 00:03:52,800 >> Simile, oni povas deklari kiel signo. 61 00:03:52,800 --> 00:03:56,860 Kaj kiam vi presas ĝin uzante procento C, ĝi devos interpreti ke 62 00:03:56,860 --> 00:04:05,240 procento D. Kaj ĝuste kiel vi povas aldoni nombro, vi povas aldoni rolantoj 63 00:04:05,240 --> 00:04:06,878 ASCII valoroj, en ĉi tiu kazo. 64 00:04:06,878 --> 00:04:11,370 65 00:04:11,370 --> 00:04:16,130 >> Do iom puntero por ĉiuj. 66 00:04:16,130 --> 00:04:19,610 5, kiel kordo, ne fakte egalas 5. 67 00:04:19,610 --> 00:04:26,610 Do kiom eble ni konverti la kordo 5 por la entjero 5? 68 00:04:26,610 --> 00:04:28,930 Ajna ideoj? 69 00:04:28,930 --> 00:04:31,630 Yeah. 70 00:04:31,630 --> 00:04:36,720 >> Do se ni havas 5 kiel kordo, ni povas subtrahi 0. 71 00:04:36,720 --> 00:04:37,820 Kaj tio donos al ni 5. 72 00:04:37,820 --> 00:04:41,670 Kaj simile, se ni havas 5 kiel entjera, aldoni ke la kordo 0. 73 00:04:41,670 --> 00:04:43,112 Kaj kiu donas al ni la ŝnuron 5. 74 00:04:43,112 --> 00:04:46,350 75 00:04:46,350 --> 00:04:48,350 Cool. 76 00:04:48,350 --> 00:04:52,940 >> Nun, memoras reen al prelegi kie Ni parolis pri algoritmoj. 77 00:04:52,940 --> 00:04:57,260 Do kiel ni vere volas komputilo fari interesajn aferojn? 78 00:04:57,260 --> 00:05:00,460 Sciu, simple aldonante kaj forprenante nombroj kaj impreso aferojn ne 79 00:05:00,460 --> 00:05:01,730 ke ekscita. 80 00:05:01,730 --> 00:05:04,620 Kutime ni volas nian komputilon plenumi ian algoritmo. 81 00:05:04,620 --> 00:05:07,820 Iu iom pli kompleksa ol simpla aritmetiko. 82 00:05:07,820 --> 00:05:11,930 >> Algoritmo estas nur paŝo post paŝo aro de instrukcioj por kiel plenumi 83 00:05:11,930 --> 00:05:14,640 iu task-- 84 00:05:14,640 --> 00:05:15,660 nur ŝatas recepto. 85 00:05:15,660 --> 00:05:19,990 Vi eble memoras la unuan tagon de klaso kie David ni kalkulu ĉambron 86 00:05:19,990 --> 00:05:22,550 homoj kaj kiom da homoj estis en la ĉambro. 87 00:05:22,550 --> 00:05:24,480 Vi povus uzi por kalkula unu post unu. 88 00:05:24,480 --> 00:05:25,860 1, 2, 3, 4. 89 00:05:25,860 --> 00:05:28,010 En tiu kazo, lineara tempa algoritmo. 90 00:05:28,010 --> 00:05:31,710 >> Sed David enkondukita algoritmo por vi kalkulu la popolon en la ĉambro 91 00:05:31,710 --> 00:05:37,340 kie ĉiuj ekstaras, vi diras via numeron alian personon, aldoni ke 92 00:05:37,340 --> 00:05:39,200 nombro, kaj unu persono sidiĝas. 93 00:05:39,200 --> 00:05:40,410 Kaj vi ripetis tion. 94 00:05:40,410 --> 00:05:42,910 Tio estas unu tipo de algoritmo. 95 00:05:42,910 --> 00:05:47,520 Ni povas analizi kiel efika ĝi algoritmo estas bazita sur ĝi estas kuri tempo. 96 00:05:47,520 --> 00:05:49,680 Sed ni parolos iomete pli pri tio poste. 97 00:05:49,680 --> 00:05:52,740 98 00:05:52,740 --> 00:05:57,090 >> Do ĉiuj algoritmoj povas ankaŭ esti skribita en _pseudocode_. 99 00:05:57,090 --> 00:06:01,120 _pseudocode_ Estas nur angla kiel sintakso uzata por reprezenti 100 00:06:01,120 --> 00:06:02,420 programlingvo. 101 00:06:02,420 --> 00:06:06,070 Ekzemple, se ni volis demandi uzanto diveni mia ŝatata nombro, ni 102 00:06:06,070 --> 00:06:08,390 havu _pseudocode_ kiel tia. 103 00:06:08,390 --> 00:06:09,850 >> Akiru uzantoj diveni. 104 00:06:09,850 --> 00:06:13,570 Se la diveno estas ĝusta, diru ilin ili estas ĝentila, alie diri ilin 105 00:06:13,570 --> 00:06:15,560 ili ne estas korekta. 106 00:06:15,560 --> 00:06:22,530 Kaj _pseudocode_ estas maniero de facile reprezenti ideon aŭ algoritmo. 107 00:06:22,530 --> 00:06:26,910 Do nun ni eble volas reale skribi tion en la lingvo kiun la komputilo 108 00:06:26,910 --> 00:06:27,980 multobligita kompreno. 109 00:06:27,980 --> 00:06:35,660 Do ni povus skribi nian _pseudocode_ kaj interpreti ke en fontkodon. 110 00:06:35,660 --> 00:06:41,320 >> Ĝis nun, fontokodo devas aliĝi al certa sintakso de 111 00:06:41,320 --> 00:06:42,490 programlingvo. 112 00:06:42,490 --> 00:06:45,430 Kaj ĝis nun, en CS50, ni estis uzante plejparte c. 113 00:06:45,430 --> 00:06:48,320 Do eble ĉi fontkodon por c. 114 00:06:48,320 --> 00:06:51,440 Poste en la kurso, vi nokto venas en kontakton kun aliaj programado 115 00:06:51,440 --> 00:06:52,480 lingvoj kiel PHP. 116 00:06:52,480 --> 00:06:57,540 Aŭ se vi eĉ preni aliaj klasoj, vi plenumadu Java, Python, aŭ eĉ OCML. 117 00:06:57,540 --> 00:07:01,570 Sed en nia c programo lingvoregionoj, kiel ni povus skribi la kodon fonto 118 00:07:01,570 --> 00:07:04,760 la _pseudocode_ algoritmo kiu Mi nur priskribis antaŭe. 119 00:07:04,760 --> 00:07:08,630 120 00:07:08,630 --> 00:07:11,430 >> Do kiel faras via komputilo reale kompreni tion? 121 00:07:11,430 --> 00:07:14,490 Kiel mi diris antaŭe, nur vere Komprenas nuloj kaj. 122 00:07:14,490 --> 00:07:17,880 Do kiel ĝi ricevas de la fonto kodo por iu kiu povas esti 123 00:07:17,880 --> 00:07:18,960 komprenis? 124 00:07:18,960 --> 00:07:22,920 Nu, ni havas ion nomata tradukilo. 125 00:07:22,920 --> 00:07:28,450 >> Se vi memoras reen en la plejparto de via psets, vi havis ian programon 126 00:07:28,450 --> 00:07:30,370 skribita en punkto c dosieron. 127 00:07:30,370 --> 00:07:32,550 Kaj tiam vi tajpi konsisto. 128 00:07:32,550 --> 00:07:35,970 Do kion fari faras? 129 00:07:35,970 --> 00:07:39,970 >> Vi povas tajpi make kompili via programo ĉar someone-- 130 00:07:39,970 --> 00:07:42,730 kiu skribis via p aro; verŝajne David-- 131 00:07:42,730 --> 00:07:44,190 kreis make dosiero. 132 00:07:44,190 --> 00:07:51,320 Kaj kiu rakontas fari scii kuri via tradukilo, nomita tin, ke volo 133 00:07:51,320 --> 00:07:55,560 tiam kompili vian fontkodon kontesti kodo, kiu estas nuloj kaj 134 00:07:55,560 --> 00:07:57,720 ke via komputilo komprenu. 135 00:07:57,720 --> 00:08:01,610 Sed iom pli poste, ni iros pli en profundo sur tradukiloj. 136 00:08:01,610 --> 00:08:05,640 137 00:08:05,640 --> 00:08:10,800 >> Do memoru pset 0, where-- jes, vi havas demandon? 138 00:08:10,800 --> 00:08:11,620 >> Publiko: [inaudible]? 139 00:08:11,620 --> 00:08:12,490 >> SPEAKER 1: Jes. 140 00:08:12,490 --> 00:08:14,960 Mi pensas ke ili reale devus esti enreta. 141 00:08:14,960 --> 00:08:15,120 Yeah. 142 00:08:15,120 --> 00:08:16,572 >> Publiko: Ĉu kiel [inaudible]? 143 00:08:16,572 --> 00:08:19,476 144 00:08:19,476 --> 00:08:20,830 >> SPEAKER 1: ĝi ne estas. 145 00:08:20,830 --> 00:08:25,810 La estas sur cs50.net/quizzes. 146 00:08:25,810 --> 00:08:32,900 >> Publiko: Slash kvizojn, slash 2013, slash 0, kaj simple premas per 147 00:08:32,900 --> 00:08:35,956 kvizojn 2013 kaj kvizo 0, revizii sekcio diapozitivoj. 148 00:08:35,956 --> 00:08:40,380 >> SPEAKER 1: Yeah, do se vi infanoj volos tiri ĝin kaj rigardu ĝin sur vian 149 00:08:40,380 --> 00:08:42,740 propra komputilo, jen delikata tro. 150 00:08:42,740 --> 00:08:43,130 Diru tion denove. 151 00:08:43,130 --> 00:08:44,546 >> Publiko: [inaudible]. 152 00:08:44,546 --> 00:08:48,780 >> SPEAKER 1: Yeah, [inaudible] estas la loka variablo. 153 00:08:48,780 --> 00:08:49,644 Ho, jes? 154 00:08:49,644 --> 00:08:51,372 >> Publiko: [inaudible]? 155 00:08:51,372 --> 00:08:54,300 >> SPEAKER 1: Ne, strikoj ne estas en la ekzameno. 156 00:08:54,300 --> 00:08:55,950 Pardonu, ŝia demando estis, estis strikoj en la ekzameno. 157 00:08:55,950 --> 00:08:59,530 Kaj ĝi ne estas. 158 00:08:59,530 --> 00:09:05,780 Do pset 0, vi uloj devus havi ĉiuj implementado ion uzante nulo. 159 00:09:05,780 --> 00:09:13,100 Kaj ni lernis kelkajn bazajn programado konstruelementoj uzante nulo. 160 00:09:13,100 --> 00:09:15,590 >> Do ni rigardu iujn de tiuj konstruelementoj 161 00:09:15,590 --> 00:09:18,170 konsistigantaj programon. 162 00:09:18,170 --> 00:09:20,570 Unue estas Bulea esprimo. 163 00:09:20,570 --> 00:09:24,540 Buleaj esprimoj estas bonaj kaj 0 aŭ de io kiu havas 164 00:09:24,540 --> 00:09:25,700 du eblajn valorojn. 165 00:09:25,700 --> 00:09:30,320 En tiu kazo, vera aŭ malvera, aŭ malŝalti, kaj jes aŭ ne. 166 00:09:30,320 --> 00:09:35,390 Ekzemplo de simpla, tre simpla, Programo kiu uzas Bulea 167 00:09:35,390 --> 00:09:39,140 esprimon ĉi tie. 168 00:09:39,140 --> 00:09:43,220 >> Do en ordo por bulea esprimoj utila, ni havas Bulea operatoroj. 169 00:09:43,220 --> 00:09:48,920 Tiuj estas telefonistoj kiuj povas esti uzitaj kompari iuj valoroj. 170 00:09:48,920 --> 00:09:52,820 Do ni havas kaj aŭ ne egalas, malpli ol aŭ egala al, pli granda ol aŭ 171 00:09:52,820 --> 00:09:55,130 egala al, kaj malpli ol aŭ pli granda ol. 172 00:09:55,130 --> 00:09:59,060 Sed ĉi tiuj operatoroj estas ne tre utila se ni povas kombini ilin en 173 00:09:59,060 --> 00:10:00,320 kondiĉoj. 174 00:10:00,320 --> 00:10:04,370 >> Do vi uloj povas memori de nulo kaj de viaj p prende ke ni 175 00:10:04,370 --> 00:10:05,400 havis kondiĉojn. 176 00:10:05,400 --> 00:10:09,710 Ili estas, esence, kiel forkoj en la logikon de via programo kiu 177 00:10:09,710 --> 00:10:12,670 ekzekutu dependanta sur ĉu kondiĉo estas konita. 178 00:10:12,670 --> 00:10:18,150 Do unu el la kondiĉoj kiujn ni devis uzis multfoje en ĉi tiu kurso estas la 179 00:10:18,150 --> 00:10:21,470 se, alie se, kaj alie kondiĉoj. 180 00:10:21,470 --> 00:10:24,060 >> Jen ekzemplo de kiel vi povus uzi tion. 181 00:10:24,060 --> 00:10:28,430 Ĉu iu scias la diferencon inter nur uzante se deklaroj ĉiuj 182 00:10:28,430 --> 00:10:32,530 la vojo malsupren versoj se, alie, se, kaj alie kombinita? 183 00:10:32,530 --> 00:10:33,013 Jes? 184 00:10:33,013 --> 00:10:34,263 >> Publiko: [inaudible]. 185 00:10:34,263 --> 00:10:40,741 186 00:10:40,741 --> 00:10:42,160 >> SPEAKER 1: Ekzakte. 187 00:10:42,160 --> 00:10:50,210 Do se mi havus se la tuta vojo malsupren ĉi vojo, eĉ se tiu kondiĉo revenoj 188 00:10:50,210 --> 00:10:52,800 vera, ĝi ankoraŭ daŭrigas provante la venontaj du. 189 00:10:52,800 --> 00:11:00,120 Dum, kun alia-se, kiel ajn deklaro, se oni redonas vera, 190 00:11:00,120 --> 00:11:02,640 la aliaj ne provitaj. 191 00:11:02,640 --> 00:11:05,955 Demandojn pri tio? 192 00:11:05,955 --> 00:11:06,890 Cool. 193 00:11:06,890 --> 00:11:12,240 >> Do vi uzas se-alie de alia komunikaĵo se vi scias ke ĝi povas nur 194 00:11:12,240 --> 00:11:14,470 esti unu el tiuj kazoj. 195 00:11:14,470 --> 00:11:21,550 Do ni scias se x estas malpli ol 0, estas certe ne tuj estos 196 00:11:21,550 --> 00:11:22,890 pli granda ol 0. 197 00:11:22,890 --> 00:11:26,940 198 00:11:26,940 --> 00:11:31,480 >> Tuj poste, alia konstruaĵo bloko ke ni lernis estas cikloj. 199 00:11:31,480 --> 00:11:33,310 Ni havas tri tipojn de cikloj. 200 00:11:33,310 --> 00:11:35,830 Por masxojn, dum maŝojn, kaj fari dum maŝojn. 201 00:11:35,830 --> 00:11:38,730 Kaj ĝenerale, kiam vi sidas malsupren skribi ion, vi devas decidi 202 00:11:38,730 --> 00:11:40,060 kiu el la tri kiun vi volas uzi. 203 00:11:40,060 --> 00:11:41,900 Do kiel ni decidi kiu unu? 204 00:11:41,900 --> 00:11:44,920 205 00:11:44,920 --> 00:11:48,790 >> Ni ĝenerale uzas por buklo se ni scias kiom da fojoj ni volas persisti 206 00:11:48,790 --> 00:11:53,650 tra iu aŭ kiomfoje ni volas realigi taskon. 207 00:11:53,650 --> 00:11:58,830 Ni uzos dum maŝojn se ni bezonas iujn kondiĉo por esti vera teni kurado. 208 00:11:58,830 --> 00:12:03,730 Kaj ni uzas fari dum tre simila al dum, sed ni volas nian kodo kuri je 209 00:12:03,730 --> 00:12:04,880 Almenaŭ unu fojo. 210 00:12:04,880 --> 00:12:09,410 >> Do fari momenton, kio estas la la do volas ĉiam kuras almenaŭ unu fojo. 211 00:12:09,410 --> 00:12:13,120 Dum kiu, kun la tempo, ĝi ne kuras tute se la 212 00:12:13,120 --> 00:12:15,490 kondiĉo ne estas kontenta. 213 00:12:15,490 --> 00:12:16,740 Demandojn kun tiu? 214 00:12:16,740 --> 00:12:20,480 215 00:12:20,480 --> 00:12:22,860 >> Do strukturo de a por buklo. 216 00:12:22,860 --> 00:12:23,620 Vi infanoj ĉiuj vidis ĉi. 217 00:12:23,620 --> 00:12:25,320 Vi pravalorizi ĝin. 218 00:12:25,320 --> 00:12:26,600 Vi havas ia kondiĉo. 219 00:12:26,600 --> 00:12:32,340 Do, ekzemple, ni povus pravalorizi kiel i egalas 0. 220 00:12:32,340 --> 00:12:34,040 i estas malpli ol 10. 221 00:12:34,040 --> 00:12:35,442 Kaj i ++. 222 00:12:35,442 --> 00:12:39,010 Tre simpla kiu ni faris. 223 00:12:39,010 --> 00:12:42,210 >> Dum momento buklo, simile, vi havas havi ian inicialización, 224 00:12:42,210 --> 00:12:44,980 ia kondiĉo, kaj ia ĝisdatigo. 225 00:12:44,980 --> 00:12:51,990 Do ni povas apliki niajn por buklo ankaŭ kiel dum buklo uzanta ĉi. 226 00:12:51,990 --> 00:12:56,000 Kaj simile kun la do dum buklo, ni havu iom inicialización, 227 00:12:56,000 --> 00:12:58,640 ekzekuti ion, ĝisdatigi ĝin, kaj tiam kontrolu la kondiĉo. 228 00:12:58,640 --> 00:13:03,500 229 00:13:03,500 --> 00:13:05,140 >> Do nun funkcioj. 230 00:13:05,140 --> 00:13:06,460 Ni metu cxion kune. 231 00:13:06,460 --> 00:13:10,140 Ni eble volas skribi iun speco de funkcio. 232 00:13:10,140 --> 00:13:12,790 Komuna funkcio kiu vi povus vidis jam estas ĉefa. 233 00:13:12,790 --> 00:13:13,770 Ĉefa estas funkcio. 234 00:13:13,770 --> 00:13:16,160 Ĝi havas reveno tipo, int. 235 00:13:16,160 --> 00:13:18,470 Ĝi havas funkcion nomo, ĉefaj. 236 00:13:18,470 --> 00:13:20,810 Kaj ĝi havas argumentojn, argc kaj argv. 237 00:13:20,810 --> 00:13:24,040 Do ĉefa estas simple funkcio. 238 00:13:24,040 --> 00:13:27,230 >> Aliaj funkcioj vi povus esti uzita, printf-- printf estas function-- 239 00:13:27,230 --> 00:13:29,330 GetInt, toupper. 240 00:13:29,330 --> 00:13:32,010 Sed tiuj hazarde estis implementado por ni 241 00:13:32,010 --> 00:13:33,270 ian bibliotekon. 242 00:13:33,270 --> 00:13:37,400 Se vi uloj memori inkludante ĉi CS50.h bibliotekon aŭ la 243 00:13:37,400 --> 00:13:38,510 standard I / O biblioteko. 244 00:13:38,510 --> 00:13:39,200 Jes, pridubas? 245 00:13:39,200 --> 00:13:41,610 >> Publiko: Is ĉefa ĝuste imanenta en c? 246 00:13:41,610 --> 00:13:44,740 Ĉu ĝi simple speco de [inaudible]? 247 00:13:44,740 --> 00:13:47,370 >> SPEAKER 1: La demando estas se ĉefa estas imanenta en c. 248 00:13:47,370 --> 00:13:51,460 Kaj jes, ĉiuj funkcioj havas ĉefan funkcion. 249 00:13:51,460 --> 00:13:55,290 Estas speco de necesaj por la komputilo scii kie komenci 250 00:13:55,290 --> 00:13:55,993 kuri la kodon. 251 00:13:55,993 --> 00:13:58,108 >> Publiko: Do ​​vi ne volis [inaudible]? 252 00:13:58,108 --> 00:13:59,480 >> SPEAKER 1: Ne 253 00:13:59,480 --> 00:14:00,760 Ajna alia demandoj? 254 00:14:00,760 --> 00:14:03,430 255 00:14:03,430 --> 00:14:04,770 Cool. 256 00:14:04,770 --> 00:14:08,050 Do kiel vi povas uzi funkcio ke estas skribita por vi, vi povas ankaŭ 257 00:14:08,050 --> 00:14:10,380 skribi vian propran funkcion. 258 00:14:10,380 --> 00:14:17,050 Tiu estas funkcio kiu iu potenco skribis kalkuli la volumo 259 00:14:17,050 --> 00:14:18,395 de q, ekzemple. 260 00:14:18,395 --> 00:14:21,300 261 00:14:21,300 --> 00:14:29,500 Ekzistas reveno tipo tie, en tiu kazo int, nia funkcio nomo q kaj nia 262 00:14:29,500 --> 00:14:31,360 Listo de parametroj. 263 00:14:31,360 --> 00:14:34,550 >> Kaj rimarku, ke vi devas skribi la datumojn tipo de la parametro vi volas 264 00:14:34,550 --> 00:14:38,660 uzi alie la funkcio ne scii kia 265 00:14:38,660 --> 00:14:41,650 parametro mi devus esti akcepto. 266 00:14:41,650 --> 00:14:48,110 Do, en ĉi tiu kazo, ni volas entjero kiel nia eniro. 267 00:14:48,110 --> 00:14:50,390 Do kial povus ni volas uzi funkciojn? 268 00:14:50,390 --> 00:14:52,800 >> Unue, granda organizo. 269 00:14:52,800 --> 00:14:56,350 Ili helpas rompi vian kodon en pli organizita pecoj kaj fari 270 00:14:56,350 --> 00:14:57,960 pli facile legebla. 271 00:14:57,960 --> 00:14:59,760 Simpligo. 272 00:14:59,760 --> 00:15:01,740 Tio estas bona por la dezajno. 273 00:15:01,740 --> 00:15:04,570 Kiam vi legas koderon kaj la ĉefa funkcio estas vere, 274 00:15:04,570 --> 00:15:07,750 vere longaj, eble estus pli malfacile kialo pri kio okazas. 275 00:15:07,750 --> 00:15:11,710 Do se vi rompi ĝin malsupren en funkcioj eble estus pli facile legi. 276 00:15:11,710 --> 00:15:12,750 Kaj reutilizar-kapablecon. 277 00:15:12,750 --> 00:15:16,940 Se vi havas eron de kodo kiu estas esti nomita aŭ kuras multnombraj fojoj, 278 00:15:16,940 --> 00:15:20,690 anstataux reskribi ke kodo 10 fojojn en via ĉefa funkcio, vi povus 279 00:15:20,690 --> 00:15:21,440 volas reuzi ĝin. 280 00:15:21,440 --> 00:15:25,740 Kaj tiam ĉiu tempo vi bezonas uzi tiun koderon, nomita la funkcio. 281 00:15:25,740 --> 00:15:30,550 282 00:15:30,550 --> 00:15:35,380 >> Do nun, se ni memoras reen al nulo, Ni ankaŭ parolis pri kelkaj konceptoj, 283 00:15:35,380 --> 00:15:37,680 unu el kiuj estas enhebrado. 284 00:15:37,680 --> 00:15:41,120 Fadeno estas la koncepto de multnombraj sekvencoj de kodo 285 00:15:41,120 --> 00:15:43,040 ekzekutinte samtempe. 286 00:15:43,040 --> 00:15:47,490 Do pensas reen al tago kie David vi uloj kalkulu la numeron de 287 00:15:47,490 --> 00:15:48,440 homoj en la ĉambro. 288 00:15:48,440 --> 00:15:50,550 >> Esence, kio okazas on estas vi ĉiuj infanoj estis 289 00:15:50,550 --> 00:15:52,370 kurante apartaj fadenoj. 290 00:15:52,370 --> 00:15:55,540 Kaj tiuj fadenoj venas kune akiri ian respondon. 291 00:15:55,540 --> 00:15:58,890 Simile, en Scratch, kiam vi havas multnombraj sprites, vi povus 292 00:15:58,890 --> 00:16:01,070 havas katon kaj hundon. 293 00:16:01,070 --> 00:16:08,770 Kaj ili estus samtempe kurante ilia propra skriptoj. 294 00:16:08,770 --> 00:16:10,020 Tio estas ekzemplo de threading. 295 00:16:10,020 --> 00:16:12,860 296 00:16:12,860 --> 00:16:18,000 >> Kaj la alia koncepto kiu estis enkondukita en nulo estis okazaĵoj. 297 00:16:18,000 --> 00:16:22,550 Kaj eventoj estas kiam multnombraj partoj de via kodo interkomuniki. 298 00:16:22,550 --> 00:16:26,840 En Scratch, tio estis, kiam vi uzis la elsendo kontrolo kaj kiam mi 299 00:16:26,840 --> 00:16:29,500 Ricevu blokoj. 300 00:16:29,500 --> 00:16:35,170 >> Kaj ankaŭ, en Problemo Ara 4, ni vidis iom eventoj tiel. 301 00:16:35,170 --> 00:16:38,250 Vi uloj povus uzi la Gevent biblioteko. 302 00:16:38,250 --> 00:16:42,450 Kaj tie estis funkcio waitForClick en kiu vi staris 303 00:16:42,450 --> 00:16:44,300 por la uzanto klaku. 304 00:16:44,300 --> 00:16:47,870 Kaj via alklako, en ĉi tiu kazo, estus la evento kaj atendas klako estas via 305 00:16:47,870 --> 00:16:49,120 okazaĵo traktilo. 306 00:16:49,120 --> 00:16:53,690 307 00:16:53,690 --> 00:16:58,630 >> Kaj ankaŭ, laŭlonge kurante vian psets kaj laborante sur via psets vi 308 00:16:58,630 --> 00:17:01,920 eble venis en kontakton kun kelkaj el tiuj ordonoj. 309 00:17:01,920 --> 00:17:05,579 Jen kion vi tajpis en vian terminalfenestro aŭ ajna fenestro 310 00:17:05,579 --> 00:17:12,119 kiu montras supren en via g redaktu al, esence, navigi via komputilo. 311 00:17:12,119 --> 00:17:19,440 >> Do ekzemple, LS listigas enhavon de dosierujo. 312 00:17:19,440 --> 00:17:22,510 Faru dosierujo kreas novan dosierujon. 313 00:17:22,510 --> 00:17:24,819 KD, ŝanĝo dosierujo. 314 00:17:24,819 --> 00:17:28,400 RM, demeti, forigas dosieron aŭ iu dosierujo. 315 00:17:28,400 --> 00:17:31,050 Kaj poste forigi la dosierujon forigas dosierujo. 316 00:17:31,050 --> 00:17:32,300 >> Publiko: [inaudible]? 317 00:17:32,300 --> 00:17:36,978 318 00:17:36,978 --> 00:17:38,370 >> SPEAKER 1: Jes, certas. 319 00:17:38,370 --> 00:17:42,530 320 00:17:42,530 --> 00:17:46,040 Pardonu, la demando estis se vi sugestus metante ĉi 321 00:17:46,040 --> 00:17:48,840 sur la lertaĵoj folio. 322 00:17:48,840 --> 00:17:49,440 Ĝi povus helpi. 323 00:17:49,440 --> 00:17:51,490 Se vi havas ĉambron, vi povas meti ĝin sur. 324 00:17:51,490 --> 00:17:56,170 Estas ankaŭ nur ĝenerale sufiĉe bona memori ke kiam vi uzas ĝin 325 00:17:56,170 --> 00:17:59,060 vi eble volas nur havas ĝin parkerigis. 326 00:17:59,060 --> 00:18:02,750 Tio faros vian vivon multe pli facila. 327 00:18:02,750 --> 00:18:04,000 Ĉu mi respondu vian demandon? 328 00:18:04,000 --> 00:18:10,528 329 00:18:10,528 --> 00:18:14,290 >> Do nun, ni parolis iom mallonge pri bibliotekoj. 330 00:18:14,290 --> 00:18:18,570 Sed la du ĉefaj ke ni estis uzante ĝis nun en la kurso estas 331 00:18:18,570 --> 00:18:20,860 standard I / O kaj cs50. 332 00:18:20,860 --> 00:18:25,410 Kia ajn estas inkluditaj en la normo / S biblioteko? 333 00:18:25,410 --> 00:18:28,410 >> Yeah, do nun ni uzas printf. 334 00:18:28,410 --> 00:18:31,150 En cs50, ni uzis GetInt kaj GetString. 335 00:18:31,150 --> 00:18:37,200 Kaj la datumtipo kordo pasas ankaŭ esti deklarita en tiu cs50 biblioteko. 336 00:18:37,200 --> 00:18:40,250 Ni parolos iom pli en profundo sur kiom bibliotekoj labori kaj kiel oni 337 00:18:40,250 --> 00:18:41,870 interagi kun la resto de via kodo. 338 00:18:41,870 --> 00:18:46,220 Sed tiuj estas la du ĉefaj ke ni venis en kontakto kun tiel multe en 339 00:18:46,220 --> 00:18:48,430 la kurso. 340 00:18:48,430 --> 00:18:50,050 >> Tipoj. 341 00:18:50,050 --> 00:18:58,120 Tiuj estas bone memoras kiom ĉiu tipo estas reprezentita per aŭ kiel 342 00:18:58,120 --> 00:19:02,840 multaj bajtoj ĉiu tipo requires-- 343 00:19:02,840 --> 00:19:04,990 int, 4 bitokoj; char, 1 bajto. 344 00:19:04,990 --> 00:19:06,550 Float estas 4 bitokoj. 345 00:19:06,550 --> 00:19:07,782 Kio estas duobla? 346 00:19:07,782 --> 00:19:09,032 >> Publiko: [inaudible]. 347 00:19:09,032 --> 00:19:11,398 348 00:19:11,398 --> 00:19:16,240 >> SPEAKER 1: Yeah, do kaleŝego sed duobligi la grandecon. 349 00:19:16,240 --> 00:19:17,150 Kio pri longa? 350 00:19:17,150 --> 00:19:18,400 >> Publiko: [inaudible]. 351 00:19:18,400 --> 00:19:21,614 352 00:19:21,614 --> 00:19:24,680 >> SPEAKER 1: OK. 353 00:19:24,680 --> 00:19:25,410 Kio estas longa? 354 00:19:25,410 --> 00:19:26,660 >> Publiko: [inaudible]. 355 00:19:26,660 --> 00:19:29,400 356 00:19:29,400 --> 00:19:31,450 >> SPEAKER 1: Yeah, duobligi la int. 357 00:19:31,450 --> 00:19:34,240 358 00:19:34,240 --> 00:19:34,705 Jes. 359 00:19:34,705 --> 00:19:36,100 >> Publiko: [inaudible]. 360 00:19:36,100 --> 00:19:38,030 >> SPEAKER 1: Longa [inaudible]. 361 00:19:38,030 --> 00:19:41,860 Kaj poste longa tempo estas duobla tio. 362 00:19:41,860 --> 00:19:42,814 >> Publiko: Ne, ne. 363 00:19:42,814 --> 00:19:47,107 Longa estas nur int. 364 00:19:47,107 --> 00:19:50,910 Ĝi dependas de la arkitekturo antaŭ la [inaudible] 365 00:19:50,910 --> 00:19:52,922 kaj int havas la saman grandecon. 366 00:19:52,922 --> 00:19:54,172 [Inaudible]. 367 00:19:54,172 --> 00:19:58,841 368 00:19:58,841 --> 00:20:00,920 >> SPEAKER 1: Do longan kaj kiel int estas samaj. 369 00:20:00,920 --> 00:20:02,943 Kaj poste longa tempo estas duobla la int. 370 00:20:02,943 --> 00:20:03,910 Cool. 371 00:20:03,910 --> 00:20:05,550 Kaj tiam, kio estas la lasta tipo? 372 00:20:05,550 --> 00:20:06,510 >> Publiko: Pointer. 373 00:20:06,510 --> 00:20:10,350 >> SPEAKER 1: Jes, tiel ni lernis iomete pri punteros. 374 00:20:10,350 --> 00:20:14,015 Kaj sendepende de kia puntero estas indikante to-- eblis char stelo 375 00:20:14,015 --> 00:20:15,880 aŭ int star-- 376 00:20:15,880 --> 00:20:20,530 ĝi estas ĉiam 4 bajtoj por montrilo. 377 00:20:20,530 --> 00:20:21,633 Demandojn pri tio? 378 00:20:21,633 --> 00:20:22,116 Jes? 379 00:20:22,116 --> 00:20:24,531 >> Publiko: [inaudible]? 380 00:20:24,531 --> 00:20:29,530 >> SPEAKER 1: Do longa kaj int estas la sama en ĉi cs50 aparato. 381 00:20:29,530 --> 00:20:32,302 >> Aŭdienco: La aparato estas tute interŝanĝeblaj. 382 00:20:32,302 --> 00:20:33,510 >> SPEAKER 1: Jes. 383 00:20:33,510 --> 00:20:36,610 Do tiam longa longa estas duobla kiel int. 384 00:20:36,610 --> 00:20:39,250 >> Spektantaro: tio estas la 32 bitoj? 385 00:20:39,250 --> 00:20:40,620 >> SPEAKER 1: 32 bitoj, yeah. 386 00:20:40,620 --> 00:20:43,572 >> Publiko: Tiel [inaudible]? 387 00:20:43,572 --> 00:20:46,790 >> SPEAKER 1: Jes, se li ne eksplicite diras vin 388 00:20:46,790 --> 00:20:47,870 devus alpreni 32 bitoj. 389 00:20:47,870 --> 00:20:50,040 >> Publikon: ĝi dirus ion kiel subkompreni 390 00:20:50,040 --> 00:20:51,498 arkitekturo kiel la aparato. 391 00:20:51,498 --> 00:20:58,800 392 00:20:58,800 --> 00:21:01,710 Por 64 bitoj, la nuraj aĵoj kiuj ŝanĝo estas sopiras kaj punteros. 393 00:21:01,710 --> 00:21:05,614 Ili ambaŭ [inaudible]. 394 00:21:05,614 --> 00:21:06,590 >> SPEAKER 1: Jes? 395 00:21:06,590 --> 00:21:07,566 >> Publiko: Demando. 396 00:21:07,566 --> 00:21:10,982 Do unu el la praktiko kvizojn, petu pri unsigned int. 397 00:21:10,982 --> 00:21:15,374 Do kiel estus tiu determinos el la int [inaudible]? 398 00:21:15,374 --> 00:21:18,140 >> SPEAKER 1: An sensigna en estas ankaŭ 4 bitokoj. 399 00:21:18,140 --> 00:21:21,172 Sed kio estas malsama pri subskrib int kaj sensigna int? 400 00:21:21,172 --> 00:21:22,422 >> Publiko: [inaudible]. 401 00:21:22,422 --> 00:21:24,868 402 00:21:24,868 --> 00:21:25,630 >> SPEAKER 1: Rajto. 403 00:21:25,630 --> 00:21:27,570 Oni povas reprezenti negativajn valorojn. 404 00:21:27,570 --> 00:21:28,580 Sed kiel faras ĝi fari? 405 00:21:28,580 --> 00:21:30,536 >> Publiko: [inaudible]. 406 00:21:30,536 --> 00:21:36,370 >> SPEAKER 1: Jes, ĝi ŝparas 1 iom reprezenti la signon. 407 00:21:36,370 --> 00:21:40,910 408 00:21:40,910 --> 00:21:45,040 La subskribita havas iom ke reprezentas la signon. 409 00:21:45,040 --> 00:21:48,886 Kaj sensigna nur estas ĉiuj pozitivaj. 410 00:21:48,886 --> 00:21:50,365 >> Publiko: OK. 411 00:21:50,365 --> 00:21:54,230 Do vi dirus ke duoblan estas dufoje la grandeco de kaleŝego? 412 00:21:54,230 --> 00:21:58,202 >> SPEAKER 1: Duobla estas dufoje la grandeco de kaleŝego, jes. 413 00:21:58,202 --> 00:22:01,639 >> Publiko: Kiel funkcias puntero por longa tempo [inaudible]? 414 00:22:01,639 --> 00:22:06,058 415 00:22:06,058 --> 00:22:10,870 >> SPEAKER 1: Do la demando estas kiel faras la montrilon al longa long-- 416 00:22:10,870 --> 00:22:13,800 kiel estas kiu nur kvar bajtoj kiam longa tempo liaj 8 bajtoj. 417 00:22:13,800 --> 00:22:17,310 Do memoru kio estas puntero, esence, je la tre baza valoro. 418 00:22:17,310 --> 00:22:19,046 >> Publiko: [inaudible]. 419 00:22:19,046 --> 00:22:22,670 >> SPEAKER 1: Yeah, do puntero estas nur memoro situo. 420 00:22:22,670 --> 00:22:28,040 Do ne gravas kiom spaco ke puntero notas al. 421 00:22:28,040 --> 00:22:32,060 Ĝi nur bezonas 4 bajtoj por konservi trako de tiu memoro situo. 422 00:22:32,060 --> 00:22:34,760 423 00:22:34,760 --> 00:22:36,010 Ajna alia demandoj? 424 00:22:36,010 --> 00:22:39,800 425 00:22:39,800 --> 00:22:41,050 Cool. 426 00:22:41,050 --> 00:22:42,920 427 00:22:42,920 --> 00:22:47,460 >> Do la lasta afero mi estas normo eligo. 428 00:22:47,460 --> 00:22:51,020 Vi devus uzi ilin ofte sufiĉas ke vi povas memori. 429 00:22:51,020 --> 00:22:54,800 Sed tio estas kiam ni uzas printf, ekzemple. 430 00:22:54,800 --> 00:22:59,260 Kaj ni havas tiujn anstataŭiloj ke vokitaj formato kodoj. 431 00:22:59,260 --> 00:23:03,910 >> Do procento c char, procento i por int, kaj ni povas ankaŭ uzi procento d. 432 00:23:03,910 --> 00:23:05,130 Ĝi estas la sama aĵo. 433 00:23:05,130 --> 00:23:08,200 Sed, ĝenerale, en CS50 nin provu uzi procento i. 434 00:23:08,200 --> 00:23:09,860 Elcento f por kaleŝego. 435 00:23:09,860 --> 00:23:15,620 Elcento ld por longa tempo kaj procento s kordo. 436 00:23:15,620 --> 00:23:18,550 >> Simile, ni estis uzante kelkaj de tiuj eskapo sekvencoj. 437 00:23:18,550 --> 00:23:22,431 Ekzemple, backslash n por nova linio. 438 00:23:22,431 --> 00:23:26,910 Tiu estas nur por kiam vi formatado vian kodon por print f. 439 00:23:26,910 --> 00:23:27,260 Jes? 440 00:23:27,260 --> 00:23:28,906 >> Publiko: Kio estas procento d por? 441 00:23:28,906 --> 00:23:31,850 >> SPEAKER 1: Do la demando Estas kio procento d por? 442 00:23:31,850 --> 00:23:33,270 Elcento d estas por ints. 443 00:23:33,270 --> 00:23:37,392 Elcento d kaj procento i estas la sama. 444 00:23:37,392 --> 00:23:41,130 >> Publiko: Kio estas la diferenco inter backslash n kaj backslash r? 445 00:23:41,130 --> 00:23:45,300 >> SPEAKER 1: Do la demando estas kio estas la diferenco inter reagon n kaj 446 00:23:45,300 --> 00:23:48,615 reagon r? 447 00:23:48,615 --> 00:23:50,906 Mi kredas backslash r is-- 448 00:23:50,906 --> 00:23:54,340 >> Publiko: Do ​​backslash r nur implicas revenas al la komenco de la linio 449 00:23:54,340 --> 00:23:56,670 sen fakte tuj nova linio. 450 00:23:56,670 --> 00:24:01,000 Do se vi presi backslash r kaj vi reiri al la komenco de la linio 451 00:24:01,000 --> 00:24:04,005 tiam vi presi pli aĵoj, vi reskribi La aĵoj estas jam sur 452 00:24:04,005 --> 00:24:04,390 [Inaudible]. 453 00:24:04,390 --> 00:24:06,725 Dum, n reale iras al nova linio kaj iras al [inaudible]. 454 00:24:06,725 --> 00:24:10,525 455 00:24:10,525 --> 00:24:13,915 >> SPEAKER 1: Nu, aliajn demandojn? 456 00:24:13,915 --> 00:24:15,430 Bone. 457 00:24:15,430 --> 00:24:18,617 Mi tuj transdonis ĝin al Dan kiu daŭros. 458 00:24:18,617 --> 00:24:25,078 >> [Aplaŭdo] 459 00:24:25,078 --> 00:25:08,814 460 00:25:08,814 --> 00:25:09,720 >> DONAS: Ĉiuj righty. 461 00:25:09,720 --> 00:25:18,590 Do mi parolus pri alia larĝa gamo de ideoj de la klaso, kiuj estas 462 00:25:18,590 --> 00:25:23,220 malglate reprezentanto de semajno po la komenco de la semajno tri dividante 463 00:25:23,220 --> 00:25:28,690 kun malplenigita, kiu estas simple maniero de trakti valoro de certa tipo kiel 464 00:25:28,690 --> 00:25:30,830 valoron de malsama tipo. 465 00:25:30,830 --> 00:25:34,110 Do ni povas fari ĉi tion kun signoj por ints, flosas al ints kaj 466 00:25:34,110 --> 00:25:35,360 longe sopiras duobligi. 467 00:25:35,360 --> 00:25:38,170 468 00:25:38,170 --> 00:25:44,500 >> Ĉiuj ĉi tiuj aferoj povas esti uzata kiel manieroj trakti iun numeran valoron 469 00:25:44,500 --> 00:25:48,370 minus char kiel iuj aliaj nombra valoro. 470 00:25:48,370 --> 00:25:54,480 Do tie estas iuj aferoj kun tiu, de Certe, kiu venas kiam vin jxetu 471 00:25:54,480 --> 00:25:57,860 aĵoj kiel float al ints. 472 00:25:57,860 --> 00:26:00,500 Do tio estas iom stranga. 473 00:26:00,500 --> 00:26:03,170 Ni havas kaleŝego kiu estas 1.31. 474 00:26:03,170 --> 00:26:05,220 Ni multobligos ĝin per 10,000. 475 00:26:05,220 --> 00:26:08,380 Kaj tiam ni presi ĝin kiel int. 476 00:26:08,380 --> 00:26:09,630 Kion faras ĉi eliro? 477 00:26:09,630 --> 00:26:11,600 478 00:26:11,600 --> 00:26:14,020 10.000 fojojn 1.31. 479 00:26:14,020 --> 00:26:18,761 Do 13.000, estas ke la diveno? 480 00:26:18,761 --> 00:26:20,685 >> Publiko: mi kredas ke estas 10.000. 481 00:26:20,685 --> 00:26:24,234 >> DONAS: Do mi multiplikante ĝin 10,000 antaux Mi jxetante gxin. 482 00:26:24,234 --> 00:26:25,202 >> Publiko: Ho. 483 00:26:25,202 --> 00:26:27,622 Ne estos sola 9 kaj iu 0 numerojn? 484 00:26:27,622 --> 00:26:29,270 >> DONAS: Vi havu iom bizara ciferoj. 485 00:26:29,270 --> 00:26:32,410 486 00:26:32,410 --> 00:26:37,670 Do bone, estas 1,3 fojoj 10,000. 487 00:26:37,670 --> 00:26:40,040 Do tio estas 13.000. 488 00:26:40,040 --> 00:26:41,313 Kaj tiu ekstra weird-- 489 00:26:41,313 --> 00:26:42,160 >> Publiko: 13.100. 490 00:26:42,160 --> 00:26:42,650 >> DONAS: 13.100. 491 00:26:42,650 --> 00:26:44,910 Dankon, Rob. 492 00:26:44,910 --> 00:26:46,610 Kaj tiu ekstra weirdness-- 493 00:26:46,610 --> 00:26:48,060 ĉi 9,9-- 494 00:26:48,060 --> 00:26:53,860 Estas simple ĉar ĉi casting finis rondigas malsupren kie 495 00:26:53,860 --> 00:26:55,394 ĝi ne devus havi. 496 00:26:55,394 --> 00:26:55,871 Yeah. 497 00:26:55,871 --> 00:26:58,256 >> Aŭdienco: La casting okazas post io alia? 498 00:26:58,256 --> 00:27:03,865 >> DONAS: Do ĉar mi havas presita, ĝi faras ĉi multipliko antaŭ ĝi 499 00:27:03,865 --> 00:27:05,230 faras ĉi casting. 500 00:27:05,230 --> 00:27:06,140 >> Publiko: [inaudible]. 501 00:27:06,140 --> 00:27:11,350 >> Dan: Mi pensas ke estus jxetita unua, yeah, kio estus 10,000. 502 00:27:11,350 --> 00:27:12,610 Io alia? 503 00:27:12,610 --> 00:27:13,330 Cool. 504 00:27:13,330 --> 00:27:16,344 Do tio estas 13.099. 505 00:27:16,344 --> 00:27:17,840 Kial tiu okazos? 506 00:27:17,840 --> 00:27:18,900 Imprecision. 507 00:27:18,900 --> 00:27:21,020 >> Kaleŝegoj ne estas perfektaj. 508 00:27:21,020 --> 00:27:27,550 Ili povas nur reprezenti nombrojn al iu numero de signifaj ciferoj. 509 00:27:27,550 --> 00:27:35,120 Do se ni presi 8 sig figojn je ĉi kaleŝego, ni preni ian 510 00:27:35,120 --> 00:27:36,800 malbela rigardante nombro. 511 00:27:36,800 --> 00:27:45,580 Kaj tio estas pro 1,31 neniom precize esti reprezentita per simpla 512 00:27:45,580 --> 00:27:49,000 potencoj de du en la maŝino. 513 00:27:49,000 --> 00:27:53,530 Do ĝi finas portante la plej proksima divenu, kiu finu 514 00:27:53,530 --> 00:27:55,710 estante iom malalta. 515 00:27:55,710 --> 00:27:57,730 Sencon? 516 00:27:57,730 --> 00:27:59,110 OK. 517 00:27:59,110 --> 00:28:05,840 >> Nun, conmutación estas malsama maniero de faranta kondiĉa deklaroj kie ĉiuj 518 00:28:05,840 --> 00:28:09,900 Ni zorgas pri estas ununura variablo. 519 00:28:09,900 --> 00:28:16,570 Do en ĉi tiu aparta ekzemplo, ni ricevi entjeran de la uzanto. 520 00:28:16,570 --> 00:28:21,070 Kaj poste ni rigardis kion tio entjero estas. 521 00:28:21,070 --> 00:28:23,500 Supozeble, estas nombro inter unu kaj kvar. 522 00:28:23,500 --> 00:28:24,800 Tio estas kion ni petas. 523 00:28:24,800 --> 00:28:28,450 >> Do vi ŝaltilo de la variablo nomo. 524 00:28:28,450 --> 00:28:34,290 Tiam vi starigis kazoj de eblaj taksos eblus. 525 00:28:34,290 --> 00:28:37,730 Do tiu kazo, diras ke estas malalta. 526 00:28:37,730 --> 00:28:41,080 Kaj tiam vi rompi eliri de la ŝaltilo kondiĉo tiel 527 00:28:41,080 --> 00:28:43,270 vi ne plu iri. 528 00:28:43,270 --> 00:28:44,830 >> En la sekvanta case-- 529 00:28:44,830 --> 00:28:46,940 tiel kazo du kaj kazo three-- 530 00:28:46,940 --> 00:28:51,920 se estas kazo du tio nur gutas malsupren la unua linio de kodo vidas kiel kun 531 00:28:51,920 --> 00:28:55,400 majuskloj tri ĝis ĝi vidas ripozon. 532 00:28:55,400 --> 00:29:00,430 Do la kialon vi akiri kazo oni nur print malalta estas ĉar mi 533 00:29:00,430 --> 00:29:01,890 havas ĉi ripozon ĉi tie. 534 00:29:01,890 --> 00:29:05,360 Se mi, ekzemple, ignoris ĉi break-- se mi ĵetis ĉi breakaway-- 535 00:29:05,360 --> 00:29:09,740 estus presi malaltaj, kaj tiam donus presi mezo, kaj tiam rompigxus. 536 00:29:09,740 --> 00:29:12,200 >> Do paŭzoj estas grava parto de ŝanĝi kondiĉoj kaj 537 00:29:12,200 --> 00:29:14,340 ili devus esti tie. 538 00:29:14,340 --> 00:29:20,070 Ajna kazoj kiuj ne deklaris eksplicite estas manipulitaj de la defaŭlta 539 00:29:20,070 --> 00:29:26,645 kazo en la ŝaltilon kaj devus esti jxetitaj. 540 00:29:26,645 --> 00:29:31,363 >> Publiko: Do ​​1, 2, 3, kaj 4 estus n? 541 00:29:31,363 --> 00:29:33,310 >> Dan Valoroj ke n povas esti. 542 00:29:33,310 --> 00:29:34,654 Jes. 543 00:29:34,654 --> 00:29:35,146 Yeah? 544 00:29:35,146 --> 00:29:37,606 >> Publiko: Do ​​kiam vi havas ke [inaudible]? 545 00:29:37,606 --> 00:29:44,002 546 00:29:44,002 --> 00:29:46,830 >> DONAS: Vi devus presi malaltaj, kaj tiam estus presi mezo, kaj 547 00:29:46,830 --> 00:29:47,400 tiam rompigxus. 548 00:29:47,400 --> 00:29:50,244 >> Publiko: Kial ĝi presas mezo se [inaudible]? 549 00:29:50,244 --> 00:29:54,036 550 00:29:54,036 --> 00:30:00,550 >> DONAS: Do ĉio sub kazo antaŭ ripozon falas sub. 551 00:30:00,550 --> 00:30:09,390 Do se oni presas estas sube kazo kia estas ĉi jenaj print. 552 00:30:09,390 --> 00:30:09,890 Yeah? 553 00:30:09,890 --> 00:30:11,140 >> Publiko: [inaudible]? 554 00:30:11,140 --> 00:30:15,890 555 00:30:15,890 --> 00:30:22,170 >> DONAS: Do tiu nombro estas nur aparta valoro ke tiu variablo 556 00:30:22,170 --> 00:30:23,420 povas, ĉu ne? 557 00:30:23,420 --> 00:30:26,740 558 00:30:26,740 --> 00:30:28,490 Ĉu tio havas sencon? 559 00:30:28,490 --> 00:30:28,990 Yeah. 560 00:30:28,990 --> 00:30:31,490 >> Publiko: [inaudible]? 561 00:30:31,490 --> 00:30:34,130 >> DONAS: Jes, kazo du devus presi meza kaj tiam rompu. 562 00:30:34,130 --> 00:30:35,380 >> Publiko: [inaudible]? 563 00:30:35,380 --> 00:30:37,954 564 00:30:37,954 --> 00:30:40,050 >> Dan: Mi pensas iu? 565 00:30:40,050 --> 00:30:43,855 Kio aliaj datumtipoj vi povas ŝalti super? 566 00:30:43,855 --> 00:30:46,320 >> Publiko: Vi povas ŝanĝi super ĉiu datumtipoj. 567 00:30:46,320 --> 00:30:50,905 Sed ĝi nur signifas io super signoj kaj ints kaj da tio, ĉar 568 00:30:50,905 --> 00:30:55,600 se vi ŝaltanta super puntero ke vere ne havas sencon, 569 00:30:55,600 --> 00:30:59,555 ŝaltanta super ŝarĝoj, se eĉ ni vi faros tion, ĉar de flosanta punkto 570 00:30:59,555 --> 00:31:02,840 en precizeco, vi ankaux ne vere volas fari tion ĉiuokaze. 571 00:31:02,840 --> 00:31:07,320 Do sufiĉe tre, nur ints kaj signoj kaj aĵoj tiel. 572 00:31:07,320 --> 00:31:12,360 >> DONAS: Yeah, estas kiam vi havas eksplicitan valorojn, kiujn vi konas, mi pensas, ĝi povas esti 573 00:31:12,360 --> 00:31:14,250 ke ŝaltilo estas fakte utila. 574 00:31:14,250 --> 00:31:17,094 575 00:31:17,094 --> 00:31:18,990 Bona? 576 00:31:18,990 --> 00:31:21,370 OK. 577 00:31:21,370 --> 00:31:26,180 >> Medio estas la gamo kiu deklarita variablo etendas. 578 00:31:26,180 --> 00:31:32,190 Do en ĉi tiu malgranda bloko de kodo havas mi, estus plena de eraroj. 579 00:31:32,190 --> 00:31:41,450 Kaj la kialo estas mi deklaris ĉi int i ene de la medio de ĉi por buklo. 580 00:31:41,450 --> 00:31:46,390 Kaj tiam mi provas referenci ke i ekster ke por buklo medion. 581 00:31:46,390 --> 00:31:50,330 >> Do esence, vi povas pensi pri atingo kiel ion ke vi rakontu 582 00:31:50,330 --> 00:31:59,750 kun interne aro de frizita krampoj nur Ekzistas ene de tiuj buklaj krampoj. 583 00:31:59,750 --> 00:32:04,990 Kaj se vi provas kaj uzi tiun variablon eksteren de tiuj buklaj krampoj, vi 584 00:32:04,990 --> 00:32:08,356 ricevas eraron de la tradukilo. 585 00:32:08,356 --> 00:32:08,812 Yeah? 586 00:32:08,812 --> 00:32:09,724 >> Publiko: Do ​​ĉi tiu ne funkcias? 587 00:32:09,724 --> 00:32:11,790 >> DONAS: Ĉi tio ne funkcias, jes. 588 00:32:11,790 --> 00:32:17,190 589 00:32:17,190 --> 00:32:18,660 Kordoj. 590 00:32:18,660 --> 00:32:19,780 String estas char *. 591 00:32:19,780 --> 00:32:22,250 Ili estas ekzakte la sama. 592 00:32:22,250 --> 00:32:25,540 Ili estas nur montriloj al karakteroj. 593 00:32:25,540 --> 00:32:33,000 Kaj neniu kordoj ke vi havas devus fini kun backslash nulo, kiu estas nur 594 00:32:33,000 --> 00:32:34,410 c konvencio. 595 00:32:34,410 --> 00:32:36,680 >> Ĝi nomiĝas NULL finilo. 596 00:32:36,680 --> 00:32:39,050 Kaj NULL-- 597 00:32:39,050 --> 00:32:41,670 ĉefurbo N, ĉefurbo U ĉefurbo L, ĉefurbo L-- 598 00:32:41,670 --> 00:32:44,290 ne estas la sama kiel la NULL finilo. 599 00:32:44,290 --> 00:32:46,640 Tiu estas montrilo. 600 00:32:46,640 --> 00:32:48,280 Tiu estas karaktero. 601 00:32:48,280 --> 00:32:49,530 Ili estas tre distinga. 602 00:32:49,530 --> 00:32:50,200 Memoras. 603 00:32:50,200 --> 00:32:52,320 Estos en la kvizo, verŝajne. 604 00:32:52,320 --> 00:32:54,040 Mi ne vidis la kvizo. 605 00:32:54,040 --> 00:32:57,880 606 00:32:57,880 --> 00:32:58,840 Yeah? 607 00:32:58,840 --> 00:33:01,232 >> Publiko: Do ​​NULL estas, ni diru, la puntero? 608 00:33:01,232 --> 00:33:01,995 >> DONAS: Jes. 609 00:33:01,995 --> 00:33:05,170 >> Publiko: Kion faras [inaudible]? 610 00:33:05,170 --> 00:33:10,050 >> DONAS: Se diri, malloc nomas kiam ne havas sufiĉan memoron akiri 611 00:33:10,050 --> 00:33:14,400 ajn grandecon vi petante, malloc revenos NULL. 612 00:33:14,400 --> 00:33:19,550 Ĝi estas, esence, kiam funkcio estas supozis reveni puntero, vi 613 00:33:19,550 --> 00:33:22,600 bezonas kontroli kontraŭ NULL ĉar NULL estas bela good-- 614 00:33:22,600 --> 00:33:25,260 estas, speco de, la rubo valoro. 615 00:33:25,260 --> 00:33:27,050 Ĝi estas nulo ĝis punteros iri. 616 00:33:27,050 --> 00:33:29,630 617 00:33:29,630 --> 00:33:32,250 >> Whenever vi nomas funkcio, kiu resendas montrilo. 618 00:33:32,250 --> 00:33:35,960 Vi tuj volas kontroli por certas ke tiu puntero estas NULL 619 00:33:35,960 --> 00:33:37,760 ĉar NULL estas tre komuna. 620 00:33:37,760 --> 00:33:40,160 Ĝi estas speco de rubo reveno. 621 00:33:40,160 --> 00:33:44,902 Do se io ne iru dekstren, nur reveni NULL anstataŭe. 622 00:33:44,902 --> 00:33:45,898 >> Publiko: [inaudible]? 623 00:33:45,898 --> 00:33:48,922 >> DONAS: Jes, kaj tio ĉi. 624 00:33:48,922 --> 00:33:51,750 >> Publiko: [inaudible]? 625 00:33:51,750 --> 00:33:52,800 >> Dan Literumada ĝin kiel ĉi. 626 00:33:52,800 --> 00:33:54,150 Ĝi estas la NULL finilo. 627 00:33:54,150 --> 00:33:56,560 Estas minuskle N-U-L-L se vi literumas ĝin. 628 00:33:56,560 --> 00:33:59,860 >> Publiko: Mi ĵus eliris revenis kaj provis ĝin. 629 00:33:59,860 --> 00:34:03,010 Kaj se vi provas meti glitpunkta valoron en ŝaltilo, ĝi estos krias al vi 630 00:34:03,010 --> 00:34:05,916 dirante aserto postulas esprimon de entjera tipo. 631 00:34:05,916 --> 00:34:07,166 >> DONAS: Tie vi iru. 632 00:34:07,166 --> 00:34:09,639 633 00:34:09,639 --> 00:34:12,246 Sed jes, kio estas la demando denove? 634 00:34:12,246 --> 00:34:13,496 >> Publiko: [inaudible]? 635 00:34:13,496 --> 00:34:16,150 636 00:34:16,150 --> 00:34:23,679 >> DONAS: Do ĉefurbo N, ĉefurbo U ĉefurbo L, ĉefurbo L estas reala c afero. 637 00:34:23,679 --> 00:34:29,719 Estas la NULL pointer kaj volo nur esti traktita kiel tia. 638 00:34:29,719 --> 00:34:33,530 Vi neniam provas kaj literumi la NULL karaktero kaj vidas neniun 639 00:34:33,530 --> 00:34:35,630 alia maniero ol tio. 640 00:34:35,630 --> 00:34:36,610 Yeah? 641 00:34:36,610 --> 00:34:42,490 >> Publiko: Do ​​redonante char max aŭ io en la notoj, ĉu 642 00:34:42,490 --> 00:34:43,960 korpigi la sama funkcio kiel [inaudible]? 643 00:34:43,960 --> 00:34:50,655 644 00:34:50,655 --> 00:34:54,949 >> Publiko: Do ​​vi raportante al reveni char max el getchar aux 645 00:34:54,949 --> 00:34:55,444 kio ĝi estas? 646 00:34:55,444 --> 00:34:55,940 >> Publiko: Yeah. 647 00:34:55,940 --> 00:34:58,620 >> Publiko: Yeah, do la ĝenerala termino por ĉiuj tiuj aferoj 648 00:34:58,620 --> 00:34:59,920 estas gardostaranto valoroj. 649 00:34:59,920 --> 00:35:03,640 Do kiel reveni int max el GetInt kaj char max el getchar, estas 650 00:35:03,640 --> 00:35:06,010 supozitaj esti kiel, bone, se tio estas reveni al ni, 651 00:35:06,010 --> 00:35:07,210 iu iris malbone. 652 00:35:07,210 --> 00:35:09,950 >> Por punteros, ni nur hazarde havas tiu gardostaranto valoro kiu ĉiuj 653 00:35:09,950 --> 00:35:10,750 konvenas. 654 00:35:10,750 --> 00:35:13,210 Kaj jen estas tio, vi revenos Kiam aferoj iras malbone. 655 00:35:13,210 --> 00:35:15,910 Do char max estas kion ni uzas reprezenti ion 656 00:35:15,910 --> 00:35:18,100 kiel NULL aŭ getchar. 657 00:35:18,100 --> 00:35:23,420 >> Publiko: Do ​​se vi provas getchar, vi povus simple meti NULL? 658 00:35:23,420 --> 00:35:23,910 Ĉu tio faras diferencon? 659 00:35:23,910 --> 00:35:25,400 >> DONAS: Vi ne povus simple kontroli NULL. 660 00:35:25,400 --> 00:35:30,130 Vi devus kontroli char max ĉar la reveno valoro de la funkcio estas 661 00:35:30,130 --> 00:35:35,416 gravulo ne puntero. 662 00:35:35,416 --> 00:35:35,888 Yeah? 663 00:35:35,888 --> 00:35:38,248 >> Publiko: Tiu demando demandas por la kordo longo. 664 00:35:38,248 --> 00:35:40,136 Ĉu tio inkluzivas la NULL karakteron? 665 00:35:40,136 --> 00:35:41,000 >> DONAS: Ne 666 00:35:41,000 --> 00:35:45,930 Kaj tio estas vere kiel kordo longo scias halti ĉar ĝi iras tra 667 00:35:45,930 --> 00:35:49,070 via tabelo de signoj ĝis li vidas nula karaktero. 668 00:35:49,070 --> 00:35:51,030 Kaj tiam ĝi estas kiel cxiuj Bone, mi faris. 669 00:35:51,030 --> 00:35:52,130 >> Publiko: [inaudible] kvin? 670 00:35:52,130 --> 00:35:53,990 >> DONAS: Saluton estus kvin. 671 00:35:53,990 --> 00:35:55,240 Yep. 672 00:35:55,240 --> 00:35:59,580 673 00:35:59,580 --> 00:36:02,880 Do arrays estas kontinua blokoj de memoro. 674 00:36:02,880 --> 00:36:08,480 Ili havas tujan aliron dirante la nomo de la tabelo kaj tiam, en krispa 675 00:36:08,480 --> 00:36:16,720 krampoj ajn indicon vi deziras iri al, ili estas indeksita de nulo per 676 00:36:16,720 --> 00:36:20,100 la longo de la tabelo minus 1. 677 00:36:20,100 --> 00:36:23,070 >> Kaj ili estas deklarita de la tipo de la kion vi stoki en la 678 00:36:23,070 --> 00:36:29,750 tabelo, la nomo de la tabelo, kaj poste sendepende de la grandeco estas de tiu tabelo. 679 00:36:29,750 --> 00:36:36,660 Do tio estas char tabelo de longo ses kiu havas tiujn valorojn. 680 00:36:36,660 --> 00:36:42,050 681 00:36:42,050 --> 00:36:42,700 Yeah? 682 00:36:42,700 --> 00:36:43,950 >> Publiko: [inaudible]? 683 00:36:43,950 --> 00:36:47,980 684 00:36:47,980 --> 00:36:48,460 >> DONAS: Yeah. 685 00:36:48,460 --> 00:36:51,340 >> Publiko: [inaudible]? 686 00:36:51,340 --> 00:36:56,700 >> DONAS: Se vi havas, kion tuj en la tabelo jam faris. 687 00:36:56,700 --> 00:37:02,260 Do vi povus indiki ĉi anstataŭ kiel, diru, char, kion ajn la nomo de via 688 00:37:02,260 --> 00:37:12,200 tabelo estas malplena krampoj egalas krispa prepari H komo E komo L komo L komo 689 00:37:12,200 --> 00:37:16,290 Ho komo NULL karaktero kaj frizita krampoj. 690 00:37:16,290 --> 00:37:18,180 Tio ankaŭ laboras kiel deklaro. 691 00:37:18,180 --> 00:37:20,886 >> Publiko: [inaudible]? 692 00:37:20,886 --> 00:37:23,110 >> DONAS: Tiam vi bezonas havi la grandeco jam faris. 693 00:37:23,110 --> 00:37:23,896 >> Publiko: [inaudible]? 694 00:37:23,896 --> 00:37:25,146 >> DONAS: Jes. 695 00:37:25,146 --> 00:37:30,114 696 00:37:30,114 --> 00:37:32,420 Ĉiuj righty. 697 00:37:32,420 --> 00:37:36,430 Komandlinio argumentoj estas metodo ricevas enigon el la uzanto kiel 698 00:37:36,430 --> 00:37:39,380 argumentoj por ĉefa. 699 00:37:39,380 --> 00:37:40,600 Ĉefa prenas du argumentojn. 700 00:37:40,600 --> 00:37:47,680 La nombro de argumentoj kiuj estas estante preter la komandlinion kaj 701 00:37:47,680 --> 00:37:55,340 kordo vektoro aŭ ŝnureto tabelo ĉiu el la argumentoj. 702 00:37:55,340 --> 00:38:07,840 >> Do se mi, ekzemple, nomas funkcio kiel punkto el 1 spaco, 2 spaco, tri, 703 00:38:07,840 --> 00:38:10,110 argc estus 4. 704 00:38:10,110 --> 00:38:17,370 Kaj argv 0 estus dot ekstere. 705 00:38:17,370 --> 00:38:19,130 Argv1 devus esti 1. 706 00:38:19,130 --> 00:38:23,030 argv2 estus 2. argv3 estus 3, en tiu konkreta kazo. 707 00:38:23,030 --> 00:38:23,310 Yeah? 708 00:38:23,310 --> 00:38:25,400 >> Publiko: [inaudible]? 709 00:38:25,400 --> 00:38:34,010 >> DONAS: La lasta ero en la tabelo ĉar la tabelo estas longo argc plus 710 00:38:34,010 --> 00:38:41,050 unu el argb, la lasta elemento estas NULL pointer. 711 00:38:41,050 --> 00:38:42,580 Estas argc plus 1. 712 00:38:42,580 --> 00:38:46,210 713 00:38:46,210 --> 00:38:52,150 Do, en la kazo kiun mi ĵus diris, estus argv 0 estas skalara ekstere. 714 00:38:52,150 --> 00:38:56,330 argv 1 estas 1 argv2 estas 2. argv 3 estas 3. 715 00:38:56,330 --> 00:39:03,490 argv 4, kiu estas unu granda ol argc estus NULL. 716 00:39:03,490 --> 00:39:04,870 >> Kaj tio estas la NULL pointer. 717 00:39:04,870 --> 00:39:06,590 Jes. 718 00:39:06,590 --> 00:39:11,250 Kaj tio estas ĉar kordo estas oni char stelo estas puntero. 719 00:39:11,250 --> 00:39:14,102 Do ĝi devas esti la sama tipo. 720 00:39:14,102 --> 00:39:14,595 Yeah? 721 00:39:14,595 --> 00:39:16,074 >> Publiko: Du demandoj. 722 00:39:16,074 --> 00:39:21,004 Do unu, kio estas la diferenco inter tiu kaj GetString aliaj ol unu tipo 723 00:39:21,004 --> 00:39:22,483 en la uzanto motoro? 724 00:39:22,483 --> 00:39:25,934 Kaj du, estas stokita ene via freŝa memoro? 725 00:39:25,934 --> 00:39:28,399 Do kiel, GetString farus esti [inaudible]? 726 00:39:28,399 --> 00:39:31,357 727 00:39:31,357 --> 00:39:33,650 >> DONAS: Kie estas stokita? 728 00:39:33,650 --> 00:39:34,905 Mi ne scias, kie ĝi estas stokita. 729 00:39:34,905 --> 00:39:40,000 >> Publiko: Do, fakte, oni scias kiom ajn funkcii vi nomas estas argumentoj 730 00:39:40,000 --> 00:39:42,170 estas stokitaj en la pilo? 731 00:39:42,170 --> 00:39:46,610 Do argc kaj argv estas argumentoj por ĉefa kaj ili estas sur la stakon, aŭ vere 732 00:39:46,610 --> 00:39:49,131 nur super kio vi pensas tiel la komenco de la stako. 733 00:39:49,131 --> 00:39:53,490 Kio estis la alia parto de la demando? 734 00:39:53,490 --> 00:39:56,821 >> Publiko: Do ​​kio estas la [inaudible]? 735 00:39:56,821 --> 00:40:00,990 >> DONAS: Yeah, nur alimaniere de iĝi enigon el la uzanto. 736 00:40:00,990 --> 00:40:06,030 Ĉi onia iomete pli eficiente kaj ĝi estas handier por skriptoj ĉar vi 737 00:40:06,030 --> 00:40:10,070 povas simple pasi argumentojn por via ĉefa funkcio anstataŭ devi atendi 738 00:40:10,070 --> 00:40:13,400 por uzantoj, se vi ne havas ajnan uzantoj. 739 00:40:13,400 --> 00:40:16,280 >> Publiko: Kaj jes, iru kordoj estus [inaudible]. 740 00:40:16,280 --> 00:40:17,922 Estus stoki la aĵoj vi bezonas. 741 00:40:17,922 --> 00:40:18,834 >> DONAS: Yeah? 742 00:40:18,834 --> 00:40:21,114 >> Publiko: [inaudible]? 743 00:40:21,114 --> 00:40:27,545 >> DONAS: Jes, argv 0 ĉiam inkludas la dot slash de la funkcio alvokon. 744 00:40:27,545 --> 00:40:28,042 Yeah? 745 00:40:28,042 --> 00:40:29,292 >> Publiko: [inaudible]? 746 00:40:29,292 --> 00:40:33,509 747 00:40:33,509 --> 00:40:37,310 >> DONAS: Jes, ĉiu el la argumentoj estas finiĝis NULL karaktero ĉar ili 748 00:40:37,310 --> 00:40:38,310 estas kordoj. 749 00:40:38,310 --> 00:40:40,892 >> Publiko: [inaudible]? 750 00:40:40,892 --> 00:40:44,116 >> DONAS: Jes, argv argc estas NULL pointer. 751 00:40:44,116 --> 00:40:45,112 >> Publiko: [inaudible]? 752 00:40:45,112 --> 00:40:47,104 >> DONAS: Oh yeah. 753 00:40:47,104 --> 00:40:48,100 Yeah, bedaŭras. 754 00:40:48,100 --> 00:40:49,594 >> Publiko: Tiel [inaudible]? 755 00:40:49,594 --> 00:41:08,518 756 00:41:08,518 --> 00:41:16,340 >> DONAS: Do la demando estas se vi havis la komandlinio dot slash punkto el 1, 2, 757 00:41:16,340 --> 00:41:20,410 farus la nombro de komandlinion argumentoj esti du aŭ devus esti tri? 758 00:41:20,410 --> 00:41:24,420 759 00:41:24,420 --> 00:41:28,240 >> Publiko: mi kredas ke ne vere gravas. 760 00:41:28,240 --> 00:41:31,370 Mi emas diri, ho, vi ne pasas ajna komandlinio argumentoj kiam, 761 00:41:31,370 --> 00:41:32,730 Evidente, vi nomas la funkcion. 762 00:41:32,730 --> 00:41:37,950 Do mi emas vocalmente ekskludi la funkcio de la komanda linio 763 00:41:37,950 --> 00:41:40,350 argumentoj kvankam estas inkluzivita en argv. 764 00:41:40,350 --> 00:41:42,600 >> DONAS: Sed se ĝi estis test-- 765 00:41:42,600 --> 00:41:46,550 yeah-- kaj ankaŭ se vi diros ion kiel argc egalas 3, 766 00:41:46,550 --> 00:41:48,512 Vi estas en sekura staranta. 767 00:41:48,512 --> 00:41:49,416 Yeah? 768 00:41:49,416 --> 00:41:50,666 >> Publiko: [inaudible]? 769 00:41:50,666 --> 00:42:00,990 770 00:42:00,990 --> 00:42:09,510 >> Dan: Mi pensas, se anstataŭ nomi ĉi en argc kaj argv kordo krampoj 771 00:42:09,510 --> 00:42:14,350 sed konservis la samajn tipojn kaj simple nomas ili iun malsama kiel 772 00:42:14,350 --> 00:42:16,640 kaj b, estus ankoraŭ funkcias? 773 00:42:16,640 --> 00:42:18,790 Kaj ĝi ankoraŭ funkcios, vi just-- 774 00:42:18,790 --> 00:42:21,520 anstataŭ uzi argc-- Vi ŝatus uzi kaj b. 775 00:42:21,520 --> 00:42:24,436 776 00:42:24,436 --> 00:42:25,408 Yeah? 777 00:42:25,408 --> 00:42:26,658 >> Publiko: [inaudible]? 778 00:42:26,658 --> 00:42:34,642 779 00:42:34,642 --> 00:42:38,850 >> DONAS: Do la demando estas GetString estas tuj stoki memoron en la ruino 780 00:42:38,850 --> 00:42:42,280 ĉar GetString estas char *. 781 00:42:42,280 --> 00:42:47,530 Ĝi stokas memoro en la havaĵo, ĉar ĝi flamo nun malloc ene la efektiva 782 00:42:47,530 --> 00:42:49,258 efektivigo de GetString. 783 00:42:49,258 --> 00:42:53,210 784 00:42:53,210 --> 00:42:55,090 OK, movante sur. 785 00:42:55,090 --> 00:42:55,950 >> Sekureco. 786 00:42:55,950 --> 00:43:01,090 Do por esti vere sekura vi fidi neniun kaj vi permesos neniu aliro al ajna 787 00:43:01,090 --> 00:43:04,540 de via informo, kiu estas kial ĉiuj konstruas siajn proprajn maŝinojn, 788 00:43:04,540 --> 00:43:09,580 iliaj propraj operaciumoj, ĉiuj iliaj programoj de nulo, kaj evidente 789 00:43:09,580 --> 00:43:13,410 ne konekti al ajna alia maŝinoj tra la interreto. 790 00:43:13,410 --> 00:43:17,350 Do komputiloj estas necerta. 791 00:43:17,350 --> 00:43:19,200 Ili vere estas. 792 00:43:19,200 --> 00:43:20,940 Ni devas fidi aliajn homojn. 793 00:43:20,940 --> 00:43:26,500 >> Kaj la ideo de sekureco estas ke vi estas klopodi limigi la kvanton de 794 00:43:26,500 --> 00:43:27,540 fidon, kiun vi bezonas. 795 00:43:27,540 --> 00:43:32,080 Kaj unu el la rimedoj vi faros tion Estas tra ĉifriko. 796 00:43:32,080 --> 00:43:34,950 Ĉifriko estas, esence, ni havas sekretojn. 797 00:43:34,950 --> 00:43:38,880 >> Kelkfoje ni devas pasi niajn sekretojn tra, ni diru, la interreto aŭ 798 00:43:38,880 --> 00:43:39,980 aliaj aferoj. 799 00:43:39,980 --> 00:43:43,180 Kaj ni ne volas homoj scii tiujn sekretojn. 800 00:43:43,180 --> 00:43:50,100 Do ni ĉifri niajn sekretojn en vojo ke ni esperas neniu povas diveni. 801 00:43:50,100 --> 00:43:51,600 >> Do ni used-- 802 00:43:51,600 --> 00:43:54,340 tra la kurso de ĉi class-- 803 00:43:54,340 --> 00:44:00,750 aĵoj kiel Cezaro kodita kaj [Inaudible], kiuj estas ambaŭ tre, tre 804 00:44:00,750 --> 00:44:03,200 nesekura manieroj kodi aĵoj. 805 00:44:03,200 --> 00:44:07,930 Ili estas facile diveni kion ili estas kaj kion via sekretoj estas. 806 00:44:07,930 --> 00:44:12,130 La reala mondo uzas multe pli komplika ĉifrado skemoj. 807 00:44:12,130 --> 00:44:13,880 Kaj ni ne eniros en multe pli ol tio. 808 00:44:13,880 --> 00:44:18,280 809 00:44:18,280 --> 00:44:19,430 >> Depuración. 810 00:44:19,430 --> 00:44:20,785 GDB estas la plej bona. 811 00:44:20,785 --> 00:44:24,014 812 00:44:24,014 --> 00:44:25,810 Mi iras emfazi ĉi denove. 813 00:44:25,810 --> 00:44:30,920 Uzu GDB tutan tempon ĉiun tempo vi havas problemon. 814 00:44:30,920 --> 00:44:36,030 Komandoj ke estas utilaj en GDB estas rompi, kiuj pasas ĉu linion 815 00:44:36,030 --> 00:44:41,330 nombro, funkcio nomo, esence kie en via kodo vi volas halti, 816 00:44:41,330 --> 00:44:45,600 kaj povi preni kontrolon. 817 00:44:45,600 --> 00:44:54,140 >> Print prenas variablon kaj presas el kion ajn tiu variablo estas en tiu 818 00:44:54,140 --> 00:44:55,990 punkto en via ekzekuto. 819 00:44:55,990 --> 00:45:00,130 Sekva movas vian ekzekuto kune unu paŝo. 820 00:45:00,130 --> 00:45:05,050 Kaj treti paŝoj ene funkcio en via ekzekuto. 821 00:45:05,050 --> 00:45:10,480 >> Aliaj aferoj estas kuri, kiu estas kiel vi fakte kuri via kodo. 822 00:45:10,480 --> 00:45:16,630 Continue prenas ĉiujn paŝojn bezonataj por atingi la najbaran rompo punkto. 823 00:45:16,630 --> 00:45:18,300 Kaj estas multaj, multaj aliaj. 824 00:45:18,300 --> 00:45:19,040 Rigardu ilin. 825 00:45:19,040 --> 00:45:19,901 Ili estas grandaj. 826 00:45:19,901 --> 00:45:20,863 Yeah? 827 00:45:20,863 --> 00:45:22,113 >> Publiko: [inaudible]? 828 00:45:22,113 --> 00:45:26,635 829 00:45:26,635 --> 00:45:28,200 >> DONAS: Jes, kio estas erarserĉilo. 830 00:45:28,200 --> 00:45:34,230 Do erarserĉilo estas programo kiu permesas elpurigi vian programon. 831 00:45:34,230 --> 00:45:39,931 Tio ne estas programo kiu trovas insektojn por vi, kvankam tio estus granda. 832 00:45:39,931 --> 00:45:43,020 833 00:45:43,020 --> 00:45:46,040 >> Kaj lasta por mi estas serĉo. 834 00:45:46,040 --> 00:45:51,470 Do la tipoj de serĉo kiu parolis proksimume en tiu klaso estas lineara serĉo, 835 00:45:51,470 --> 00:45:55,960 kio estas ĝuste, ke vi rigardu tra ĉiu ero de la serĉo spaco, unu 836 00:45:55,960 --> 00:46:00,410 ero en tempo, ĝis vi trovi kion vi serĉas aŭ ĝis vi atingos 837 00:46:00,410 --> 00:46:03,350 la finon de via serĉo spaco je kiu atentigi vin diras ke vi ne povis trovi 838 00:46:03,350 --> 00:46:06,360 la elemento kiun vi serĉis. 839 00:46:06,360 --> 00:46:13,450 Kaj ĉi tio portas en bona konstanta tempo, kio estas 0 de 1 kaj ĉe plej malbona linearaj 840 00:46:13,450 --> 00:46:16,070 tempo, kio estas 0 de n. 841 00:46:16,070 --> 00:46:19,250 >> Duuma serĉo, kiu bezonas sordida elementoj. 842 00:46:19,250 --> 00:46:24,230 Vi iras al la mezo de via elementoj, vidi se la ero vi serĉas 843 00:46:24,230 --> 00:46:30,120 estas pli granda aŭ pli malgranda ol la elemento ke vi estas en la mezo. 844 00:46:30,120 --> 00:46:36,510 Ĝi estas granda, vi diras, ke la fundo de via serĉo spaco estas via 845 00:46:36,510 --> 00:46:41,550 aktuala situo, meze, kaj vi restartigu la procezo. 846 00:46:41,550 --> 00:46:46,150 Se ĝi estas pli malgranda, vi rigardas diri ke the-- yeah, kio estas supre? 847 00:46:46,150 --> 00:46:47,400 >> Publiko: [inaudible]? 848 00:46:47,400 --> 00:46:51,000 849 00:46:51,000 --> 00:46:54,260 >> DONAS: Jes. 850 00:46:54,260 --> 00:46:58,360 Ajna speco de varo kiun'S instruis en La klaso estas bela ludo por la testo. 851 00:46:58,360 --> 00:47:01,504 852 00:47:01,504 --> 00:47:04,920 >> [Ridado] 853 00:47:04,920 --> 00:47:10,260 >> DONAS: Kaj la fakto ke vi ne havis fari ĝin por problemo aro, ĝi estas bela 854 00:47:10,260 --> 00:47:12,420 ludo por la testo. 855 00:47:12,420 --> 00:47:15,186 >> Publiko: Ĉu ni iru sur ĝi kiel to-- 856 00:47:15,186 --> 00:47:17,052 >> DONAS: Estos transiris. 857 00:47:17,052 --> 00:47:20,496 >> SPEAKER 2: La reala kodo [Inaudible] estas study.cs50.net. 858 00:47:20,496 --> 00:47:25,910 859 00:47:25,910 --> 00:47:32,680 Do se vi rigardas la praktikon problemo en la merge speco paĝo de 860 00:47:32,680 --> 00:47:35,880 study.cs50.net, tie estas la kodo por implementar kunfandi varo. 861 00:47:35,880 --> 00:47:38,550 Do vi ne devos implementar ĝin mem ĉinokte. 862 00:47:38,550 --> 00:47:42,090 Sed certigi vin kompreni iom ol enmemorigi ĝin. 863 00:47:42,090 --> 00:47:45,035 >> Publiko: [inaudible]? 864 00:47:45,035 --> 00:47:49,720 >> SPEAKER 2: La merge speco paĝo sur study.cs50.net, estas praktiko 865 00:47:49,720 --> 00:47:53,570 problemo kiu, se vi premas per problemo, je la fino estas 866 00:47:53,570 --> 00:47:56,280 solvon, kiu estas la merge speco efektivigo. 867 00:47:56,280 --> 00:47:58,510 Sed certigi vin kompreni anstataŭ nur enmemorigo ĝi 868 00:47:58,510 --> 00:47:59,760 aŭ kopiante ĝin. 869 00:47:59,760 --> 00:48:02,870 870 00:48:02,870 --> 00:48:06,340 >> Publiko: Kaj perfekte valida problemo por la ekzameno estus 871 00:48:06,340 --> 00:48:07,990 iu kiel ĉi tie estas listo. 872 00:48:07,990 --> 00:48:12,100 Kion tio lerta aspekti post unu paŝo de selektadoj varo aŭ 873 00:48:12,100 --> 00:48:13,330 inserción varo aŭ kion ajn. 874 00:48:13,330 --> 00:48:14,940 Unu plenan iteración de la listo. 875 00:48:14,940 --> 00:48:18,530 Do eĉ se vi ne finas bezonante kodo por tio, vi bezonos por kompreni ĝin 876 00:48:18,530 --> 00:48:20,440 sufiĉe por scii ke tuj esti modifi ĉi tabelo. 877 00:48:20,440 --> 00:48:24,144 878 00:48:24,144 --> 00:48:25,394 >> DONAS: Estas tio por mi. 879 00:48:25,394 --> 00:48:30,604 880 00:48:30,604 --> 00:48:32,588 >> [Aplaŭdo] 881 00:48:32,588 --> 00:49:06,316 882 00:49:06,316 --> 00:49:07,410 >> LUCAS: Hey ĉiuj. 883 00:49:07,410 --> 00:49:08,390 Mia nomo estas Lucas. 884 00:49:08,390 --> 00:49:16,840 Mi iras paroli pri rekursio, ĉiuj la varoj kiujn ni lernis, kaj 885 00:49:16,840 --> 00:49:18,050 iom el ĉiuj punteros. 886 00:49:18,050 --> 00:49:18,740 OK? 887 00:49:18,740 --> 00:49:20,340 Do unue: rekursio. 888 00:49:20,340 --> 00:49:22,951 Kion ĝi volas diri ke funkcio estas komputebla? 889 00:49:22,951 --> 00:49:24,675 >> Publiko: Calls mem. 890 00:49:24,675 --> 00:49:26,500 >> LUCAS: OK, nomitaj mem, jes. 891 00:49:26,500 --> 00:49:27,700 Tiel kiel ĉi bildo, ekzemple. 892 00:49:27,700 --> 00:49:30,280 Estas kiel la bildo interne de pentraĵo kaj tiel plu. 893 00:49:30,280 --> 00:49:35,740 Do ekzemple, vi povas have-- Dan kiuj parolis pri duumaj serĉo. 894 00:49:35,740 --> 00:49:41,840 Unu manieron en kiu duuma serĉo estas rikura estas la fakto, ke vi estas 895 00:49:41,840 --> 00:49:43,130 provante trovi nombro. 896 00:49:43,130 --> 00:49:44,250 Do vi iras al la mezo. 897 00:49:44,250 --> 00:49:47,130 Kaj tiam vi kontrolu se la nombroj ne en la maldekstra kaj la dekstra. 898 00:49:47,130 --> 00:49:49,650 >> Kaj tiam, se vi trovu la nombro estas tuj estos sur la maldekstra, ĝi estas la sama 899 00:49:49,650 --> 00:49:53,340 aĵo kiel faras la serĉon denove sed ĝuste je la maldekstra de la listo. 900 00:49:53,340 --> 00:49:57,350 Do jen kiel ĝi sonas kiel ĝi estas rikura. 901 00:49:57,350 --> 00:50:01,870 Tial do vi uloj havas rekursie solvo por merge varo. 902 00:50:01,870 --> 00:50:04,270 >> OK, do jen ekzemplo. 903 00:50:04,270 --> 00:50:07,280 Do diru ke mi volas elekti ĉiuj nombroj de 1 al n. 904 00:50:07,280 --> 00:50:13,790 Mi povas rimarki, ke la sumo de la n nombro estas n plus n minus 1 ĝis 1. 905 00:50:13,790 --> 00:50:17,810 Sed tiam, se mi rigardas n minus 1 pli n minus 2 plus 1, tio estas la sama 906 00:50:17,810 --> 00:50:20,680 aĵo kiel sumante nombroj ĝis n minus 1. 907 00:50:20,680 --> 00:50:25,890 Do mi povas diri la sumo de egala sumo egalas n plus la sumo de n minus 1. 908 00:50:25,890 --> 00:50:28,010 Ĉu tio havas sencon? 909 00:50:28,010 --> 00:50:32,630 >> Kaj mi ankaŭ havus ion alian nomata la bazo kazo, kiu estas kiu 910 00:50:32,630 --> 00:50:37,440 la sumo de la nombroj ĝis nulo devus esti nulo. 911 00:50:37,440 --> 00:50:42,770 Do kiam mi atingas la nombron nulo, mi ĉesas rakonti. 912 00:50:42,770 --> 00:50:45,330 Ĉu tio havas sencon? 913 00:50:45,330 --> 00:50:48,120 >> Do jen ekzemplo de kiel Mi povas apliki tion. 914 00:50:48,120 --> 00:50:49,860 Do mi havas tiun funkcion en iuj. 915 00:50:49,860 --> 00:50:51,700 Tio bezonas entjero n. 916 00:50:51,700 --> 00:50:56,300 Do jen mi unue kontrolu se n estas malpli aŭ egalas al nulo. 917 00:50:56,300 --> 00:51:00,310 Do se estas malpli aŭ egalas al nulo, mi reveni nulo, kiu estas nia bazo kazo. 918 00:51:00,310 --> 00:51:05,690 Alie, mi povas simple reveni n plus la sumo de la ciferoj de 919 00:51:05,690 --> 00:51:07,190 unu al n minus unu. 920 00:51:07,190 --> 00:51:09,360 Sencon? 921 00:51:09,360 --> 00:51:10,100 OK. 922 00:51:10,100 --> 00:51:11,610 >> Do jen kiel tio aspektas. 923 00:51:11,610 --> 00:51:15,260 Vi havas sumo de 2 egaluloj 2 plus la sumo de 1. 924 00:51:15,260 --> 00:51:18,930 Kaj iuj de 1 estas 1 plus la sumo de 0, kio estas 0. 925 00:51:18,930 --> 00:51:20,216 Sencon? 926 00:51:20,216 --> 00:51:25,342 Do se ni rigardas la stako de via programo, tiu estas kio similas. 927 00:51:25,342 --> 00:51:26,820 >> Unue, ni devas la ĉefan funkcion. 928 00:51:26,820 --> 00:51:30,320 Kaj tiam la ĉefa funkcio nomata sumo 2. 929 00:51:30,320 --> 00:51:36,690 Kaj tiam sumo 2 tuj diros, ho, sumo 2 egalas 2 plus la sumo de unu. 930 00:51:36,690 --> 00:51:39,460 Do mi aldonos sumo de 1 al la stako. 931 00:51:39,460 --> 00:51:43,860 Kaj la sumo de 1 tuj voki sumo de 0, kiu ankaŭ tuj estos aldonita 932 00:51:43,860 --> 00:51:44,630 al la stako. 933 00:51:44,630 --> 00:51:49,240 Kaj tiam ĉiu el tiuj kiuj estas sur supro de alia devas reveni 934 00:51:49,240 --> 00:51:52,020 antaŭ la aliaj aĵoj povas plu iri. 935 00:51:52,020 --> 00:51:56,240 >> Do ekzemple, tie, sumo de 0, unue, tuj revenos 0. 936 00:51:56,240 --> 00:51:58,320 Kaj tiam elekti sumo de 1. 937 00:51:58,320 --> 00:52:00,850 Tiam sumo de 1 tuj reveni 1 al sumo de 2. 938 00:52:00,850 --> 00:52:03,900 Kaj fine, sumo de 2 tuj reveni 3 ĉefaj. 939 00:52:03,900 --> 00:52:05,320 Ĉu tio havas sencon? 940 00:52:05,320 --> 00:52:09,496 >> Ĝi estas vere grava por kompreni kiel la stako laboras kaj provi 941 00:52:09,496 --> 00:52:11,980 vidi se ĝi faras senton. 942 00:52:11,980 --> 00:52:13,260 OK, do ordigo. 943 00:52:13,260 --> 00:52:16,170 Do kial ordiga grava, unua el cxiuj? 944 00:52:16,170 --> 00:52:18,260 Kial ni zorgas? 945 00:52:18,260 --> 00:52:20,310 Iu ajn? 946 00:52:20,310 --> 00:52:20,695 Donu al mi ekzemplon? 947 00:52:20,695 --> 00:52:21,040 Yeah? 948 00:52:21,040 --> 00:52:22,968 >> Publiko: [inaudible]. 949 00:52:22,968 --> 00:52:24,700 >> LUCAS: Yeah, OK. 950 00:52:24,700 --> 00:52:26,090 Do vi povas sercxi pli kompetente. 951 00:52:26,090 --> 00:52:28,580 Tio estas bona maniero. 952 00:52:28,580 --> 00:52:32,462 Do, ekzemple, ni havas multe da aferojn, vere, en niaj vivoj kiuj 953 00:52:32,462 --> 00:52:32,920 estas ordo. 954 00:52:32,920 --> 00:52:34,830 Ekzemple, vortaroj. 955 00:52:34,830 --> 00:52:39,210 >> Estas tre grave havi ĉiujn vortoj ian ordon ke ni 956 00:52:39,210 --> 00:52:41,970 povas aliri facile. 957 00:52:41,970 --> 00:52:43,280 Do tio, kion li diras. 958 00:52:43,280 --> 00:52:45,530 Vi povas serĉi pli kompetente. 959 00:52:45,530 --> 00:52:48,740 Pensu kiel malfacile estus havi vortaro en kiu la vortoj estas en 960 00:52:48,740 --> 00:52:49,500 hazarda ordo. 961 00:52:49,500 --> 00:52:53,120 Vi devos rigardi, sufiĉe, ĉiu unuopa vorto, ĝis vi trovos la 962 00:52:53,120 --> 00:52:54,720 vorto, kiun vi serĉas. 963 00:52:54,720 --> 00:52:58,710 >> Se vi uzas Facebook ankaŭ, kiam vi rigardas viaj amikoj, vi estas 964 00:52:58,710 --> 00:53:03,540 tuj vidos ke Facebook metu vian proksima amiko estas sur supro de la aĵoj 965 00:53:03,540 --> 00:53:05,470 ke vi ne parolu kun tiu tiel. 966 00:53:05,470 --> 00:53:08,080 Se vi iras la tutan vojon al la malsupro de Via amiko listo, vi tuj vidos 967 00:53:08,080 --> 00:53:11,250 homoj kiuj vi probable eĉ ne memoru, ke vi estas amikoj kun. 968 00:53:11,250 --> 00:53:14,590 Kaj tio estas ĉar Facebook specoj viaj amikoj bazita sur kiom 969 00:53:14,590 --> 00:53:16,472 fermi Vi estas por ili. 970 00:53:16,472 --> 00:53:17,930 >> Do organizi datumojn. 971 00:53:17,930 --> 00:53:18,450 Ankaŭ Pokemon. 972 00:53:18,450 --> 00:53:21,400 Do vi vidas, ke ĉiuj pokémons havi numerojn. 973 00:53:21,400 --> 00:53:27,210 Kaj tio estas kiel facila vojo de aliro datumoj. 974 00:53:27,210 --> 00:53:29,050 >> Publiko: Aliri Pokemon. 975 00:53:29,050 --> 00:53:29,890 >> LUCAS: Yeah. 976 00:53:29,890 --> 00:53:32,395 >> Publiko: [inaudible]. 977 00:53:32,395 --> 00:53:33,460 >> LUCAS: Yep. 978 00:53:33,460 --> 00:53:35,140 OK, do elekto varo. 979 00:53:35,140 --> 00:53:41,610 Selektado varo tuj elektu malgranda Unsorted valoro de lerta ĉiu 980 00:53:41,610 --> 00:53:43,300 tempo en ĉiu ripeto. 981 00:53:43,300 --> 00:53:46,800 Ĝi estas speco de kiel la varo kiun vi faras en via kapo kiam vi provas 982 00:53:46,800 --> 00:53:48,430 ordigi liston en mano. 983 00:53:48,430 --> 00:53:51,990 >> Esence, ĉiuj vi estas vi rigardas por la plej malgranda nombro. 984 00:53:51,990 --> 00:53:54,280 Vi metis ĝin en la ordo listo. 985 00:53:54,280 --> 00:53:56,230 Kaj tiam vi serĉas la sekvanta malgranda nombro. 986 00:53:56,230 --> 00:54:00,080 Kaj tiam vi observos fari tio kaj tiel plu. 987 00:54:00,080 --> 00:54:04,600 >> Do selektado varo estas esence vi elektu ĉiufoje pli malgranda 988 00:54:04,600 --> 00:54:05,750 Unsorted valoro. 989 00:54:05,750 --> 00:54:10,840 Metis fine de la ordo parton de la listo. 990 00:54:10,840 --> 00:54:12,370 Kaj observu fari tion. 991 00:54:12,370 --> 00:54:15,890 Do ni rapide vidi kio tio aspektas. 992 00:54:15,890 --> 00:54:19,340 Do jen la ordo kaj Unsorted listo. 993 00:54:19,340 --> 00:54:23,350 >> Do por la ordo de lerta, ĝi estas komence malplena. 994 00:54:23,350 --> 00:54:26,760 Kaj poste mi iros elektu malgranda nombro ĉi tie, kiu estas 2. 995 00:54:26,760 --> 00:54:30,650 Do mi ricevas la numeron 2 kaj Mi metos en la fronto de la listo. 996 00:54:30,650 --> 00:54:34,910 Kaj tiam mi serĉos la sekvanta malgranda elemento, kiu estas 3. 997 00:54:34,910 --> 00:54:37,050 Do mi metis ĝin ĉe la fino de la ordo listo. 998 00:54:37,050 --> 00:54:38,140 Kaj tiam mi gardas fari tion. 999 00:54:38,140 --> 00:54:40,040 Mi trovos 4 kaj metis ĝin ĉe la fino. 1000 00:54:40,040 --> 00:54:41,360 Trovi 5 kaj metis ĝin ĉe la fino. 1001 00:54:41,360 --> 00:54:44,830 >> Kaj rigardu: cxiuj el tiuj tempoj kiuj Mi jene meti ĝin ĉe la fino, 1002 00:54:44,830 --> 00:54:46,850 esence, interŝanĝante du valoroj. 1003 00:54:46,850 --> 00:54:48,100 OK? 1004 00:54:48,100 --> 00:54:50,140 1005 00:54:50,140 --> 00:54:52,825 Kaj tiam la lasta, vi simple havas pli elemento. 1006 00:54:52,825 --> 00:54:55,870 Do ĝi estas jam ordo. 1007 00:54:55,870 --> 00:54:57,800 >> OK, do inserción varo. 1008 00:54:57,800 --> 00:55:03,180 Insertion speco vi tuj havos ankaŭ ke afero havi ordo kaj 1009 00:55:03,180 --> 00:55:04,690 oni Unsorted listo. 1010 00:55:04,690 --> 00:55:14,540 La sola afero estas ke ĉiu tempo vi aldoni elementon al la ordo 1011 00:55:14,540 --> 00:55:18,170 listo, vi nur elektu la elemento kiu Estas antaŭ la Unsorted listo. 1012 00:55:18,170 --> 00:55:20,880 Kaj tiam vi tuj trovos kion pozicio devus esti en la ordo 1013 00:55:20,880 --> 00:55:22,300 parton de la listo. 1014 00:55:22,300 --> 00:55:25,840 >> Vidu kion ĉi estas tiel Tio faras pli sentita. 1015 00:55:25,840 --> 00:55:29,360 Do komence, ekzemple, mi provas enigi la numeron tri en la 1016 00:55:29,360 --> 00:55:30,680 ordo parton de la listo. 1017 00:55:30,680 --> 00:55:31,800 Do la listo ne havas ion. 1018 00:55:31,800 --> 00:55:34,160 Do mi povas nur meti la numeron 3. 1019 00:55:34,160 --> 00:55:37,480 >> Nun, mi volas aldoni la numeron 5 al la ordo parton de la listo. 1020 00:55:37,480 --> 00:55:38,900 Do mi rigardas la nombro 5. 1021 00:55:38,900 --> 00:55:40,450 Mi rimarkas, ke ĝi estas pli granda ol 3. 1022 00:55:40,450 --> 00:55:41,980 Do mi scias, ke ĝi devas esti post 3. 1023 00:55:41,980 --> 00:55:44,100 Do mi metis 3 kaj 5. 1024 00:55:44,100 --> 00:55:45,940 >> Tiam mi volas enmeti la numeron 2. 1025 00:55:45,940 --> 00:55:51,630 Mi rimarkis, ke la nombro 2 estas fakte daŭri tiam ambaŭ 3 kaj 5. 1026 00:55:51,630 --> 00:55:54,580 Do mi efektive devas meti ĝin ĉiuj vojon en la komenco de la listo. 1027 00:55:54,580 --> 00:55:59,030 Do mi devas, speco de, ŝanĝi la tutan elementoj en la ordo listo do mi povas 1028 00:55:59,030 --> 00:56:01,970 cedu al la numero 2. 1029 00:56:01,970 --> 00:56:03,160 >> Tiam mi vidas la numero 6. 1030 00:56:03,160 --> 00:56:05,450 Mi vidas, ke gxi estu post 5. 1031 00:56:05,450 --> 00:56:06,240 Do mi metis ĝin tie. 1032 00:56:06,240 --> 00:56:07,965 Kaj fine, mi rigardas la numero 4. 1033 00:56:07,965 --> 00:56:11,030 Kaj mi rimarkas devus esti inter 3 kaj 5. 1034 00:56:11,030 --> 00:56:14,870 Kaj tiam mi metos ĝin tie kaj movo ĉiuj aliaj elementoj. 1035 00:56:14,870 --> 00:56:16,120 Sencon? 1036 00:56:16,120 --> 00:56:17,880 1037 00:56:17,880 --> 00:56:19,150 >> Bobelo Ordigi. 1038 00:56:19,150 --> 00:56:25,730 Do bobelo varo estas esence kion vi tuj do-- ni nomas ĝin bobelo 1039 00:56:25,730 --> 00:56:30,113 varo ĉar vi iros tra la list-- ĝi estas fakte pli bone se mi simple montri 1040 00:56:30,113 --> 00:56:32,300 Vi ŝatus this-- 1041 00:56:32,300 --> 00:56:35,030 kaj vi tuj kompari najbaraj nombroj. 1042 00:56:35,030 --> 00:56:38,410 Kaj vi tuj interŝanĝu siajn pozicioj se ili ne estas 1043 00:56:38,410 --> 00:56:39,190 en la dekstra ordo. 1044 00:56:39,190 --> 00:56:42,570 >> Do esence, kio tuj okazi estas tie, ekzemple, 1045 00:56:42,570 --> 00:56:44,160 vi havas la 8 kaj 6. 1046 00:56:44,160 --> 00:56:47,270 Vi scias ke la ordo ordo fakte 6 kaj 5, dekstra? 1047 00:56:47,270 --> 00:56:49,540 Do vi iras por interŝanĝi ordoj. 1048 00:56:49,540 --> 00:56:51,370 Tiam mi vidas 8 kaj 4 tie. 1049 00:56:51,370 --> 00:56:52,250 Kaj Mi faros la samon. 1050 00:56:52,250 --> 00:56:53,400 Mi interŝanĝu denove. 1051 00:56:53,400 --> 00:56:55,070 Kaj fine, 2 kaj 8. 1052 00:56:55,070 --> 00:56:56,670 Mi ankaŭ interŝanĝi ilin. 1053 00:56:56,670 --> 00:57:01,690 >> Ĝi nomiĝas Bobelo Ordigi ĉar post ĉiu el tiuj ripetoj, efektive, 1054 00:57:01,690 --> 00:57:05,910 la plej granda nombro en la listo ricevas ĉiuj la vojon al la fino de la listo. 1055 00:57:05,910 --> 00:57:06,940 Ĉu tio havas sencon? 1056 00:57:06,940 --> 00:57:11,880 Ĉar ĝi gardas interŝanĝante ĝi kaj movas ĝin dekstren. 1057 00:57:11,880 --> 00:57:14,440 >> OK, do tio estas la dua ripeto. 1058 00:57:14,440 --> 00:57:17,200 Ĝi estus la sama afero. 1059 00:57:17,200 --> 00:57:20,190 Mi faros unu swap kaj tiam la lasta. 1060 00:57:20,190 --> 00:57:23,290 Mi, ke ne ekzistas svopoj kaj la listo estas ordigita. 1061 00:57:23,290 --> 00:57:27,460 Do Bobelo Ordigi, ni esence konservi irante tra la listo kaj interŝanĝante 1062 00:57:27,460 --> 00:57:32,310 tion ĝis mi rimarkis, ke mi ne faros ajna svopoj faranta ke ripeto, kiu 1063 00:57:32,310 --> 00:57:34,270 signifas ke listo estas jam ordo. 1064 00:57:34,270 --> 00:57:35,520 Sencon? 1065 00:57:35,520 --> 00:57:38,400 1066 00:57:38,400 --> 00:57:40,870 >> Ni parolu iomete pri rultempo. 1067 00:57:40,870 --> 00:57:45,165 Do vi uloj memori Big Ho, Omega, kaj Theta? 1068 00:57:45,165 --> 00:57:49,290 1069 00:57:49,290 --> 00:57:50,990 Yeah? 1070 00:57:50,990 --> 00:57:53,070 OK, kio estas Big O, unua el cxiuj? 1071 00:57:53,070 --> 00:57:54,315 >> Publiko: [inaudible]. 1072 00:57:54,315 --> 00:57:59,070 >> LUCAS: Yeah, ĝi estas nomata plej malbona kazo ekzekuto, kiu signifas nur ke ĝi estas 1073 00:57:59,070 --> 00:58:03,470 kiom vi atendas la programon preni kuri. 1074 00:58:03,470 --> 00:58:04,910 Kiel, en terminoj of-- 1075 00:58:04,910 --> 00:58:06,660 en ĉi case-- n. 1076 00:58:06,660 --> 00:58:09,150 La nombro de elementoj en la lerta en la plej malbona kazo. 1077 00:58:09,150 --> 00:58:12,520 Kiel, en la plej malbona ebla kazo. 1078 00:58:12,520 --> 00:58:17,100 >> Do por Bubble Ordigi, ekzemple, ni havos Big O de n kvadrato. 1079 00:58:17,100 --> 00:58:20,580 Kial ni havas tion? 1080 00:58:20,580 --> 00:58:24,716 Kial Bobelo Ordigi Big O n kvadrato? 1081 00:58:24,716 --> 00:58:27,614 >> Publiko: [inaudible]. 1082 00:58:27,614 --> 00:58:35,670 >> LUCAS: Yeah, do la plej malbona kazo estos ke mi devos fari n ripetoj. 1083 00:58:35,670 --> 00:58:39,260 Do ĉiu el la ripetoj tuj alporti la plej granda ero al la fino 1084 00:58:39,260 --> 00:58:40,290 el la listo. 1085 00:58:40,290 --> 00:58:44,230 Do la plej malbona kazo estas, ke mi havas fari ecx n fojojn. 1086 00:58:44,230 --> 00:58:48,550 Kaj por cxiu el tiuj fojoj mi devas faru n svopoj ĉar mi devas kompari 1087 00:58:48,550 --> 00:58:49,870 ĉiu du elementoj. 1088 00:58:49,870 --> 00:58:53,730 Tial do ĝi estas n kvadratoj ĉar ĝi estas n × n. 1089 00:58:53,730 --> 00:59:00,120 >> Tiam, selektado varo estas ankaŭ n kvadrata ĉar, ĉiu ripeto, mi devas 1090 00:59:00,120 --> 00:59:02,650 rigardas ĉiu unuopa ero en la listo. 1091 00:59:02,650 --> 00:59:04,980 Kaj poste trovi la plej malgranda, kio signifas, ke mi devas 1092 00:59:04,980 --> 00:59:06,130 trarigardi n elementoj. 1093 00:59:06,130 --> 00:59:11,750 Kaj mi devas fari tion n fojojn ĉar Mi devas elekti ĉiuj la n elementoj. 1094 00:59:11,750 --> 00:59:18,273 >> Inserción varo estas ankaŭ n kvadrato ĉar la plej malbona kazo scenaron volo 1095 00:59:18,273 --> 00:59:20,950 esti, oni, mi devas enmeti n nombroj, dekstra? 1096 00:59:20,950 --> 00:59:22,765 Do mi jam scias ke mi iros havi n ripetoj. 1097 00:59:22,765 --> 00:59:25,466 1098 00:59:25,466 --> 00:59:29,840 Sed por ĉiu el tiuj numeroj, se mi rigardi ĉiujn numerojn en 1099 00:59:29,840 --> 00:59:34,380 la ordo listo kaj meti la tutan vojon en la fronto, ke estos n kvadrato 1100 00:59:34,380 --> 00:59:36,230 ĉar estos n × n denove. 1101 00:59:36,230 --> 00:59:38,280 Sencon? 1102 00:59:38,280 --> 00:59:41,512 Kio pri omega? 1103 00:59:41,512 --> 00:59:42,886 >> Publiko: [inaudible]. 1104 00:59:42,886 --> 00:59:44,620 >> LUCAS: Ĝi estas la plej bona kazo scenaro. 1105 00:59:44,620 --> 00:59:48,810 Tiel estas kiel en multaj fojoj por ordig, la plej bona kazo scenaro estas 1106 00:59:48,810 --> 00:59:50,660 kiam la listo estas jam ordo. 1107 00:59:50,660 --> 00:59:52,670 Do vi ne vere havas fari nenion. 1108 00:59:52,670 --> 00:59:56,290 Bobelo Ordigi havas la pli bonan kazo scenaro de n. 1109 00:59:56,290 --> 00:59:58,820 Ĉu vi uloj scias kial? 1110 00:59:58,820 --> 01:00:00,620 >> Publiko: [inaudible]. 1111 01:00:00,620 --> 01:00:05,640 >> LUCAS: Yeah, se vi konservi trako de ĉu datumoj porcio havis ajnan svopoj aŭ 1112 01:00:05,640 --> 01:00:10,533 Ne, se vi havas iun kiel aro al vera, se oni iteracion, se la 1113 01:00:10,533 --> 01:00:15,140 listo estas jam ordo, esence, kio okazos estas mi tuj 1114 01:00:15,140 --> 01:00:17,890 provu interŝanĝi ĉiu du najbaraj elementoj. 1115 01:00:17,890 --> 01:00:19,920 Mi tuj vidas, ke ne estas svopoj. 1116 01:00:19,920 --> 01:00:21,230 Kaj mi simple reveni tuj. 1117 01:00:21,230 --> 01:00:24,240 >> Do signifas ke mi ĵus devis iru tra la listo unu fojo. 1118 01:00:24,240 --> 01:00:28,990 Do estas n ĉar mi aspektas je n elementoj. 1119 01:00:28,990 --> 01:00:30,930 Kial selektado speco n akordi? 1120 01:00:30,930 --> 01:00:35,150 1121 01:00:35,150 --> 01:00:45,520 >> Jes, eĉ se la listo estas ordigita, por ĉiu ripeto de selektado speco, mi 1122 01:00:45,520 --> 01:00:47,590 devas elekti la minimuman elementon. 1123 01:00:47,590 --> 01:00:49,980 Do tio signifas ke mi havas ekstere rigardi en ĉiuj elementoj en la Unsorted 1124 01:00:49,980 --> 01:00:53,350 listo kaj trovi la minimuma por ĉiu ripeto. 1125 01:00:53,350 --> 01:00:54,600 Ĉu tio havas sencon? 1126 01:00:54,600 --> 01:00:56,880 1127 01:00:56,880 --> 01:01:04,690 >> Kaj inserción glavo n ĉar en la kazo ke mi provas enmeti la 1128 01:01:04,690 --> 01:01:09,320 nombroj kaj ĉiu el la nombroj, kiam mi provu enmeti ilin, mi vidas, ke oni 1129 01:01:09,320 --> 01:01:10,510 estas en la dekstra pozicio. 1130 01:01:10,510 --> 01:01:15,120 Mi ne devas iri kontroli ĉiujn aliajn nombroj en la Unsorted listo. 1131 01:01:15,120 --> 01:01:17,170 Tial do tio estos n. 1132 01:01:17,170 --> 01:01:19,480 Sencon? 1133 01:01:19,480 --> 01:01:21,035 Kaj kio estas theta? 1134 01:01:21,035 --> 01:01:23,410 >> Publiko: [inaudible]. 1135 01:01:23,410 --> 01:01:24,380 >> LUCAS: Kion bedaŭras? 1136 01:01:24,380 --> 01:01:24,960 Diru ĝin denove. 1137 01:01:24,960 --> 01:01:25,666 >> Publiko: [inaudible]. 1138 01:01:25,666 --> 01:01:26,490 >> LUCAS: Ekzakte. 1139 01:01:26,490 --> 01:01:31,280 Do vi povas vidi ke nur selektado stokitaj en Merge speco havi thetas. 1140 01:01:31,280 --> 01:01:39,920 Kaj tio estas ĉar vi havas nur theta se ambaŭ Granda O kaj Omega estas la sama. 1141 01:01:39,920 --> 01:01:41,520 OK. 1142 01:01:41,520 --> 01:01:44,210 Kaj fine, kunfandi varo en log n. 1143 01:01:44,210 --> 01:01:48,910 >> Kaj tiam, kiel Dan diris, Kunfandi speco estas speco de kiel la sama formo kiu 1144 01:01:48,910 --> 01:01:50,320 vi faras binaran serĉon. 1145 01:01:50,320 --> 01:01:53,530 Do vi akiras la listo. 1146 01:01:53,530 --> 01:01:55,170 Kaj vi tuj tranĉis en duono. 1147 01:01:55,170 --> 01:02:00,580 Kaj tiam vi tranĉis ilin en malgrandaj duonoj. 1148 01:02:00,580 --> 01:02:01,730 Kaj tiam vi kunigi ilin. 1149 01:02:01,730 --> 01:02:02,960 Vi uloj memori ke, dekstra? 1150 01:02:02,960 --> 01:02:04,960 OK, kiel Li diris. 1151 01:02:04,960 --> 01:02:08,330 >> OK, punteros. 1152 01:02:08,330 --> 01:02:11,078 Do kio estas puntero? 1153 01:02:11,078 --> 01:02:12,050 >> Publiko: [inaudible]. 1154 01:02:12,050 --> 01:02:12,820 >> LUCAS: An adreso. 1155 01:02:12,820 --> 01:02:13,720 OK. 1156 01:02:13,720 --> 01:02:18,530 Mi scias, ke David montras faskon de videos de Binky kaj aĵoj montrante 1157 01:02:18,530 --> 01:02:19,080 reciproke. 1158 01:02:19,080 --> 01:02:22,960 Sed mi ŝatas pensi de punteros kiel simple adreso. 1159 01:02:22,960 --> 01:02:26,110 Do estas variablo kiu tuj stoki adreson. 1160 01:02:26,110 --> 01:02:31,940 >> Do estas nur tiu speciala variablo ke estas kvar bajtoj longa. 1161 01:02:31,940 --> 01:02:36,550 Memoru, ke puntero al nenio estas ĉiam kvar bajtoj longa por nia 32-bitoj 1162 01:02:36,550 --> 01:02:39,370 Maŝino tiel la kazo la aparato. 1163 01:02:39,370 --> 01:02:41,920 1164 01:02:41,920 --> 01:02:47,050 Kaj ĝi simple havas la situo de variablo ene de ĝi. 1165 01:02:47,050 --> 01:02:50,240 >> OK, do tie estas tiu memoro, esence. 1166 01:02:50,240 --> 01:02:57,420 Do ĉiu bloko de memoro efektive havas stampo, kiu estas la adreso de la 1167 01:02:57,420 --> 01:02:58,890 slotty memoro. 1168 01:02:58,890 --> 01:03:02,370 Do tio signifas ke mi povas havi puntero indikus 1169 01:03:02,370 --> 01:03:03,380 iu el tiuj adresoj. 1170 01:03:03,380 --> 01:03:09,930 Do la kialo kial ni uzas punteros estas se mi devas memori la situo 1171 01:03:09,930 --> 01:03:12,300 ke specifa variablo estas memoro. 1172 01:03:12,300 --> 01:03:16,560 >> Kaj vi uloj memoras ke unu el tiuj kazoj estis se mi havas funkcion 1173 01:03:16,560 --> 01:03:20,820 se mi vere volas ke vi swap por reelaj nombroj, mi reale 1174 01:03:20,820 --> 01:03:22,110 devas sendi puntero. 1175 01:03:22,110 --> 01:03:23,460 Ne la variablo. 1176 01:03:23,460 --> 01:03:25,200 Ĉu vi uloj memori tion? 1177 01:03:25,200 --> 01:03:26,450 La diferenco between-- 1178 01:03:26,450 --> 01:03:33,350 1179 01:03:33,350 --> 01:03:34,120 kio estas la nomo? 1180 01:03:34,120 --> 01:03:36,010 Nomante de valoro kaj vokas per aludo, dekstra? 1181 01:03:36,010 --> 01:03:36,840 >> OK, yeah. 1182 01:03:36,840 --> 01:03:38,330 Do nomi por valoro. 1183 01:03:38,330 --> 01:03:43,570 Kiam vi simple sendu variablo al funkcii vi simple sendante valoro. 1184 01:03:43,570 --> 01:03:45,610 Do vi vere sendos kopion de la variablo. 1185 01:03:45,610 --> 01:03:49,720 Kaj via programo ne povis zorgi malpli alproksimigas de se la sama variablo reale 1186 01:03:49,720 --> 01:03:51,650 faras kopion. 1187 01:03:51,650 --> 01:03:56,330 >> Kaj nomante por referenco signifas ke Mi vere sendas kopion de la 1188 01:03:56,330 --> 01:03:57,550 Pointer al tiu variablo. 1189 01:03:57,550 --> 01:04:00,970 Do signifas ke mi sendos la situo de tiu variablo. 1190 01:04:00,970 --> 01:04:04,440 Do sensas mi havas la situo de la variablo, kiam mi vokas la funkcion 1191 01:04:04,440 --> 01:04:09,700 kun montriloj, mi povis reale ŝanĝi la datumoj kiuj estis ĉefa. 1192 01:04:09,700 --> 01:04:12,050 Sencon? 1193 01:04:12,050 --> 01:04:17,560 >> Kvankam, la puntero estas kopio, la montrilo ankoraŭ havas la realan adreson de 1194 01:04:17,560 --> 01:04:20,090 la variablo kiu mi deziras ŝanĝi. 1195 01:04:20,090 --> 01:04:21,920 Sencon? 1196 01:04:21,920 --> 01:04:24,290 >> Do krei punteros. 1197 01:04:24,290 --> 01:04:28,410 Memoru, la puntero ĉiam la tipo ke ĝi estas indikante 1198 01:04:28,410 --> 01:04:29,890 al kaj tiam stelon. 1199 01:04:29,890 --> 01:04:31,030 Kaj tiam vi metas la nomon. 1200 01:04:31,030 --> 01:04:35,765 Do memoru, ke kiam ajn vi ajn stelon, estas kiel puntero al 1201 01:04:35,765 --> 01:04:38,990 ke cxio variablo tajpi, ke vi havis. 1202 01:04:38,990 --> 01:04:42,850 >> Do jen en stelo, ekzemple, estas puntero kaj entjero. 1203 01:04:42,850 --> 01:04:47,680 Kaj tiam char stelo estas puntero char stelo ks. 1204 01:04:47,680 --> 01:04:47,960 Yeah? 1205 01:04:47,960 --> 01:04:52,710 >> Publiko: Kio se ni havas puntero al n star x. 1206 01:04:52,710 --> 01:04:55,255 Mi scias, kiu kreas puntero al x. 1207 01:04:55,255 --> 01:04:59,432 Ĉu ĝi ankaŭ deklaras x entjero? 1208 01:04:59,432 --> 01:05:05,170 >> LUCAS: OK, do kiam vi diras n stelo x, vi ne kreante puntero al 1209 01:05:05,170 --> 01:05:06,000 variablon x. 1210 01:05:06,000 --> 01:05:08,170 Vi kreante puntero nomis x. 1211 01:05:08,170 --> 01:05:09,396 >> Publiko: [inaudible]. 1212 01:05:09,396 --> 01:05:14,250 >> LUCAS: Do kiam mi diras n stelo x, mi dirante, hey, en memoro, mi tuj 1213 01:05:14,250 --> 01:05:16,390 akiri unu el ĉi tiuj tri skatoloj. 1214 01:05:16,390 --> 01:05:20,750 Kaj mi tuj diros, ke tiu tuj estos x, kiu estas 1215 01:05:20,750 --> 01:05:22,000 tuj estos montrilo. 1216 01:05:22,000 --> 01:05:26,860 1217 01:05:26,860 --> 01:05:30,640 Kaj ion interesan pri punteros estas ke ni diras ke ili havas 1218 01:05:30,640 --> 01:05:32,620 4 bajtoj por 32-bita maŝino. 1219 01:05:32,620 --> 01:05:36,320 Kaj la kialo estas ĉar 4 bajtoj estas 32-bitoj. 1220 01:05:36,320 --> 01:05:40,490 >> Kaj maŝinoj kiuj estas 64 bitoj efektive havas punteros adresoj 1221 01:05:40,490 --> 01:05:43,480 ke estas 64 bitojn longa. 1222 01:05:43,480 --> 01:05:49,820 Do ĝi nur signifas ke la grandeco de la adresoj en la maŝino estas malsama. 1223 01:05:49,820 --> 01:05:52,270 >> Do referenco kaj Dereferencing. 1224 01:05:52,270 --> 01:05:54,310 Ekzistas du operatorojn vi uloj devus memori. 1225 01:05:54,310 --> 01:05:55,450 La unua estas signo. 1226 01:05:55,450 --> 01:05:56,810 La dua estas stelo. 1227 01:05:56,810 --> 01:06:05,060 Ne konfuzita de tiu stelo kaj ĉi STAR ĉar memoru ke, en 1228 01:06:05,060 --> 01:06:06,950 tiu kazo, vi devas n stelon. 1229 01:06:06,950 --> 01:06:08,700 >> Estas kvazaŭ tutan aferon kune. 1230 01:06:08,700 --> 01:06:10,720 Mankas n spaco stelo. 1231 01:06:10,720 --> 01:06:12,070 Do tio signifas ke ĝi estas la tipo. 1232 01:06:12,070 --> 01:06:14,870 Memoru, ke kiam vi havas la ŝanĝiĝema stelo, vi estas 1233 01:06:14,870 --> 01:06:16,230 parolante pri la tipo. 1234 01:06:16,230 --> 01:06:20,540 >> Kiam vi havas nur stelo kaj tiam la nomo de la variablo, ĝi signifas ke 1235 01:06:20,540 --> 01:06:24,100 vi dereferencing la montrilo, kio signifas ke vi rigardas la 1236 01:06:24,100 --> 01:06:28,290 pointer, trovanta la adreso estas indikante, irante al tiu adreso, 1237 01:06:28,290 --> 01:06:30,850 kaj rigardante ĉiam vi havas tie. 1238 01:06:30,850 --> 01:06:34,310 Do mi diru miaj studentoj, ke kiam vi havas stelo, vi devus pensi ke ĝi estas 1239 01:06:34,310 --> 01:06:36,850 la mallongigo de enhavo de. 1240 01:06:36,850 --> 01:06:39,770 >> Do se vi havas puntero kaj vi fari stelo montrilo, estas la 1241 01:06:39,770 --> 01:06:41,720 enhavo de la montrilo. 1242 01:06:41,720 --> 01:06:44,580 Do vi iras ajn ĝi estas indikante kaj rigardu la konstanta enhavo. 1243 01:06:44,580 --> 01:06:47,730 Kaj-signo estas la sama aĵo kiel adreso de. 1244 01:06:47,730 --> 01:06:52,560 >> Do se mi havas ŝanĝiĝeman a-- kiel, ni diri ke mi faris int a egalas 3-- 1245 01:06:52,560 --> 01:06:56,900 se mi volas trovi la adreson de tiu variablo memoro, mi povas simple fari 1246 01:06:56,900 --> 01:06:58,240 signon al. 1247 01:06:58,240 --> 01:07:00,280 Do estas adreso de. 1248 01:07:00,280 --> 01:07:01,530 Sencon? 1249 01:07:01,530 --> 01:07:03,790 1250 01:07:03,790 --> 01:07:05,040 >> Do jen ekzemplo. 1251 01:07:05,040 --> 01:07:08,370 1252 01:07:08,370 --> 01:07:11,530 Ĉi mankas int b kaj int c. 1253 01:07:11,530 --> 01:07:16,520 Do int a egalas 3 signifas ke Mi tuj iros al la memoro. 1254 01:07:16,520 --> 01:07:19,870 Kaj mi tuj trovos fendo kaj metis la numero 3 tie. 1255 01:07:19,870 --> 01:07:22,200 >> Kaj tiam int b egalas 4. 1256 01:07:22,200 --> 01:07:23,100 Mi tuj faros la samon. 1257 01:07:23,100 --> 01:07:25,840 Iru al la memoro kaj metis nombro 4 en unu el la skatoloj. 1258 01:07:25,840 --> 01:07:27,100 Kaj int egalas 5. 1259 01:07:27,100 --> 01:07:29,740 Trovu alian skatolon kaj metis numeron 5. 1260 01:07:29,740 --> 01:07:36,160 >> Do kio estas tiu linio faranta ekstere? n stelo pa egalas signon al. 1261 01:07:36,160 --> 01:07:37,800 Do unue: n stelo pa. 1262 01:07:37,800 --> 01:07:39,050 Kio ĝi faras? 1263 01:07:39,050 --> 01:07:40,930 1264 01:07:40,930 --> 01:07:42,298 >> Publiko: [inaudible]. 1265 01:07:42,298 --> 01:07:47,890 >> LUCAS: Yeah, do n stelo pa, unue, deklaras puntero nomis pa. 1266 01:07:47,890 --> 01:07:53,720 Kaj tiam ĝi estas atribuante la valoro de ke puntero al la adreso de. 1267 01:07:53,720 --> 01:07:55,790 Do-simbolo al. 1268 01:07:55,790 --> 01:07:58,510 Tiam, se mi faras stelo pb, kio estas stelo pb? 1269 01:07:58,510 --> 01:08:02,418 1270 01:08:02,418 --> 01:08:03,150 >> Ho, pardonu. 1271 01:08:03,150 --> 01:08:06,330 Ĉi tio ankaŭ mankas. n stelo pb. 1272 01:08:06,330 --> 01:08:07,905 Mi volas diri stelo pc. 1273 01:08:07,905 --> 01:08:11,200 Mi tiom pardonpetas. 1274 01:08:11,200 --> 01:08:11,940 Ĝi estas la sama aĵo. 1275 01:08:11,940 --> 01:08:16,408 Sed nun mi estas bona ar kreante montrilo al b kaj tiam puntero al c. 1276 01:08:16,408 --> 01:08:16,886 Yeah? 1277 01:08:16,886 --> 01:08:18,136 >> Publiko: [inaudible]? 1278 01:08:18,136 --> 01:08:25,490 1279 01:08:25,490 --> 01:08:26,670 >> LUCAS: Jes. 1280 01:08:26,670 --> 01:08:32,630 Do se vi iras al la memoro kaj vi iros al la skatolo kiu estas designador por pa, 1281 01:08:32,630 --> 01:08:37,149 vi fakte tuj vidu adreson de. 1282 01:08:37,149 --> 01:08:38,399 OK? 1283 01:08:38,399 --> 01:08:42,970 1284 01:08:42,970 --> 01:08:43,300 Yeah? 1285 01:08:43,300 --> 01:08:45,605 >> Publiko: [inaudible]? 1286 01:08:45,605 --> 01:08:49,260 >> LUCAS: Yeah, puntero estas adreso. 1287 01:08:49,260 --> 01:08:50,120 Neniam forgesu tion. 1288 01:08:50,120 --> 01:08:52,800 Estas kiel la plej grava parton pri punteros. 1289 01:08:52,800 --> 01:08:56,180 Ekzistas stokante kaj adreso iu variablo. 1290 01:08:56,180 --> 01:08:56,890 Io alia? 1291 01:08:56,890 --> 01:08:58,370 Ajna alia demandoj? 1292 01:08:58,370 --> 01:08:59,189 OK. 1293 01:08:59,189 --> 01:09:00,399 >> Do Pointers kaj arrays. 1294 01:09:00,399 --> 01:09:08,189 Memoru ke kiam mi faras int tabelo 3, esence, kion mi faras estas mi, afabla 1295 01:09:08,189 --> 01:09:12,779 de, deklarante en puntero. 1296 01:09:12,779 --> 01:09:18,960 Do tabelo estas speco de kiel puntero al specifa loko en memoro en kiu mi 1297 01:09:18,960 --> 01:09:21,999 asignitaj tri fendojn por entjeroj. 1298 01:09:21,999 --> 01:09:23,430 Ĉu tio havas sencon? 1299 01:09:23,430 --> 01:09:30,250 >> Do kiam mi faros int tabelo 3, kia mi estas faras, esence, estas kreante tri 1300 01:09:30,250 --> 01:09:31,479 slots en memoro. 1301 01:09:31,479 --> 01:09:33,899 Do mi simple trovos tri fendojn en memoro. 1302 01:09:33,899 --> 01:09:38,810 Do se mi faras, tiam, stelo tabelo, ĝi esence signifas la enhavon de tabelo, 1303 01:09:38,810 --> 01:09:46,180 kio signifas ke mi viŝos la montrilo, mi iras al tiu loko, ke ĝi estas indikante, 1304 01:09:46,180 --> 01:09:47,939 Kaj mi metis la nombro unu. 1305 01:09:47,939 --> 01:09:53,729 >> Kaj tiam, se mi faras stelo tabelo plus 1, tio estas la sama afero kiel fari tabelo 1306 01:09:53,729 --> 01:09:59,690 krampoj unu, kiu signifas nur mi iru la loko kiun ĝi estas fingromontrante. 1307 01:09:59,690 --> 01:10:03,000 Kaj tiam la plus 1 fabrikas mi ŝanĝos pozicion. 1308 01:10:03,000 --> 01:10:06,510 Do mi iros al tiu pozicio, efektive, kaj metis la numeron du. 1309 01:10:06,510 --> 01:10:10,900 >> Kaj poste, fine, kiam mi faras tabelo plus 2, mi iras al kie 1310 01:10:10,900 --> 01:10:11,825 tabelo la montradon ĉe. 1311 01:10:11,825 --> 01:10:14,690 Kaj tiam mi movi al memoro blokoj. 1312 01:10:14,690 --> 01:10:16,240 Kaj tiam mi metis la numero tri ĉi tie. 1313 01:10:16,240 --> 01:10:16,600 Yeah? 1314 01:10:16,600 --> 01:10:21,400 >> Publiko: Do ​​stelo tabelo estas simple dirante la unua punkto. 1315 01:10:21,400 --> 01:10:25,090 Kaj vi povas aldoni 1, nur ĉar ni estas nur vere 1316 01:10:25,090 --> 01:10:27,295 referenco kiu unua adreso. 1317 01:10:27,295 --> 01:10:28,545 >> LUCAS: Yeah. 1318 01:10:28,545 --> 01:10:32,720 1319 01:10:32,720 --> 01:10:36,020 Kial ni, ekzemple, diri tabelo 0, tabelo 1, kaj batalarangxis 2? 1320 01:10:36,020 --> 01:10:38,970 1321 01:10:38,970 --> 01:10:42,790 Mi diris: Kial vi faras 0, 1, 2, 3 anstataŭ 1, 2, 3? 1322 01:10:42,790 --> 01:10:46,550 Unu el la kialoj estas: unu, komputilo programistoj preferas komenci 1323 01:10:46,550 --> 01:10:47,750 rakonti de 0. 1324 01:10:47,750 --> 01:10:52,370 Du estas ĉar kiam vi fari tabelo 0, ĝi estas la sama afero kiel fari tabelo 1325 01:10:52,370 --> 01:10:56,330 plus 0, kiu signifas mi iru tiu pozicio, kaj mi ne 1326 01:10:56,330 --> 01:10:59,320 skip ajna memoro blokoj. 1327 01:10:59,320 --> 01:11:01,750 Do mi ne movi ajnan memoron blokoj. 1328 01:11:01,750 --> 01:11:02,015 Yeah? 1329 01:11:02,015 --> 01:11:03,265 >> Publiko: [inaudible]? 1330 01:11:03,265 --> 01:11:05,928 1331 01:11:05,928 --> 01:11:12,670 >> LUCAS: Do ŝi demandis, kio estas la diferenco inter fari 1332 01:11:12,670 --> 01:11:14,000 tiu aŭ fari malloc. 1333 01:11:14,000 --> 01:11:17,550 Unu el la diferencoj estas ke int tabelo 3 estas kreante 1334 01:11:17,550 --> 01:11:19,260 tabelo sur la stako. 1335 01:11:19,260 --> 01:11:23,080 Kaj kiam mi faras malloc, ĝi kreas sur la monteto. 1336 01:11:23,080 --> 01:11:25,250 Ĉu tio havas sencon? 1337 01:11:25,250 --> 01:11:28,870 >> Do kiel malloc reale funkcias? 1338 01:11:28,870 --> 01:11:32,245 Do kial ni ankoraŭ bezonas uzi malloc? 1339 01:11:32,245 --> 01:11:35,730 1340 01:11:35,730 --> 01:11:39,700 Via tradukilo speco de figuroj el ĉiuj la variabloj kiujn vi deklaris. 1341 01:11:39,700 --> 01:11:44,040 Li kreas spacon por ĉiuj de ili en la stako. 1342 01:11:44,040 --> 01:11:47,180 Do ĉiuj viaj variabloj tuj esti ie en la stako. 1343 01:11:47,180 --> 01:11:49,460 Do jen la medio variabloj. 1344 01:11:49,460 --> 01:11:53,850 >> Do esence, spaco por tiuj variabloj en memoro estas asignitaj je 1345 01:11:53,850 --> 01:11:55,080 kompili tempo. 1346 01:11:55,080 --> 01:11:58,790 Do tio signifas ke via komputilo havas scii ĉiujn tiujn variablojn 1347 01:11:58,790 --> 01:11:59,790 antemano. 1348 01:11:59,790 --> 01:12:02,500 Ĝi ne bezonas scii kion valoro vi tuj metis en ili. 1349 01:12:02,500 --> 01:12:05,490 Sed bezonas scii multan memoron vi bezonos. 1350 01:12:05,490 --> 01:12:09,380 >> Sed nun diru ke, ekzemple, vi kreas tabelon aŭ preni 1351 01:12:09,380 --> 01:12:13,430 kordo ke vi prenas de la uzanto. 1352 01:12:13,430 --> 01:12:17,300 Vi ne scias kiom longe la kordo tuj estos, ekzemple. 1353 01:12:17,300 --> 01:12:20,600 Do vi ne scias precize kiom da memoro blokoj vi malŝparas, dekstra? 1354 01:12:20,600 --> 01:12:24,120 >> Do ne vere havas sencon por vi diri metis 100 karakteroj. 1355 01:12:24,120 --> 01:12:26,420 Kaj tiam kion se la uzanto skribas 150? 1356 01:12:26,420 --> 01:12:27,670 Vi tuj estos ŝraŭbita. 1357 01:12:27,670 --> 01:12:30,160 1358 01:12:30,160 --> 01:12:34,620 >> Do esence vi ne povas esti certa pri kiom multan memoron vi bezonas atribui 1359 01:12:34,620 --> 01:12:35,960 kiam vi kompili la programon. 1360 01:12:35,960 --> 01:12:38,240 Vi nur scias ke en tempo de ekzekuto. 1361 01:12:38,240 --> 01:12:39,950 Tial do vi havas la amason. 1362 01:12:39,950 --> 01:12:47,610 Do la amaso tuj havos memoro ke vi atribuante dum la 1363 01:12:47,610 --> 01:12:50,810 daŭro de la programo kuras. 1364 01:12:50,810 --> 01:12:55,780 >> Do esence, kiam vi faras malloc, kio vi faras estas atribuo memoro ĉe 1365 01:12:55,780 --> 01:13:00,160 ekzekuto, kio signifas, ke vi estas decidi ĝuste en tiu momento, ke vi 1366 01:13:00,160 --> 01:13:02,670 devus havi tiun memoron. 1367 01:13:02,670 --> 01:13:04,210 Do tio estas kiam vi atribuante ĝin. 1368 01:13:04,210 --> 01:13:06,430 Ĉu tio havas sencon? 1369 01:13:06,430 --> 01:13:11,690 >> Do memoru, la stako havas variabloj kiuj estas kreitaj sur kompila tempo. 1370 01:13:11,690 --> 01:13:14,560 Kaj tiam la amaso havas variabloj kiuj estas kreitaj kiel vi iri 1371 01:13:14,560 --> 01:13:15,600 kun malloc, ekzemple. 1372 01:13:15,600 --> 01:13:16,850 >> Publiko: [inaudible]? 1373 01:13:16,850 --> 01:13:19,179 1374 01:13:19,179 --> 01:13:24,340 >> LUCAS: Do GetString estas irante voki malloc. 1375 01:13:24,340 --> 01:13:26,710 Lasu min paroli malloc kaj Mi klarigos GetString. 1376 01:13:26,710 --> 01:13:32,000 Do malloc estas la sama aĵo kiel memoro atribuo. 1377 01:13:32,000 --> 01:13:34,600 Do tuj rezervu memoro sur la monteto. 1378 01:13:34,600 --> 01:13:40,010 Kaj tuj revenos puntero al kie tiu memoro estis asignitaj ĉe. 1379 01:13:40,010 --> 01:13:43,090 >> Do kiam vi do-- 1380 01:13:43,090 --> 01:13:44,910 tie example-- 1381 01:13:44,910 --> 01:13:45,830 n stelo montrilo. 1382 01:13:45,830 --> 01:13:50,520 Kaj tiam puntero egalas malloc grandeco de colo fojojn 10. 1383 01:13:50,520 --> 01:13:52,110 Mi kreante montrilo. 1384 01:13:52,110 --> 01:13:59,020 Kaj tiam mi atribuante ke puntero al la valoro de la montrilo ke malloc 1385 01:13:59,020 --> 01:13:59,680 donas min. 1386 01:13:59,680 --> 01:14:04,150 >> Do mi demandas malloc povas destini spaco por 10 entjeroj. 1387 01:14:04,150 --> 01:14:05,390 Tion ĝi estas jene. 1388 01:14:05,390 --> 01:14:09,020 Kaj malloc donas min al Pointer al tiu loko. 1389 01:14:09,020 --> 01:14:11,460 Sencon? 1390 01:14:11,460 --> 01:14:12,270 OK. 1391 01:14:12,270 --> 01:14:17,940 Mi Kaj GetString estas, esence, farante nomas malloc tiel vi povas destini 1392 01:14:17,940 --> 01:14:21,680 memoro dum ekzekuto. 1393 01:14:21,680 --> 01:14:26,460 >> Ĉiam memoru kontroli por null ĉar malloc tuj revenos nula 1394 01:14:26,460 --> 01:14:28,200 se ĝi ne povas atribui memoron. 1395 01:14:28,200 --> 01:14:31,660 Diru ke vi petu ridindan kvanton da memoro. 1396 01:14:31,660 --> 01:14:33,950 Via komputilo ne tuj estos povis atribui ke multe. 1397 01:14:33,950 --> 01:14:36,410 >> Do malloc estas ĝuste tuj reveni nula. 1398 01:14:36,410 --> 01:14:42,210 Do ĉiam memoros por kontroli se la puntero ke vi ricevis de malloc estas 1399 01:14:42,210 --> 01:14:45,640 nulan aŭ ne ĉar, se ĝi estas, eble vi esti dereferencing puntero kaj 1400 01:14:45,640 --> 01:14:48,340 kaŭzante flanko faŭltoj. 1401 01:14:48,340 --> 01:14:50,930 Kaj fine, ne forgesu via libera memoro. 1402 01:14:50,930 --> 01:14:57,800 1403 01:14:57,800 --> 01:15:00,560 >> Malloc kreas memoro en la havaĵo. 1404 01:15:00,560 --> 01:15:03,436 Kaj vi devas liberigi la memoron antaŭ la programo finiĝas. 1405 01:15:03,436 --> 01:15:05,370 OK, nenio por mi. 1406 01:15:05,370 --> 01:15:07,900 Pardonu, Rob. 1407 01:15:07,900 --> 01:15:07,950 Dankon. 1408 01:15:07,950 --> 01:15:09,878 >> [Aplaŭdo] 1409 01:15:09,878 --> 01:15:12,679 >> LUCAS: Ajna lastaj demandoj antaŭ Rob venas? 1410 01:15:12,679 --> 01:15:13,138 Neniu? 1411 01:15:13,138 --> 01:15:13,597 Yeah? 1412 01:15:13,597 --> 01:15:15,892 >> Publiko: Mi ne vidis ĉi tiu linio. 1413 01:15:15,892 --> 01:15:17,269 Ĉu vi alŝutis ĝi ankoraŭ? 1414 01:15:17,269 --> 01:15:19,106 >> LUCAS: Mi pensas Dave estas alŝuti ĝin frue. 1415 01:15:19,106 --> 01:15:19,880 >> DAVE: Ĝi estos eldonita. 1416 01:15:19,880 --> 01:15:20,310 >> LUCAS: Estos enreta. 1417 01:15:20,310 --> 01:15:21,175 >> Publikon: ĝi dependas. 1418 01:15:21,175 --> 01:15:22,090 >> LUCAS: Ĝi dependas? 1419 01:15:22,090 --> 01:15:23,157 OK. 1420 01:15:23,157 --> 01:15:23,644 Yeah? 1421 01:15:23,644 --> 01:15:27,053 >> Publiko: [inaudible]? 1422 01:15:27,053 --> 01:15:30,285 >> LUCAS: Jes, vi devus liberigi ĉiujn memoro kiu estas metita en la havaĵo. 1423 01:15:30,285 --> 01:15:31,535 >> Publiko: [inaudible]? 1424 01:15:31,535 --> 01:15:34,518 1425 01:15:34,518 --> 01:15:36,160 >> LUCAS: Jes. 1426 01:15:36,160 --> 01:15:39,980 Ajna tempo vi havas kulturon malloc, Vi devus havi kulturon liberaj 1427 01:15:39,980 --> 01:15:42,640 kiam vi ĉesas uzi tiu variablo. 1428 01:15:42,640 --> 01:15:44,800 Do malloc kaj libera estas ĉiam kune. 1429 01:15:44,800 --> 01:15:45,410 Iliaj plej bonaj amikoj. 1430 01:15:45,410 --> 01:15:46,720 Yeah. 1431 01:15:46,720 --> 01:15:47,970 Rob? 1432 01:15:47,970 --> 01:15:55,595 1433 01:15:55,595 --> 01:15:56,850 >> ROB: Mi iros rapide. 1434 01:15:56,850 --> 01:16:00,466 Kaj ankaŭ la video estos metita supren. 1435 01:16:00,466 --> 01:16:01,716 Mi havas la mic sur. 1436 01:16:01,716 --> 01:16:24,060 1437 01:16:24,060 --> 01:16:26,230 >> OK, do semajnon kvin stuff. 1438 01:16:26,230 --> 01:16:27,970 Unua afero ni havas estas la stako. 1439 01:16:27,970 --> 01:16:33,390 Do memoru, ke ekzistas nur unu pilo kadron por aktiva funkcio alvokon. 1440 01:16:33,390 --> 01:16:34,710 Ni vidos ke en dua. 1441 01:16:34,710 --> 01:16:37,850 Kaj ankaŭ memoras kio efektive iras en ĉiu stako kadro tuj estos 1442 01:16:37,850 --> 01:16:41,880 la lokaj variabloj de niaj funkcioj, la argumentoj kiuj pasis en nian 1443 01:16:41,880 --> 01:16:43,880 funkcioj, kune kun paro aliaj aĵoj vi faras ne vere 1444 01:16:43,880 --> 01:16:45,260 bezonas zorgi pri. 1445 01:16:45,260 --> 01:16:50,950 >> Do jen ekzemplo programo kie, avizo, ĉefaj estas printfing la reveno 1446 01:16:50,950 --> 01:16:52,830 valoro de foo 4. 1447 01:16:52,830 --> 01:16:57,930 foo estas ĝuste tuj revenos la valoro de trinkejo 4 komo 6. 1448 01:16:57,930 --> 01:17:02,380 Kaj trinkejo tuj metis iujn lokajn variablon n egalas al 4 fojoj 6. 1449 01:17:02,380 --> 01:17:03,920 Kaj tiam reveni n. 1450 01:17:03,920 --> 01:17:09,130 >> Do ni rigardu la stako dum la reala ripeto de tiu programo. 1451 01:17:09,130 --> 01:17:10,500 Do tie estas la fundo de nia stako. 1452 01:17:10,500 --> 01:17:12,620 Memoru ke la pilo kreskas. 1453 01:17:12,620 --> 01:17:15,370 Do, je la fundo de nia stako, ni havi pilo kadro por ĉefa. 1454 01:17:15,370 --> 01:17:17,000 Kiam la programo komenciĝas, ĉefa ĉiam tuj estos ĉe la 1455 01:17:17,000 --> 01:17:18,560 fundo de nia stako. 1456 01:17:18,560 --> 01:17:20,880 >> Kaj kio estas ene de nia pilo kadro por ĉefaj? 1457 01:17:20,880 --> 01:17:23,810 Do kvankam ekzistas neniu loka variablojn ĉefaj, kiel mi diris antaŭe, 1458 01:17:23,810 --> 01:17:29,670 ni argc kaj rgv prenante supren spaco ene de ĉefa pilo kadro. 1459 01:17:29,670 --> 01:17:33,260 Do ĉefaj nun tuj alvoki funkcio foo. 1460 01:17:33,260 --> 01:17:35,125 Kaj tio signifas foo tuj akiri propran pilo kadro. 1461 01:17:35,125 --> 01:17:36,970 >> Do nun ni estas interne La funkcio foo. 1462 01:17:36,970 --> 01:17:38,610 Kaj kio bezonas iri foo la pilo kadro? 1463 01:17:38,610 --> 01:17:41,100 Nu, foo havas argumenton n. 1464 01:17:41,100 --> 01:17:45,440 Kaj n estas egala al 4 ĉar tio estas kion ĉefa preterpasas kiel foo argumento. 1465 01:17:45,440 --> 01:17:48,490 >> Do nun foo tuj voki stangon. 1466 01:17:48,490 --> 01:17:52,070 Kio estas trinkejo tuj havas interne el lia 'stack kadro? 1467 01:17:52,070 --> 01:17:55,610 Ĝi havas x egalas al 4 y egalas ses. 1468 01:17:55,610 --> 01:17:58,540 Tio ne estas ĉio, kion ni tuj havos en la pilo kadro ĉar trinkejo 1469 01:17:58,540 --> 01:18:00,580 ankaŭ havas lokan variablon n. 1470 01:18:00,580 --> 01:18:03,370 Kaj n ni tuj starigu egalas 24. 1471 01:18:03,370 --> 01:18:05,750 >> Do nun trinkejo tuj revenos n. 1472 01:18:05,750 --> 01:18:09,300 Do stango reveni 24 al la pilo kadro foo. 1473 01:18:09,300 --> 01:18:12,560 Kaj ĉar trinkejo nun reveninte, ke signifas ni krevi la pilo kadro 1474 01:18:12,560 --> 01:18:14,250 por trinkejo off de la stako. 1475 01:18:14,250 --> 01:18:18,430 Do ĉiuj memoro kiun trinkejo estis uzante nun ekiras al la stako. 1476 01:18:18,430 --> 01:18:21,550 >> Nun, foo ankaŭ iri reveni 24 ĉefaj. 1477 01:18:21,550 --> 01:18:25,470 Do nun tiu foo revenas, la memoro ke foo uzis en ĝia ' 1478 01:18:25,470 --> 01:18:27,550 pilo kadro ankaŭ malaperis. 1479 01:18:27,550 --> 01:18:29,660 Kaj nun, ĉefaj tuj voki printf. 1480 01:18:29,660 --> 01:18:31,660 Do printf estas nur alia funkcio. 1481 01:18:31,660 --> 01:18:35,320 Kiam ni nomas printf, ĝi tuj estos alia pilo kadro por printf 1482 01:18:35,320 --> 01:18:36,470 funkcio alvokon. 1483 01:18:36,470 --> 01:18:37,990 >> Kion ni pasante printf? 1484 01:18:37,990 --> 01:18:40,090 Tion tuj iros sur lia pilo kadro. 1485 01:18:40,090 --> 01:18:44,970 Almenaŭ, ni pasante ke procento i backslash n kaj 1486 01:18:44,970 --> 01:18:47,180 la argumento 24. 1487 01:18:47,180 --> 01:18:50,370 Ĝi povus havi pli estas pilo kadro se printf okazas esti uzante kelkaj 1488 01:18:50,370 --> 01:18:51,200 lokaj variabloj. 1489 01:18:51,200 --> 01:18:51,920 Ni ne scias. 1490 01:18:51,920 --> 01:18:53,810 >> Sed cxiuj, kiuj iras en printf La pilo kadro. 1491 01:18:53,810 --> 01:18:55,740 Ĝi tuj ekzekuti la printf. 1492 01:18:55,740 --> 01:18:56,830 Tiam printf finos. 1493 01:18:56,830 --> 01:18:57,820 Ĝi revenos. 1494 01:18:57,820 --> 01:18:58,960 Fine, ĉefaj estas farita. 1495 01:18:58,960 --> 01:18:59,860 Ĉefa revenos. 1496 01:18:59,860 --> 01:19:02,020 Kaj tiam nia programo estas farita. 1497 01:19:02,020 --> 01:19:02,480 Yeah? 1498 01:19:02,480 --> 01:19:04,505 >> Publiko: Cxu vi vidas [inaudible] 1499 01:19:04,505 --> 01:19:05,900 argumentoj [inaudible] 1500 01:19:05,900 --> 01:19:06,830 parametrojn? 1501 01:19:06,830 --> 01:19:09,970 >> ROB: Do ekzistas subtila diferenco inter argumentoj kaj parametroj. 1502 01:19:09,970 --> 01:19:14,400 Kaj vere, en komuna ekparolos, homoj emas justaj miksi ilin la tutan tempon. 1503 01:19:14,400 --> 01:19:17,550 Sed parametroj estas la formala nomo de la aĵoj. 1504 01:19:17,550 --> 01:19:20,180 >> Do argc kaj argv estas parametrojn al ĉefa. 1505 01:19:20,180 --> 01:19:23,440 Argumentoj estas kion vi reale Iam en kiel tiuj parametroj. 1506 01:19:23,440 --> 01:19:28,340 Do, kiam mi vokas foo de 4, 4 estas la argumento mi pasante. 1507 01:19:28,340 --> 01:19:31,460 Kaj la parametro n, interne de foo, prenas la valoron 4 1508 01:19:31,460 --> 01:19:32,880 ekde 4 estis la argumento. 1509 01:19:32,880 --> 01:19:35,826 >> Publiko: [inaudible]? 1510 01:19:35,826 --> 01:19:37,880 >> ROB: n estas loka variablo al drinkejo. 1511 01:19:37,880 --> 01:19:41,420 1512 01:19:41,420 --> 01:19:44,960 n estas ankoraŭ lokaj al foo, sed estas parametro al Foo. 1513 01:19:44,960 --> 01:19:48,190 Ne loka variablo. 1514 01:19:48,190 --> 01:19:48,546 Yeah? 1515 01:19:48,546 --> 01:19:51,180 >> Publiko: [inaudible]? 1516 01:19:51,180 --> 01:19:55,400 >> ROB: foo estas simple nomante trinkejo kaj reveni ajn trinkejo revenas. 1517 01:19:55,400 --> 01:19:56,786 >> Publiko: [inaudible]? 1518 01:19:56,786 --> 01:19:59,591 >> ROB: Yeah, simple vidi multnombrajn pilo kadroj. 1519 01:19:59,591 --> 01:20:00,082 Yeah? 1520 01:20:00,082 --> 01:20:03,519 >> Publiko: Kial foo nomata antaŭ printf? 1521 01:20:03,519 --> 01:20:05,920 >> ROB: Kial foo nomis antaux printf? 1522 01:20:05,920 --> 01:20:10,740 Do mi povus havi, anstataŭ, farita io kiel int x egalas foo de 4 1523 01:20:10,740 --> 01:20:12,980 kaj tiam presitaj x. 1524 01:20:12,980 --> 01:20:17,900 Sed anstataŭe mi kombinis la funkcio vokas en la printf argumento. 1525 01:20:17,900 --> 01:20:23,670 >> Sed rimarki ke ni ne povas reale ekzekuti la alvokon al printf ĝis ni 1526 01:20:23,670 --> 01:20:25,610 elkompreni foo de 4 estas. 1527 01:20:25,610 --> 01:20:27,480 Do ni iras por taksi tion. 1528 01:20:27,480 --> 01:20:32,504 Kaj nur fojo ke estas farita iras reveni kaj taksi ĉi. 1529 01:20:32,504 --> 01:20:32,990 Yeah? 1530 01:20:32,990 --> 01:20:37,364 >> Publiko: Ekde ambaŭ trinkejo [inaudible] 1531 01:20:37,364 --> 01:20:41,738 valoro, kial ni ne havas [inaudible]? 1532 01:20:41,738 --> 01:20:44,400 >> ROB: Ili tute devus esti int. 1533 01:20:44,400 --> 01:20:46,260 Tio ne estis kaptita super multnombraj pasas. 1534 01:20:46,260 --> 01:20:49,010 Do ĝi devus esti int trinkejo kaj int foo ĉar ambaŭ de tiuj 1535 01:20:49,010 --> 01:20:50,460 estas reveni entjeroj. 1536 01:20:50,460 --> 01:20:54,214 Void estas nur se ili ne tuj reveni realaj valoroj. 1537 01:20:54,214 --> 01:20:54,692 Yeah? 1538 01:20:54,692 --> 01:20:58,038 >> Publiko: Se vi havis linion supre la reveno, [inaudible]? 1539 01:20:58,038 --> 01:21:01,862 1540 01:21:01,862 --> 01:21:03,730 >> ROB: Linio super la reveno? 1541 01:21:03,730 --> 01:21:04,410 >> Publiko: Yeah. 1542 01:21:04,410 --> 01:21:10,780 Kiel se vi faris printf kaj [inaudible], ĉu presi dufoje? 1543 01:21:10,780 --> 01:21:12,992 >> ROB: Do ene de foo? 1544 01:21:12,992 --> 01:21:15,945 Se ni havis printf ĝuste ĉi tie? 1545 01:21:15,945 --> 01:21:16,750 >> Publiko: Yeah. 1546 01:21:16,750 --> 01:21:19,510 >> ROB: Do se ni havis printf dekstra tie, estus presi unufoje. 1547 01:21:19,510 --> 01:21:23,400 Ekde ni nomas foo unufoje dekstren tie, tiam ni batis la printf. 1548 01:21:23,400 --> 01:21:24,620 Poste ni vokos stangon. 1549 01:21:24,620 --> 01:21:25,710 Kaj tiam foo revenos. 1550 01:21:25,710 --> 01:21:26,275 Kaj tio estas ĝi. 1551 01:21:26,275 --> 01:21:30,985 Ni nur iam renkontas la printf unufoje. 1552 01:21:30,985 --> 01:21:31,482 Yeah? 1553 01:21:31,482 --> 01:21:32,973 >> Publiko: [inaudible] 1554 01:21:32,973 --> 01:21:37,950 printf nomante foo ĉar ni unue nomante printf kaj tiam ni pasante 1555 01:21:37,950 --> 01:21:38,580 la argumentoj. 1556 01:21:38,580 --> 01:21:40,960 >> ROB: Do teorie, estas ne printf nomante foo? 1557 01:21:40,960 --> 01:21:42,220 Do ne. 1558 01:21:42,220 --> 01:21:47,360 Nur la ordo kiu c tuj ekzekuti tiujn aferojn estas, antaŭ ol ni povas 1559 01:21:47,360 --> 01:21:49,800 nomas funkcio, ĉiu el la argumentoj la funkcio devas 1560 01:21:49,800 --> 01:21:51,600 esti tute taksita. 1561 01:21:51,600 --> 01:21:53,540 Do estas tiu tute taksis? 1562 01:21:53,540 --> 01:21:54,610 Jes, ĝi estas nur kordo. 1563 01:21:54,610 --> 01:21:55,480 Estas nur valoro. 1564 01:21:55,480 --> 01:21:57,200 >> Tiam ni havas tute taksi ĉi. 1565 01:21:57,200 --> 01:21:59,720 Iam ĉi tiu estas farita, nun ĉiuj liaj argumentoj estas taksitaj. 1566 01:21:59,720 --> 01:22:01,982 Kaj nun ni povas fari la vokas al printf. 1567 01:22:01,982 --> 01:22:02,478 Yeah? 1568 01:22:02,478 --> 01:22:03,966 >> Publiko: Unu demando. 1569 01:22:03,966 --> 01:22:06,942 Se vi havas nula funkcio devas vi havas revenon punktokomo? 1570 01:22:06,942 --> 01:22:09,910 >> ROB: Vi ne revenon punktokomo se vi havas nula funkcio. 1571 01:22:09,910 --> 01:22:13,370 1572 01:22:13,370 --> 01:22:14,780 OK. 1573 01:22:14,780 --> 01:22:15,830 Do nun iu amason stuff. 1574 01:22:15,830 --> 01:22:19,640 Do amaso estas kiel ni tuj trakti kun dinamika memoro mastrumado. 1575 01:22:19,640 --> 01:22:23,100 Kaj tio rekte kontrastas kun la pilo kiu nomus aŭtomata 1576 01:22:23,100 --> 01:22:24,100 memoro mastrumado. 1577 01:22:24,100 --> 01:22:27,140 >> Tial en la stako, vi neniam vere havis trakti kiel la lokaj variabloj 1578 01:22:27,140 --> 01:22:30,400 estas puŝata kaj pusxis la tutan tiuj pilo kadroj kaj ĉiuj kiuj stuff. 1579 01:22:30,400 --> 01:22:31,070 Vi ne bezonas zorgi pri tio. 1580 01:22:31,070 --> 01:22:32,070 Ĝi estas aŭtomata. 1581 01:22:32,070 --> 01:22:36,990 Do la monteto estu manlibro. 1582 01:22:36,990 --> 01:22:38,070 Kaj la [inaudible] 1583 01:22:38,070 --> 01:22:41,260 devenas tiuj funkcioj malloc kaj libera. 1584 01:22:41,260 --> 01:22:43,550 >> Do jen alia programo. 1585 01:22:43,550 --> 01:22:47,145 Ĉiuj ni faras estas mallocing entjero. 1586 01:22:47,145 --> 01:22:49,360 Ni stokante ĝin en stelo x. 1587 01:22:49,360 --> 01:22:52,520 Kompreneble, ni devas kontroli vidi se x estas nula. 1588 01:22:52,520 --> 01:22:56,400 Tiam ni tuj ĝuste starigis kio x estas montranta al 50. 1589 01:22:56,400 --> 01:23:00,350 1590 01:23:00,350 --> 01:23:03,260 Presi kio x indikante, print x, kaj tiam libera x. 1591 01:23:03,260 --> 01:23:08,920 >> Do kial tio efektive tuj serĉos se ni rigardas nian pilo kaj amason? 1592 01:23:08,920 --> 01:23:10,950 Do ni komencu denove. 1593 01:23:10,950 --> 01:23:12,580 La fundo de nia stako kiel antaŭe. 1594 01:23:12,580 --> 01:23:15,930 Memoru ke vi amasigu rekte kontraŭas la pilo? 1595 01:23:15,930 --> 01:23:18,850 Do ni tuj havos la supron de nia amaso tie supre. 1596 01:23:18,850 --> 01:23:22,590 >> Do la fundo de nia stako, ni havas nia stako kadron por ĉefa. 1597 01:23:22,590 --> 01:23:28,000 Ĝi havas la spacon por argc, argv, kaj ni nun havas lokan variablon x, kiu 1598 01:23:28,000 --> 01:23:30,030 estas int stelo. 1599 01:23:30,030 --> 01:23:32,240 Do ni iras persisti tra ĉi tiu programo. 1600 01:23:32,240 --> 01:23:34,420 Unua afero ni estas alvoko al malloc. 1601 01:23:34,420 --> 01:23:36,250 >> Do ni faras alvokon al malloc. 1602 01:23:36,250 --> 01:23:37,100 Malloc estas funkcio. 1603 01:23:37,100 --> 01:23:38,770 Ĝi tuj akiri pilo kadro. 1604 01:23:38,770 --> 01:23:40,180 Kion ni pasante al malloc? 1605 01:23:40,180 --> 01:23:41,610 Tio tuj iros interne de la pilo kadro. 1606 01:23:41,610 --> 01:23:45,130 Ni pasante grandeco de n, kiu estas 4. 1607 01:23:45,130 --> 01:23:49,700 Tiel ke ĝi pasis al malloc. 1608 01:23:49,700 --> 01:23:50,910 >> Kion malloc fari? 1609 01:23:50,910 --> 01:23:53,820 Ĝi altiras nin iuj spaco sur la monteto. 1610 01:23:53,820 --> 01:23:55,320 Do ni tuj iru al la havaĵo. 1611 01:23:55,320 --> 01:23:57,990 Kaj ni iras ekpreni 4 bajtoj de la monteto. 1612 01:23:57,990 --> 01:24:01,500 Do ni nur donos ke arbitran adreso. 1613 01:24:01,500 --> 01:24:06,680 0x123 Nur ŝajnigi ke estas adreso, kiu estas sur la muro. 1614 01:24:06,680 --> 01:24:12,300 >> Do kio estas fakte ene de tiu regiono de memoro ĉe adreso Ox123? 1615 01:24:12,300 --> 01:24:13,080 Garbage. 1616 01:24:13,080 --> 01:24:15,270 Do ni ne stokas ion en ĝi. 1617 01:24:15,270 --> 01:24:18,830 Do kiom ni scias, povus esti io. 1618 01:24:18,830 --> 01:24:20,560 Vi ne devus supozi estas nulo. 1619 01:24:20,560 --> 01:24:23,870 Estas plej verŝajne ne nulo. 1620 01:24:23,870 --> 01:24:26,260 >> Do nun malloc revenas. 1621 01:24:26,260 --> 01:24:28,020 Kaj kion ni faros kiam malloc revenas? 1622 01:24:28,020 --> 01:24:29,800 Ni starigis kion revenas. 1623 01:24:29,800 --> 01:24:32,290 Ni starigis x egala al kio estas reveni. 1624 01:24:32,290 --> 01:24:33,690 Do kio estas tio reveni? 1625 01:24:33,690 --> 01:24:38,150 Ĝi estas reveni 0x123 ĉar tio estas la adreso de la bloko de memoro, ke 1626 01:24:38,150 --> 01:24:40,850 nur asignitaj en la havaĵo. 1627 01:24:40,850 --> 01:24:47,160 >> Tiel revenos 0x123 x estas nun tuj enkadrigeblajn egalas 0x123 kiu, pictóricamente, 1628 01:24:47,160 --> 01:24:52,940 ni ofte desegni kiel x havanta realan arrow indikante ke bloko. 1629 01:24:52,940 --> 01:24:55,820 Sed x estas simple stoki tiu adreso. 1630 01:24:55,820 --> 01:24:58,670 Do nun ni devas kontroli ĉu x estas nula. 1631 01:24:58,670 --> 01:24:59,120 Ne nula. 1632 01:24:59,120 --> 01:25:02,170 Ni asertas, ke tiu malloc sukcesis. 1633 01:25:02,170 --> 01:25:04,950 >> Do nun stelo x egalas 50. 1634 01:25:04,950 --> 01:25:08,450 Do stelo memoras signifas iri al tiu adreso. 1635 01:25:08,450 --> 01:25:12,700 Do 0x123 Ni tuj iri al tiu adreso. 1636 01:25:12,700 --> 01:25:14,660 Do kiu alportas nin tie. 1637 01:25:14,660 --> 01:25:16,310 Kion ni faras en tiu adreso? 1638 01:25:16,310 --> 01:25:19,020 Ni stokante 50. 1639 01:25:19,020 --> 01:25:22,500 >> Do post tiu linio, kiu estas kio aferoj tuj aspekti. 1640 01:25:22,500 --> 01:25:24,640 Do nun ne plu rubo tie. 1641 01:25:24,640 --> 01:25:28,910 Nun ni scias, ke 50 estas en tiu aparta adreso ĉar 1642 01:25:28,910 --> 01:25:32,410 Ni starigu ĝin al tio. 1643 01:25:32,410 --> 01:25:32,790 OK? 1644 01:25:32,790 --> 01:25:34,370 Do nun ni tuj presi f. 1645 01:25:34,370 --> 01:25:38,490 >> Do unue ni tuj presi stelo x. 1646 01:25:38,490 --> 01:25:39,640 Do kio estas stelo x? 1647 01:25:39,640 --> 01:25:44,300 Denove, stelo x signifas iri al la afero ke x estas montranta. 1648 01:25:44,300 --> 01:25:47,140 Tiel x estas stokante 0x123 Iru al tiu. 1649 01:25:47,140 --> 01:25:48,490 Ni ricevas 50. 1650 01:25:48,490 --> 01:25:50,540 Do presi f tio. 1651 01:25:50,540 --> 01:25:54,900 Kaj tio signifas ke tuj presi 50. 1652 01:25:54,900 --> 01:25:56,850 Kaj tiam kiu revenas. 1653 01:25:56,850 --> 01:25:58,340 >> Kaj tiam ni havas la duan printf. 1654 01:25:58,340 --> 01:25:59,370 Ni nun procento p. 1655 01:25:59,370 --> 01:26:01,680 Se vi ne vidis lin, ke estas ĝuste kiel vi presi montrilo. 1656 01:26:01,680 --> 01:26:04,960 Do ni havas procento i, procento f, kaj ĉiuj el tiuj jam. 1657 01:26:04,960 --> 01:26:07,160 Do procento p, presi montrilo. 1658 01:26:07,160 --> 01:26:08,920 >> Tiel x estas montrilo. 1659 01:26:08,920 --> 01:26:13,440 Do se ni tuj presi x mem, ni presi kio estas fakte ene 1660 01:26:13,440 --> 01:26:19,220 x, kiu estas 0x123 Do la unua print f tuj presi 50. 1661 01:26:19,220 --> 01:26:23,620 La dua print f tuj presi 0x123 Yeah? 1662 01:26:23,620 --> 01:26:27,460 >> Publiko: Ĉu vi uzas procento x al presi puntero? 1663 01:26:27,460 --> 01:26:31,200 >> ROB: Do vi uzas procento x al presi puntero? 1664 01:26:31,200 --> 01:26:38,350 Do vi povas sed procento x estas justa, Ĝenerale, por kiel se vi havas iuj 1665 01:26:38,350 --> 01:26:40,325 entjera kaj kiun vi volas presi kiel deksesuma. 1666 01:26:40,325 --> 01:26:43,250 1667 01:26:43,250 --> 01:26:44,880 Tio estas ĝuste kio vi faras tion. 1668 01:26:44,880 --> 01:26:47,160 >> Dum, procento d farus presi kiel dekuma. 1669 01:26:47,160 --> 01:26:50,310 Tio estis ni ricevas procento d. i estas nur entjero. 1670 01:26:50,310 --> 01:26:52,690 procento p estas specife por punteros. 1671 01:26:52,690 --> 01:26:54,060 >> Tiel x estas montrilo. 1672 01:26:54,060 --> 01:26:56,360 Ni volas uzi procento p. 1673 01:26:56,360 --> 01:26:57,937 Sed procento x povus funkcii. 1674 01:26:57,937 --> 01:26:58,414 Yeah? 1675 01:26:58,414 --> 01:26:59,664 >> Publiko: [inaudible]? 1676 01:26:59,664 --> 01:27:04,138 1677 01:27:04,138 --> 01:27:05,388 >> ROB: Yeah. 1678 01:27:05,388 --> 01:27:07,870 1679 01:27:07,870 --> 01:27:13,440 Almenaŭ por tiu call-- do mi ne inkluzivas ĝin en ĉi tie. 1680 01:27:13,440 --> 01:27:19,850 Sed tiuj du argumentoj estas nepre ene de tiu stako framo 1681 01:27:19,850 --> 01:27:23,040 kune kun ajna loka variabloj printf pasas al uzi. 1682 01:27:23,040 --> 01:27:27,020 Kaj tiam la venonta alvoko al printf nun ene de printf pilo kadro estas 1683 01:27:27,020 --> 01:27:33,960 procento p backslash n kaj kion ajn la valoro de x estas, kio estas 0x123. 1684 01:27:33,960 --> 01:27:34,425 Yeah? 1685 01:27:34,425 --> 01:27:35,675 >> Publiko: [inaudible]? 1686 01:27:35,675 --> 01:27:38,145 1687 01:27:38,145 --> 01:27:40,880 >> ROB: ĝi devos printi ion kiuj aspektas kiel tiu. 1688 01:27:40,880 --> 01:27:41,846 >> Publiko: [inaudible]. 1689 01:27:41,846 --> 01:27:44,510 >> ROB: Do ĝi presas ĝin adreso formo. 1690 01:27:44,510 --> 01:27:47,003 Ĝi aspektas kiel adreson. 1691 01:27:47,003 --> 01:27:47,494 Yeah? 1692 01:27:47,494 --> 01:27:49,458 >> Publiko: [inaudible]? 1693 01:27:49,458 --> 01:27:51,075 >> ROB: Kial estas kio? 1694 01:27:51,075 --> 01:27:52,920 >> Publiko: [inaudible]? 1695 01:27:52,920 --> 01:27:55,240 >> ROB: Kial estas ĉi puntero 4 bajtoj? 1696 01:27:55,240 --> 01:27:58,500 Do estas tuta fasko de 0 estas antaŭ tiu. 1697 01:27:58,500 --> 01:28:03,740 Do estas vere 0x0000000123. 1698 01:28:03,740 --> 01:28:06,510 Sur 64-bita sistemo, ne estus tutan aron da pli nuloj. 1699 01:28:06,510 --> 01:28:11,410 1700 01:28:11,410 --> 01:28:11,900 Yeah? 1701 01:28:11,900 --> 01:28:13,150 >> Publiko: [inaudible]. 1702 01:28:13,150 --> 01:28:17,290 1703 01:28:17,290 --> 01:28:21,130 >> ROB: Do la unuaj printf tuj print-- 1704 01:28:21,130 --> 01:28:21,980 >> Publiko: [inaudible]. 1705 01:28:21,980 --> 01:28:24,420 >> ROB: Jes, ĝi tuj presi kio x notas al. 1706 01:28:24,420 --> 01:28:27,030 1707 01:28:27,030 --> 01:28:29,070 Stelo diras kion estas ĉi afero indikante. 1708 01:28:29,070 --> 01:28:30,300 Grab ĝin. 1709 01:28:30,300 --> 01:28:31,455 Do kio estas tio montrante? 1710 01:28:31,455 --> 01:28:31,850 50. 1711 01:28:31,850 --> 01:28:32,410 Grab ĝin. 1712 01:28:32,410 --> 01:28:33,390 Tio estas kion ni tuj presi. 1713 01:28:33,390 --> 01:28:37,020 Dum la venonta unu, ni nur presi x mem. 1714 01:28:37,020 --> 01:28:38,850 Kio estas ene de f? 1715 01:28:38,850 --> 01:28:43,710 0x123. 1716 01:28:43,710 --> 01:28:44,500 OK. 1717 01:28:44,500 --> 01:28:46,620 >> Kaj poste, fine, ni havas la liberaj. 1718 01:28:46,620 --> 01:28:48,040 Kion ni pasante por liberigi? 1719 01:28:48,040 --> 01:28:49,470 Ni pasas x. 1720 01:28:49,470 --> 01:28:52,380 Mi tiam efektive montriĝas en la pilo kadro. 1721 01:28:52,380 --> 01:28:56,370 >> Do ni pasante la valoron 0x123 liberigi. 1722 01:28:56,370 --> 01:28:59,070 Do nun libera scias tute certe, Mi devas iri al la ruino 1723 01:28:59,070 --> 01:29:00,050 kaj liberaj ke memoro. 1724 01:29:00,050 --> 01:29:03,920 Ĝi ne uzas kia estas je adreso 0x123. 1725 01:29:03,920 --> 01:29:07,010 >> Do libera tuj liberigi ke de la monteto. 1726 01:29:07,010 --> 01:29:09,490 Nun niaj monteto estu malplena denove. 1727 01:29:09,490 --> 01:29:11,120 Ni ne havas memoron filtraciones. 1728 01:29:11,120 --> 01:29:12,940 Nun libera revenos. 1729 01:29:12,940 --> 01:29:16,130 Rimarku ke x estas ankoraŭ 0x123. 1730 01:29:16,130 --> 01:29:18,240 Sed tio estas nun ne validas memoro. 1731 01:29:18,240 --> 01:29:21,220 1732 01:29:21,220 --> 01:29:23,986 Ni devus ne plu dereference x. 1733 01:29:23,986 --> 01:29:24,440 Yeah? 1734 01:29:24,440 --> 01:29:27,240 >> Publiko: Ĉu reveni 0 redunda? 1735 01:29:27,240 --> 01:29:28,290 >> ROB: Ĉu returen 0 redunda? 1736 01:29:28,290 --> 01:29:31,110 Jes. 1737 01:29:31,110 --> 01:29:33,950 Ni nur enkalkulu tie ĉar ni havos reveno por aero. 1738 01:29:33,950 --> 01:29:36,830 Tiel estas kiel, yeah, lasas inkluzivas la reveno 0. 1739 01:29:36,830 --> 01:29:37,310 Yeah? 1740 01:29:37,310 --> 01:29:38,560 >> Publiko: [inaudible]? 1741 01:29:38,560 --> 01:29:42,110 1742 01:29:42,110 --> 01:29:45,580 >> ROB: Do post libera x, kio okazas se Ni provu dereference la montrilo? 1743 01:29:45,580 --> 01:29:47,240 Eblas, ke nenio eliras malbone. 1744 01:29:47,240 --> 01:29:49,330 Eblas, ke ni ankoraŭ ricevas 50. 1745 01:29:49,330 --> 01:29:53,590 >> Ĝi estas ebla ankaŭ, ke tiu memoro estas nun uzata por io alia. 1746 01:29:53,590 --> 01:29:57,140 Do estas nedefinita konduton. 1747 01:29:57,140 --> 01:30:00,772 Kaj nedifinita signifas ion povas okazi. 1748 01:30:00,772 --> 01:30:01,250 Yeah? 1749 01:30:01,250 --> 01:30:02,500 >> Publiko: [inaudible]? 1750 01:30:02,500 --> 01:30:07,942 1751 01:30:07,942 --> 01:30:10,830 >> ROB: Ne, do se vi asigni x al io alia. 1752 01:30:10,830 --> 01:30:15,870 Do se ĉi tie ni diris x egalas malloc io else-- 1753 01:30:15,870 --> 01:30:17,100 malloc grandeco event-- 1754 01:30:17,100 --> 01:30:20,180 tiam tiu originala bloko de memoro ne liberigita. 1755 01:30:20,180 --> 01:30:21,490 Kaj ni oficiale perdis ĝin. 1756 01:30:21,490 --> 01:30:23,150 Tio estas memoro liko. 1757 01:30:23,150 --> 01:30:25,090 Ni perdis ĉiujn referencoj por ke bloko de memoro. 1758 01:30:25,090 --> 01:30:26,827 Do estas neniu vojo ni povos iam liberigi ĝin. 1759 01:30:26,827 --> 01:30:32,074 1760 01:30:32,074 --> 01:30:36,630 OK, do tiam reveni 0 rimedoj faris. 1761 01:30:36,630 --> 01:30:37,900 >> Bone, do stako. 1762 01:30:37,900 --> 01:30:39,320 Kio estas la ideo tie? 1763 01:30:39,320 --> 01:30:41,210 Do memoru, havaĵo estas subiron. 1764 01:30:41,210 --> 01:30:43,480 Stack plialtiĝas. 1765 01:30:43,480 --> 01:30:48,000 Do tio estis la ekzemplo el prelego, Mi kredas, kie ĉefan estas ĝuste tuj 1766 01:30:48,000 --> 01:30:51,380 nomas tiun funkcion foo, kiu tuj nomi sin rekursie superfluaj 1767 01:30:51,380 --> 01:30:52,320 super denove. 1768 01:30:52,320 --> 01:30:55,370 >> Do pilo kadroj tuj funkcios ekzakte la sama. 1769 01:30:55,370 --> 01:30:58,130 Do ni tuj komencos kun ĉefaj kiel la malsupro pilo kadro. 1770 01:30:58,130 --> 01:31:02,000 Tiam ĉefa tuj voki foo, kiu tuj alvenos pilo kadro. 1771 01:31:02,000 --> 01:31:04,260 >> Tiam foo tuj voki foo denove, kiu tuj akiri 1772 01:31:04,260 --> 01:31:05,500 alia pilo kadro. 1773 01:31:05,500 --> 01:31:08,270 Kaj cetere, kaj denove, kaj denove, kaj denove ĝis, fine, ni kuras 1774 01:31:08,270 --> 01:31:09,190 en la muro. 1775 01:31:09,190 --> 01:31:11,990 Do jen kiel ni preni oni stako. 1776 01:31:11,990 --> 01:31:14,910 Kaj je tiu punkto, vi seg kulpo. 1777 01:31:14,910 --> 01:31:17,335 Aŭ vi povus vere seg kulpo antaŭe tiu punkto sed jes. 1778 01:31:17,335 --> 01:31:19,660 >> Publiko: Ĉu kerno renversi la sama kiel seg kulpo? 1779 01:31:19,660 --> 01:31:26,140 >> ROB: Do vi vidos segmentación kulpo kerno renversita. 1780 01:31:26,140 --> 01:31:28,760 Vi akiras kernan nekropsia kiam vi seg kulpo. 1781 01:31:28,760 --> 01:31:32,580 Kaj ĝi kiel vertedero de ĉiuj enhavo de via nuna memoro tiom 1782 01:31:32,580 --> 01:31:36,670 ke vi povas provi identigi kial vi SEG faulted. 1783 01:31:36,670 --> 01:31:37,135 Yeah? 1784 01:31:37,135 --> 01:31:38,385 >> Publiko: [inaudible]? 1785 01:31:38,385 --> 01:31:40,855 1786 01:31:40,855 --> 01:31:45,460 >> ROB: Do segmentación kulpo rimedoj tie estas stako. 1787 01:31:45,460 --> 01:31:47,060 Do ne nepre. 1788 01:31:47,060 --> 01:31:49,880 A segmentación kulpo signifas ke vi estas tuŝi memoro en maniero 1789 01:31:49,880 --> 01:31:50,880 Vi ne devus esti. 1790 01:31:50,880 --> 01:31:54,750 Do unu maniero de ke okazas estas, kiam vi stako, ni komencas tuŝi 1791 01:31:54,750 --> 01:31:58,736 memoro en maniero, ke ni ne devas esti. 1792 01:31:58,736 --> 01:31:59,208 Yeah? 1793 01:31:59,208 --> 01:32:00,458 >> Publiko: [inaudible]? 1794 01:32:00,458 --> 01:32:03,456 1795 01:32:03,456 --> 01:32:05,830 >> ROB: Do ene de senfina ciklo. 1796 01:32:05,830 --> 01:32:08,770 Kiel, tio estas kiel rekursia malfinio loop kaj tiel ni povos havi alian 1797 01:32:08,770 --> 01:32:09,770 pilo kadro ĉiu tempo. 1798 01:32:09,770 --> 01:32:13,540 Sed ĝuste interne de regula malfinia dum one-- 1799 01:32:13,540 --> 01:32:16,390 bone, ni ne eĉ printi f-- 1800 01:32:16,390 --> 01:32:17,040 fari ion. 1801 01:32:17,040 --> 01:32:18,390 Kion ajn. 1802 01:32:18,390 --> 01:32:20,610 >> Ni ne tuj estos atingi alia pilo kadro. 1803 01:32:20,610 --> 01:32:22,530 Ni nur tuj subteni looping sur tiu sola instrukcio. 1804 01:32:22,530 --> 01:32:23,920 La stako ne kreskas. 1805 01:32:23,920 --> 01:32:27,290 Ĝi estas la fakto ke ĉiu rekursie alvoko, donas al ni pilo kadro. 1806 01:32:27,290 --> 01:32:31,231 Tial ni preni stako. 1807 01:32:31,231 --> 01:32:31,728 Yeah? 1808 01:32:31,728 --> 01:32:38,189 >> Publiko: Do ​​se vi diris al akiri la dum buklo kaj tiam [inaudible]? 1809 01:32:38,189 --> 01:32:42,000 >> ROB: Do se ene de la dum buklo estis printf, vi ankoraŭ farus 1810 01:32:42,000 --> 01:32:42,790 ne seg kulpo. 1811 01:32:42,790 --> 01:32:46,090 Mi simple ne volis konfuzi aferoj. 1812 01:32:46,090 --> 01:32:46,610 Estus buklo. 1813 01:32:46,610 --> 01:32:48,225 Vi ŝatus akiri sola pilo enmarcar la printf. 1814 01:32:48,225 --> 01:32:49,580 >> Tiam printf revenus. 1815 01:32:49,580 --> 01:32:50,280 Tiam vi estos plej buklo denove. 1816 01:32:50,280 --> 01:32:51,460 Vi ŝatus akiri sola pilo enmarcar la printf. 1817 01:32:51,460 --> 01:32:52,850 Ĝi revenus. 1818 01:32:52,850 --> 01:32:54,060 Sola pilo kadro. 1819 01:32:54,060 --> 01:33:00,215 Do vi ne akiranta ĉi malfinio apilando pilo kadroj. 1820 01:33:00,215 --> 01:33:03,185 >> Publiko: [inaudible]? 1821 01:33:03,185 --> 01:33:04,040 >> ROB: Jes. 1822 01:33:04,040 --> 01:33:09,360 Do tiu stako okazas ĉar neniu el tiuj 1823 01:33:09,360 --> 01:33:11,600 alvokoj al foo revenas. 1824 01:33:11,600 --> 01:33:15,250 Do se ni revenus, tiam ni havus komencos perdi pilo kadroj. 1825 01:33:15,250 --> 01:33:17,870 Kaj tiam ni ne stako. 1826 01:33:17,870 --> 01:33:20,070 Kaj tio estas kial vi bezonas bazon kazo por via persona funkcioj. 1827 01:33:20,070 --> 01:33:22,992 1828 01:33:22,992 --> 01:33:23,479 Yeah? 1829 01:33:23,479 --> 01:33:27,375 >> Publiko: Ĉu la potencialo grandeco kaj la pilo por la amaso la sama por 1830 01:33:27,375 --> 01:33:29,880 ĉiuj programoj? 1831 01:33:29,880 --> 01:33:31,910 >> ROB: Malglate. 1832 01:33:31,910 --> 01:33:35,090 Estas la potencialo grandeco de la stako kaj la amaso la sama por ĉiuj programoj? 1833 01:33:35,090 --> 01:33:37,180 Malglate. 1834 01:33:37,180 --> 01:33:40,080 Ekzistas iuj aleatorización al kie la stako komenciĝas kaj 1835 01:33:40,080 --> 01:33:42,400 kie la havaĵon startas. 1836 01:33:42,400 --> 01:33:45,870 Se vi hazarde havas amason de tutmondaj variabloj kaj aĵoj, vi povus 1837 01:33:45,870 --> 01:33:49,520 forpreni de iu spaco por via muro. 1838 01:33:49,520 --> 01:33:54,060 >> Sur 64-bita sistemo, vi virtuale havi senfinan memoron. 1839 01:33:54,060 --> 01:33:55,820 Estas ĝuste tiel. 1840 01:33:55,820 --> 01:33:59,250 Inter 32 bitoj kaj 64 bitoj, kiu estas signifa diferenco. 1841 01:33:59,250 --> 01:34:02,350 >> Vi tuj ricevos amason pli pilo kaj amason spaco sur 64 bitoj 1842 01:34:02,350 --> 01:34:05,810 sistemo ĉar estas simple pli turnas ke ili povas uzi. 1843 01:34:05,810 --> 01:34:09,360 Sed sur individua sistemo, ĝi volas esti malglate la sama kvanto de pilo 1844 01:34:09,360 --> 01:34:10,785 kaj amason spaco. 1845 01:34:10,785 --> 01:34:13,635 1846 01:34:13,635 --> 01:34:15,530 Bone. 1847 01:34:15,530 --> 01:34:18,220 >> Do lasta aĵo estas kompilita. 1848 01:34:18,220 --> 01:34:19,810 Do vi devas scii ĉi procezo. 1849 01:34:19,810 --> 01:34:22,240 Ekzistas kvar grandaj paŝoj. 1850 01:34:22,240 --> 01:34:24,400 Do la unua devus facile memoras. 1851 01:34:24,400 --> 01:34:25,085 Pre-prilaborado. 1852 01:34:25,085 --> 01:34:28,390 Ĝi havas la prefikson pre en ĝi. 1853 01:34:28,390 --> 01:34:32,080 Do temas antaŭ ĉio alia. 1854 01:34:32,080 --> 01:34:34,000 >> La afero memori estas la hash. 1855 01:34:34,000 --> 01:34:37,250 Do hash difinas kaj hash inkludas en ĉiuj el tiuj. 1856 01:34:37,250 --> 01:34:39,560 Tiuj estas ĉiuj pre-procesoro directivas. 1857 01:34:39,560 --> 01:34:42,030 Jen estas la aferoj, ke la pre-procesoro prizorgas. 1858 01:34:42,030 --> 01:34:43,680 >> Do kion signifas la antaŭ-procesoro fari? 1859 01:34:43,680 --> 01:34:44,850 Ĝi estas vere stulta afero. 1860 01:34:44,850 --> 01:34:49,380 Ĉio estas kapabla de ĉiuj el tiuj Kopio kaj kortego, kaj alglui operacioj. 1861 01:34:49,380 --> 01:34:51,790 >> Do hash inkludas normon i0 dot h. 1862 01:34:51,790 --> 01:34:52,990 Kio estas tiu faras? 1863 01:34:52,990 --> 01:34:56,610 Ĝi grabbing la norma i0 dot h enarkivigi kaj alglui ĝin en la supron 1864 01:34:56,610 --> 01:34:58,960 kien li diras hash inkludas norma i0 dot h. 1865 01:34:58,960 --> 01:35:02,480 >> Kaj neniu hash difini ke ni vidis, kion tiu faras? 1866 01:35:02,480 --> 01:35:06,730 Lia kopiado la valoro kiun la hash difinita estas difinita kiel kaj interglui ke 1867 01:35:06,730 --> 01:35:08,500 kien vi estas uzanta la valoro. 1868 01:35:08,500 --> 01:35:13,400 Do la antaŭtraktilo nur faras vere Simpla teksto bazita operacioj. 1869 01:35:13,400 --> 01:35:15,870 Ĝi faras nenion inteligenta. 1870 01:35:15,870 --> 01:35:18,920 Do ĉio alia estas pli komplika. 1871 01:35:18,920 --> 01:35:22,970 >> Do nun ke antaŭtraktilo estas farita, ni fakte kompili. 1872 01:35:22,970 --> 01:35:24,320 Do kion signifas kompilante signifas? 1873 01:35:24,320 --> 01:35:27,310 Ni nun iras de c kodo al asembleo kodo. 1874 01:35:27,310 --> 01:35:27,570 Yeah? 1875 01:35:27,570 --> 01:35:28,820 >> Publiko: [inaudible]? 1876 01:35:28,820 --> 01:35:32,390 1877 01:35:32,390 --> 01:35:34,220 >> ROB: Yeah, ni kaptis tion. 1878 01:35:34,220 --> 01:35:36,880 1879 01:35:36,880 --> 01:35:38,660 Do kompiladon. 1880 01:35:38,660 --> 01:35:40,310 Ni iras el c al asembleo. 1881 01:35:40,310 --> 01:35:42,470 Do tiu estas reala lingvo ŝanĝon. 1882 01:35:42,470 --> 01:35:45,240 Kompilante signifas irante de altan nivelon lingvo 1883 01:35:45,240 --> 01:35:47,340 suba nivelo lingvon. 1884 01:35:47,340 --> 01:35:50,720 >> Kaj c estas altnivela lingvo kompare al asembleo. 1885 01:35:50,720 --> 01:35:52,320 Kio estas asembleo? 1886 01:35:52,320 --> 01:35:56,440 Lia instrukcioj kiuj estas, bela da, farita por via CPU. 1887 01:35:56,440 --> 01:35:59,130 Sed via komputilo ankoraŭ faras kompreni asembleo. 1888 01:35:59,130 --> 01:36:01,570 Nur komprenas kaj nuloj. 1889 01:36:01,570 --> 01:36:06,160 Do la sekva paŝo estas kunmetado, kiuj nin el tiuj komandoj 1890 01:36:06,160 --> 01:36:08,760 via CPU komprenas kaj reale tradukas ilin al 1891 01:36:08,760 --> 01:36:10,820 la kaj nuloj. 1892 01:36:10,820 --> 01:36:13,570 >> Do C al asembleo por duuma. 1893 01:36:13,570 --> 01:36:15,870 Sed mi ne havas plenumeblan ankoraŭ. 1894 01:36:15,870 --> 01:36:19,550 Do pensu pri la cs50 biblioteko. 1895 01:36:19,550 --> 01:36:23,070 Ni provizis vin per duuma por ĉi cs50 biblioteko, kiu havas GetString 1896 01:36:23,070 --> 01:36:24,400 kaj GetInt kaj ĉiu tio. 1897 01:36:24,400 --> 01:36:25,700 >> Sed la cs50 library-- 1898 01:36:25,700 --> 01:36:27,650 en kaj de itself-- ne plenumebla. 1899 01:36:27,650 --> 01:36:29,570 Ĝi ne havas ĉefan funkcion. 1900 01:36:29,570 --> 01:36:32,230 Estas nur faskon de duumaj kiun vi povas uzi. 1901 01:36:32,230 --> 01:36:41,730 Do sinsekvon Tiel ni kunvenos ĉiuj de tiuj malsamaj duumaj dosierojn 1902 01:36:41,730 --> 01:36:43,110 en reala plenumebla. 1903 01:36:43,110 --> 01:36:45,900 Kiu eblas tajpi dot slash punkto ekstere. 1904 01:36:45,900 --> 01:36:51,660 >> Do ĉi tio estas kiel la dosiero kiun vi skribis, - kio ajn vian programon is-- 1905 01:36:51,660 --> 01:36:53,620 Ceaser dot c. 1906 01:36:53,620 --> 01:36:55,100 Sed nun ĝi estas kompilis malsupren al duuma. 1907 01:36:55,100 --> 01:36:56,480 Do Ceaser dot o. 1908 01:36:56,480 --> 01:36:59,620 Kaj tiu estas nia cs50 bibliotekoj duuma. 1909 01:36:59,620 --> 01:37:02,284 Kaj ili estas kombinante en sola plenumebla. 1910 01:37:02,284 --> 01:37:02,758 Yeah? 1911 01:37:02,758 --> 01:37:04,008 >> Publiko: [inaudible]? 1912 01:37:04,008 --> 01:37:08,800 1913 01:37:08,800 --> 01:37:12,710 >> ROB: Do unue inkluzivi, memoru, la hash inkluzivi estas reale 1914 01:37:12,710 --> 01:37:13,810 pre-procesoro paŝo. 1915 01:37:13,810 --> 01:37:14,750 Sed tio apartan. 1916 01:37:14,750 --> 01:37:20,730 Se vi ne uzas ajnan funkcioj kiuj estas ekster via sola dosiero tiam, 1917 01:37:20,730 --> 01:37:26,100 Ne, vi ne bezonas ligi ion ĉar vi ĉion. 1918 01:37:26,100 --> 01:37:30,310 >> Dirita, printf estas ligita en. 1919 01:37:30,310 --> 01:37:32,820 Se vi iam uzi printf, ke io kiu bezonu esti ligita en 1920 01:37:32,820 --> 01:37:35,740 ĉar vi ne skribis tion. 1921 01:37:35,740 --> 01:37:39,530 Kaj, fakte, printf estas aŭtomate ligita en. 1922 01:37:39,530 --> 01:37:42,760 Vi scias, kiel ĉe la komandlinio aŭ kiam Vi tajpas fari, vi vidos havas 1923 01:37:42,760 --> 01:37:46,690 haltostreko l cs50, kio havas ligon en la cs50 biblioteko? 1924 01:37:46,690 --> 01:37:49,070 Printf, kaj da tio, tuj esti ligita en aŭtomate. 1925 01:37:49,070 --> 01:37:51,730 1926 01:37:51,730 --> 01:37:53,930 Ajna alia demandoj pri io? 1927 01:37:53,930 --> 01:37:56,280 >> Publiko: [inaudible]? 1928 01:37:56,280 --> 01:37:58,300 >> ROB: Ligi? 1929 01:37:58,300 --> 01:38:03,450 Ni havas tutan faskon da malsamaj duumaj dosieroj. 1930 01:38:03,450 --> 01:38:06,410 Tiu estas la kanona ekzemplo ke ni uzas estas cs50 biblioteko. 1931 01:38:06,410 --> 01:38:09,960 Ni kompilis kaj donis al vi la duuma por ĉi cs50 biblioteko. 1932 01:38:09,960 --> 01:38:12,410 >> Vi volas uzi GetString en via programo. 1933 01:38:12,410 --> 01:38:14,750 Do vi iru kaj uzi GetString. 1934 01:38:14,750 --> 01:38:19,700 Sed sen mia duuma kodo GetString, kiam vi kompili via kodo 1935 01:38:19,700 --> 01:38:23,140 malsupren, vi ne povas reale kuri via programo ĉar GetString String estas 1936 01:38:23,140 --> 01:38:25,080 ankoraŭ ne tute difinitaj. 1937 01:38:25,080 --> 01:38:29,220 >> Ĝi estas nur kiam vi ligas en mia duuma kiu enhavas GetString ke nun, ĉiuj 1938 01:38:29,220 --> 01:38:31,130 Bone, mi povas reale ekzekuti GetString. 1939 01:38:31,130 --> 01:38:32,330 Mia dosiero estas kompleta. 1940 01:38:32,330 --> 01:38:34,208 Kaj mi povas kuri ĉi. 1941 01:38:34,208 --> 01:38:34,697 Yeah? 1942 01:38:34,697 --> 01:38:37,631 >> Publiko: Ĉu sinsekvon konverti la binara al plenumebla? 1943 01:38:37,631 --> 01:38:42,032 Do eĉ se vi ne havas aliajn bibliotekoj, ĉu ne ankoraŭ 1944 01:38:42,032 --> 01:38:44,477 necese traduki la [inaudible]? 1945 01:38:44,477 --> 01:38:48,640 >> ROB: Do plenumebla Ankoraŭ en duuma. 1946 01:38:48,640 --> 01:38:51,750 Ĝi simple kombinante tutaj fasko de binaraj. 1947 01:38:51,750 --> 01:38:55,124 1948 01:38:55,124 --> 01:38:56,591 >> Publiko: Dankon tiom. 1949 01:38:56,591 --> 01:38:58,560 >> ROB: Neniu problemo. 1950 01:38:58,560 --> 01:38:59,540 Ajna alia demandoj? 1951 01:38:59,540 --> 01:39:02,001 Alie, ni ĉiuj starigis. 1952 01:39:02,001 --> 01:39:02,690 Bone. 1953 01:39:02,690 --> 01:39:02,990 Dankon. 1954 01:39:02,990 --> 01:39:03,590 >> [Aplaŭdo] 1955 01:39:03,590 --> 01:39:04,490 >> Publiko: Dankon. 1956 01:39:04,490 --> 01:39:05,740 >> ROB: Yeah. 1957 01:39:05,740 --> 01:39:06,582