1 00:00:00,000 --> 00:00:02,310 [Powered by Google Translate] [Aste 4, Continúa] 2 00:00:02,310 --> 00:00:04,240 [David J. Malan - Harvard Unibertsitatea] 3 00:00:04,240 --> 00:00:07,290 [Hau CS50 da. - CS50.TV] 4 00:00:07,290 --> 00:00:11,290 >> Hau CS50 da, eta 4 aste bukaera honetan. 5 00:00:11,290 --> 00:00:14,030 Beraz, albiste onak eta txarrak Berri batzuk. 6 00:00:14,030 --> 00:00:26,240 Buruzko hitzaldia No astelehena, ez dago arazorik, datorren astean. [Ikasle kontsolatzeko] 7 00:00:26,240 --> 00:00:28,680 Ez duzu hori nahi du. 8 00:00:28,680 --> 00:00:31,590 Baina ez dugu hurrengo Asteazkena ordez, 9 00:00:31,590 --> 00:00:37,740 eta ez da, halaber, ikasketa planeko 1 ostirala hitzaldia bakoitzeko hurrengo ostiralera pista jarraitu ahal izango dugu. 10 00:00:37,740 --> 00:00:40,580 Baina dena betiko moduan egingo da filmatu, beraz, ez kezkatu. 11 00:00:40,580 --> 00:00:44,100 >> Eta aldean, 0 quiz zer egin dugu aste bukaera aldera 12 00:00:44,100 --> 00:00:47,140 ikastaro homepage cs50.net azalpen bat bidaltzeko 13 00:00:47,140 --> 00:00:50,160 zer nolako itxaropenak orduan galdetegiaren lehen behar duzu. 14 00:00:50,160 --> 00:00:55,100 Oro har, aukera anitzekoak, egia faltsuak, erantzun laburrean, labur kodifikazioa arazoak izango da. 15 00:00:55,100 --> 00:00:57,360 Ez duzu espero da baliokidea ezartzeko 16 00:00:57,360 --> 00:01:00,030 arazo bat zela ikusi pset bat, ordenagailu bat behar duzu 17 00:01:00,030 --> 00:01:03,240 araztaileak bat eta antzekoak, baina txiki kodeketa arazoak izango dira. 18 00:01:03,240 --> 00:01:06,900 >> Eta, hain zuzen ere, gida CS50 galdetegiak zentzu onena bezala 19 00:01:06,900 --> 00:01:09,180 da cs50.net joan, Galdetegiek link joan 20 00:01:09,180 --> 00:01:11,920 ikusi eta iraganean hainbat urte dezakezu merezi galdetegiek-. 21 00:01:11,920 --> 00:01:16,600 Just konturatzen curriculumean ez dela beti bera izan da urteetan zehar. 22 00:01:16,600 --> 00:01:18,510 Batzuetan, batzuetan kentzen dugu, 23 00:01:18,510 --> 00:01:20,670 hala badagokio, gai batzuk ikus zaharra duten galdetegiak 24 00:01:20,670 --> 00:01:25,380 Ideia ez da zer da hitz egiten duzula, bai da dugun estali zuen 25 00:01:25,380 --> 00:01:27,210 edo ez garela estaliko da. 26 00:01:27,210 --> 00:01:31,110 Baina berrikuspen forma, igande honetan, astelehena, eta astearte 27 00:01:31,110 --> 00:01:34,770 baita, ikastaro-zabal Igande gauean berrikuspena saio gisa 28 00:01:34,770 --> 00:01:37,500 ikastaroa homepage iragarri denbora eta kokapena 29 00:01:37,500 --> 00:01:40,120 Ikastaro irakaskuntza bekadun berrikusteko aukera bat izan duzun guztia 30 00:01:40,120 --> 00:01:44,830 aurtengo material, bi atal eta klase osoa, 31 00:01:44,830 --> 00:01:48,400 eta horiek ohiko moduan egingo da filmatua baita. 32 00:01:48,400 --> 00:01:53,380 >> Guztiak eskubidea. Beraz ADO gehiagorik gabe, pass iruzkin bat / huts egin eta gehitu / jaregin. 33 00:01:53,380 --> 00:01:57,980 Ikusi dezakezu nire ohar bart, eta hau benetan osagarriak reassurance batzuk 34 00:01:57,980 --> 00:02:01,250 bereziki gutxiago erosoa artean, edo nonbait artean badira 35 00:02:01,250 --> 00:02:04,870 eta bakarrik pixka bat sentitzen ari zaren zure burua baino gehiago, 36 00:02:04,870 --> 00:02:08,430 konturatzen da, hain zuzen ere, nahiko normal, eta han laguntza zabal bat leku egitura, 37 00:02:08,430 --> 00:02:13,530 eta horietako batek, bulegoko ordu gehiago hobetzeko nire email gaueko azken per asmo, 38 00:02:13,530 --> 00:02:16,520 eta konturatzen ere pass bezalako aukera bat / hau atsegin klase bat huts egiten 39 00:02:16,520 --> 00:02:21,540 benetan ertz hau atsegin dute ikastaro bat hartu off gisa mekanismo bat ekarri, 40 00:02:21,540 --> 00:02:24,200 beraz, berriro ere bada, 10, 15, 20 ordu zaren gastua 41 00:02:24,200 --> 00:02:28,160 besterik ez pset batzuk lortzeko lan egin nahi eta bide% 90-95 Oraindik ez badakizu 42 00:02:28,160 --> 00:02:32,100 baina ezin duzu madarikatua bug batzuk aurkitu, pass batean / eredua da sort ados huts egin. 43 00:02:32,100 --> 00:02:36,230 >> Ideia da mekanismo orduan dezakezu joan foku zure psets beste 44 00:02:36,230 --> 00:02:39,530 edo lo egin edo edozein dela ere nahi duzun bideratzen da. 45 00:02:39,530 --> 00:02:43,390 Beraz, konturatzen hau datozen Asteartea arte duzula - teknikoki 5ean astelehenean, 46 00:02:43,390 --> 00:02:50,840 baina oporrak, eta, beraz, datozen astearte honetan - pass from kalifikatu edo alderantziz aldatzeko / huts egin. 47 00:02:50,840 --> 00:02:54,450 Oraindik duzu eta benetan amildegi gainean dira, eta guztira jaregiten pentsatzen, 48 00:02:54,450 --> 00:02:56,440 mesedez niri hitzaldia ondoren harrapatzeko edo jaregin ohar bat. 49 00:02:56,440 --> 00:02:59,990 Gutxienez chat genuke love puja adieu aurretik. 50 00:02:59,990 --> 00:03:03,470 Guztiak eskubidea. Beraz, azken aldiz off prestakuntza gurpilak hartzen hasi ginen. 51 00:03:03,470 --> 00:03:06,030 Hain zuzen ere, zentratu, string dugu. 52 00:03:06,030 --> 00:03:09,740 String CS50 liburutegia deklaratu zerbait da, 53 00:03:09,740 --> 00:03:14,340 zehazki cs50.h izeneko fitxategi horretan hasteko aste honetan eta hurrengoan begiratu dugu. 54 00:03:14,340 --> 00:03:17,250 Baina esaldia benetan zerbait sinplifikazioa 55 00:03:17,250 --> 00:03:20,980 apur bat gehiago arcanely char * gisa deskribatu. 56 00:03:20,980 --> 00:03:24,090 Char ezagutzen ari gara. Karaktere bat besterik ez da. 57 00:03:24,090 --> 00:03:28,010 Baina astelehenetik * adierazten da zer? >> [Ikasleak] erakuslea. 58 00:03:28,010 --> 00:03:31,290 Erakuslea. Eta zer da erakuslea da? >> [Ikasleak] helbidea. 59 00:03:31,290 --> 00:03:33,420 >> Helbide bat, memoria kokaleku bat bezalakoa da. 60 00:03:33,420 --> 00:03:35,910 Zer da helbide bat edo kokapena edo memoria? 61 00:03:35,910 --> 00:03:40,290 Berriz ere, guztiok eramangarriak Kontzertu bat edo 2 gigabyte RAM seguru asko egun hauetan, 62 00:03:40,290 --> 00:03:44,160 eta horrek esan nahi du milioi edo 2 milioi byte memoria merezi duzu. 63 00:03:44,160 --> 00:03:46,240 Eta ez benetan axola zer itxura fisikoki bezala, 64 00:03:46,240 --> 00:03:51,220 baina fede zenbakia hartu duzula zure ordenagailu eramangarria bytes banakako 65 00:03:51,220 --> 00:03:54,580 byte 0 da, hau byte 1 da, hau da, byte 2 milioi 66 00:03:54,580 --> 00:03:56,100 eta hori da hain zuzen, ordenagailu bat duenaren. 67 00:03:56,100 --> 00:04:00,030 Espazioaren esleitu pertsonaia bakar bat, esate baterako, 68 00:04:00,030 --> 00:04:02,480 ditu, jakina, nonbait bizi dira eta zure ordenagailuaren memorian, 69 00:04:02,480 --> 00:04:05,860 eta, agian, at byte 12345 zenbakia, 70 00:04:05,860 --> 00:04:08,470 eta hori da nonbait hemen zure ordenagailuaren memorian. 71 00:04:08,470 --> 00:04:12,630 Eta helbidea, eta, ondoren, pertsonaia hori 12345 da. 72 00:04:12,630 --> 00:04:16,140 >> Orain, aste 0 gaur egun bidez, beraz, orain arte, ez dugu benetan zaintzen 73 00:04:16,140 --> 00:04:19,170 memoria gauzak non gordetzen dira normalean erabiltzen ditugun sinboloak, 74 00:04:19,170 --> 00:04:22,540 aldagaiak, eta array benetan gure datuak. 75 00:04:22,540 --> 00:04:24,950 Baina, astelehena eta gaur egun gehiago guztiak bezala, gaur egun ari zaren izan behar 76 00:04:24,950 --> 00:04:27,710 programak idazteko gaitasunak espresibo guztiak 77 00:04:27,710 --> 00:04:31,330 ordenagailuaren memorian benetan manipulatzeko ordea egokitzen ikusiko duzu, 78 00:04:31,330 --> 00:04:33,720 bi helburu onak eta txarrak, 79 00:04:33,720 --> 00:04:39,620 bugs stuff hau ikasteko puntu honetan emaitza oso ohikoa da. 80 00:04:39,620 --> 00:04:42,460 Baina zer esan nahi du benetan char * bat izan? 81 00:04:42,460 --> 00:04:46,140 Aurrera atzera, eta itzuli dugu Binky agindu gaur egun. 82 00:04:46,140 --> 00:04:48,670 Dezagun adibide sinple bat hemen. 83 00:04:48,670 --> 00:04:53,060 Fitxategi hau compare.c gisa gorde dadila me, eta utzi just me txantiloien kodea batzuk hemen 84 00:04:53,060 --> 00:05:00,490 beraz txertatu stdio.h, let me eman ere neure burua artean cs50.h. Han mapan handiago dut. 85 00:05:00,490 --> 00:05:05,850 Nagusia int main (void) idazten hasteko me, eta, gaur egun, honen antzeko zerbait egin nahi dut: 86 00:05:05,850 --> 00:05:13,520 printf ("Emadazu kate bat:") eta, ondoren, erabili egingo dut katea s lortzen GetString 87 00:05:13,520 --> 00:05:16,750 kate erabiltzaileari, ondoren, beste bat eskatu dut. 88 00:05:16,750 --> 00:05:21,870 ("Emadazu katea beste:") eta, hori lortzeko GetString bidez eskatu noa. 89 00:05:21,870 --> 00:05:27,020 Deitu dut t t dator kate bat s eta s izen polit bat da ondoren pretty generic delako. 90 00:05:27,020 --> 00:05:30,030 Beraz GetString, eta gaur egun nahi dut behatu kontrol bat egin eta esan nahi dut 91 00:05:30,030 --> 00:05:39,770 (s == t) ondoren, besterik ez bada naiz erabiltzaile kontatzeko printf ("idatzi duzu! gauza bera \ n"); 92 00:05:39,770 --> 00:05:45,520 bestela, inprimatu bezala ("duzu zerbait idatzitako desberdinak dira! \ n") zerbait noa 93 00:05:45,520 --> 00:05:48,460 edo edozein esaldi izango da. Horrelako zerbait So. 94 00:05:48,460 --> 00:05:52,200 Ondoren, ohikoa den bezala, 0 besterik ez signified ezer txarra gertatu itzuli dut, 95 00:05:52,200 --> 00:05:54,400 eta aurretik joan eta konpilatu eta exekutatu programa hau noa. 96 00:05:54,400 --> 00:05:56,540 >> Baina, astelehena, programa hau zuena dugu, 97 00:05:56,540 --> 00:06:00,420 eta benetan ziren kontatu HELLO ez dela HELLO eta agurtuko ez da agur. 98 00:06:00,420 --> 00:06:03,140 Portaera ikusi dugu hau atsegin apur bat gehiago izan zen. 99 00:06:03,140 --> 00:06:11,450 Utzi nire iturburu direktorioan sartu me, hemen zoom, eta dezagun konparatu egin ez. 100 00:06:11,450 --> 00:06:14,570 Konpilatuta ados. Utzidazu exekutatu alderatu. Give me kate bat: HELLO. 101 00:06:14,570 --> 00:06:16,300 Give me katea beste: HELLO. 102 00:06:16,300 --> 00:06:18,000 Gauza desberdin idatzi duzu! 103 00:06:18,000 --> 00:06:22,650 Beno, let me errazagoa 50, 50 antzeko zerbait probatzeko. Gauza desberdin idatzi duzu! 104 00:06:22,650 --> 00:06:25,740 hi, hi. Beraz, argi eta garbi, zerbait gertatzen da hemen. 105 00:06:25,740 --> 00:06:28,440 Baina zergatik azalpen zer izan zen? 106 00:06:28,440 --> 00:06:33,850 Dirudienez, line: 12 erabat dysfunctional da. 107 00:06:34,300 --> 00:06:39,430 Zer da funtsezko arazoa hemen? Bai. >> [Ikasleak] helbideak alderatuz. 108 00:06:39,430 --> 00:06:41,850 Bai, hain zuzen. Benetan helbideak alderatuz 109 00:06:41,850 --> 00:06:44,580 horretan, HELLO eta HELLO gordetzen dira. 110 00:06:44,580 --> 00:06:48,290 Ez da letrak alderatuz HELLO behin eta berriro, 111 00:06:48,290 --> 00:06:52,370 zer benetan gertatu delako, denbora honetan guztian izan dugu GetString erabiliz 112 00:06:52,370 --> 00:06:56,130 Hau arbela da berriro gure ordenagailuaren memoria, 113 00:06:56,130 --> 00:07:00,100 eta demagun aldakorreko s geratuko ondoren GetString deitzen diot nik. 114 00:07:00,100 --> 00:07:01,930 Zein da nire memoria itxura? 115 00:07:01,930 --> 00:07:07,070 Dezagun arbitrarioki esan hau atsegin s itxura. Plaza bat da. 116 00:07:07,070 --> 00:07:09,040 Eta nahiko denbora asko edozein memoria zati bat marrazten dut pantailan 117 00:07:09,040 --> 00:07:12,860 32 bit dira dut hau atsegin karratu marrazketa-tresna, hain zuzen ere, delako, 118 00:07:12,860 --> 00:07:17,380 erakuslea bat, helbide bat, 32 bits da. Int bat bezala da. 119 00:07:17,380 --> 00:07:19,420 Hori oinarritutako informatika-sistema aldatu egiten dira. 120 00:07:19,420 --> 00:07:24,630 Vaguely zure Mac edo PC dela 64 bits Izan ere, ezagutzen dutenek, 121 00:07:24,630 --> 00:07:28,120 benetan lu byte irakurtzerakoan ordenagailua 64 bit erakusleak erabiliz, 122 00:07:28,120 --> 00:07:33,730 64 bit-eko helbideak, eta horren upsides artean zure ordenagailu 123 00:07:33,730 --> 00:07:35,560 antaño baino askoz gehiago RAM izan ditzake. 124 00:07:35,560 --> 00:07:39,240 Long Narrazio laburren, atzera egunean ordenagailuak bakarrik erabiltzen 32 bits 125 00:07:39,240 --> 00:07:42,740 helbideak adierazteko, byte kopuru handiena izan liteke 126 00:07:42,740 --> 00:07:46,280 Kasu horretan izan zen 32 bits baduzu? 127 00:07:46,280 --> 00:07:49,590 Beraz, 4 milioi, eskuinera, 2 32 4 milioi dagoelako. 128 00:07:49,590 --> 00:07:51,370 Zenbaki hau izan da ikastaroaren Noizbehinkako. 129 00:07:51,370 --> 00:07:55,240 >> Beraz, bada besterik ez duzu 32 bit, kopuru altuena dezakezu zenbatu da, gutxi gorabehera 4 milioi. 130 00:07:55,240 --> 00:07:58,750 Baina hori ordenagailuen funtsezko muga bat izan zen, duela urte batzuk arte 131 00:07:58,750 --> 00:08:01,180 dezakezu soil-soilik zenbatu gisa altua bada 4 milioi delako, 132 00:08:01,180 --> 00:08:05,270 Ez du axola erosten RAM 8 gigabyte edo are 5 RAM gigabyte bada; 133 00:08:05,270 --> 00:08:07,780 Ezin zenbatzen handiko, beraz Ezertarako izan da. 134 00:08:07,780 --> 00:08:11,430 Soilik sartu ahal izango duzu zure ordenagailuaren memorian lehen 3 edo 4 gigabyte. 135 00:08:11,430 --> 00:08:14,410 Hori da gai bat gutxiago da orain, eta MacBook Pros eta Dells erosi ahal izango dituzu. 136 00:08:14,410 --> 00:08:17,680 8 RAM gigabyte edo, are gehiago egun hauetan. 137 00:08:17,680 --> 00:08:24,100 Baina esleitu dut nahiko besterik ez bada erakuslea programa honetan, erakusle izeneko s, 138 00:08:24,100 --> 00:08:28,370 pantaila hau atsegin zitekeen, hain zuzen ere, atzera zuritu geruza hau behar dugulako. 139 00:08:28,370 --> 00:08:33,520 Esaten katea mantentzen dut, baina, astelehenetan, katea da benetan char *, 140 00:08:33,520 --> 00:08:35,590 pertsonaia batzuen helbidea. 141 00:08:35,590 --> 00:08:39,280 Beraz, dezagun prestakuntza gurpil off nahiz GetString oraingoz jarraituko dugu. 142 00:08:39,280 --> 00:08:42,600 Beraz, deklaratu dut s, eta honen zatia memoria bat da, 32 bit. 143 00:08:42,600 --> 00:08:47,370 Zer lehenespenez memoria hemen? >> [Inaudible ikaslearen erantzuna] 144 00:08:47,370 --> 00:08:50,040 Zer da hori? >> [Ikasleak] Garbage. >> Garbage. Hain zuzen ere. 145 00:08:50,040 --> 00:08:54,610 Programatzailea daukazu, ez bada balio bat jarri aldagai batean, nork daki zer da? 146 00:08:54,610 --> 00:08:57,990 Batzuetan zortea lortuko duzu, eta 0 da, mota, nice garbi default balioa da, 147 00:08:57,990 --> 00:09:00,310 baina ikusi genuen astelehena, batzuetan erabateko zentzugabekeria da, 148 00:09:00,310 --> 00:09:04,130 batzuk benetan big zenbaki hori positiboa edo negatiboa non etorri ziren? 149 00:09:05,350 --> 00:09:07,010 Bai. >> [Ikasleak] funtzio aurretik. >> Bai. 150 00:09:07,010 --> 00:09:10,170 >> Askotan funtzioa izeneko got delako aurretik gogoratu 151 00:09:10,170 --> 00:09:13,920 memoria funtzioak deitzen duzun bezala, sortu dute gero eta leku gehiago behetik gora, 152 00:09:13,920 --> 00:09:17,040 eta ahalik eta azkarren funtzioak, memoria hori lortzen berrerabili 153 00:09:17,040 --> 00:09:20,890 lasaia hurrengo lortzen izeneko, zure memoria xerra bera erabiltzen ari da. 154 00:09:20,890 --> 00:09:23,450 Eta duzun ezkerreko zabor dago, aurreko balioak izanez gero, 155 00:09:23,450 --> 00:09:28,190 s akatsa izango dugu balio izatea denean, benetan ez dugu jarri ezer ez dago. 156 00:09:28,190 --> 00:09:30,960 Beraz, puntu honetan, gure RAM itxura hau. 157 00:09:30,960 --> 00:09:36,030 Orain linea 7 eskuinaldean GetString deitzen ari gara, 158 00:09:36,030 --> 00:09:40,150 zein izan dugu gaur egun egiten asteak, baina zer da benetan egiten GetString? 159 00:09:40,150 --> 00:09:43,350 CS50 langileek idatzitako GetString da apur bat adimenduna 160 00:09:43,350 --> 00:09:46,500 hori ahalik eta azkarren erabiltzaileak hasten idazten gakoak eta hits Sartu 161 00:09:46,500 --> 00:09:50,010 GetString zifra zenbat sakatzeak egin user hit, 162 00:09:50,010 --> 00:09:53,360 zenbat karaktere ez RAM esleitu behar dut. 163 00:09:53,360 --> 00:09:55,660 Eta non RAM hori nondik datorren, nork daki? 164 00:09:55,660 --> 00:09:58,930 Nonbait da zure ordenagailuaren 2 gigabyteko edo memoria whatnot. 165 00:09:58,930 --> 00:10:05,200 Baina Berek ordenagailua aurkitu HELLO hitza espazioa hemen. 166 00:10:05,200 --> 00:10:08,710 Hitza idatzi dut H-E-L-L-O izan zen. 167 00:10:08,710 --> 00:10:13,510 Eta marraztu badugu, karaktere-sekuentzia bat bezala, marrazteko genuke hau atsegin dute. 168 00:10:13,510 --> 00:10:17,860 Baina 1 extra gauza egin behar dut. Zer da C edozein kate amaieran pertenece? 169 00:10:17,860 --> 00:10:20,710 Null pertsonaia, \ 0 idazten dugu. 170 00:10:20,710 --> 00:10:23,980 Teknikoki zenbakia 0 da, baina backslash argiagoa guztiak egiten 171 00:10:23,980 --> 00:10:28,150 hau da, hitzez hitz kopurua 0 osoko 0; 172 00:10:28,150 --> 00:10:32,440 ez da, adibidez, aurrekontu-unquote 0 teklatua idatzi dezake. 173 00:10:32,440 --> 00:10:33,940 Beraz, hau da, HELLO. 174 00:10:33,940 --> 00:10:36,350 >> Eta zer esan astelehena GetString bezalako funtzio bat 175 00:10:36,350 --> 00:10:39,580 benetan itzuli aste horiek guztiak? 176 00:10:39,580 --> 00:10:43,960 Ez da berez kate bat itzuli ez delako benetan dute zentzua 177 00:10:43,960 --> 00:10:47,710 kateak ez delako existitzen. CS50 liburutegia fabrikazio sort Oraindik dute. 178 00:10:47,710 --> 00:10:51,300 Zer da benetan kate bat, teknikoki? >> [Ikasleak] lehen pertsonaia da. 179 00:10:51,300 --> 00:10:55,950 Hain zuzen ere. Nahiko besterik ez da lehen karaktere helbidea erabiltzaileak idatzitako sartu 180 00:10:55,950 --> 00:11:02,810 Beraz, nire hitza HELLO bueltarik byte kopurua 123 at eta gero byte kopurua 124 at bada, 181 00:11:02,810 --> 00:11:08,320 125, 126, eta abar, zenbaki besterik ez dut nire byte 0-tik gora izanez gero, 182 00:11:08,320 --> 00:11:12,650 benetan zer GetString itzuli egin da literalki zenbakia 123. 183 00:11:12,650 --> 00:11:19,270 Beraz, zer lortzen s jarri zenbakia 123, ez da gutun H, hitza ez da HELLO, 184 00:11:19,270 --> 00:11:23,130 nahiko besterik gabe, helbidea HELLO lehenengo letra aurkitu ahal izango dut. 185 00:11:23,130 --> 00:11:26,500 Baina hori ez da nahikoa atsegin dirudi. Kate bat eskatu nion, ez da pertsonaia bat. 186 00:11:26,500 --> 00:11:32,970 Beraz, zer egiten dugu edo ordenagailua ezagutzen ELLO mota batera H? 187 00:11:35,760 --> 00:11:37,460 Zer akordio sort dugu? Bai. 188 00:11:37,460 --> 00:11:40,100 [Ikasleen] bera kontatzea zenbait karaktere gehiago aurkituko mantentzen du. >> Zehazki. 189 00:11:40,100 --> 00:11:44,570 >> Giza-ordenagailu konbentzio horren bidez denean kateak dagoenean, 190 00:11:44,570 --> 00:11:49,410 bestela gaur egun ko char bezala ezagutzen, irudikatu nahi izan besterik ez duzu 191 00:11:49,410 --> 00:11:54,350 non bizi Kate bakoitzaren amaieran benetan besterik ez da loop bat baino gehiago errepikatzean da, 192 00:11:54,350 --> 00:11:57,820 bitartean loop bat, edozein dela ere, eta, beraz, kate amaiera aurkitzen 193 00:11:57,820 --> 00:12:02,160 orain dela infer dezakezu, oh, hitza osoa HELLO zen. 194 00:12:02,160 --> 00:12:04,820 Duzun dutenek aldez aurretik programazio esperientzia duten baliteke Java ezagutzea 195 00:12:04,820 --> 00:12:09,880 besterik gabe, dei egin dezakezu. luzera eta beste hizkuntza batzuetan luzera edo antzeko dei dezakezu. 196 00:12:09,880 --> 00:12:14,060 Hori da, hizkuntza asko, batez ere, gauzak izeneko objektuetara bideratutako hizkuntza 197 00:12:14,060 --> 00:12:18,580 zerbait luzera datuak beraren zati kapsulatuaren barruan mota da, 198 00:12:18,580 --> 00:12:24,000 askoz ere gustatzen zaigu kapsulatuaren identifikazioak eta izenak eta ikasleari astelehena barruan etxeak. 199 00:12:24,000 --> 00:12:28,700 Baina C askoz maila apalagoa da. Objektuak edo klaseak ez daude, entzun dituzun bada termino horiek aurretik. 200 00:12:28,700 --> 00:12:31,490 Guztiak duzu benetan memoria helbideak da. 201 00:12:31,490 --> 00:12:35,540 Beraz, honetan datu interesgarri egitura ordezkari modu zaharra moduko da. 202 00:12:35,540 --> 00:12:38,760 Lehen karaktere helbidea bezala balio Irteeran bat izango duzu 203 00:12:38,760 --> 00:12:42,340 eta, ondoren, batzuk arbitrarioak konbentzio guztiek konpromisoa hartzen du jarraipena. 204 00:12:42,340 --> 00:12:46,420 Beraz, katea luzera nola inplementatu da, ez dugu proposatzen? 205 00:12:46,420 --> 00:12:51,360 Strlen, strlen, batzuk hainbat aldiz erabiltzen dute gaur egun. Nahiko erraza da, ezta? 206 00:12:51,360 --> 00:12:53,060 2 kode-lerro bezala. 207 00:12:53,060 --> 00:12:56,140 Pretty askoz, Nolabaiteko loop bat da, agian tokiko aldagai osagarriak. 208 00:12:56,140 --> 00:13:00,540 Baina strlen erakuslea bat hartu besterik ez du, eta, ondoren, \ 0 bila hasteko. 209 00:13:00,540 --> 00:13:05,190 >> Eta ahalik eta azkarren aurkitzen it, hori kate horretan hartu urrats kopuru osoa itzuli ahal izango da. 210 00:13:05,190 --> 00:13:07,150 Beraz, hau ezin dugu infer zer hurrengo doan. 211 00:13:07,150 --> 00:13:11,850 Demagun, ondoren, t deklaratzen dut Nik line 10 egin. 212 00:13:11,850 --> 00:13:14,280 Hau zabor balio batzuk. Nork daki lehen? 213 00:13:14,280 --> 00:13:18,490 Baina 10-line eskuinaldean berriz GetString deitzen naiz. 214 00:13:18,490 --> 00:13:20,050 Nork daki non da? 215 00:13:20,050 --> 00:13:23,830 Dezagun arbitrarioki esan, sistema eragilearen gela baino gehiago modu hemen aurkitu. 216 00:13:23,830 --> 00:13:28,610 H-E-L-L-O coincidentally idatzi berriro gertatuko I 217 00:13:28,610 --> 00:13:31,260 eta, beraz, irudi-mota bera marraztu ahal izango dugu. 218 00:13:31,260 --> 00:13:34,290 Baina berregin Argazki hau ditudan nahita 219 00:13:34,290 --> 00:13:37,720 hainbat HELLO hau baino. delako 220 00:13:37,720 --> 00:13:43,920 Beraz, hemen hau kokapena 456 izan daiteke, hau 457 da, eta abar. 221 00:13:43,920 --> 00:13:47,170 Beraz, zer non jarri lortzen behin izan zen galdera ikurra? 222 00:13:47,170 --> 00:13:50,190 Kasu honetan 456. 223 00:13:50,190 --> 00:13:53,540 Zenbaki horiek aukeratzea arbitrarioki ari gara benetan delako gaur egun ondoren 224 00:13:53,540 --> 00:13:57,110 ez ari gara hainbeste axola zer da ezer helbidea. 225 00:13:57,110 --> 00:14:02,690 Guztiak buruz zaintzen dugu dugun irudikatu datu-pieza batzuen helbidea HELLO bezala. 226 00:14:02,690 --> 00:14:07,100 >> Beraz, benetan zer jende gehienak informatikako memoria helbideak buruz hitz egiten denean 227 00:14:07,100 --> 00:14:10,210 eta erakusleak buruz hitz egiten, 228 00:14:10,210 --> 00:14:14,220 baino traba kalkulatzen 123 - nork zaintzen non stuff honetan benetan da, 229 00:14:14,220 --> 00:14:17,440 batzuk zenbakizko helbidea ezagutzen dugu dagoela 230 00:14:17,440 --> 00:14:22,180 mundua errazteko eta s esatea besterik ez da pertsonaia bat seinalatuz 231 00:14:22,180 --> 00:14:25,080 eta t pertsonaia bat seinalatuz. 232 00:14:25,080 --> 00:14:27,430 Izan ere, dela gezi bat da, nahiko intentziozko 233 00:14:27,430 --> 00:14:31,610 gaur egun s literalki delako H eta t seinalatuz beste H seinalatuz 234 00:14:31,610 --> 00:14:34,720 egunaren amaieran, ez delako du axola zer da helbidea, 235 00:14:34,720 --> 00:14:40,240 , baina materia kode zati batzuk helbidea adierazteko dugun gaitasuna du. 236 00:14:40,240 --> 00:14:42,730 Ez dugu benetan manipulatu helbide hauek oraindik 237 00:14:42,730 --> 00:14:47,770 beraz, ikusteko non interject dezakegu ordenatzeko do gauzak erakusle dugu, 238 00:14:47,770 --> 00:14:52,030 baina gaur egun line 12 literalki zer balio ari gara alderatuz 239 00:14:52,030 --> 00:14:55,500 istorioa line 12 honen arabera? 240 00:14:56,570 --> 00:15:01,290 123 berdina 456 berdina esaten ari gara? Eta hori da, zalantzarik gabe, ez da kasua. 241 00:15:01,290 --> 00:15:05,320 Eta baita kontzeptualki ere, erakuslea hau da behin betiko ez bezala 242 00:15:05,320 --> 00:15:09,500 izeneko birritan GetString duelako, eta GetString ez super clever saiatu, 243 00:15:09,500 --> 00:15:12,470 ez da konturatzen, oh, HELLO idatzi duzula Duela 5 minutu; 244 00:15:12,470 --> 00:15:15,090 utzi dizu me erakuslea bera eman nuen aurretik, 245 00:15:15,090 --> 00:15:18,450 zatia memoria bakoitzean deitu besterik ez da bideratzen. 246 00:15:18,450 --> 00:15:20,350 >> Beraz, nola ez, arazo hau konpondu dugu? 247 00:15:20,350 --> 00:15:24,270 Maila handiagoa bada, kate HELLO eta HELLO alderatu nahi dut 248 00:15:24,270 --> 00:15:28,680 Ez dut erakusleak buruzko zaintzeko nola joaten galdera erantzun dut, 249 00:15:28,680 --> 00:15:31,980 ez erabiltzaileak idatzi gauza bera? Zer da beharrezkoa hemen? Bai. 250 00:15:31,980 --> 00:15:35,200 [Ikasleak] Erabili funtzioa. >> Funtzio bat erabili ahal izango dut koadroan. 251 00:15:35,200 --> 00:15:38,170 Strcmp, s-t-r-c-m-p izeneko funtzio bat erabili ahal izango dut, 252 00:15:38,170 --> 00:15:41,190 katea alderatu esaten bertsio laburtua. 253 00:15:41,190 --> 00:15:45,070 Eta joan badugu sartu, esate baterako, alderatu 2,, gaur egungo handouts artean dago, 254 00:15:45,070 --> 00:15:46,690 Zehazki egiten dut. 255 00:15:46,690 --> 00:15:51,750 Edozer 1 line bera mantendu dut behera 26 edo 256 00:15:51,750 --> 00:15:54,360 eta, gaur egun, nabarituko zati hau aldatu egin da apur bat. 257 00:15:54,360 --> 00:15:57,690 Dezagun ahaztu une batez line 28 eta fokua hau bat bakarrik. 258 00:15:57,690 --> 00:16:00,410 Zer egin zuen astelehena alderatu str esaten dugu eta horrela, ez? 259 00:16:00,410 --> 00:16:05,200 Hartzen kasu honetan 2 erakusleak, s eta t-prozesua eskumena da, 260 00:16:05,200 --> 00:16:08,480 sort ia bere hatz 2 hizki horiek ipintzeko, 261 00:16:08,480 --> 00:16:11,530 eta zer egin behar den bitartean loop bat edo bat loop antzeko zerbait da, 262 00:16:11,530 --> 00:16:16,050 dira, eta horiek berak esaten du? Hala bada, behatzak edo erakusle aurrera mugitzen da. 263 00:16:16,050 --> 00:16:17,970 Dira horiek berak, horien arabera, bera da, horiek 264 00:16:17,970 --> 00:16:22,710 berean, horien arabera, bera hauek? Eta ooh, naiz bai s eta t katearen amaieran dut. 265 00:16:22,710 --> 00:16:26,780 Ez dut aurkitu kontraesanak edozein. Bai, kateak horiek berdinak dira. 266 00:16:26,780 --> 00:16:31,940 Eta zer ez str alderatu bueltan 2 kateak berdinak dira, itxuraz? Zero. 267 00:16:31,940 --> 00:16:35,900 Beraz, 0 ona da, kasu honetan itzultzen du -1 edo +1 bada delako, 268 00:16:35,900 --> 00:16:40,560 horrek esan nahi du s bakarrik gertatzen t t alfabetikoki aurretik edo ondoren etorriko. 269 00:16:40,560 --> 00:16:43,760 Eta zergatik baliagarria funtzio bat esaten dizu katea dator aurretik izan 270 00:16:43,760 --> 00:16:46,720 edo hiztegi baten ondoren? 271 00:16:46,720 --> 00:16:48,740 [Ikasleak] bilatzen. >> Bilatzea eta ordenatzeko. 272 00:16:48,740 --> 00:16:51,730 >> Beraz, gauza berriak egin dezakezu bilaketa bitarra edo burbuila sort bezala edo batu sort 273 00:16:51,730 --> 00:16:53,230 non gauzak konparatu behar duzu. 274 00:16:53,230 --> 00:16:56,420 Horrela, orain arte moztu txoko batzuei mota dugu, eta bakarrik ordenatzeko buruz hitz egin 275 00:16:56,420 --> 00:16:59,430 zenbakiak testuinguruan atsegina eta erraz hitz egin duelako, 276 00:16:59,430 --> 00:17:02,430 baina, zalantzarik gabe dezakezu alderatu, kateak, sagar eta banana, 277 00:17:02,430 --> 00:17:05,349 sagar banana aurretik etorriko da, era berean, ezaguna bada delako, 278 00:17:05,349 --> 00:17:09,319 kateak mugitu besterik ez Rob atsegin memoria inguruan egin merge sort bideoa 279 00:17:09,319 --> 00:17:15,880 eta hemen egin dugu aukeraketa ordenatu, txertatzeko, ordenatu, eta burbuila sort etapa. 280 00:17:15,880 --> 00:17:18,710 Beraz, non bestela, hau hartuko dugu? Dezagun saiatu honekin. 281 00:17:18,710 --> 00:17:23,980 Dezagun sort ahaztu lesson hori une batez, eta saiatu kopiatu eta 1.c hauek egin. 282 00:17:23,980 --> 00:17:26,800 21 linea inprimatu zerbait esaten dut, 283 00:17:26,800 --> 00:17:28,520 ondoren, kate bat erabili dut, 284 00:17:28,520 --> 00:17:30,690 ondoren, egiaztatzen dut. 285 00:17:30,690 --> 00:17:33,620 Ez dugu, ohitura hau benetan ahaztuak oraindik, baina dezagun orain hau. 286 00:17:33,620 --> 00:17:40,990 Dezagun benetan itzuli geruza hau zuritu. Hau da, char * benetan. Lasaia Hau da, benetan, char *. 287 00:17:40,990 --> 00:17:45,690 Beraz, zer ez s == NULL egiaztapena esan nahi du? 288 00:17:45,690 --> 00:17:48,380 Bihurtzen da. GetString bezalako funtzio bat deitu 289 00:17:48,380 --> 00:17:51,540 edo gehiago, oro har, eskatu ordenagailu bat memoria pixka bat emateko, 290 00:17:51,540 --> 00:17:53,030 zerbait oker joan liteke. 291 00:17:53,030 --> 00:17:56,630 Crazy izango duzu eta memoria terabyte bat ordenagailu eskatu 292 00:17:56,630 --> 00:18:01,780 bite memoria besterik ez dago ordenagailuan trillions eginez, 293 00:18:01,780 --> 00:18:05,130 baina GetString eta beste funtzioak behar duzu at yelling nolabait 294 00:18:05,130 --> 00:18:06,820 duzun gehiegi eskatuko balitzaizu. 295 00:18:06,820 --> 00:18:10,450 Eta GetString ez du memoria gehiago nahi izanez gero, eskatu bada 296 00:18:10,450 --> 00:18:14,250 baino ordenagailua eskuragarri, nahiz eta super, super probabilitatea baxua 297 00:18:14,250 --> 00:18:17,730 gurekin ez dira bilioi-karaktere bat idatzi eta gero, sakatu Sartu joan delako, 298 00:18:17,730 --> 00:18:21,980 baina probabilitate baxua nahiz da, oraindik ere nahi dut egiaztatu bada ez bada, 299 00:18:21,980 --> 00:18:26,120 eta balio berezia GetString, erantzun, eta bestelako funtzioak itzultzen duen 300 00:18:26,120 --> 00:18:30,630 zerbait oker joan da NULL txanoak guztiak. 301 00:18:30,630 --> 00:18:36,520 >> Eta zer da NULL? NULL besterik ez, beraz, gertatzen da erakuslea bat irudikatzeko. Memoria-helbide 0 da. 302 00:18:36,520 --> 00:18:40,800 Mundua erabaki arbitrarioki, hau nire ordenagailuko memorian bada? Zer badakizu - 303 00:18:40,800 --> 00:18:46,260 1 ordenagailu guztien memoria byte lapurtzen ari gara, eta hau kokapena 0 da. 304 00:18:46,260 --> 00:18:49,560 NULL ezizen bat eman dugu, eta agintzen dugu 305 00:18:49,560 --> 00:18:52,660 egingo dugu, inoiz ez benetan jarri benetako datuak 306 00:18:52,660 --> 00:18:56,770 besterik ez arbitrarioki behar dugu baita balio berezi bat, 0, aka NULL, 307 00:18:56,770 --> 00:19:00,230 horrela, erabiltzaile dezakegu Yell zerbait oker joan ezkero. 308 00:19:00,230 --> 00:19:03,590 Bestela, agian ez duzu jakin ez 0 jarri zerbait esan nahi hemen 309 00:19:03,590 --> 00:19:05,490 edo ez zerbait gaizki joan da esan nahi du? 310 00:19:05,490 --> 00:19:09,190 Guztiak bat datoz NULL bide hori ez da ezer itzuli behar dugu, 311 00:19:09,190 --> 00:19:11,700 uneko helbidea ez da itzuliko. 312 00:19:11,700 --> 00:19:15,210 Orain, hemen besterik ez dut nire I konbentzio giza hartu itzultzeko 1 nagusian 313 00:19:15,210 --> 00:19:17,040 Zerbait oker joan ezkero. 314 00:19:17,040 --> 00:19:20,650 Hori nagusia bueltan konbentzio 0 ona bada itzuli delako, 315 00:19:20,650 --> 00:19:22,990 1 edo beste batzuk txarra izanez gero, balioa. 316 00:19:22,990 --> 00:19:28,200 Baina GetString eta memoria itzultzen NULL deals zerbait txarra edozein funtzio. 317 00:19:28,200 --> 00:19:33,480 >> Ongi da. Beraz, zoritxarrez, line 27, izango da, nahiz eta super simple, guztiz huts egiten kate kopiatzeko. 318 00:19:33,480 --> 00:19:35,740 Zergatik? Hau honela ikus dezakegu. 319 00:19:35,740 --> 00:19:40,120 Line 27 naiz s kopia bat egiteko eta t deituz erreklamatzeko. 320 00:19:40,120 --> 00:19:45,790 Beraz, ez noa, 2 kateak denbora honetan erabiltzaile eskatuz; s balioa besterik ez dut esaten 321 00:19:45,790 --> 00:19:47,870 t jarri behar baita. 322 00:19:47,870 --> 00:19:52,890 Beraz, orain nola hautsitako hau da erakusteko, line 29 aurrerantzean zer egiten ari naiz? 323 00:19:52,890 --> 00:19:56,980 Lehenik eta behin, naiz t luzera 0 baino handiagoa bada, egiaztapena. 324 00:19:56,980 --> 00:19:59,330 Kate batzuk bertan. Erabiltzaileak zerbait idatzi sartu 325 00:19:59,330 --> 00:20:03,410 Zer da line 32 egiten, itxuraz? 326 00:20:03,410 --> 00:20:08,910 [Inaudible ikasleak-erantzun] Eskuin >>. Mota infer ditzakezu, zer egiten ari da esan dut. 327 00:20:08,910 --> 00:20:13,200 Baina teknikoki, zer egiten ari da hau? t [0] adierazten du zer? 328 00:20:13,200 --> 00:20:15,140 [Ikasleak] zeroth pertsonaia. >> [Malan] zeroth pertsonaia. 329 00:20:15,140 --> 00:20:19,620 Edo, gehiago bezala, giza-t lehen pertsonaia, edozein izanda ere, hau da, H agian kasu honetan. 330 00:20:19,620 --> 00:20:24,990 Eta toupper du esaten. T izaera zeroth kapitalizatzen du, eta aldatzen da. 331 00:20:24,990 --> 00:20:28,430 Horrek esan nahi du hartu t izaera zeroth Beraz, maiuskulaz 332 00:20:28,430 --> 00:20:30,320 eta jarri duten leku berean. 333 00:20:30,320 --> 00:20:35,540 Beraz, idatzi dut kaixo minuskulaz, hau minuskulaz h aldatu beharko hiriburua H. 334 00:20:35,540 --> 00:20:41,400 Baina arazoa da, 35 eta 36 zer egin naiz lerro inprimatu Gurekin s eta t. 335 00:20:41,400 --> 00:20:43,120 Eta zure hunch zer? 336 00:20:43,120 --> 00:20:47,250 Zer kaixo dut idatzi minuskulaz guztiak ikusteko benetan dut? 337 00:20:47,250 --> 00:20:52,280 Zer inprimatzeko? >> [Inaudible ikaslearen erantzuna] >> Zer da hori? 338 00:20:52,280 --> 00:20:58,360 [Ikasleen] Big H eta gainerako txiki. >> Big H eta gainerako txiki bat, edo t? 339 00:20:58,360 --> 00:21:03,170 [Ikasleak] Bi. >> Bi. Hain zuzen ere. Beraz, zer gertatzen da hemen ikusi. 340 00:21:03,170 --> 00:21:08,380 >> Dezagun aurrera eta hau konpilatu. Hau da copy1, eta, beraz, egin copy1. Guztiak eskubidea. 341 00:21:08,380 --> 00:21:14,840 Txikiagotu sartu aurrera me eta exekutatu copy1, Sartu, zerbait esan dezagun: kaixo minuskulaz. 342 00:21:14,840 --> 00:21:19,570 Kopia kapitalizatzen da,, baina itxuraz kapitalizatutako jatorrizko baita, 343 00:21:19,570 --> 00:21:22,070 orain istorio hau delako gertatzen da? 344 00:21:22,070 --> 00:21:27,030 Line 27 Ez dut benetan Badirudi katea kopiatzeko, 345 00:21:27,030 --> 00:21:30,450 baina, nahiz eta intuizioz dakizukeela espero kasuan, 346 00:21:30,450 --> 00:21:33,680 argazki honi buruz uste baduzu, benetan zer egiten dut? 347 00:21:33,680 --> 00:21:35,410 Irudiaren erdia berdina da. 348 00:21:35,410 --> 00:21:39,390 Hargatik roll, beraz, denboran atzera t istorioa oraindik ez da existitzen. 349 00:21:39,390 --> 00:21:43,160 Istorioa S existitzen da,, baina dezagun minuskula kaixo une honetan. 350 00:21:43,160 --> 00:21:46,710 Beraz, egin iezadazue konpontzeko zer idatzi dut benetan sartu 351 00:21:46,710 --> 00:21:51,280 Hemen kasu honetan h-e-l-l-o dugu. 352 00:21:51,280 --> 00:21:58,050 Karaktere-sekuentzia bat marraztu dugu, nire separator lerro jarri hemen eta nire \ 0. 353 00:21:58,050 --> 00:22:05,980 Beraz, hau da, ahalik eta azkarren linea 1 gara 24-ish bidez, eman edo hartu, exekutatu. 354 00:22:05,980 --> 00:22:07,800 Hau da nire memoria irudia da. 355 00:22:07,800 --> 00:22:10,800 Line 27 I, zer gertatzen da? 356 00:22:10,800 --> 00:22:14,730 Just like aurretik, erakusle, plaza hau marraztu dut lortu dut. 357 00:22:14,730 --> 00:22:19,740 Deitzen da t. Eta zer da lehenetsia du balio? Nork daki? Zabor balio batzuk. 358 00:22:19,740 --> 00:22:22,060 >> Beraz, abstract dut kanpoan galdera-marka bat. 359 00:22:22,060 --> 00:22:27,670 Eta ahalik eta azkarren line 27 eskuinaldean exekutatzen gisa, zer naiz jarriz barruan I t? 360 00:22:27,670 --> 00:22:30,770 Gauza bera s. 361 00:22:30,770 --> 00:22:34,120 Beraz, une batez kendu geziaren abstrakzioa hau eta esan, 362 00:22:34,120 --> 00:22:40,330 oh, hau memoria karga helbidea 123 da, esan duzu t lortzen s, puntu eta koma, 363 00:22:40,330 --> 00:22:42,700 literalki ari zaren 123 jarriz hemen. 364 00:22:42,700 --> 00:22:45,200 Orain errazteko mota dugu gure mundua berriro pictures 365 00:22:45,200 --> 00:22:48,750 benetan zer egiten duzun besterik ez da zure mundua gezi bat gehitu 366 00:22:48,750 --> 00:22:52,910 t berean zehatz kate seinalatuz. 367 00:22:52,910 --> 00:22:59,730 Beraz, 31 eta 32 lerro t [0] aldatzeari buruzko I actually 368 00:22:59,730 --> 00:23:05,580 zer da t [0] itxuraz gaur egun sinonimo? s [0] 369 00:23:05,580 --> 00:23:07,030 Beraz, hori guztia gertatzen da. 370 00:23:07,030 --> 00:23:09,900 Eta sort honetan ere, nahiz eta sentitzen pixka bat maila baxua eta arcane 371 00:23:09,900 --> 00:23:12,760 eta sort honen agian senez honetan lan egin besterik ez dute behar bezala sentitzen 372 00:23:12,760 --> 00:23:15,410 Egin dut, gauzak kopiak aurretik eta lan egin besterik ez da - 373 00:23:15,410 --> 00:23:18,590 benetan zer kate bat benetan da uste, char * bat da. 374 00:23:18,590 --> 00:23:21,700 Beno, zer da hori? Pertsonaia batzuen helbidea da. 375 00:23:21,700 --> 00:23:24,930 Gero, agian, gehiago zentzuzkoa da zerbait egin duzula 376 00:23:24,930 --> 00:23:29,220 super itxuraz hau atsegin simple, guztiak egiten ari zaren kopiatzea memoria-helbide bat da. 377 00:23:29,220 --> 00:23:32,530 Ez duzu benetan katea, berez, ezer egiten. 378 00:23:32,530 --> 00:23:37,500 Beraz, nahiz eta ideia ez duzu nola kodea arazo hau konpondu nahi duzu, 379 00:23:37,500 --> 00:23:45,080 maila altua, kontzeptualki, zer egin behar ditugu, ta s benetako kopia egiteko, itxuraz? 380 00:23:46,670 --> 00:23:48,820 Bai. >> [Ikasleak] Eman kokaleku berri bat? >> Zehazki. 381 00:23:48,820 --> 00:23:50,800 >> T marka kokapen berria eman behar dugu. 382 00:23:50,800 --> 00:23:55,230 Zatia memoria berri bat lortu dugu, nolabait, mundu bat sortu behar dugu, 383 00:23:55,230 --> 00:24:00,090 argitasun-en mesedetan eskubide hori beherago dut marrazteko, baina ez du egon behar. 384 00:24:00,090 --> 00:24:04,880 Baina tamaina bera izan behar da, eta, beraz, leku berean lerro bertikal horiek marraztu dut. 385 00:24:04,880 --> 00:24:09,720 Fina da hau zabor guztiak bada, hasieran. Nork daki zer zegoen? 386 00:24:09,720 --> 00:24:13,850 Hala ere, 1. Pausoan eman behar memoria ere joan behar dut 387 00:24:13,850 --> 00:24:18,630 kaixo kopia bat egokitzeko, eta irudikatu nola h hemen kopiatzeko, e hemen 388 00:24:18,630 --> 00:24:20,390 l hemen eta abar. 389 00:24:20,390 --> 00:24:24,880 Baina hori jada pixka bat bistako sentitu behar du, nahiz eta xehetasun batzuk baino ez dira oraindik abstraktua. 390 00:24:24,880 --> 00:24:28,690 Kate hau kopiatu sartu, bitartean begizta bat edo loop bat besterik ez da 391 00:24:28,690 --> 00:24:31,580 edo zerbait bihurtu duten guztiak ezagutzen duzun. 392 00:24:31,580 --> 00:24:35,970 Hargatik saiatu honekin. Copy2.c sartu me. 393 00:24:35,970 --> 00:24:43,270 Copy2.c ia programa berean dugu line 27 izan ezik. 394 00:24:43,270 --> 00:24:47,260 Txiki konplexu bat dirudi, baina apurtu badugu behera pieza pieza 395 00:24:47,260 --> 00:24:48,950 ezkerraldean berdina da. 396 00:24:48,950 --> 00:24:52,790 Char * t gauza sortzen memoria, galdera-marka bat bada ere 397 00:24:52,790 --> 00:24:54,680 dugu ideia ez delako zer dago lehenespenez. 398 00:24:54,680 --> 00:24:57,920 Eskuinaldean On ari gara orain, funtzio berri bat, malloc sartuz, 399 00:24:57,920 --> 00:25:00,640 memoria esleitu, emaidazu memoria, 400 00:25:00,640 --> 00:25:06,900 hartzen du eta itxuraz zenbat argumentuak, zenbat gauza parentesi barruan? 401 00:25:09,660 --> 00:25:12,130 1 eta 2 murmurings entzun nuen, baina besterik ez 1 da. 402 00:25:12,130 --> 00:25:15,320 Koma ez dago, eta horrek esan nahi du parentesi barruan gauza 1 besterik ez da. 403 00:25:15,320 --> 00:25:17,720 Nahiz eta beste parentesi, let me nabarmendu 404 00:25:17,720 --> 00:25:21,460 parentesi outermost barruan, eta adierazpen hau da: 405 00:25:21,460 --> 00:25:25,880 (Strlen (s) + 1) * sizeof (char). 406 00:25:25,880 --> 00:25:29,190 Beraz, benetan uste baduzu honen bidez, hau da, ematen dit s luzera esanez. 407 00:25:29,190 --> 00:25:34,440 Zergatik am I, ordea, 1 luzera gehitzen gainean? >> [Inaudible ikaslearen erantzuna] 408 00:25:34,440 --> 00:25:40,200 Hain zuzen ere. Guy hau espazioa buztana, seigarren pertsonaia ingelesez esanahia ez du behar dugu 409 00:25:40,200 --> 00:25:42,250 baina programazioko esanahi berezia izan du. 410 00:25:42,250 --> 00:25:46,800 >> Beraz, + 1 behar dugu horretarako strlen itzultzen luzera giza itxaropena delako, 411 00:25:46,800 --> 00:25:50,890 kaixo edo 5, ez du ematen dizute null karaktere osagarriak. 412 00:25:50,890 --> 00:25:52,980 Beraz, gehitu eskuz I + 1. 413 00:25:52,980 --> 00:25:56,060 Eta gero, * tamaina (char), ez dugu ikusi aurretik. 414 00:25:56,060 --> 00:25:57,480 Hau ez da, teknikoki, funtzio bat. 415 00:25:57,480 --> 00:26:04,150 Keyword berezi bat esaten dizu zer tamaina datu-mota batzuk ordenagailu bat da 416 00:26:04,150 --> 00:26:06,980 errealitatea, zeren eta, gurekin batzuk 32-bit ordenagailuak. 417 00:26:06,980 --> 00:26:10,900 Pretty ordenagailu zaharrari bat daukat etxean, eta 32 bits bakarrik erabiltzen erakusleak irudikatzeko. 418 00:26:10,900 --> 00:26:13,900 Eta horrela egin nuen datu mota baten tamaina bada, 32 bit izango da agian. 419 00:26:13,900 --> 00:26:18,300 Baina nago nire ordenagailu berria fancy erabiliz gero, lortu dut izan liteke 64 biteko balioa 420 00:26:18,300 --> 00:26:20,510 helbide bat antzeko zerbait. 421 00:26:20,510 --> 00:26:25,400 Beraz, kasu honetan, super seguru izango, ez ari gara gogor kodea zerbait joan 422 00:26:25,400 --> 00:26:28,740 ondo, zer char zer esan dugu hain urruti arabera tamaina da? 423 00:26:28,740 --> 00:26:34,450 Pretty askoz dugu esan hitzez dela 1 byte, eta hori nahiko askoz egia taula zehar. 424 00:26:34,450 --> 00:26:37,000 Baina, berriro ere, hipotesi joera txarra izan. 425 00:26:37,000 --> 00:26:40,850 Buggy software eramango dute pertsonek erabili software modu ez duzu nahi izanez gero. 426 00:26:40,850 --> 00:26:44,750 Hargatik abstraktu hau kanpoan eta bakarrik oro esan 427 00:26:44,750 --> 00:26:46,830 Memoria zatiak asko behar dut 428 00:26:46,830 --> 00:26:50,210 eta memoria zatia bakoitzak pertsonaia baten tamaina baliokidea izan behar du, 429 00:26:50,210 --> 00:26:54,870 Izan ere, kasu honetan 1 berdina da, baina idazteko modu generiko bat da. 430 00:26:54,870 --> 00:27:00,460 Beraz, hitza kaixo bada, zenbat byte ditu malloc itxuraz kaixo for esleitu? 431 00:27:00,460 --> 00:27:04,980 [Ikasleak] Sei. >> Sei. Zehazki askok galdera pantailan marka. 432 00:27:04,980 --> 00:27:07,800 Eta gero bat asmatu zure GetString ulertzeko oinarritutako 433 00:27:07,800 --> 00:27:12,790 zer ez malloc ziurrenik itzultzeko? >> [Ikasleak] helbidea. 434 00:27:12,790 --> 00:27:17,020 Zer helbide bat? Memoria lehen zatia da. 435 00:27:17,020 --> 00:27:20,670 >> Ideia ez dugu zer ez dago beste funtzio batzuk duelako 436 00:27:20,670 --> 00:27:23,010 izan da memoria hau erabiliz aurretik. 437 00:27:23,010 --> 00:27:28,380 Baina malloc, GetString bezala, helbidea itzultzen memoria lehen bytea 438 00:27:28,380 --> 00:27:30,540 ezarri alde batera utzi behar duzu. 439 00:27:30,540 --> 00:27:38,380 Hala eta guztiz ere, ez du hutsik honetan bete backslash null karakterea 440 00:27:38,380 --> 00:27:43,030 bihurtzen da malloc erabili out ezer esleitu delako: ints, kateak, array, 441 00:27:43,030 --> 00:27:45,700 karroza, ikaslea egitura. 442 00:27:45,700 --> 00:27:47,750 Malloc erabat oro erabili ahal izango duzu. 443 00:27:47,750 --> 00:27:51,470 Ez du axola edo izan oroimena zaren esleitzean ezagutzeko. 444 00:27:51,470 --> 00:27:55,810 Beraz malloc for presumptuous litzateke \ 0 bat jarri 445 00:27:55,810 --> 00:27:58,340 zatia memoria bakoitzaren amaieran, ematen 446 00:27:58,340 --> 00:28:02,620 hau \ 0 gauza kateak hitzarmen bat besterik ez da delako. 447 00:28:02,620 --> 00:28:06,310 Ints erabiltzen ez da, ez da karroza erabiltzen, ez da ikasleek erabiltzen. 448 00:28:06,310 --> 00:28:11,730 Eta horrela, malloc duten Gotcha zama da zuk osorik programatzailea 449 00:28:11,730 --> 00:28:16,790 zenbat byte esleitu gogoratzeko eta ez da inoiz erabili loop 450 00:28:16,790 --> 00:28:21,570 edo, berriz, loop eta iraganeko joan zatia memoria Zuk eman muga. 451 00:28:21,570 --> 00:28:23,540 Jarri beste modu bat, ahalik eta azkarren, esleitu gisa memoria, 452 00:28:23,540 --> 00:28:28,510 ezin duzu galdetu sistema eragilea, oh, bide batez, nola zatia memoria handia izan da hau? 453 00:28:28,510 --> 00:28:32,080 Oso-osorik da sortu ahal izango duzu behar duzun balio hori gogoratzeko. 454 00:28:32,080 --> 00:28:34,330 >> Hargatik ikusi nola memoria hau erabili ahal izateko jarraitu dut. 455 00:28:34,330 --> 00:28:38,430 Line 28 eta 29 zergatik am egiten dut? 456 00:28:39,850 --> 00:28:42,260 Just behatu check guztira. 457 00:28:42,260 --> 00:28:45,110 Badaezpada ere zerbait gaizki joan da, memoria crazy zenbatekoa batzuk eskatzen dut 458 00:28:45,110 --> 00:28:48,690 edo hainbeste gauza ditut ordenagailua ez dagoela besterik ez, ez da nahikoa memoria exekutatzen 459 00:28:48,690 --> 00:28:51,780 horrelako zerbait, nahi dut gutxienez null egiaztatzeko. 460 00:28:51,780 --> 00:28:55,260 Egia esan, ordenagailuak emango dizu ilusioa programa bakoitza 461 00:28:55,260 --> 00:28:57,080 zure RAM guztiak erabili ahal izango du, 462 00:28:57,080 --> 00:29:00,740 baina hala eta guztiz ere, Erabiltzaileak batzuk crazy kate luzea agian motak ari dira txarra lasaia delako 463 00:29:00,740 --> 00:29:03,440 eta benetan zure programa edo hack kraska sartzen saiatzen ari dira, 464 00:29:03,440 --> 00:29:07,300 malloc itzulera-balioa, gutxienez, egiaztatu nahi duzun, eta berdin ote den null. 465 00:29:07,300 --> 00:29:11,630 Eta ez bada, utzi besterik ez irten oraintxe Kasu horretan zer egin jakin ez dudalako. 466 00:29:11,630 --> 00:29:13,950 Nola katea kopiatu dut? Ez da hau egiteko modu batzuk. 467 00:29:13,950 --> 00:29:18,850 Daude str kopiatu C funtzioak, baina super simple hau modu zaharra gurekin egiteko. 468 00:29:18,850 --> 00:29:23,110 >> Lehenik eta behin, utzi irudikatu me s luzera da. 469 00:29:23,110 --> 00:29:26,930 Jarri nuen hau loop, baina ordez jarri besterik ez dut hemen argitasuna. 470 00:29:26,930 --> 00:29:30,610 Beraz, n Kate jatorrizko luzera, hau da, itxuraz 5 gordetzen ditu. 471 00:29:30,610 --> 00:29:35,290 Gero, nire loop for 0-tik ari naiz sortu errepikatzean (e) n 472 00:29:35,290 --> 00:29:40,940 eta iterazio bakoitzean jarri dut s [i] t barruan [i]. 473 00:29:40,940 --> 00:29:45,060 Beraz, hori da inplizituki dut nire 2 kateak aurretik behatzak seinalatuz. 474 00:29:45,060 --> 00:29:49,260 Begizta hau atsegin dute hau iterates bezala, kopiatzea h hemen sartu dut, 475 00:29:49,260 --> 00:29:52,890 hau da, hemen, hemen sartu l sartu e s delako, hau da, t. 476 00:29:52,890 --> 00:29:58,770 Eta gero, azkenik, 35. Line zergatik am Hau egiten dut? 477 00:29:58,770 --> 00:30:03,770 Ziur naiz I katea t bukatzeko egin behar dut. 478 00:30:03,770 --> 00:30:06,170 Eta hori egin nuen modu honetan super esplizitura. 479 00:30:06,170 --> 00:30:09,510 Baina proposatzen, norbaitek, ahal izango banu, hori egiteko beste modu bat. 480 00:30:09,510 --> 00:30:13,930 Ez dut benetan behar line 35. Horretarako beste modu bat da. 481 00:30:13,930 --> 00:30:18,880 Bai. >> [Inaudible ikaslearen erantzuna] >> esan du ozenago. 482 00:30:18,880 --> 00:30:20,960 [Ikasleak] baino gutxiago edo berdin. >> Zehazki. 483 00:30:20,960 --> 00:30:24,450 Bakarrik esan izan dugu baino gutxiago edo n, eta, oro har, izan txarra berdin 484 00:30:24,450 --> 00:30:28,190 ia beti gara kontatuta ari gara gauza bera delako 485 00:30:28,190 --> 00:30:30,000 1 urratsa urrunegi joaten gara. 486 00:30:30,000 --> 00:30:32,170 Baina gogoan, zenbat byte genuen esleitu? 487 00:30:32,170 --> 00:30:37,210 S strlen esleitu dugu, eta, beraz, 5 + 1 6 guztira. 488 00:30:37,210 --> 00:30:39,980 Beraz, kasu honetan, honen antzeko zerbait egin izan dugu 489 00:30:39,980 --> 00:30:46,450 beraz, ez bakarrik kaixo, baizik eta \ 0 kopiatzea oso amaieran ari gara. 490 00:30:46,450 --> 00:30:49,860 Bestela, kopia str izeneko funtzio bat erabili izan dugu, strcpy 491 00:30:49,860 --> 00:30:51,700 baina hori ez litzateke ia askoz ere dibertigarria izan. 492 00:30:51,700 --> 00:30:54,000 Baina hori guztia egiten du kanpaia azpian. 493 00:30:54,000 --> 00:30:56,050 Gero, azkenik, lehen bezala gauza bera egiten dugu. 494 00:30:56,050 --> 00:31:01,620 T kapitalizatu nuen, eta, ondoren, originala eta kopia hori itxura itxura aldarrikatzen dut. 495 00:31:01,620 --> 00:31:08,570 Hargatik saiatu honekin orain. Utzi joan hemen Niri. Egin copy2. Handiagotzeko dugu, eta exekutatu copy2. 496 00:31:08,570 --> 00:31:13,840 Minuskulaz kaixo idatzi dut, eta, hain zuzen ere, minuskula kaixo dut jatorrizko 497 00:31:13,840 --> 00:31:16,930 baina kapital Kaixo kopia. 498 00:31:16,930 --> 00:31:20,300 Baina ez dut egin besterik ez oraindik. 1 azken gauza egin behar dut hemen. 499 00:31:20,300 --> 00:31:28,000 46 eta 47 argi eta garbi memoria libre uzten, baina zer esan benetan esan nahi? 500 00:31:28,000 --> 00:31:33,250 Zer am egiten dut, uste duzu deituz line 46 eta 47 lerro? 501 00:31:33,250 --> 00:31:38,900 Zer eragina ez dela izan? Bai. 502 00:31:38,900 --> 00:31:43,140 [Inaudible ikaslearen erantzuna] >> Zehazki. 503 00:31:43,140 --> 00:31:46,380 >> Ari zara sistema eragilearen kontatzea, hey, memoria honen esker. 504 00:31:46,380 --> 00:31:48,320 Erabili ahal izango dituzu beste norbaitek. 505 00:31:48,320 --> 00:31:50,790 Eta hemen, zabor-balioen adibide ezin hobea da. 506 00:31:50,790 --> 00:31:55,430 Dut memoria hau erabili hitza idazteko kaixo 2 lekuak, 507 00:31:55,430 --> 00:31:57,490 Hemen, hemen, hemen, eta hemen. 508 00:31:57,490 --> 00:32:00,910 Beraz, hau h-e-l-l-o-\ 0 da. 509 00:32:00,910 --> 00:32:06,960 Deitzen diot nik, baina, ondoren, 46 linea eta 47 linea, eta badakizu zer gertatzen den han irudian dagokionez? 510 00:32:06,960 --> 00:32:10,010 Egia esan, itxaron, argazki zahar bat da. 511 00:32:10,010 --> 00:32:12,550 Behin kopia egingo dugu, lasaia hori benetan hemen seinalatuz, 512 00:32:12,550 --> 00:32:16,110 beraz kendu zenbakiak eta abstraktu kanpoan gure geziak gisa berriro. 513 00:32:16,110 --> 00:32:19,370 Zer da argazki hau gertatzen da free deitzen diot nik? 514 00:32:19,370 --> 00:32:22,750 [Inaudible ikaslearen erantzuna] >> ere ez. 515 00:32:22,750 --> 00:32:29,510 Deitzen diot nik, s eta t free badu - trikimailu galdera bat mota - irudi hau ez da aldatu guztiak 516 00:32:29,510 --> 00:32:33,880 s deituz eta deituz delako t sistema eragilearen kontatzen du, 517 00:32:33,880 --> 00:32:39,010 hey, memoria hau erabili ahal izango duzu berriro ere, baina ez du aldatu null 518 00:32:39,010 --> 00:32:41,840 edo karaktere berezi batzuk, ez da aldatu, 519 00:32:41,840 --> 00:32:47,350 ez du aldatu h edo posta edo l edo l edo o beste ezer bai. 520 00:32:47,350 --> 00:32:51,610 Irudian dagokionez, free deitzen duzun bezala, ez da ezer aldaketak ahalik eta azkarren. 521 00:32:51,610 --> 00:32:56,570 Eta, bertan, zabor balio jatorria dago dudalako gero programa honetan 522 00:32:56,570 --> 00:33:01,010 GetString edo malloc edo antzeko zerbait memoria gehiago eskatu sistema eragilearen duen 523 00:33:01,010 --> 00:33:04,900 eta sistema eragilearen dio, ziur aski, memoria 12 byte besterik ez libratuko daukat, 524 00:33:04,900 --> 00:33:08,080 erabili horiek, zer egingo entregatu behar duzu? 525 00:33:08,080 --> 00:33:10,830 Entregatu behar dugun zatia memoria normalean marrazteko ari zara 526 00:33:10,830 --> 00:33:13,700 galdera ikurrak, baina zer dira galdera ikurrak horiek? 527 00:33:13,700 --> 00:33:17,000 H-e-l-l-o, h-e-l-l-o izan gertatuko dira. 528 00:33:17,000 --> 00:33:20,940 Honako hauek dira gure zabor-balio berriak ahalik eta azkarren askatzea nahi izanez gero, memoria hori. 529 00:33:20,940 --> 00:33:22,750 >> Mundu errealean inplikazioa da hemen ere. 530 00:33:22,750 --> 00:33:24,720 Gertatzen da hau RAM zerikusirik, baina zure ordenagailuak 531 00:33:24,720 --> 00:33:26,720 benetan egiten gauza bera disko. 532 00:33:26,720 --> 00:33:30,620 Honi buruz hitz egin dugu bereziki arazoa etorkizuneko Kernet oinarritzen da. 533 00:33:30,620 --> 00:33:36,170 Baina zer gertatzen da benetan gertatzen duzu zure mahaigainean finantza sentikorra fitxategia 534 00:33:36,170 --> 00:33:39,600 edo batzuk sketchy JPEG eta arrastatu zure trash sartu 535 00:33:39,600 --> 00:33:44,390 zer gertatzen da, arrastatu trash edo recycle bin? 536 00:33:44,390 --> 00:33:47,240 Zeri buruz hitz egiten zen I bazekien duzu. [Barreak] 537 00:33:47,240 --> 00:33:52,370 Zer gertatzen da froga arrastatu duzun hori recycle bin edo trash sartu? 538 00:33:52,370 --> 00:33:55,920 [Inaudible ikaslearen erantzuna] 539 00:33:55,920 --> 00:33:58,000 Beno, eta, beraz, kontuz ibili. Zer gertatzen da egiten duzu? 540 00:33:58,000 --> 00:34:01,030 Erantzun laburra ez da, ezta? 541 00:34:01,030 --> 00:34:04,790 Sketchy edo sentikorra fitxategia oraindik ez dago eserita nonbait zure disko gogorrean. 542 00:34:04,790 --> 00:34:07,940 Gurekin gehienak, gutxienez, ikasi behar duzula zure trash garbitzeko modu gogorrean 543 00:34:07,940 --> 00:34:10,429 edo zure recycle bin fitxategiak benetan ezabatu. 544 00:34:10,429 --> 00:34:13,440 Eta, hain zuzen ere, egin klik eskuin edo zure trash egin klik kontrola ahal 545 00:34:13,440 --> 00:34:15,580 edo hautatu Fitxategia, Hustu zakarrontzia edo dena delakoa 546 00:34:15,580 --> 00:34:21,420 eta benetan hustu zakarrontzia edo recycle bin, benetan gertatzen da gero irudi hau? 547 00:34:22,810 --> 00:34:25,969 Gehiago ezer egin. Beraz, ez da ezer benetan gertatzen da diskoan. 548 00:34:25,969 --> 00:34:30,880 >> Eta besterik ez dugu aldi baterako bada digress eta idatzi - I'll erabili atzealdean. 549 00:34:30,880 --> 00:34:34,639 Beraz, gaur egun istorioa da RAM, hau da, non programak existitzen aldatzen 550 00:34:34,639 --> 00:34:39,250 ari zaren bitartean exekutatzen, diskoan, hau da, non gordetzen dira epe luzera 551 00:34:39,250 --> 00:34:42,920 baita boterea jokoz kanpo, gaur egun, eta itzuli dugu etorkizunean 552 00:34:42,920 --> 00:34:46,380 dezagun asmoa hau adierazten du, zure ordenagailuaren disko gogorrean barruan 553 00:34:46,380 --> 00:34:50,110 back eguna delako zirkular diskoak izan zuten, askoz disketeak bezala. 554 00:34:50,110 --> 00:34:55,130 Beraz, egin duzu Excel fitxategia sentikorra batzuk, iraun dezake zatia memoria 555 00:34:55,130 --> 00:34:59,770 zure ordenagailuaren disko, eta besterik ez dut arbitrarioak 1s bera eta 0 s marraztuz. 556 00:34:59,770 --> 00:35:03,970 Horrelako arrastatu fitxategia zure zakarrontzi edo birziklatu bin, 557 00:35:03,970 --> 00:35:07,750 literalki ez da ezer gertatzen, Apple eta Microsoft erabaki besterik ez delako 558 00:35:07,750 --> 00:35:10,450 zakarrontzia eta recycle bin benetan da aldi baterako biltegian. 559 00:35:10,450 --> 00:35:14,710 Agian azkenean OS da hustu ahal izango duzu, baina normalean, ez du ezer egin, 560 00:35:14,710 --> 00:35:17,090 gutxienez arte benetan espazio baxua zara. 561 00:35:17,090 --> 00:35:20,870 >> Hala eta guztiz ere, joan trash hutsik edo hutsik recycle bin 562 00:35:20,870 --> 00:35:23,460 era berean, ez dago argazki hau gertatzen da. 563 00:35:23,460 --> 00:35:28,590 Guztiak gertatzen da beste nonbait zure ordenagailuan, mahai-mota batzuk. 564 00:35:28,590 --> 00:35:35,400 Sort da Cheat, demagun, resume.doc little fitxa dioen bezala, 565 00:35:35,400 --> 00:35:40,920 Microsoft Word fitxategi kokapena 123 zure disko gogorrean bizi curriculuma, beraz, 566 00:35:40,920 --> 00:35:43,710 ez memoria du eta ez RAM, baina zure disko gogorrean, 567 00:35:43,710 --> 00:35:49,050 eta 456 at JPEG sketchy bizi da, eta zure Excel fitxategia 789 edo edozein lekutan bizi da. 568 00:35:49,050 --> 00:35:53,640 Noiz fitxategiak ezabatu benetan trash edo recycle bin husteko, 569 00:35:53,640 --> 00:35:59,530 Argazki hau ez da aldatuko. 0 s eta 1s zure disko gogorrean ez edonora joateko. 570 00:35:59,530 --> 00:36:03,930 Baina, era askotako datu-base txiki honetan, taula honetan ez change. 571 00:36:03,930 --> 00:36:08,750 Zure curriculuma ezabatu, nahiz eta fitxategia ezabatuko da nolabait da, 572 00:36:08,750 --> 00:36:12,790 baina ordenagailua ez non gauza zure disko gogorrean bizi ahaztu da. 573 00:36:12,790 --> 00:36:17,870 0 s eta 1s zure curriculuma osatzen duten edo beste edozein fitxategi oraindik ez dira oso-osorik. 574 00:36:17,870 --> 00:36:21,960 >> Beraz, bada hau egin zenuen, ustekabean, oraindik ez da ez-zero probabilitatea 575 00:36:21,960 --> 00:36:25,800 zure datuak berreskuratzeko Norton Utilities edo software komertziala batzuk erabiliz 576 00:36:25,800 --> 00:36:29,810 horren helburua da bizitzan 0 s eta 1s dute sort dira umezurtz, 577 00:36:29,810 --> 00:36:33,300 baina hemen ahaztuta utzi hemen, beraz, zure datuak eskuratu dezakezu berriro. 578 00:36:33,300 --> 00:36:38,410 Edo polizia edo FBI ikertzaileen auzitegiko litzateke benetan disko gogorrean hartu 579 00:36:38,410 --> 00:36:42,550 eta, benetan, 0 s eta 1s JPEGs itxura, Excel fitxategiak itxura ereduak bilatzeko, 580 00:36:42,550 --> 00:36:46,400 berreskuratu ditu, era horretan, nahiz eta ordenagailu ahaztu egin die bertan. 581 00:36:46,400 --> 00:36:49,820 Modu bakarra benetan datuak ezabatzeko, etorkizunean eztabaidatu dugu, beraz, 582 00:36:49,820 --> 00:36:54,190 Fitxategi edo disko gogorrean edo sasiak garbiketa 583 00:36:54,190 --> 00:36:56,540 Ezin duzu benetan 0 s eta 1s kentzeko 584 00:36:56,540 --> 00:36:59,440 gigako disko gogorrean besterik litzaidake duzulako hasteko 585 00:36:59,440 --> 00:37:02,380 eta amaitzeko sortu nahi duzun disko gogorrean megabyte bat etengabe zinen bada ezabatzen, 586 00:37:02,380 --> 00:37:04,380 literalki, 0 s eta 1s. 587 00:37:04,380 --> 00:37:06,310 Beraz, zer litzateke benetan nahi izanez gero zure ibilbideak estaltzeko 588 00:37:06,310 --> 00:37:10,510 eta oinarrizko arazoa da ez dagoela oraindik 0 s eta diskoan 1s? 589 00:37:10,510 --> 00:37:14,930 Norbait gailua fisikoki apurtu duzula gesticulating ikusten dut. Hori funtzionatuko du. 590 00:37:14,930 --> 00:37:19,600 [Barreak] Baina hori garestia irtenbide mota bada, zer gehiago arrazoizkoa izango litzateke? 591 00:37:19,600 --> 00:37:23,270 Bai. >> [Ikasleak] Gainidatzi ditu. >> Gainidatzi horiek zer duten? >> [Ikasleak] Beste datuak. 592 00:37:23,270 --> 00:37:29,070 Beste datuak. Besterik ez dezakezu zure diskoan 0 s edo 1s edo 0 s guztiak, 1s guztiak gainidatzi. 593 00:37:29,070 --> 00:37:31,230 >> Eta hori da, hain zuzen ere zer software batzuk ez. 594 00:37:31,230 --> 00:37:33,570 Software erosi ahal izango duzu, edo are get free software, 595 00:37:33,570 --> 00:37:36,610 eraiki da, eta, are gehiago, Mac OS egun hauetan, are gutxiago Windows, 596 00:37:36,610 --> 00:37:38,660 seguruan ezabatzeko gaitasuna da. 597 00:37:38,660 --> 00:37:41,960 Egia esan, run home guztiak nahi izanez gero, gaur egun Mac bat bada, eta hau egin, 598 00:37:41,960 --> 00:37:45,740 duzun got bada zure trash stuff batzuk, Secure Hustu zakarrontzia egin dezakezu, 599 00:37:45,740 --> 00:37:47,610 horrek ez du zehazki hori. 600 00:37:47,610 --> 00:37:53,350 Baizik eta besterik ez ezabatze fitxategiak hemen baino, ez da ezabatuko 0 s eta 1s hemen, 601 00:37:53,350 --> 00:38:01,240 baizik eta, besterik gabe, aldatzen ditu guztiak, adibidez, 0 s eta dot, dot, dot. 602 00:38:01,240 --> 00:38:05,330 Beraz, zure psets etorkizuneko bat benetan egingo datuak nahita berreskuratzeko 603 00:38:05,330 --> 00:38:08,430 pertsonak, lekuak, eta gauzak campus hartu ditudan argazkiak 604 00:38:08,430 --> 00:38:12,810 kamera digital baten memoria txartela irudi auzitegi bat egin dugu, 605 00:38:12,810 --> 00:38:17,120 zehatza ideia bera da, eta zalantzan jarri behar benetan aurkitu duzu 606 00:38:17,120 --> 00:38:20,160 ordezkatzen dituzten ereduak JPEGs zure disko gogorrean, 607 00:38:20,160 --> 00:38:23,610 antzinako askoz ikasleari horren email bezala, duela aste batzuk irakurri nuen 608 00:38:23,610 --> 00:38:25,860 bere arreba argazkiak berreskuratzeko. 609 00:38:25,860 --> 00:38:30,300 Zergatik ez 5 minutuko atsedenaldi bat hartuko dugu hemen, eta memoria gehiago bilduko dugu. 610 00:38:33,030 --> 00:38:38,610 Hortaz, hona hemen non, gauzak pixka bat kontuan-flexiones, baina hau oso indartsua urrats bat da 611 00:38:38,610 --> 00:38:40,480 hau gehiago ulertzeko norabidean. 612 00:38:40,480 --> 00:38:42,900 Here pointers.c izeneko programa bat da. 613 00:38:42,900 --> 00:38:45,430 Gaur egungo lagina kodea artean. 614 00:38:45,430 --> 00:38:51,280 , Lehen lerro batzuk, 19 22 bidez, guztiak egiten ari garen antzeko zerbait da GetString 615 00:38:51,280 --> 00:38:54,460 eta helbidea itzuliz, s gordetzeko. 616 00:38:54,460 --> 00:38:58,380 , Pset nahiz eta 3 Hemendik aurrera nahi baduzu, baina pset 4 eta 617 00:38:58,380 --> 00:39:01,030 non hasten zeure burua off gurpilak prestakuntza horiek hartu dezakezu, 618 00:39:01,030 --> 00:39:04,030 ez dago arrazoirik kateak existitzen jada asmoa da. 619 00:39:04,030 --> 00:39:07,030 Zalantzarik gabe, ongi hasi char * esaten. 620 00:39:07,030 --> 00:39:12,610 >> Bat alde batera utzita, online erreferentzia eta liburu askotan dezakezu ikus star aldagaia ondoan. 621 00:39:12,610 --> 00:39:15,600 Bi aldeetako inguruko guneak ere ikus dezakezu. 622 00:39:15,600 --> 00:39:17,680 Horiek guztiak dira funtzionalki zuzena. 623 00:39:17,680 --> 00:39:21,180 Oraingoz, baina, hurbilketa hau egingo dugu normalizatzeko super argi utzi 624 00:39:21,180 --> 00:39:24,000 char * duten pertsonaia erakuslea esaten bezalakoa da. 625 00:39:24,000 --> 00:39:25,680 Hori da datu mota da. 626 00:39:25,680 --> 00:39:28,730 Eta gero, aldagaiaren izena s da, kasu honetan. 627 00:39:28,730 --> 00:39:31,180 Beraz, ahaztuak dugu kate bat deitu dugu s. 628 00:39:31,180 --> 00:39:35,180 Eta gero behera hemen konturatu naiz I benetan egiten trickery pixka bat. 629 00:39:35,180 --> 00:39:39,080 Erakuslea aritmetikoak, super-simple sort deritzo. 630 00:39:39,080 --> 00:39:41,790 Esan nahi du, besterik gabe, gehitu eta kendu zenbakiak erakusle. 631 00:39:41,790 --> 00:39:43,660 Baina hau benetan lan egiten du. 632 00:39:43,660 --> 00:39:49,170 Programa honek itxuraz katea s 1, besteak beste, azken emaitza Lerro bakoitzeko karaktere bistaratzen 633 00:39:49,170 --> 00:39:54,920 Just beraz, honda non va ahal izango dugu, erakusleak egiteko, erakusleak exekutatu, utzi sartu urruntzeko me 634 00:39:54,920 --> 00:39:58,940 Orain let me mota HELLO eta mota Sartu antzeko zerbait 635 00:39:58,940 --> 00:40:01,080 eta 1 lerroko izaera inprimatzen ditu. 636 00:40:01,080 --> 00:40:04,730 Up bigarren duela arte, egin nahiko genuke bracket karratu notazioa. 637 00:40:04,730 --> 00:40:09,760 Begizta bat izan genuen eta ez s printf genuke [i], eta hori egin genuen behin eta berriz eta berriz 638 00:40:09,760 --> 00:40:11,950 backslash bat lerro bakoitzaren amaieran n. 639 00:40:11,950 --> 00:40:16,800 Baina programa hau desberdina da. Programa hori erabiliz, literalki, aritmetika. 640 00:40:16,800 --> 00:40:18,860 Beraz, zer gertatzen da hemen? 641 00:40:18,860 --> 00:40:24,720 Lehenik eta behin, begizta hau ere exekutatzen aurretik, zer, besterik gabe, argi eta garbi, s benetan? 642 00:40:24,720 --> 00:40:27,270 S da? >> [Ikasleak] helbidea. >> Helbidea. 643 00:40:27,270 --> 00:40:32,980 >> Eta helbidea, kaixo kasuan, hitz horren lehenengo pertsonaia, h da. 644 00:40:32,980 --> 00:40:37,370 Beraz, s, adibide jakin honetan, h helbidea. 645 00:40:37,370 --> 00:40:41,850 Beraz, zer ez da egin behar esan nahi du + i? 646 00:40:41,850 --> 00:40:46,280 Beno, hasiko da 0 i honetan loop. Egin dugu asko aldiz. 647 00:40:46,280 --> 00:40:49,760 Katearen luzera joan da, itxuraz dut. 648 00:40:49,760 --> 00:40:53,950 Beraz, begizta honen lehenengo iterazio, jakina 0 i. 649 00:40:53,950 --> 00:41:01,740 Beharrean, s +0--da, jakina, besterik ez s - Beraz, adierazpen hau da, s + i esanez. 650 00:41:01,740 --> 00:41:04,320 Beraz, zer da * s hemen? 651 00:41:04,320 --> 00:41:08,530 Orain izar pixka bat eta beste modu batean erabiltzen ari gara. 652 00:41:08,530 --> 00:41:13,080 Dezagun aurrera nau eta t kendu egiten ari delako t eta s kopiak buruz hitz egiten. 653 00:41:13,080 --> 00:41:15,540 Orain nahi dugu s inplikatuz istorio bat kontatzeko. 654 00:41:15,540 --> 00:41:20,090 Eta, beraz, une honetan, mota katea ondoren, gure mundua itxura oso atsegin aurretik zuen 655 00:41:20,090 --> 00:41:26,630 gordetzeko h helbidea besterik ez da, eta, oro har, kate kaixo seinalatuz. 656 00:41:26,630 --> 00:41:33,170 * Bezalako lerro bat egin dut, gaur egun bada (s + i), utzi out hau probatu. 657 00:41:33,170 --> 00:41:40,140 Beraz, * (+ i). Demagun hau errazteko me, hau da, 0 delako, eta, beraz, hau * (s +0). 658 00:41:40,140 --> 00:41:43,790 Beno, itxaron minutu bat. Simplify gehiago. Hau * (s) da. 659 00:41:43,790 --> 00:41:47,020 Beno, orain parentesi ergelak mota dira, eta, beraz, orain dezagun just do * s. 660 00:41:47,020 --> 00:41:50,540 Beraz, begizta hau, lerro hori, eta nabarmenduta, 26 lehen iterazio 661 00:41:50,540 --> 00:41:53,650 pretty askoz hau inprimatzeko baliokidea. 662 00:41:53,650 --> 00:41:56,040 * S datu-mota da? 663 00:41:56,040 --> 00:42:00,770 Testuinguru honetan, izan ere, izar gertatzen s bera ondoan izan, 664 00:42:00,770 --> 00:42:04,930 baina zehatzago esanda, ari gara jada ez delako geratuko 665 00:42:04,930 --> 00:42:09,730 ez, aldagai bat sortzen ari gara jada, ez dago aipamen line 26 char * 666 00:42:09,730 --> 00:42:14,280 keyword katea aipamena ez da, besterik ari gara s izeneko aldagai bat erabiliz, 667 00:42:14,280 --> 00:42:19,650 bihurtzen da izarra du apur bat ezberdina da, eta, admittedly, esanahia nahasgarria. 668 00:42:19,650 --> 00:42:26,590 * S hemen esan nahi du s helbidea eta inprimatu edozein izanda ere hor dago. 669 00:42:26,590 --> 00:42:33,750 Beraz, hemen da, s, * s - sort Chutes eta eskailerak bezala, jarraitu gezi - Hemen. 670 00:42:33,750 --> 00:42:35,850 Beraz, * s da. 671 00:42:35,850 --> 00:42:39,060 >> Beraz, zer lortzen line 26 begizta hori lehen iterazio inprimatutako? 672 00:42:39,060 --> 00:42:42,170 Inprimatzen I% c, pertsonaia bat biltegian, 673 00:42:42,170 --> 00:42:48,520 ondoren lerro berri bat \ n. * (+ I), non 0 besterik ez da hau da, i. 674 00:42:48,520 --> 00:42:53,670 Beraz, zer char ez en jarri dut% c? H. 675 00:42:53,670 --> 00:42:56,900 Ziurrenik ikus dezakezu non va - Begizta hurrengo iterazio 676 00:42:56,900 --> 00:43:01,350 hurrengo iterazio i da, jakina, 1, eta, beraz, horrek esan nahi du s +1 677 00:43:01,350 --> 00:43:05,580 eta, ondoren, gaur egun behar ez dut parentesi izar esan behar baitu. 678 00:43:05,580 --> 00:43:08,620 memoria-helbide s +1 joan. 679 00:43:08,620 --> 00:43:14,170 Zer da s? Dezagun roll denboran atzera eta esan gezi hau ez da benetan gurekin egiten mesederik edozein. 680 00:43:14,170 --> 00:43:18,450 Dezagun zehatzago, esan kopurua 123 da hori gordetzeko 681 00:43:18,450 --> 00:43:25,110 kate honen hasieran kaixo, horregatik helbidea 123 da, hau da, 124, eta abar. 682 00:43:25,110 --> 00:43:30,550 Beraz, bigarren iterazio s +1 esaten dut, 123 +1 esaten bezala, 683 00:43:30,550 --> 00:43:35,340 bestela 124 bezala ezagutzen da, beraz, zer lortzen char bigarren iterazio inprimatutako? 684 00:43:35,340 --> 00:43:37,850 Memoria-helbide E 124 at. 685 00:43:37,850 --> 00:43:44,440 Ondoren + berriz, 125, 126, 127, eta begizta hau zorionez gelditzen da lortuko dugu hemen aurretik 686 00:43:44,440 --> 00:43:49,040 dut strlen delako ziur ez i ez zenbatzea oso handia egin behar izan du. 687 00:43:49,040 --> 00:43:50,810 Beraz, gehiegi da. 688 00:43:50,810 --> 00:43:55,000 Berriz ere, hau da egin genuen bezala, nahiz eta aste bat. 689 00:43:55,000 --> 00:43:59,200 Let it idatzi beheko lerroan, nahiz eta ez dugu nahi Biak egin. 690 00:43:59,200 --> 00:44:02,500 Berdin-berdina da, gaur egun hau. 691 00:44:02,500 --> 00:44:08,310 >> Beraz, nahiz eta kate bat da s, dugu deituz aste bezala, benetan char * s. 692 00:44:08,310 --> 00:44:13,270 Beraz, bada, super anal izan nahi dugu, benetan egokia da berariazko karaktere idazteko 693 00:44:13,270 --> 00:44:17,490 kokapena Ith, horiek zenbakizko helbideak eta izar-operadorea hau erabiliz, 694 00:44:17,490 --> 00:44:20,470 baina Egia, hau besterik ez hainbeste garbitzailea da. Beraz, hau da, ez da txarra. 695 00:44:20,470 --> 00:44:26,720 Ez da arrazoirik line 27 egiten hemen gelditzeko, baina 26 funtzionalki bera da, 696 00:44:26,720 --> 00:44:31,570 eta funtzionalki bera zehatz-mehatz izan ditudan arrazoiak direla eta, beraz, oso urrun eztabaidatzen. 697 00:44:31,570 --> 00:44:33,650 Eta, azkenik, 29, praktika onak besterik ez da. 698 00:44:33,650 --> 00:44:38,420 S free Deitzen esan nahi du orain atzera ari zaren memoria ematen GetString eman 699 00:44:38,420 --> 00:44:41,630 berriro, bezala delako Astelehena aipatu dut, asteak GetString 700 00:44:41,630 --> 00:44:44,180 bug bat izan da zure kodea sartuz. 701 00:44:44,180 --> 00:44:46,490 Zure aste kodea memoria filtrazioak izan du 702 00:44:46,490 --> 00:44:49,970 Horren bidez, izan duzun GetString eskatuz memoria baina inoiz ez duzun emanez back. 703 00:44:49,970 --> 00:44:53,410 Eta hori guk aukeratu pedagogiko nahita 704 00:44:53,410 --> 00:44:55,880 da besterik ez delako gehiegi hasieratik pentsatu. 705 00:44:55,880 --> 00:44:57,710 Baina orain, simetria gehiago behar dugu. 706 00:44:57,710 --> 00:45:00,830 Ordenagailua memoria eskatzen baduzu, GetString kasuan, 707 00:45:00,830 --> 00:45:02,820 kasu itxuraz malloc 708 00:45:02,820 --> 00:45:07,970 egin behar duzu orain pset 4 aurrerantzean ere, hala nola, memoria free edozein. 709 00:45:07,970 --> 00:45:11,650 Oharra int n esaten da. 710 00:45:11,650 --> 00:45:15,040 Ez duzu behar hau libre ez duzulako deitu GetString 711 00:45:15,040 --> 00:45:16,890 eta zuk ez duzu deitu malloc. 712 00:45:16,890 --> 00:45:20,610 >> Eta are izeneko GetInt dugu azkenean ikus, 713 00:45:20,610 --> 00:45:25,520 GetInt ez duzu memoria esleitu gainditu ahal izango duzu benetan delako osoko zenbakien inguruan 714 00:45:25,520 --> 00:45:29,430 eta karroza eta karakteretan bidea besterik ez dugu egiten asteak. 715 00:45:29,430 --> 00:45:33,960 Strings, ordea, bereziak dira benetan Oraindik dutelako karakteretan bat baino gehiago lotuz. 716 00:45:33,960 --> 00:45:37,450 Beraz, karakteretan eta karroza eta ints ezberdinak ari dira eta. 717 00:45:37,450 --> 00:45:39,980 Baina itzuli gara baino lehen luzea. 718 00:45:39,980 --> 00:45:44,920 Edozein galdera gero erakusleak hasieran hau? Bai. 719 00:45:44,920 --> 00:45:49,690 [Inaudible ikasleak galdera] 720 00:45:49,690 --> 00:45:51,440 Ah, oso ona galdera. 721 00:45:51,440 --> 00:45:55,790 C benetan, zuretzat ez da gauza gutxi bat, eta gomendagarria da, 722 00:45:55,790 --> 00:46:00,110 da zifrak zuretzat zer tamaina datu mota 723 00:46:00,110 --> 00:46:03,060 eta, ondoren, zuretzat biderketak mota hori egiten da. 724 00:46:03,060 --> 00:46:06,610 Hau da karakteretan kasuan garrantzirik ia beti char byte 1 delako, 725 00:46:06,610 --> 00:46:08,150 beraz, hau, besterik gabe lan egiten du. 726 00:46:08,150 --> 00:46:11,220 Baina, eztabaidak eztabaida, benetan bada osoko zenbakien inprimatzeko 727 00:46:11,220 --> 00:46:15,500 eta zenbait inprimatu balioa s osokoa seinalatuz ziren saiatzen ari zaren, 728 00:46:15,500 --> 00:46:20,720 litzateke, era berean, ez da beharrezkoa + 4 * delako i int bat egin 4 bytes. 729 00:46:20,720 --> 00:46:25,780 Erakuslea aritmetika esan nahi du, C eta konpiladore egiten math hori guztia. 730 00:46:25,780 --> 00:46:29,190 Guztiak zaindu behar duzu zenbaketa zentzu giza sailkatu da. Bai. 731 00:46:29,190 --> 00:46:35,200 [Ikasleak] deklaratzeko kate baten barruan loop, ez geroago askatzea duzu? 732 00:46:35,200 --> 00:46:36,760 Ona galdera. 733 00:46:36,760 --> 00:46:41,390 >> Deklaratu barruan kate loop bat bada, ez da geroago askatzea behar duzu? 734 00:46:41,390 --> 00:46:47,520 Memoria libratzeko soilik egin behar duzu GetString edo malloc duzula esleitu. 735 00:46:47,520 --> 00:46:53,110 Beraz, bada zerbait esatea besterik ez duzu nahi - utzi kizkur giltza jarri me now kodea zerikusia, beraz. 736 00:46:53,110 --> 00:46:58,580 Zerbait egin duzu, buggily bada ere, hau atsegin bada, char * t = s, 737 00:46:58,580 --> 00:47:03,450 ez duzu free t t behar ez delako inplikatzeko malloc edo GetString edozein aipamen. 738 00:47:03,450 --> 00:47:08,960 Kontrastea badu hau egin zenuen, GetString, eta gero bai, t free zenuke behar. 739 00:47:08,960 --> 00:47:14,350 Eta, hain zuzen ere, horretarako zure aukera bakarra da gaur egun begizta honen barruan, esparrua bera gai 740 00:47:14,350 --> 00:47:16,060 Nik iraganean eztabaidatu dugun. 741 00:47:16,060 --> 00:47:18,830 Bestela esleitzean behar duzun memoria, memoria esleitzean, memoria esleitzean, 742 00:47:18,830 --> 00:47:21,230 eta programaren amaieran begizta horren kanpo zauden delako, 743 00:47:21,230 --> 00:47:24,240 t ez da existitzen, baina inoiz ez esan duzun sistema eragilearen 744 00:47:24,240 --> 00:47:26,750 ez duzula behar memoria hori jada. 745 00:47:26,750 --> 00:47:30,430 Eta luze baino lehen, 4 edo 5 pset emango dugu Valgrind izeneko programa bat, 746 00:47:30,430 --> 00:47:34,160 espirituz GDB antzekoa da got arcane interfazearen zertxobait 747 00:47:34,160 --> 00:47:35,750 baina bere bizitza helburua da laguntzeko. 748 00:47:35,750 --> 00:47:39,380 Eta Valgrind programa bat egingo etorkizunean bilatu zure programak 749 00:47:39,380 --> 00:47:42,550 memoria filtrazioen bila, GetString edo malloc ala ez, 750 00:47:42,550 --> 00:47:47,800 zein gehiago guztiak erabiliz gelditu CS50 liburutegia erabiliz bezain hasten gara. 751 00:47:47,800 --> 00:47:53,030 Gaur egun, azkenik dugu hiztegia eta teoria eredu mental sort sort 752 00:47:53,030 --> 00:47:55,170 hautsitako programa hau konpontzeko. 753 00:47:55,170 --> 00:47:59,410 >> Beraz,, hondatutako programa honetan, swap, swap barruan lan egiten du, 754 00:47:59,410 --> 00:48:05,280 baina inoiz ez nagusian lan egin du x eta y, abisuaren gainditu delako, 755 00:48:05,280 --> 00:48:07,260 eta horiek onartu ziren balioak, eta, beraz, hitz egiten. 756 00:48:07,260 --> 00:48:09,330 Horien kopiak eman trukatzeko. 757 00:48:09,330 --> 00:48:12,520 Swap amaieran By, a eta b trukatu zuen, hain zuzen ere, 758 00:48:12,520 --> 00:48:16,120 baina, jakina, x eta y, astelehena eztabaidatu dugun bezala, ez zuen izan. 759 00:48:16,120 --> 00:48:19,940 Beraz berdean proposatzen dut hemen, hau da, benetan konponbidea hemen. 760 00:48:19,940 --> 00:48:22,640 Eta, benetan, nire ko mugitu me besterik ez koherentea izan 761 00:48:22,640 --> 00:48:24,440 nahiz eta, berriro ere, funtzionalki hau ez du axola. 762 00:48:24,440 --> 00:48:28,730 Etorkizuneko asteetan azaldu noiz eta zergatik Gaia ez dugu. 763 00:48:28,730 --> 00:48:30,600 Beraz, berdea irtenbide bat da. 764 00:48:30,600 --> 00:48:33,700 Egia, asko osoa Messier badirudi daukat ko horiek guztiak ere. 765 00:48:33,700 --> 00:48:35,380 Seinalatu me gauza bat. 766 00:48:35,380 --> 00:48:40,040 Goiko lerroan hemen non int * a eta int * b dio 767 00:48:40,040 --> 00:48:42,820 funtsean, gauza bera egiten beti dauka. 768 00:48:42,820 --> 00:48:47,070 2 argumentu edo parametro da deklaratzen trukatu, 769 00:48:47,070 --> 00:48:49,940 lehen int erakusle bat deitu du, 770 00:48:49,940 --> 00:48:53,100 bigarren izeneko b int erakusle bat da. 771 00:48:53,100 --> 00:48:55,770 Izan ere, gauza bakarra da, puntu honetan ez dagoela izar bat dago. 772 00:48:55,770 --> 00:48:59,340 >> Zer esan nahi du horrek? Int bat ez da, b ez da int. 773 00:48:59,340 --> 00:49:04,100 A int baten helbidea eta b hainbat int helbidea da. 774 00:49:04,100 --> 00:49:06,980 Down hemen, hau da, non C lortzen nahasgarria onartzen dut. 775 00:49:06,980 --> 00:49:09,790 Orain izar bat ari gara erabiltzen, baina esanahi desberdinak ditu testuinguru honetan. 776 00:49:09,790 --> 00:49:13,150 Ari gara ez delako erakusleak geratuko gara hemen, 777 00:49:13,150 --> 00:49:15,500 Hemen gauzak ez dira dereferencing dugu. 778 00:49:15,500 --> 00:49:21,520 Beraz, teknikoki, swap barruan lehenengo, bigarren eta hirugarren line testuinguru honetan star 779 00:49:21,520 --> 00:49:24,560 dereference operadorea da, besterik gabe, esan nahi da Hara joan. 780 00:49:24,560 --> 00:49:27,400 Beraz, nire hatz arrow h, 781 00:49:27,400 --> 00:49:31,100 * Bide bat helbide horretara joan eta aurkitu me int hori ez dago. 782 00:49:31,100 --> 00:49:34,250 * B bitartez helbidera joan eta ni pasa zer da bertan. 783 00:49:34,250 --> 00:49:40,730 Hargatik marraztu irudi Astelehena fotograma pila bat erabiliz, 784 00:49:40,730 --> 00:49:43,130 bat beheko nagusia izango da, 785 00:49:43,130 --> 00:49:47,600 bat goiko swap izango da, 786 00:49:47,600 --> 00:49:50,880 beraz, gure mundua itxura, astelehena bezala, hau atsegin dute. 787 00:49:50,880 --> 00:49:53,620 Hona hemen nagusia zatia memoria hori erabili behar da. 788 00:49:53,620 --> 00:49:56,520 >> Astelehenetik Gogoratu programa besterik ez 2 aldagai zituen, 789 00:49:56,520 --> 00:50:01,930 bat izeneko x eta bat izeneko y, eta jarri nuen zenbakiak 1 eta 2 ez dago. 790 00:50:01,930 --> 00:50:06,580 Orain swap bezala deitu egin nuen, astelehena, I, 791 00:50:06,580 --> 00:50:11,000 aldez aurretik programa honen bertsio gorria erabili dut, honen itxura, 792 00:50:11,000 --> 00:50:17,470 2 parametroak, eta b bat dut, eta zer egin hemen eta hemen idazten dugu? 793 00:50:17,470 --> 00:50:21,160 Just 1 eta 2 x eta y, literalki kopiatzen. 794 00:50:21,160 --> 00:50:23,070 Gaur egun aldatu dugu. 795 00:50:23,070 --> 00:50:28,510 Gaur egun ints en ordez pasatzea eta b 2 helbideak pasatuko dugu. 796 00:50:28,510 --> 00:50:34,290 Helbide horiek gertatuko ints seinalatu, baina helbide horiek ez dira bere burua ints. 797 00:50:34,290 --> 00:50:37,330 Helbideak dira. Posta helbidea bezalakoa da horren ordez. 798 00:50:37,330 --> 00:50:40,580 Beraz, gaur egun besterik ez eman nire burua pantailan xehetasun apur bat gehiago behar dugu. 799 00:50:40,580 --> 00:50:43,250 Nire ordenagailuaren memoria da egun osoan. 800 00:50:43,250 --> 00:50:45,120 Zenbakitze-eskema batzuk arbitrarioak behar dugu orain. 801 00:50:45,120 --> 00:50:50,580 Hargatik, besterik gabe esan, besterik gabe, kasualitatez, hau da, memoria-helbide 123, 124. 802 00:50:50,580 --> 00:50:55,660 Dezagun besterik ez diotenez, hau da, 125, 126 da, eta abar, baina hori erabat arbitrarioa da. 803 00:50:55,660 --> 00:50:58,590 Nire memoria zenbakitze-eskema batzuk besterik ez dugu behar. 804 00:50:58,590 --> 00:51:04,030 Beraz, x eta y benetan pasatzen dut, ez naiz x eta y gainditu du; 805 00:51:04,030 --> 00:51:08,400 Posta helbidea igaroko da, nolabait esateko, x eta y noa 806 00:51:08,400 --> 00:51:11,870 beraz, zer lortzen gordetzen hemen eta hemen ez da 1 eta 2, 807 00:51:11,870 --> 00:51:16,030 baina nire testu txikiak ikusi ahal izan bada, zer lortzen hemen eta hemen pasatzen? 808 00:51:16,030 --> 00:51:23,340 [Inaudible ikaslearen erantzuna] >> Zehazki. 123 lortzen jarri hemen, eta 124 hemen jarri denean. 809 00:51:23,340 --> 00:51:28,910 >> Orain, erabiltzen dudalako izar hau line modu oso lehen sortu hemen goian, 810 00:51:28,910 --> 00:51:34,340 nire programa besterik ez daki 123 eta 124, nahiz eta, jakina, Oraindik dute zenbaki osoen 811 00:51:34,340 --> 00:51:40,160 giza dezakeen edozein nabarituko dute, helbideak, zenbakizko helbide gisa interpretatu behar dira. 812 00:51:40,160 --> 00:51:43,250 Ez dira, eta beren burua ints, helbideak ari dira, 813 00:51:43,250 --> 00:51:46,120 eta hori jarri dut esplizituki delako izarrak. 814 00:51:46,120 --> 00:51:51,360 Beraz, gaur egun kodea benetako zer gertatzen den hemen nire lehen, bigarren eta hirugarren lerroan? 815 00:51:51,360 --> 00:51:53,380 Marraztu dezagun irudian gainerako. 816 00:51:53,380 --> 00:51:56,980 Aurkitu zuen asteleheneko bezalakoa da. Ezer ez tmp berezia. 817 00:51:56,980 --> 00:52:03,060 Tokiko 32 bit bat besterik ez aldakorra da, eta barruan, itxuraz naiz * baten balioa gordetzeko. 818 00:52:03,060 --> 00:52:08,580 Orain, besterik ez bada, esan nuen tmp = a, zer egingo zenuke hemen jarri dut? >> [Ikasleak] 123. 819 00:52:08,580 --> 00:52:10,370 123. Baina hori ez da zer egiten ari naiz. 820 00:52:10,370 --> 00:52:13,670 Tmp esaten dut = * a. Star bitartez joan. 821 00:52:13,670 --> 00:52:19,370 Beraz, hemen da, 123. Nola joaten naiz? Itxura gezi bat bezala. 822 00:52:19,370 --> 00:52:24,460 Beno, ez da, 1. Beraz, zer lortzen tmp gordetzen dira, itxuraz? Just 1. 823 00:52:24,460 --> 00:52:29,620 Beraz, beste era batera esanda, tmp * a, * bide bat gaur egun helbidea joan da, 824 00:52:29,620 --> 00:52:31,320 hau da, itxuraz 123. 825 00:52:31,320 --> 00:52:33,910 >> Ados, hemen dira kokapena 123, 1 zenbakia ikusten dut, 826 00:52:33,910 --> 00:52:35,670 beraz, 1 zenbakia jarri dut. 827 00:52:35,670 --> 00:52:39,020 Orain zer egiten dut line 2, * a = * b? 828 00:52:39,020 --> 00:52:44,570 Hau da, apur bat gehiago parte hartzen da gaur egun delako zer da? 123 da. 829 00:52:44,570 --> 00:52:50,220 Beraz, * bat da, non? Eskuin non aurretik izan dut. Beraz, ez. Ongi da. 830 00:52:50,220 --> 00:52:53,420 Orain, azkenik, eta, ondoren, azkenik zentzurik hasiko da, zorionez, 831 00:52:53,420 --> 00:53:00,280 * B esan nahi du zer b? 124. Beraz, joan behar dut, hau da, 2. 832 00:53:00,280 --> 00:53:03,430 Beraz, zer non jarri dut? 833 00:53:03,430 --> 00:53:10,100 2 Hemen doa * b * batean doa delako. Beraz, hori egiten dut. 834 00:53:10,100 --> 00:53:13,120 Eta dagoeneko egin ahal ikusiko duzu, agian, Oraindik dugu, beraz, askoz ere hurbilago 835 00:53:13,120 --> 00:53:17,710 ergelak, simple arazoa konpontzeko lehenengo aldiz ondo 836 00:53:17,710 --> 00:53:20,920 gaur egun oraindik dugulako zer x zen oroitzapena, 837 00:53:20,920 --> 00:53:23,230 2 kopia dugu, admittedly, y, 838 00:53:23,230 --> 00:53:25,850 baina linea 3 dio * b. 839 00:53:25,850 --> 00:53:31,080 Beraz, hemen da b. * B bitartez joan. Beraz, non da kokapena 124? 840 00:53:31,080 --> 00:53:35,560 Itxuraz da hemen. Beraz, zer jarri dut hemen? Jakina, tmp. 841 00:53:35,560 --> 00:53:39,600 Beraz, gaur egun hau egiten dut. Beraz, 1 hemen eta 2 izan dut hemen. 842 00:53:39,600 --> 00:53:43,560 Eta orain zer gertatzen da hori guztia, 123, 124, eta 1? 843 00:53:43,560 --> 00:53:47,910 Laster bezala swap itzultzen gisa, memoria hori ez baita ona galdu 844 00:53:47,910 --> 00:53:51,070 bezain laster, swap itzultzen, sistema eragilea delako 845 00:53:51,070 --> 00:53:54,190 doakoa da memoria hori erabili etorkizunean berriro. 846 00:53:54,190 --> 00:53:58,870 Nagusia bakarrik deiturikoak pila honen behealdeko memoria makilak inguruan. 847 00:53:58,870 --> 00:54:01,470 >> Eta horrela izan dugu, azkenik, gaur egun lan-bertsio bat. 848 00:54:01,470 --> 00:54:06,310 Swap.c sartu me, eta honako hauek nabarituko. 849 00:54:06,310 --> 00:54:11,280 Programaren goialdean aldatu dut nire prototipoa int * a eta int * b. 850 00:54:11,280 --> 00:54:15,000 Zein txarra zen, gorria, berdea, ona da aldatu dut gauza bakarra, beraz, 851 00:54:15,000 --> 00:54:17,350 ko hauek gehitu dut gaur egun. 852 00:54:17,350 --> 00:54:21,520 Baina orduan behera hemen swap bera kopiatu behar izan nuen, itsatsi besterik ez diapositiba izan zen. 853 00:54:21,520 --> 00:54:24,140 Izar bat hemen daukat, star hemen hori prototipoa datorren 854 00:54:24,140 --> 00:54:27,930 eta, ondoren, gauza horiek guztiak gaur egun ko tmp izan ezik 855 00:54:27,930 --> 00:54:30,680 aldi baterako aldagaia erabilera delako, bertan ez da ezer berria. 856 00:54:30,680 --> 00:54:33,040 Behar dut, behin-behineko biltegiratze int bat. 857 00:54:33,040 --> 00:54:34,820 Beraz, ez dugu behar izar bat dago. 858 00:54:34,820 --> 00:54:39,310 Izar besterik ez dugu behar, beraz, muga arbitrarioa sort hau zeharkatu ahal izango dugu 859 00:54:39,310 --> 00:54:42,900 2 hauen artean nire ordenagailuaren memoria marko. 860 00:54:42,900 --> 00:54:45,630 Baina azken gauza bat aldatu dute, eta glimpsed Agian dagoeneko. 861 00:54:45,630 --> 00:54:48,810 Zer beste lerroa da, jakina, desberdina da orain? >> [Ikasleak] eta x. 862 00:54:48,810 --> 00:54:53,270 >> Bai, eta, beraz, 25 kodea line azken hau aldatzeko lan egin behar dut. 863 00:54:53,270 --> 00:54:58,360 Duela aste bat, eta nahiz eta astelehenetik on line 25 dirudi, swap x eta y, 864 00:54:58,360 --> 00:55:02,020 eta hau besterik ez zuten hautsi baduzu esaten delako swap (x, y). 865 00:55:02,020 --> 00:55:05,660 x eta y kopia swap emanez, eta ondoren, bere gauza egiten, 866 00:55:05,660 --> 00:55:09,080 baina inoiz ez zaren benetan x eta y bera aldatzen ari dira. 867 00:55:09,080 --> 00:55:12,880 Beraz, nahiz eta ez duzun pertsonaia hori ikusi kode ampersand aurretik, 868 00:55:12,880 --> 00:55:15,860 Etxebizitza bat besterik ez hartu. Zer ampersand ez egin, itxuraz? 869 00:55:15,860 --> 00:55:17,890 [Ikasleak] helbidea hartzea. >> Helbidea hartzea. 870 00:55:17,890 --> 00:55:21,160 Beraz, ampersand eman me x helbidea esanez. 871 00:55:21,160 --> 00:55:25,590 Nork daki non dagoen? 123 izan gertatzen da. Ez zait. Just eman dit x helbidea. 872 00:55:25,590 --> 00:55:28,340 Eta esan nahi du y eman niri y helbidea. 873 00:55:28,340 --> 00:55:34,450 Eta puntu horretan istorioa da irudian ezin hobeto koherentea duela une bat genuen. 874 00:55:34,450 --> 00:55:38,310 >> Beraz, erakusleak onartzen dut, jakina, niretzat hasten honetan ikasteko, 875 00:55:38,310 --> 00:55:40,570 ziren behin betiko my mind inguruan biltzeko gauza gogorrena bat. 876 00:55:40,570 --> 00:55:43,760 Baina konturatzen, batez ere gauza mota hauekin jotzea mantendu dugu, 877 00:55:43,760 --> 00:55:48,030 hautsi baduzu super simple horiek sort intelektualki arazoak uninteresting 878 00:55:48,030 --> 00:55:52,270 besterik ez zenbakiak mugitzen inguruan, erantzuna nahasmena asko erakusleak batera 879 00:55:52,270 --> 00:55:56,590 benetan horiek oso oinarrizko mekanika eratorritako daiteke. 880 00:55:56,590 --> 00:55:59,070 Hona hemen helbide bat. Joan izarra. 881 00:55:59,070 --> 00:56:03,830 Edo alderantziz, hemen ampersand bat da. Daki zer helbidea benetan. 882 00:56:03,830 --> 00:56:06,270 Guztiak eskubidea. 883 00:56:06,270 --> 00:56:09,000 Beraz, non dago memoria hau guztia datozen? 884 00:56:09,000 --> 00:56:12,360 Marraztuko dugu irudi hau pare bat aldiz, eta etorkizun handiko mantentzen da itzuli gara, 885 00:56:12,360 --> 00:56:14,920 baina hemen, zure ordenagailuaren memoria irudikapena da 886 00:56:14,920 --> 00:56:17,420 apur bat gehiago etiketatu gure Edukien baino hemen da. 887 00:56:17,420 --> 00:56:21,590 Goialdean segmentu testua adierazten du zer gertatzen da zure programa dagokionez? 888 00:56:21,590 --> 00:56:26,090 [Inaudible ikaslearen erantzuna] >> Sentitzen dut? Esan berriro. 889 00:56:26,090 --> 00:56:28,660 [Ikasleak] benetako programa. >> Benetako programa. 890 00:56:28,660 --> 00:56:32,430 >> 0 s eta 1s C kodea idatzi ondoren konpilatu duzula, eta, ondoren, exekutatzen ari Clang Beraz 891 00:56:32,430 --> 00:56:35,910 eta 0 s eta 1s muturretan sortzen sortu lortzean bilduta dago memoria 892 00:56:35,910 --> 00:56:38,570 klik bikoitza ikono bat zure Mac edo PC delako 893 00:56:38,570 --> 00:56:43,010 edo mario bezalako komando bat exekutatu zure gonbitean, zure diskotik 0 s eta 1s 894 00:56:43,010 --> 00:56:45,700 memorian kargatu, beraz, ordenagailu horiek manipulatu ahal 895 00:56:45,700 --> 00:56:47,540 eta exekutatu azkarrago. 896 00:56:47,540 --> 00:56:50,880 Beraz, hasieratu datuak eta uninitialized datuak, ez egingo dugu hitz horiek buruz askoz 897 00:56:50,880 --> 00:56:52,420 baina besterik ez global duten aldagaiak dira. 898 00:56:52,420 --> 00:56:54,710 Hasieratu aldagai global eman balioak esan nahi du; 899 00:56:54,710 --> 00:56:59,300 uninitialized aldagai global esan nahi du ez duzula oraindik eman balioak. 900 00:56:59,300 --> 00:57:01,900 Ondoren, ingurune-aldagai hauen guztiz dut olatuen nire eskua, 901 00:57:01,900 --> 00:57:04,860 baina ez dira azalera bezala gauzak zure erabiltzaile-izena eta 902 00:57:04,860 --> 00:57:08,090 eta beste maila txikiagoa xehetasunak sort. 903 00:57:08,090 --> 00:57:12,880 Baina zure memoria layout pieza juiciest pilaren eta zeure izeneko gauza hau da. 904 00:57:12,880 --> 00:57:17,470 Pila, berriro ere, argi eta garbi izan behar du, memoria erabiltzen duten bakoitzean funtzioak deitzen dira, 905 00:57:17,470 --> 00:57:19,710 bakoitzean daude tokian tokiko aldagai 906 00:57:19,710 --> 00:57:22,120 eta betiere badaude parametro ari gainditu inguruan. 907 00:57:22,120 --> 00:57:24,490 Hori guztia pila gertatzen da. 908 00:57:24,490 --> 00:57:29,570 Zeure ez ditugu aipatu, baina hartzeko zeure erabiltzen duten etxebizitza bat. 909 00:57:31,120 --> 00:57:32,690 Just zatia memoria desberdin bat. 910 00:57:32,690 --> 00:57:36,620 Marraztuko da, hemen goialdean gertatzen da, baina hori piktoriko konbentzio arbitrario bat. 911 00:57:36,620 --> 00:57:41,670 Nor ari da itxuraz memoria erabiliz, zeure, asteak? 912 00:57:41,670 --> 00:57:44,830 Teknikoki da, baina zeharka. >> [Ikasleak] GetString. 913 00:57:44,830 --> 00:57:47,950 GetString eta malloc. Beraz, hemen funtsezko desberdintasuna. 914 00:57:47,950 --> 00:57:51,300 >> Azken aste gutxi ezagutzen duzu memoria behar duzu ez gero, aldagai bat besterik ez deklaratzeko. 915 00:57:51,300 --> 00:57:54,560 Memoria asko behar duzu bada, array bat deklaratzeko eskubidea zure funtzioa barruan. 916 00:57:54,560 --> 00:57:59,620 Baina arazoa mantenduko dugu begira aldarrika dezala aldagai lokalean barruan funtzio 917 00:57:59,620 --> 00:58:05,340 ahalik eta funtzioak, memoria, eta aldagai horiek zer gertatzen da? 918 00:58:05,340 --> 00:58:09,620 Just moduko jada zurea ez, ezta? Desagertzen kontzeptualki antzeko zerbait. 919 00:58:09,620 --> 00:58:13,950 Oraindik fisikoki ez dago, jakina, baina ez da zure eskubidea erabiltzeko. 920 00:58:13,950 --> 00:58:17,160 Hau da, jakina, problematikoa nahi duzun bizi funtzioak idatzi nahi izanez gero 921 00:58:17,160 --> 00:58:20,440 benetan esleitu memoria eta ez eman berehala. 922 00:58:20,440 --> 00:58:24,180 Puntuan Case: GetString bizitzako helburua da, aldez aurretik ideia ez dute 923 00:58:24,180 --> 00:58:26,390 teklatua idatzi dut kate bat nola big, 924 00:58:26,390 --> 00:58:30,390 baina lortu memoria esleitu David edo kaixo edukitzeko gai izan 925 00:58:30,390 --> 00:58:32,860 edo osoa saiakera bat da, erabiltzaileak idatzi liteke sartu 926 00:58:32,860 --> 00:58:35,280 Beraz GetString izan da malloc erabiliz. 927 00:58:35,280 --> 00:58:38,910 Malloc, beraz, behar ez pila erabiliz; 928 00:58:38,910 --> 00:58:40,770 gauza izeneko zeure ordez erabiliz. 929 00:58:40,770 --> 00:58:44,430 Ez dago ezer memoria desberdin. Ez azkarragoa edo motelagoa da, edo horrelako ezer. 930 00:58:44,430 --> 00:58:46,570 Besterik ez fisikoki da, beste leku batean. 931 00:58:46,570 --> 00:58:50,120 >> Baina araua da zeure gainean banatzen dituen memoria 932 00:58:50,120 --> 00:58:56,180 ez dira inoiz eraman duzu deitzen duzun arte - Etxebizitza bat hartu - free. 933 00:58:56,180 --> 00:59:00,510 Por el contrario, memoria edozein galdetu pilaketan array bat besterik ez geratuko 934 00:59:00,510 --> 00:59:03,320 edo aldagai bat deklaratzen dugu bezala egiten asteak, 935 00:59:03,320 --> 00:59:05,640 lehenespenez da pilan. 936 00:59:05,640 --> 00:59:09,550 Eta hori denboraren% 90 lan egiten du, baina rarer alditan horiek 937 00:59:09,550 --> 00:59:12,470 non memoria esleitu eta gorde inguruan nahi baduzu, 938 00:59:12,470 --> 00:59:14,730 malloc bezalako funtzio bat erabili behar duzu. 939 00:59:14,730 --> 00:59:19,370 Edo erabili ditugu bezalako funtzio bat GetString, eta aldi berean erabiltzen malloc. 940 00:59:19,370 --> 00:59:23,300 Ikus dezagun hau behera hondatu daiteke eta, ondoren, Binky begiratu bat hartu. 941 00:59:23,300 --> 00:59:25,820 Etorkizunean itzuli gara. 942 00:59:25,820 --> 00:59:29,270 Hona hemen programa super simple 2 lehen lerroak ez da? 943 00:59:29,270 --> 00:59:33,460 Ingelesez, zer horiek kodea 2 lehen lerroak egin barruan nagusia? 944 00:59:33,460 --> 00:59:35,600 [Inaudible ikaslearen erantzuna] 945 00:59:35,600 --> 00:59:37,880 Dira. Ez du ematen dit x edo y helbidea. 946 00:59:37,880 --> 00:59:41,840 [Ikasleak] Gives erakusleak ints. >> Good. Give me 2 erakusleak osoko zenbakien. 947 00:59:41,840 --> 00:59:45,130 Beste era batera esanda, eman dit 2 memoria zatiak mantentzeko I marrazki gaur egun, 948 00:59:45,130 --> 00:59:46,950 nahiz eta ezabatu dut, gaur egun, plaza gisa. 949 00:59:46,950 --> 00:59:50,000 Emadazu 2 memoria zatiak, deitu x, y izeneko bat - 950 00:59:50,000 --> 00:59:54,320 lehenago horiek s eta t deitzen dut, eta zer zatia memoria horren mota da? 951 00:59:54,320 --> 00:59:57,160 Helbide bat gordetzeko. 952 00:59:57,160 --> 00:59:59,110 Mota int * da. 953 00:59:59,110 --> 01:00:01,630 >> Beraz, int baten helbidea joango x bizi dira, 954 01:00:01,630 --> 01:00:03,860 int baten helbidea joango y bizi dira, 955 01:00:03,860 --> 01:00:08,460 baina, hasieran, x eta y barruan? Nork daki? Garbage balio. 956 01:00:08,460 --> 01:00:10,180 Ezer ez erakusleak zerikusia du. 957 01:00:10,180 --> 01:00:12,720 Jarri dugu ez bada zerbait, auskalo zer da benetan? 958 01:00:12,720 --> 01:00:18,950 Orain, x. Zer gertatzen da hemen? Hau da, egiaztatzeko x erakuslea delako. Int * bat da. 959 01:00:18,950 --> 01:00:21,870 Beraz, horrek esan nahi du, x I zatia memoria batzuen helbidea jarri. 960 01:00:21,870 --> 01:00:25,120 Zer esan nahi du malloc itzultzeko? Perfect, helbideak itzultzen du, 961 01:00:25,120 --> 01:00:28,510 memoria osoa zatia lehenengo byte helbidea. 962 01:00:28,510 --> 01:00:31,140 Zenbat byte da hau, itxuraz, esleitzean, adibidez, tresnak? 963 01:00:31,140 --> 01:00:33,510 Zer da int baten tamaina? 4. 964 01:00:33,510 --> 01:00:36,600 Behar dela uste duzu bada aste 1, ez da super garrantzitsua da beti gogoratu, 965 01:00:36,600 --> 01:00:38,870 baina, kasu honetan, erabilgarria da, 4 byte ezagutzeko. 966 01:00:38,870 --> 01:00:41,770 Beraz, hau da, 4 byte zeure on esleitzean 967 01:00:41,770 --> 01:00:46,110 eta lehena helbidea itzuli me da arbitrarioki. 968 01:00:46,110 --> 01:00:47,700 Orain, zer da x egiten? 969 01:00:47,700 --> 01:00:52,200 A * x = 42 da zer egiten? 970 01:00:52,200 --> 01:00:57,150 Bada x istorioa Puntu honetan, itxura hau zabor balio batzuk ditugu, 971 01:00:57,150 --> 01:01:04,120 hau da, gaur egun y zabor balio batzuk, orain linea 3 4 byte esleitu dut. 972 01:01:04,120 --> 01:01:06,950 Hau da, irudi honen itxura. 973 01:01:06,950 --> 01:01:12,010 Edo zehatzago esanda, helbide honetan arbitrarioak 123 bada, hau da, zein den gure istorioa itxura. 974 01:01:12,010 --> 01:01:23,940 * X = 42 esan nahi du zer? Horrek esan nahi du 123 helbide joan eta zenbakia jarri 42 dago. 975 01:01:23,940 --> 01:01:26,220 Ez behar dut lerro hauen marrazteko ari gara ez delako kateak egiten. 976 01:01:26,220 --> 01:01:29,480 >> Besterik ez dut idatzi behar atsegin dute hau, eta manifestazio-en mesedetan, 977 01:01:29,480 --> 01:01:33,240 42 int mota bat bezala hartzen du espazio asko, 4 bytes. 978 01:01:33,240 --> 01:01:35,960 Beraz, zer gertatu da, baina ez da arazo bat. 979 01:01:35,960 --> 01:01:40,580 * Y = 13. Zer gertatuko da? 980 01:01:40,580 --> 01:01:46,470 Arazoa * gure mundu erraztua y besterik ez da esan nahi du joan y helbidea. 981 01:01:46,470 --> 01:01:48,590 Zer y? Zabor balio batzuk. 982 01:01:48,590 --> 01:01:53,150 Hargatik arduratuko zabor balioa hori dela 5551212, horrelako zerbait crazy. 983 01:01:53,150 --> 01:01:56,750 * Y bitartez joan 5551212 aurre egin ahal izateko. 984 01:01:56,750 --> 01:02:00,450 Hori baino gehiago nahi da hemen. Ez da existitzen, esate baterako. 985 01:02:00,450 --> 01:02:05,310 Beraz, * y 13 bitartekoak 13 marrazteko hemen ari naiz lortzen. Ez du existitzen. 986 01:02:05,310 --> 01:02:08,790 Gainditu dut arbelean segmentuan. Zer egin behar dut? 987 01:02:08,790 --> 01:02:14,930 Hori críptica mezua segmentaziuo hutsegitea naiz dudalako memorian jarri nahian 988 01:02:14,930 --> 01:02:19,470 13 bezalako balioa existitzen ez den leku bat. 989 01:02:19,470 --> 01:02:23,900 Programaren gainerako ados, baina agian hori ez da arte. 990 01:02:23,900 --> 01:02:25,350 Hargatik saiatu istorio hau kontatzeko. 991 01:02:25,350 --> 01:02:27,830 Itzuli dugu dugu hex buruz hitz egin zuen behin. 992 01:02:27,830 --> 01:02:30,290 Dezagun itzuli eta izeneko gauza hau Binky Amaitzeko, 993 01:02:30,290 --> 01:02:33,710 duen abisuaren etxean claymation jolasten eserita Stanford irakasle bat da, 994 01:02:33,710 --> 01:02:36,380 bereko programa zehazki istorioa kontatzeko. 995 01:02:36,380 --> 01:02:40,580 Besterik ez da, 3 minutu inguru luze. Hemen Binky dugu. 996 01:02:40,580 --> 01:02:45,030 [Gizonezkoa bideo hizlari] Binky Hey, esnatu. Erakuslea fun denbora da. 997 01:02:45,030 --> 01:02:50,080 [Binky] Zer da hori? Erakusleak buruz ikasi? Oh, GOODY! 998 01:02:50,080 --> 01:02:53,700 [Isilean] Beno, hasteko, erakusleak pare bat behar dugu uste dut. 999 01:02:53,700 --> 01:02:57,890 >> [Binky] Larreina. Kodea 2 erakusleak esleitzen ezin diren zenbaki osoen seinalatu. 1000 01:02:57,890 --> 01:03:02,220 [Isilean] Larreina. Beno, 2 erakusleak ikusten dut, baina ez dirudi ezer behar seinalatuz. 1001 01:03:02,220 --> 01:03:05,550 [Binky] Hori da. Hasieran, erakusleak ez ezer seinalatu. 1002 01:03:05,550 --> 01:03:09,270 Gauza seinalatzen dute pointees deitzen dira, eta horien ezarpena beste urrats bat da. 1003 01:03:09,270 --> 01:03:12,330 [Isilean] Oh, eskuinera, eskuinera. Banekien hori. Pointees dira bereizi. 1004 01:03:12,330 --> 01:03:15,630 Er, eta, beraz, nola ez pointee esleitu duzu? 1005 01:03:15,630 --> 01:03:21,510 [Binky] Larreina. Kode hau zenbaki oso pointee berri bat bideratzen, eta zati hau ezartzen du x puntu. 1006 01:03:21,510 --> 01:03:23,500 [Isilean] Hey, itxura hobea. 1007 01:03:23,500 --> 01:03:26,030 Beraz, zerbait egin da. >> [Binky] Larreina. 1008 01:03:26,030 --> 01:03:30,300 Dereference erakuslea x 42 zenbakia gordetzeko bere pointee dut. 1009 01:03:30,300 --> 01:03:34,410 Trikimailu hau nire dereferencing makila magikoa behar dut. 1010 01:03:34,410 --> 01:03:38,610 [Isilean] Zure dereferencing makila magikoa? Hori handia da. 1011 01:03:38,610 --> 01:03:44,230 [Binky] Hau da kodea itxura. Besterik ez dut ezarri zenbakia eta ... [Soinu leihoa] 1012 01:03:44,230 --> 01:03:46,100 [Isilean] Hey begiratu, ez doa. 1013 01:03:46,100 --> 01:03:50,990 Beraz, x dereference bat egiten jarraitzen arrow bere pointee sartzeko, 1014 01:03:50,990 --> 01:03:53,230 Kasu honetan 42 gordetzeko. 1015 01:03:53,230 --> 01:03:57,630 Hey, saiatu beste erakuslea, y 13 zenbakia gordetzeko. 1016 01:03:57,630 --> 01:04:03,250 [Binky] Larreina. Joan besterik ez dut hemen eta y 13 zenbakia sortu 1017 01:04:03,250 --> 01:04:08,360 eta, ondoren, hartu makila eta dereferencing besterik ez ... [Soinu buzzing] Tira! 1018 01:04:08,360 --> 01:04:10,980 [Isilean] Oh hey, ez du funtzionatzen. 1019 01:04:10,980 --> 01:04:14,870 >> Esan, Binky, ez dut uste y dereferencing ideia ona da 1020 01:04:14,870 --> 01:04:17,880 pointee konfiguratzeko beste urrats bat delako 1021 01:04:17,880 --> 01:04:19,850 eta ez dut uste egin dugu inoiz. 1022 01:04:19,850 --> 01:04:21,770 [Binky] Hmm, puntu ona. 1023 01:04:21,770 --> 01:04:26,640 [Isilean] Bai. Erakuslea y bideratu dugu, baina ez dugu nahi pointee bat seinalatu. 1024 01:04:26,640 --> 01:04:28,780 [Binky] Hmm, oso observant. 1025 01:04:28,780 --> 01:04:30,690 [Isilean] Hey, good ari zara bilatzen han, Binky. 1026 01:04:30,690 --> 01:04:34,160 Ezin konpondu, beraz, y x pointee berean puntu hori? >> [Binky] Sure. 1027 01:04:34,160 --> 01:04:37,100 Nire erakuslea esleitzeko makila magikoa erabili dut. 1028 01:04:37,100 --> 01:04:39,070 [Hiztuna] gizonezkoa dela aurretik bezala arazo bat izan? 1029 01:04:39,070 --> 01:04:40,840 [Binky] Ez, hau ez da ukitu pointees. 1030 01:04:40,840 --> 01:04:44,780 Aldatzen erakuslea bat beste gauza bera seinalatu. [Soinu leihoa] 1031 01:04:44,780 --> 01:04:48,570 [Isilean] Oh, ikusten dut. Orain y puntu x leku berean. 1032 01:04:48,570 --> 01:04:51,140 Beraz, itxaron. Orain y finkoa da. Pointee ditu. 1033 01:04:51,140 --> 01:04:54,520 Beraz, berriro dereferencing 13 baino gehiago bidaltzeko makila dastatu ahal izango dituzu. 1034 01:04:54,520 --> 01:04:58,130 [Binky] Uh, ados. Hemen doa. [Soinu leihoa] 1035 01:04:58,130 --> 01:05:01,250 [Isilean] Hey, hori begiratu. Orain lanak y dereferencing. 1036 01:05:01,250 --> 01:05:05,200 Eta erakusleak dira, bat pointee delako partekatzen biak, ikusi dute 13. 1037 01:05:05,200 --> 01:05:06,910 [Binky] Bai, partekatzea. Whatever. 1038 01:05:06,910 --> 01:05:08,880 >> Beraz, leku batetik bestera joateko gaur egun? 1039 01:05:08,880 --> 01:05:11,420 [Isilean] Oh itxura, denbora gara. >> [Binky] Baina - 1040 01:05:11,420 --> 01:05:13,880 [Isilean] Just gogoratu 3 erakuslea arauak. 1041 01:05:13,880 --> 01:05:18,630 Zenbakia 1, oinarrizko egitura duzula erakuslea, eta puntu pointee bat. 1042 01:05:18,630 --> 01:05:23,120 Baina erakuslea eta pointee bereizi dira, eta komun error erakuslea da 1043 01:05:23,120 --> 01:05:25,680 baina emateko pointee ahaztu. 1044 01:05:25,680 --> 01:05:29,580 Número 2, erakuslea dereferencing erakusleak hasten da, eta bere gezi honako hauek baino gehiago 1045 01:05:29,580 --> 01:05:31,060 bere pointee sartzeko. 1046 01:05:31,060 --> 01:05:34,340 Ezagutzen dugun bezala, hau soilik funtzionatzen pointee bada, 1047 01:05:34,340 --> 01:05:36,460 mota horretako lortzen multzoko 1 araua. 1048 01:05:36,460 --> 01:05:39,870 Kopurua 3, erakusle esleitzeko erakuslea bat hartzen du, eta aldatzen 1049 01:05:39,870 --> 01:05:42,390 erakuslea beste pointee bera seinalatu. 1050 01:05:42,390 --> 01:05:45,890 Beraz, esleipena ondoren, 2 erakusleak bera pointee seinalatu. 1051 01:05:45,890 --> 01:05:47,800 Batzuetan da izeneko partekatzea. 1052 01:05:47,800 --> 01:05:50,910 >> Eta hori ez da benetan. Bye-bye orain. 1053 01:05:50,910 --> 01:05:55,840 Binky da. Hau CS50 da. Ikusiko dugu datorren astean. [Txalo] 1054 01:05:55,840 --> 01:05:59,000 >> [CS50.TV]