1 00:00:00,000 --> 00:00:03,381 >> [Musika jotzen] 2 00:00:03,381 --> 00:00:10,626 3 00:00:10,626 --> 00:00:11,610 >> [Bideo-erreprodukzioa] 4 00:00:11,610 --> 00:00:13,640 >> -Hartu Etzanda. 5 00:00:13,640 --> 00:00:14,380 >> -Zeri buruz? 6 00:00:14,380 --> 00:00:17,182 >> -Nik Ez dakit. 7 00:00:17,182 --> 00:00:19,990 >> -Beraz, Zer dakigu? 8 00:00:19,990 --> 00:00:23,145 >> 9:15, Ray at -hau Santoya Kutxazain zen. 9 00:00:23,145 --> 00:00:23,644 -Bai. 10 00:00:23,644 --> 00:00:27,030 Beraz, galdera da, zer zen egiten 9:16? 11 00:00:27,030 --> 00:00:29,720 >> 9 milimetro zerbait at -Filmaketa. 12 00:00:29,720 --> 00:00:31,540 Agian frankotiratzaile ikusi zuen. 13 00:00:31,540 --> 00:00:33,412 >> -Edo Zen berarekin lanean. 14 00:00:33,412 --> 00:00:34,340 >> -ez Alde. 15 00:00:34,340 --> 00:00:36,200 Joan atzera. 16 00:00:36,200 --> 00:00:36,975 >> -Zer Ikusi? 17 00:00:36,975 --> 00:00:44,400 18 00:00:44,400 --> 00:00:47,805 >> Bere aurpegia -Ekarri pantaila osoan eman. 19 00:00:47,805 --> 00:00:48,680 >> -Bere Betaurrekoak. 20 00:00:48,680 --> 00:00:50,060 >> -Bada, Gogoeta bat da. 21 00:00:50,060 --> 00:01:00,455 22 00:01:00,455 --> 00:01:02,280 >> -Ez Du Nuevitas beisbol taldea da. 23 00:01:02,280 --> 00:01:03,110 Beren logo. 24 00:01:03,110 --> 00:01:05,820 >> -Eta Hizketan duenarentzat jaka hori janzten. 25 00:01:05,820 --> 00:01:06,670 >> [END erreprodukzioa] 26 00:01:06,670 --> 00:01:07,628 >> DAVID MALAN: Ondo da. 27 00:01:07,628 --> 00:01:11,210 Hau CS50 da, eta hau da, pixka bat gehiago [INAUDIBLE] horrekin Oraindik 28 00:01:11,210 --> 00:01:12,890 arazoa ekoizleekin ezarri lau. 29 00:01:12,890 --> 00:01:16,606 Gaur egun, gero pixka bat bilatzeko hasiko dugu sakon gauza horiek erakusleak deitzen denean, 30 00:01:16,606 --> 00:01:18,480 bertan egiten baldin bada ere a nahiko urrutira gaia, 31 00:01:18,480 --> 00:01:20,813 bihurtzen da hori egingo da bitartekoak izan nahi du horren bidez dugu 32 00:01:20,813 --> 00:01:24,320 eraikitzeko eta muntatzeko has daiteke programak askoz ere sofistikatuagoa. 33 00:01:24,320 --> 00:01:28,150 Baina lortu dugu azken asteazkenean claymation batzuk modu lehenengo arabera. 34 00:01:28,150 --> 00:01:30,190 Beraz, hau, gogoratzen, Hegazti eta hura erabiliko dugu 35 00:01:30,190 --> 00:01:33,148 programa bat begirada bat hartu nahi duten ez zuen benetan ezer interesgarria, 36 00:01:33,148 --> 00:01:34,950 baina arazo batzuk agerian geratu zen. 37 00:01:34,950 --> 00:01:38,570 Beraz, gaur hasiko da, zergatik ez dugu oinez Azkar urrats horiek gutxi batzuen bidez, 38 00:01:38,570 --> 00:01:41,920 saiatu giza en termino sartu destila zehazki zer gertatzen da hemen 39 00:01:41,920 --> 00:01:45,410 eta hori zergatik da txarra, eta ondoren, aurrera egiteko eta benetan hasteko zerbait eraikitzeko 40 00:01:45,410 --> 00:01:46,309 Teknika honekin? 41 00:01:46,309 --> 00:01:48,350 Beraz, hauek izan ziren lehenak Programa honetan bi lerro 42 00:01:48,350 --> 00:01:51,340 eta layman-terminoak, zer dira egiten bi lerro hauek? 43 00:01:51,340 --> 00:01:55,600 Norbait da arrazoiz eroso rekin zer pantaila deklaratu? 44 00:01:55,600 --> 00:01:58,340 45 00:01:58,340 --> 00:02:00,120 Zer dira bi lerro horiek egiten? 46 00:02:00,120 --> 00:02:02,070 Ez da hori guztia astebete desberdinak, 47 00:02:02,070 --> 00:02:03,611 baina ez sinbolo berezi batzuk. 48 00:02:03,611 --> 00:02:04,152 Bai? 49 00:02:04,152 --> 00:02:05,628 Itzuli dago. 50 00:02:05,628 --> 00:02:07,092 >> Ikusleak: erakusleak geratuko? 51 00:02:07,092 --> 00:02:08,050 DAVID MALAN: Esan berriro? 52 00:02:08,050 --> 00:02:08,860 Ikusleak: erakusleak geratuko? 53 00:02:08,860 --> 00:02:11,776 DAVID MALAN: deklaratzea erakusleak eta dezagun pixka bat gehiago findu da. 54 00:02:11,776 --> 00:02:14,050 Ikusleak: [INAUDIBLE] helbide x eta y gero. 55 00:02:14,050 --> 00:02:15,300 DAVID MALAN: Eta gero aurre. 56 00:02:15,300 --> 00:02:18,550 Beraz, zehazki zer egiten ari garen bi aldagai deklaratzen ari gara. 57 00:02:18,550 --> 00:02:21,252 Aldagai horiek, ordea, joan dira den mota int izarra, izan bertan 58 00:02:21,252 --> 00:02:23,210 zehatzago esanda, esan nahi dute gordetzeko doaz 59 00:02:23,210 --> 00:02:26,450 int baten helbidea, hurrenez hurren, x eta y. 60 00:02:26,450 --> 00:02:27,660 Orain daude baliorik? 61 00:02:27,660 --> 00:02:32,621 Ba al dago helbide hauek benetako edozein Bi aldagai une honetan? 62 00:02:32,621 --> 00:02:33,120 No. 63 00:02:33,120 --> 00:02:35,030 Besterik zabor balio deiturikoak. 64 00:02:35,030 --> 00:02:38,120 Eta ez duzu benetan esleitzeko bada aldagaia, edozein RAM zen 65 00:02:38,120 --> 00:02:42,224 Aurretik dagoen zeroz bete joan eta bai aldagai horiek biak. 66 00:02:42,224 --> 00:02:44,140 Baina ez dugu oraindik ezagutzen zer dira eta hori da 67 00:02:44,140 --> 00:02:47,060 zergatik hegazti gakoa izango da Azken aste galdu zuen bere burua. 68 00:02:47,060 --> 00:02:49,980 >> Beraz, hau izan zen claymation du Enkarnazio 69 00:02:49,980 --> 00:02:53,580 Horren bidez, aldagai bi besterik ez duzu, buztinezko pieza zirkular gutxi, 70 00:02:53,580 --> 00:02:57,330 duten aldagaiak gorde ahal izateko, baina, the bilduta geziak iradokitzen, 71 00:02:57,330 --> 00:03:00,640 ari ez benetan seinalatuz edonon ezagutzen per se. 72 00:03:00,640 --> 00:03:03,670 Beraz, ondoren, lerro hau izan genuen, eta hau zen berria, eta azken astean, memoria malloc 73 00:03:03,670 --> 00:03:07,130 esleipena, modu fancy bat besterik ez da sistema eragilearen kontatzea, Linux 74 00:03:07,130 --> 00:03:09,750 edo Mac OS edo Windows, beno, ematen dit memoria batzuk, 75 00:03:09,750 --> 00:03:11,780 eta guztia duzu kontatzeko sistema eragilea 76 00:03:11,780 --> 00:03:14,699 zer denean eskatuz memoria da. 77 00:03:14,699 --> 00:03:16,990 Ez da zer axola joan zu berarekin egin egingo, 78 00:03:16,990 --> 00:03:19,786 baina behar duzu eragilearen kontatzeko sistema zer malloc bidez. 79 00:03:19,786 --> 00:03:20,286 Bai? 80 00:03:20,286 --> 00:03:21,078 >> Ikusleak: Zenbat? 81 00:03:21,078 --> 00:03:21,994 DAVID MALAN: Zenbat? 82 00:03:21,994 --> 00:03:25,280 Zenbat byte, eta beraz, hau, berriz ere, Adibidez contrived bat, besterik gabe, esaten da 83 00:03:25,280 --> 00:03:27,360 eman dit int tamaina. 84 00:03:27,360 --> 00:03:30,550 Orain, int baten tamaina lau byte edo 32 bit. 85 00:03:30,550 --> 00:03:32,850 Beraz, hori besterik ez da modu bat da esanez, beno, sistema eragilea, 86 00:03:32,850 --> 00:03:37,290 eman dit lau byteko memoria ahal izango dut nire esku erabiltzea, 87 00:03:37,290 --> 00:03:40,560 eta, zehazki, zer egiten du Bueltan malloc aldean 88 00:03:40,560 --> 00:03:41,795 lau byte zatia duen? 89 00:03:41,795 --> 00:03:44,110 90 00:03:44,110 --> 00:03:44,860 Ikusleak: Helbidea? 91 00:03:44,860 --> 00:03:45,901 DAVID MALAN: helbide. 92 00:03:45,901 --> 00:03:47,580 Lau byte zatia duen helbidea. 93 00:03:47,580 --> 00:03:48,190 Hain zuzen ere. 94 00:03:48,190 --> 00:03:51,430 Eta beraz, zer ari da, azken finean gordetako da x eta horregatik ez dugu benetan 95 00:03:51,430 --> 00:03:55,240 zaintzeko zer dela-kopurua helbidea da, ox1 edo ox2 ote den 96 00:03:55,240 --> 00:03:57,110 edo batzuk críptica helbide hamaseitarra. 97 00:03:57,110 --> 00:03:59,850 Laguntza besterik ez dugu Pictorially x aldagai hori da orain dela 98 00:03:59,850 --> 00:04:01,630 zatia memoria hori seinalatuz. 99 00:04:01,630 --> 00:04:05,570 Beraz, gezia erakuslea adierazten du, edo zehatzago esanda, memoria-helbide bat. 100 00:04:05,570 --> 00:04:09,120 Baina, berriro ere, ez normalean zaintzen dugu zer da benetako helbide horiek dira. 101 00:04:09,120 --> 00:04:11,780 Orain, lerro hau dio zer layman-terminoak? 102 00:04:11,780 --> 00:04:14,330 Star x 42 puntu eta koma lortzen. 103 00:04:14,330 --> 00:04:17,390 Zer esan nahi du horrek? 104 00:04:17,390 --> 00:04:18,200 Joan nahi duzu? 105 00:04:18,200 --> 00:04:20,102 Ez urratu zure lepoan. 106 00:04:20,102 --> 00:04:22,360 >> Ikusleak: x helbide 42. dago. 107 00:04:22,360 --> 00:04:24,300 >> DAVID MALAN: x helbide 42. dago. 108 00:04:24,300 --> 00:04:25,190 Ez da nahiko. 109 00:04:25,190 --> 00:04:28,485 Hain hurbil, baina ez da nahiko, ez da delako izar hori x honen aurretik. 110 00:04:28,485 --> 00:04:29,860 Beraz, pixka bat pentsatzen gorde behar da. 111 00:04:29,860 --> 00:04:31,032 Bai? 112 00:04:31,032 --> 00:04:36,044 >> Ikusleak: bertan, balioa erakuslea x 42 hori seinalatuz. 113 00:04:36,044 --> 00:04:36,710 DAVID MALAN: OK. 114 00:04:36,710 --> 00:04:40,840 Balioa erakuslea x da seinalatuz, esan dezagun, hau izango da: 42, 115 00:04:40,840 --> 00:04:44,165 edo bestela esanda, izarraren x dio, edozein dela helbidera joan 116 00:04:44,165 --> 00:04:48,340 x da, ala ez da 1 Oxford Street edo 33 Oxford Street 117 00:04:48,340 --> 00:04:51,850 edo ox1 edo ox33, edozein dela zenbaki helbide dela, 118 00:04:51,850 --> 00:04:54,380 izar x x dereferencing da. 119 00:04:54,380 --> 00:04:57,297 Beraz, helbide horretara joan eta orduan jarri 42 zenbakian dago. 120 00:04:57,297 --> 00:04:59,380 Beraz, hori izango litzateke bat Hori esaten modu baliokidea. 121 00:04:59,380 --> 00:05:01,860 Beraz, hori guztia fina da eta, ondoren, Irudian adierazten genuke 122 00:05:01,860 --> 00:05:05,370 honela non gehitu ditugu 42 lau zatia duen du 123 00:05:05,370 --> 00:05:09,370 Eskuineko aldean byte, baina Lerro hau izan zen, non gauzak joan awry 124 00:05:09,370 --> 00:05:11,120 eta hegazti burua idatz puntu honetan off, 125 00:05:11,120 --> 00:05:15,290 gauza txarrak gertatuko dira zabor balio dereference duzu 126 00:05:15,290 --> 00:05:18,210 edo baliogabea dereference duzu erakusleak, eta baliogabeak esaten dut 127 00:05:18,210 --> 00:05:21,020 Puntu honetan delako Istorioa, zer y barruan dago? 128 00:05:21,020 --> 00:05:24,440 Zer da oinarritutako y balioa Iraganean urrats batzuk on? 129 00:05:24,440 --> 00:05:25,360 Bai? 130 00:05:25,360 --> 00:05:26,115 Zer da hori? 131 00:05:26,115 --> 00:05:26,990 >> Ikusleak: helbide bat. 132 00:05:26,990 --> 00:05:28,460 DAVID MALAN: Helbide bat. 133 00:05:28,460 --> 00:05:31,910 Helbide bat izan beharko luke baina izan da hasieratu dut? 134 00:05:31,910 --> 00:05:32,800 Beraz, ez daukat oraindik. 135 00:05:32,800 --> 00:05:35,430 Beraz, zer da ezaguna han izan? 136 00:05:35,430 --> 00:05:37,590 Batzuk zabor balio da. 137 00:05:37,590 --> 00:05:41,500 Zero tik helbide edozein izan daiteke 2 milioi bi RAM kontzertuak izanez gero, 138 00:05:41,500 --> 00:05:44,289 edo zero 4 milioi dut badituzu lau RAM gigabyte lortu. 139 00:05:44,289 --> 00:05:46,080 Zabor balio batzuk da, baina arazoa da 140 00:05:46,080 --> 00:05:48,200 sistema eragilea, ez du ematen duzu bada 141 00:05:48,200 --> 00:05:51,140 memoria zatia, zehazki, ra joan saiatzen ari zaren, 142 00:05:51,140 --> 00:05:54,650 Da, oro har, zer eragin Nik segmentazio matxura bat bezala ikusten dugu. 143 00:05:54,650 --> 00:05:57,810 Beraz, hain zuzen ere, zuk edozein duten bulego orduetan arazoak at lehian 144 00:05:57,810 --> 00:06:00,393 edo arazoak direla gehiago Oro har, irudikatu nahian ekin 145 00:06:00,393 --> 00:06:02,150 segmentazio matxura bat, Hori normalean esan 146 00:06:02,150 --> 00:06:05,017 segmentu bat zaren ukitu memoria hori ez da behar duzu. 147 00:06:05,017 --> 00:06:07,350 Zu memoria ukitu hori sistema eragilearen ez dauka 148 00:06:07,350 --> 00:06:10,450 onartzen den ukitu, ea Urrunegi joan zure lerrotan arabera 149 00:06:10,450 --> 00:06:12,870 edo orain hasita, ala çueçaz ari delako 150 00:06:12,870 --> 00:06:14,780 memoria hori besterik zabor balio batzuk. 151 00:06:14,780 --> 00:06:18,230 >> Beraz izar x bat burutzen ari da undefined portaera-mota. 152 00:06:18,230 --> 00:06:22,030 Inoiz egin behar duzun da odds delako dira, programan besterik huts egingo, 153 00:06:22,030 --> 00:06:24,050 ari zaren esaten delako, helbide honetara joan 154 00:06:24,050 --> 00:06:27,000 eta ez daki non helbide hori benetan da. 155 00:06:27,000 --> 00:06:30,300 Beraz, sistema eragilea, litekeena da Zure programa huts joan 156 00:06:30,300 --> 00:06:33,840 Ondorioz, eta hain zuzen ere, hori da Hain justu hegazti izateko. 157 00:06:33,840 --> 00:06:37,210 Beraz, azken finean, hegazti finkoa Honekin arazo hau. 158 00:06:37,210 --> 00:06:38,909 Beraz, programa hori bera hondatu zen. 159 00:06:38,909 --> 00:06:41,450 Baina ordenatu ema bada aurretik eta lerro hau exekutatu beharrean, 160 00:06:41,450 --> 00:06:45,580 y funtzioak x besterik esan nahi edozein dela helbide x da, halaber, ipini y en. 161 00:06:45,580 --> 00:06:48,740 >> Eta beraz Pictorially, dugu irudikatzen honek bi geziak 162 00:06:48,740 --> 00:06:51,570 x eta y keinuak ikusita leku berean. 163 00:06:51,570 --> 00:06:55,760 Beraz, semantikoki, x berdina da y nahi dutenek, bai delako 164 00:06:55,760 --> 00:07:00,300 daude berean gordetzeko helbidea, ergo 42 seinalatuz, 165 00:07:00,300 --> 00:07:04,910 eta orain, izar esan duzu y, joan helbide honetara y batean, 166 00:07:04,910 --> 00:07:06,790 hau albo efektu interesgarri bat du. 167 00:07:06,790 --> 00:07:10,320 Beraz y helbidea da x-en helbide berdina. 168 00:07:10,320 --> 00:07:15,060 Beraz, bada, joan helbidea esan duzu y eta balioa aldatzeko 13ra, 169 00:07:15,060 --> 00:07:17,140 nor gehiago eragiten dio? 170 00:07:17,140 --> 00:07:21,100 X da, D puntua, nolabait esateko, eragingo zaion baita. 171 00:07:21,100 --> 00:07:24,340 >> Eta, hain zuzen, nola Nick Drew argazki hau claymation zehazki noiz izan zen. 172 00:07:24,340 --> 00:07:28,665 Erakuslea jarraituko dugu, nahiz eta y, bukatu dugu, leku berean, 173 00:07:28,665 --> 00:07:32,780 eta beraz, inprimatzeko bagenitu x edo y en pointee out, 174 00:07:32,780 --> 00:07:35,720 ondoren, 13 balioa ikusiko genuke. 175 00:07:35,720 --> 00:07:37,927 Orain, pointee izan esaten dut Bideo koherentea. 176 00:07:37,927 --> 00:07:39,760 Programatzaileak, nire ezagutza, inoiz benetan 177 00:07:39,760 --> 00:07:42,460 Hitz pointee diotenez, imita zorrotzeko 178 00:07:42,460 --> 00:07:44,650 tan, baina koherentzia bideo batera, konturatzen 179 00:07:44,650 --> 00:07:47,520 hori da hori izan zen guztia Egoera horretan ekarri. 180 00:07:47,520 --> 00:07:54,190 Beraz claymation buruzko edozein galdera edo erakusleak edo malloc besterik gabe? 181 00:07:54,190 --> 00:07:54,850 No? 182 00:07:54,850 --> 00:07:55,470 Ados. 183 00:07:55,470 --> 00:07:58,560 >> Beraz gehiagorik gabe ADO, dezagun begirada bat 184 00:07:58,560 --> 00:08:00,700 non Honek benetan at aspalditik erabiltzen da. 185 00:08:00,700 --> 00:08:03,580 Beraz CS50 liburutegia hau izan dugu hori funtzio horiek guztiak lortu. 186 00:08:03,580 --> 00:08:06,810 Erabili dugu GetInt asko, GetString, ziurrenik GetLongLong lehenago 187 00:08:06,810 --> 00:08:09,840 Nire pset bat edo, beraz, baina zer benetan liteke, gero! 188 00:08:09,840 --> 00:08:12,920 Beno, dezagun begirada bat programa batean kanpaia azpian dagoela 189 00:08:12,920 --> 00:08:17,017 inspiratzen zergatik CS50 eman dugu liburutegia, eta hain zuzen ere, joan den astean bezala, 190 00:08:17,017 --> 00:08:18,850 horiek hartzen hasi ginen prestakuntza gurpilak off. 191 00:08:18,850 --> 00:08:21,080 Beraz, orain da hau horrela antolatu ren autopsia bat zer 192 00:08:21,080 --> 00:08:23,690 da gertatzen CS50 liburutegi barruan, 193 00:08:23,690 --> 00:08:27,250 nahiz eta orain mugitzen hasiko da programak gehienak kanpoan. 194 00:08:27,250 --> 00:08:29,460 >> Beraz, hau 0 scanf izeneko programa bat da. 195 00:08:29,460 --> 00:08:30,510 It super laburra da. 196 00:08:30,510 --> 00:08:33,909 , Lerro hauen ditu, baina izeneko funtzio scanf bat aurkezten du 197 00:08:33,909 --> 00:08:36,909 ari gara benetan ikusten joan une bat CS50 liburutegiaren barruan, 198 00:08:36,909 --> 00:08:38,600 pixka bat eta beste inprimaki batean bada ere. 199 00:08:38,600 --> 00:08:41,330 Beraz, programa hau on line 16 x aldagai bat geratuko da. 200 00:08:41,330 --> 00:08:43,150 Beraz, ematen dit lau byte int bat da. 201 00:08:43,150 --> 00:08:45,750 Izan da erabiltzaile kontatzea, Zenbaki mesedez, eta ondoren, 202 00:08:45,750 --> 00:08:49,010 hau lerro interesgarri bat da benetan lotzen elkarrekin azken astean 203 00:08:49,010 --> 00:08:49,790 eta hau. 204 00:08:49,790 --> 00:08:53,230 Scanf, eta orduan konturatu bat hartzen du formatu katea bezala printf, 205 00:08:53,230 --> 00:08:57,480 % I int bat esan nahi du, eta, ondoren, bat hartzen du zein itxura apur bat bigarren argumentu 206 00:08:57,480 --> 00:08:58,260 funky. 207 00:08:58,260 --> 00:09:01,880 Ampersand x da, eta gogoratzen, behin azken aste honetan bakarrik ikusi genuen. 208 00:09:01,880 --> 00:09:03,465 Zer adierazten du ampersand x? 209 00:09:03,465 --> 00:09:06,210 210 00:09:06,210 --> 00:09:08,450 Zer esan nahi du C egin ampersand? 211 00:09:08,450 --> 00:09:08,950 Bai? 212 00:09:08,950 --> 00:09:10,024 >> Ikusleak: helbide. 213 00:09:10,024 --> 00:09:11,190 DAVID MALAN: helbide. 214 00:09:11,190 --> 00:09:13,190 Beraz, kontrakoa da izar operadorea, 215 00:09:13,190 --> 00:09:17,270 star operadorea dio berriz, joan den helbide honetan, ampersand operadorea 216 00:09:17,270 --> 00:09:20,280 dio, irudikatu du aldagai horren helbidea, 217 00:09:20,280 --> 00:09:23,530 eta, beraz, hau da gakoa, zeren scanf bizitzako helburua 218 00:09:23,530 --> 00:09:26,320 da eskaneatu Erabiltzaile egin teklatuaren sarrera, 219 00:09:26,320 --> 00:09:29,970 edozein dela kontuan hartuta, berak mota, eta, ondoren, erabiltzaile horren sarrerako irakurri 220 00:09:29,970 --> 00:09:32,970 aldagai bat sartu da, baina ez dugu Azken bi asteetan ikusi 221 00:09:32,970 --> 00:09:36,080 swap funtzioa dela garela saiatu ahaleginik ezartzea 222 00:09:36,080 --> 00:09:37,110 hezi zen. 223 00:09:37,110 --> 00:09:42,470 Gogoratu swap funtzioa, deklaratu besterik ez dugu bada A eta B ints bezala, 224 00:09:42,470 --> 00:09:47,040 dugu arrakastaz trukatu zituen lortu swap barruan bi aldagai 225 00:09:47,040 --> 00:09:50,080 besterik esnea eta AO gustatzen, baina swap bueltatu bezain laster, 226 00:09:50,080 --> 00:09:55,200 zer aldean izan zen emaitza x eta y, jatorrizko balioak? 227 00:09:55,200 --> 00:09:55,700 Ezer ez. 228 00:09:55,700 --> 00:09:56,200 Bai. 229 00:09:56,200 --> 00:09:59,754 Nothing denbora hori gertatu da, zeren swaps bertako kopiak bakarrik aldatzen, 230 00:09:59,754 --> 00:10:01,670 horrek esan nahi du, guztiak oraingoan, betiere dugu 231 00:10:01,670 --> 00:10:04,010 alegaziorik igaroz funtzio den, ez gara 232 00:10:04,010 --> 00:10:05,939 besterik argumentuak horiek kopiak pasatuz. 233 00:10:05,939 --> 00:10:07,980 Hori egin dezakezu edozein dela ere nahi haiekin, 234 00:10:07,980 --> 00:10:10,890 baina ari dira ez dute joan jatorrizko balioen eragina. 235 00:10:10,890 --> 00:10:13,650 Beraz, hau da problematikoa baduzu scanf bezalako funtzio bat izan nahi 236 00:10:13,650 --> 00:10:17,170 bizitzan, eta horren helburua da eskaneatu erabiltzailearen teklatu sarrera 237 00:10:17,170 --> 00:10:22,010 eta, ondoren, hutsuneak bete, beraz, hitz egiten du, hau da, eman x aldagai bat bezala 238 00:10:22,010 --> 00:10:25,410 balio bat, banintz delako besterik pasatzeko x scanf, 239 00:10:25,410 --> 00:10:28,790 azken logikak pentsatzen baduzu astean, edozein izanda ere nahi egin dezakezu scanf 240 00:10:28,790 --> 00:10:33,100 x kopia batekin, baina ezin izan da betirako x aldatuko dugu eman ezean 241 00:10:33,100 --> 00:10:37,120 scanf altxorra mapa bat, nolabait esateko, non x spot markatzen du, eta horren bidez 242 00:10:37,120 --> 00:10:41,860 x helbidea beraz pasako dugu scanf han eta benetan aldaketaren joan 243 00:10:41,860 --> 00:10:42,920 x-ren balioa. 244 00:10:42,920 --> 00:10:45,080 Eta hain zuzen ere, guztiak programa honek ez duela 245 00:10:45,080 --> 00:10:53,180 scanf 0, egin dut nire iturri ere bada 5m direktorioa, scanf 0, 246 00:10:53,180 --> 00:10:57,730 dot barra scanf, zenbakia Mesedez, 50, 50, esker. 247 00:10:57,730 --> 00:11:01,020 >> Beraz, ez da hori guztia interesgarria, baina zer gertatzen ari den, hain zuzen ere 248 00:11:01,020 --> 00:11:04,820 dela eta azkarren deitu dudan bezala scanf hemen, x balioa 249 00:11:04,820 --> 00:11:06,410 ari da betirako aldatu. 250 00:11:06,410 --> 00:11:08,335 Orain, badirudi hau polita eta ona, eta, hain zuzen, hura 251 00:11:08,335 --> 00:11:11,200 Dirudienez, ez dugu atsegin benetan behar CS50 liburutegia guztia jada at. 252 00:11:11,200 --> 00:11:13,960 Esate baterako, exekutatu utzi hau hemen berriz ere. 253 00:11:13,960 --> 00:11:15,750 Let it berrireki me bigarren bat. 254 00:11:15,750 --> 00:11:20,600 Dezagun saiatu zenbaki bat mesedez eta ordez 50 baino lehen bezala esaten, 255 00:11:20,600 --> 00:11:22,810 dezagun esan ez. 256 00:11:22,810 --> 00:11:24,000 Ados, hori apur bat arraroa da. 257 00:11:24,000 --> 00:11:25,270 ONDO DA. 258 00:11:25,270 --> 00:11:28,680 Eta besterik zentzugabekeria batzuk hemen. 259 00:11:28,680 --> 00:11:31,170 Beraz, ez direla dirudi Egoerak okerrak kudeatzeko. 260 00:11:31,170 --> 00:11:33,620 Beraz, hasiera txikieneko behar dugu Zenbait erroreen zainketa gehituz 261 00:11:33,620 --> 00:11:37,460 Ziur Erabiltzaileak ez du egin Benetako zenbaki oso bat idatzi 50 bezala, 262 00:11:37,460 --> 00:11:40,720 itxuraz idazten hitzak delako ez da problematikoa bezala detektatu, 263 00:11:40,720 --> 00:11:42,020 baina seguruenik behar izango. 264 00:11:42,020 --> 00:11:46,450 >> Ikus ditzagun bertsio honetan orain hori da nire saiakera GetString reimplement. 265 00:11:46,450 --> 00:11:48,437 Scanf du honek guztiak galtzen funtzionalitate eraiki, 266 00:11:48,437 --> 00:11:51,270 zergatik dugun urari dute hauekin GetString bezalako prestakuntza gurpilak? 267 00:11:51,270 --> 00:11:55,450 Beno, hemen da, beharbada, nire kabuz GetString bertsio simple 268 00:11:55,450 --> 00:12:00,766 Horren bidez, duela aste bat, agian esan nahi izan, emaidazu kate bat eta deitu buffer. 269 00:12:00,766 --> 00:12:03,390 Gaur egun, naiz besterik hasteko noa char izarra, bertan, abisuaren esanez, 270 00:12:03,390 --> 00:12:04,400 besterik sinonimo da. 271 00:12:04,400 --> 00:12:06,629 Scarier Badirudi baina da gauza bera zehatza. 272 00:12:06,629 --> 00:12:09,420 Beraz, ematen dit aldakorra izeneko buffer bat hori kate bat gordetzeko joan, 273 00:12:09,420 --> 00:12:12,780 Erabiltzaile katea kontatu mesedez, eta, ondoren, besterik ez bezala, aurretik, 274 00:12:12,780 --> 00:12:17,760 Saiatu ikasgai honetan maileguan hartzeko utzi scanf % S denbora honetan, eta, ondoren, bufferrean pasatzeko. 275 00:12:17,760 --> 00:12:19,310 Orain, behatu check azkar bat. 276 00:12:19,310 --> 00:12:22,120 Zergatik nago, ez dut esaten ampersand buffer une honetan? 277 00:12:22,120 --> 00:12:25,190 278 00:12:25,190 --> 00:12:26,625 Aurreko adibidea ondorioztatu. 279 00:12:26,625 --> 00:12:28,000 Ikusleak: Char izar erakuslea da. 280 00:12:28,000 --> 00:12:29,920 DAVID MALAN: Zehazki, oraingoan, char delako 281 00:12:29,920 --> 00:12:34,080 izarra da dagoeneko erakuslea, helbide bat, Izarrak ez izatearen definizio arabera. 282 00:12:34,080 --> 00:12:37,530 Eta scanf helbide bat espero badu, besterik nahi bufferrean pasatzeko nahikoa da. 283 00:12:37,530 --> 00:12:39,260 Ez dut behar ampersand buffer esateko. 284 00:12:39,260 --> 00:12:42,177 Bitxia, ezin izan duzu honen antzeko zerbait egin. 285 00:12:42,177 --> 00:12:43,510 Esanahi ezberdinak izan litzateke. 286 00:12:43,510 --> 00:12:47,240 Hau eman litzateke erakuslea erakuslea, hau da, benetan behar 287 00:12:47,240 --> 00:12:50,050 baliozko gauza bat C, baina alde orain, dezagun simple mantentzeko 288 00:12:50,050 --> 00:12:51,750 eta istorioa koherentea mantentzeko. 289 00:12:51,750 --> 00:12:54,100 Besterik ez naiz pasatzen da buffer eta hori zuzena da. 290 00:12:54,100 --> 00:12:56,487 Arazoa da, nahiz eta hau. 291 00:12:56,487 --> 00:12:58,820 Dezagun aurrera me eta exekutatu honetan programa konpilazioaren ondoren. 292 00:12:58,820 --> 00:13:00,902 Egin scanf 1. 293 00:13:00,902 --> 00:13:02,610 Malditos da, nire konpilatzailea en Nire error harrapatzeko. 294 00:13:02,610 --> 00:13:04,090 Give me bigarren bat. 295 00:13:04,090 --> 00:13:05,460 Clang. 296 00:13:05,460 --> 00:13:06,990 Demagun scanf-1.c. 297 00:13:06,990 --> 00:13:10,880 298 00:13:10,880 --> 00:13:11,380 ONDO DA. 299 00:13:11,380 --> 00:13:12,720 Hor dugu. 300 00:13:12,720 --> 00:13:14,280 Behar dut. 301 00:13:14,280 --> 00:13:16,750 CS50 ID ezberdinak ditu konfigurazio ezarpenak 302 00:13:16,750 --> 00:13:18,280 hori babestu zeure burua aurka. 303 00:13:18,280 --> 00:13:21,300 By horiek desgaitu behar nuen Danbateko oraingo honetan eskuz martxan. 304 00:13:21,300 --> 00:13:22,140 Beraz, kate mesedez. 305 00:13:22,140 --> 00:13:25,560 Aurrera joan eta idatzi dut Nire gogoko kaixo mundua ere. 306 00:13:25,560 --> 00:13:26,490 Ados, nulua. 307 00:13:26,490 --> 00:13:27,700 Hori ez da zer idatzi dut. 308 00:13:27,700 --> 00:13:29,690 Beraz adierazgarri da zerbait gaizki izateagatik. 309 00:13:29,690 --> 00:13:33,920 Dezagun aurrera me eta idatzi kate luze batean. 310 00:13:33,920 --> 00:13:37,210 Null esker eta ez dakit naiz huts egin ahal izango bada. 311 00:13:37,210 --> 00:13:40,240 Dezagun saiatu kopia apur bat itsatsi eta ikusi hau laguntzen badu. 312 00:13:40,240 --> 00:13:43,290 Just itsatsi honek asko. 313 00:13:43,290 --> 00:13:47,310 Behin betiko handiago batean ohi baino katea. 314 00:13:47,310 --> 00:13:51,450 Dezagun, besterik gabe, benetan idazteko. 315 00:13:51,450 --> 00:13:51,950 No. 316 00:13:51,950 --> 00:13:52,650 Malditos da. 317 00:13:52,650 --> 00:13:53,480 Komandoa aurkitu. 318 00:13:53,480 --> 00:13:54,550 Beraz, hori zerikusirik da. 319 00:13:54,550 --> 00:13:56,440 Hori I itsatsiko delako karaktere txarra batzuk, 320 00:13:56,440 --> 00:13:59,780 baina hori bihurtzen da, lan egiteko, ez da joan. 321 00:13:59,780 --> 00:14:03,510 >> Demagun hau berriro saiatu horrek, izan ere, gehiago dibertigarria da benetan dugu kraska egiten bada. 322 00:14:03,510 --> 00:14:09,116 Dezagun idatzi hau eta bertan, ez dut benetan kate luzea kopiatu joan 323 00:14:09,116 --> 00:14:10,990 eta Orain ikusten baduzu, en dugu gauza hori hautsi dezake. 324 00:14:10,990 --> 00:14:14,235 Ohartu espazio zehazten ez dut eta lerro eta puntu berria 325 00:14:14,235 --> 00:14:16,035 eta funky karaktere guztiak. 326 00:14:16,035 --> 00:14:16,535 Sartu. 327 00:14:16,535 --> 00:14:21,090 328 00:14:21,090 --> 00:14:22,880 Eta orain sarean besterik ez da motela izatea. 329 00:14:22,880 --> 00:14:27,460 Behera ospatuko dut Komando-V luzeegia, argi eta garbi. 330 00:14:27,460 --> 00:14:28,190 Madarikatua! 331 00:14:28,190 --> 00:14:29,260 Komandoa aurkitu. 332 00:14:29,260 --> 00:14:29,780 >> ONDO DA. 333 00:14:29,780 --> 00:14:32,240 Beno, kontua da hala ere, jarraian. 334 00:14:32,240 --> 00:14:36,910 Beraz, zer da benetan joan deklarazio honekin on 335 00:14:36,910 --> 00:14:39,240 char izar on line 16 buffer? 336 00:14:39,240 --> 00:14:41,820 Beraz, zer nago lortzean denean erakuslea deklaratzen dut? 337 00:14:41,820 --> 00:14:47,440 Guztiak nago lau byte balio bat da Buffer deitzen da, baina zer da barruan 338 00:14:47,440 --> 00:14:49,540 une honetan? 339 00:14:49,540 --> 00:14:50,930 Batzuk zabor balio da. 340 00:14:50,930 --> 00:14:54,170 Aldagai bat aldarrikatu duzu edonoiz delako C, zabor balio batzuk ere, 341 00:14:54,170 --> 00:14:56,220 eta ari gara hasita Errealitate hau gorako bidaia. 342 00:14:56,220 --> 00:14:59,720 Orain, scanf esango dut, helbide honetara joan 343 00:14:59,720 --> 00:15:01,520 eta edozein Erabiltzaile mota jarri. 344 00:15:01,520 --> 00:15:06,400 Kaixo erabiltzaile mota bada Mundu, bai, non ez dut jarri? 345 00:15:06,400 --> 00:15:07,750 Buffer zabor balio bat da. 346 00:15:07,750 --> 00:15:11,510 >> Beraz, hori da mota gezi bat bezala hori nork daki non seinalatuz. 347 00:15:11,510 --> 00:15:13,880 Agian eta seinalatuz hementxe nire oroimenean. 348 00:15:13,880 --> 00:15:16,560 Eta beraz, erabiltzaileak kaixo mundua motak, 349 00:15:16,560 --> 00:15:22,380 programa jarri saiatzen katea kaixo mundua backslash 0 350 00:15:22,380 --> 00:15:23,910 zatia memoria hori ere. 351 00:15:23,910 --> 00:15:27,070 Baina probabilitate handia duten, baina argi eta garbi, ez% 100 probabilitatea, 352 00:15:27,070 --> 00:15:30,440 Ordenagailua da gero, huts joan Programaren hau da, ez delako 353 00:15:30,440 --> 00:15:32,490 memoria onartzen behar dut ukitu. 354 00:15:32,490 --> 00:15:36,330 Beraz, azken finean, programa hau da zehazki arrazoi horrengatik flawed. 355 00:15:36,330 --> 00:15:38,070 Naiz funtsean ez zer egiten? 356 00:15:38,070 --> 00:15:42,366 Zeintzuk izan dira, zehazten ez bezala besterik ez dut kendutako hegazti lehen adibidea dugu? 357 00:15:42,366 --> 00:15:42,866 Bai? 358 00:15:42,866 --> 00:15:43,710 >> Ikusleak: Memoriaren alokairuak? 359 00:15:43,710 --> 00:15:45,001 >> DAVID MALAN: Memoria esleipena. 360 00:15:45,001 --> 00:15:48,400 Ez dute benetan esleitu dut kate horretan dagoen edozein memoria. 361 00:15:48,400 --> 00:15:50,270 Beraz, hau konpondu ahal izango dugu modu pare bat ere. 362 00:15:50,270 --> 00:15:52,700 One, simple mantentzeko dezakegu eta hain zuzen ere, gaur egun, Oraindik 363 00:15:52,700 --> 00:15:55,116 lausotzeaz bat ikusteko hasteko joan zer arteko lerro baten 364 00:15:55,116 --> 00:15:58,520 sorta bat, kate bat zer da, zer da char izarra da, zer karaktere sorta bat 365 00:15:58,520 --> 00:15:59,020 da. 366 00:15:59,020 --> 00:16:02,450 Hemen Bigarren adibide bat da kateak eta oharra inplikatuz 367 00:16:02,450 --> 00:16:05,690 on line guztia egin dut 16 da, ordez esaten 368 00:16:05,690 --> 00:16:09,530 buffer hori char bat izango da izarra, memoria zatia erakuslea, 369 00:16:09,530 --> 00:16:14,057 Oso proaktiboan eman ditut Neure burua 16 karaktere buffer batean, 370 00:16:14,057 --> 00:16:16,390 eta hain zuzen ere, Oraindik ezagutzen bada Epe buferra batera, 371 00:16:16,390 --> 00:16:20,570 seguruenik bideoak mundutik, non video bat buferra, buferra da, 372 00:16:20,570 --> 00:16:21,175 buferra. 373 00:16:21,175 --> 00:16:22,550 Beno, zer da konexio hemen? 374 00:16:22,550 --> 00:16:24,960 Beno, Inside YouTube eta bideo-jokalari barruan 375 00:16:24,960 --> 00:16:27,200 Oro har, multzo bat da 16 baino handiagoa da. 376 00:16:27,200 --> 00:16:30,340 Tamaina bat array bat izango da agian megabyte, agian, 10 megabyte, 377 00:16:30,340 --> 00:16:34,330 eta array horretan navegador deskargatu byte-sorta oso bat, 378 00:16:34,330 --> 00:16:37,500 megabyte sorta oso bat Bideo eta bideo jokalari, 379 00:16:37,500 --> 00:16:40,930 Youtubeko edo duenarentzat da, hasten byte irakurtzean array horretatik aurrera, 380 00:16:40,930 --> 00:16:43,530 eta noiznahi ikusten duzu Hitz buferra, buferra, 381 00:16:43,530 --> 00:16:46,350 horrek esan nahi du jokalaria array horren amaieran ahaztuak. 382 00:16:46,350 --> 00:16:50,430 Sare oso geldoa ez duela da Array betetzen byte gehiago dituzten 383 00:16:50,430 --> 00:16:55,610 eta beraz ari bit atera duzu Erabiltzaile erakusteko. 384 00:16:55,610 --> 00:16:59,430 >> Beraz buffer epe tentuz Hemen da aurkitu besterik array bat, memoria zatia da. 385 00:16:59,430 --> 00:17:02,530 Eta hau konpondu beharko bihurtzen da delako 386 00:17:02,530 --> 00:17:07,410 Hori arrayak tratatzeko dezakezu bagina bezala helbideak dira, nahiz eta buffer arren 387 00:17:07,410 --> 00:17:10,710 da sinbolo bat besterik ez, bat da karaktere adierazteko, buffer, 388 00:17:10,710 --> 00:17:14,760 hori oso erabilgarria da niretzat, programatzailea, Inguruan bere izena gainditu dezakezu 389 00:17:14,760 --> 00:17:17,079 balu bezala izan ziren a erakusle da bagina bezala 390 00:17:17,079 --> 00:17:21,000 ziren zatia baten helbidea 16 chars oroitzeko. 391 00:17:21,000 --> 00:17:24,530 Beraz, esan nahi baita, ahal pasatzen dut scanf du zehazki hitz hori 392 00:17:24,530 --> 00:17:30,670 eta beraz, orain, programa hau egiten badut, scanf 2, dot barra scanf 2, 393 00:17:30,670 --> 00:17:35,386 eta mota kaixo mundua, Sartu, aldia dela 394 00:17:35,386 --> 00:17:37,590 >> Hmm, zer gertatu zen? 395 00:17:37,590 --> 00:17:39,340 String mesedez. 396 00:17:39,340 --> 00:17:41,430 Zer oker egin dut? 397 00:17:41,430 --> 00:17:43,800 Kaixo mundua, bufferraren. 398 00:17:43,800 --> 00:17:44,705 Kaixo Mundua. 399 00:17:44,705 --> 00:17:48,201 400 00:17:48,201 --> 00:17:49,420 Ah, zer egiten ari da ezagutzen dut. 401 00:17:49,420 --> 00:17:49,920 ONDO DA. 402 00:17:49,920 --> 00:17:51,628 Beraz, irakurtzen ari da Lehenengo espazioa arte. 403 00:17:51,628 --> 00:17:55,680 Hargatik iruzur une bat besterik ez da, eta esan nahi dut zerbait idatzi 404 00:17:55,680 --> 00:18:01,408 Benetan luzea horrelako esaldi luze bat da hori da bat, bi, hiru, lau, bost, 405 00:18:01,408 --> 00:18:04,420 sei, zazpi, zortzi, bederatzi, 10, 11, 12, 13, 14, 15, 16. 406 00:18:04,420 --> 00:18:05,300 ONDO DA. 407 00:18:05,300 --> 00:18:07,600 Esaldi bat, hain zuzen ere. 408 00:18:07,600 --> 00:18:10,710 Esaldien hau da 16 karaktere baino gehiago 409 00:18:10,710 --> 00:18:13,670 eta beraz, Sartu sakatu dut, zer gertatuko? 410 00:18:13,670 --> 00:18:16,940 Beno, kasu honetan Istorioa, deklaratu nuen buffer 411 00:18:16,940 --> 00:18:22,190 benetan array bat izateaz 16 chars prest joan batera. 412 00:18:22,190 --> 00:18:27,426 Bat, bi, hiru, lau, bost, sei, zazpi, zortzi, bederatzi, 10, 11, 12, 13, 14, 413 00:18:27,426 --> 00:18:29,440 15, 16. 414 00:18:29,440 --> 00:18:34,410 Beraz, 16 karaktere, eta orain, I Zerbait irakurri hau da luze bat bezala 415 00:18:34,410 --> 00:18:43,950 gertatuko da sententzia, zer ari joan naiz duten I honetan irakurri joan luzea da 416 00:18:43,950 --> 00:18:49,660 S-E-N-T-E-N-C-E, sententzia. 417 00:18:49,660 --> 00:18:52,270 >> Beraz, hau da, nahita gauza txarra dudala 418 00:18:52,270 --> 00:18:55,060 haratago idazten Nire mugak array, 419 00:18:55,060 --> 00:18:56,660 Nire buffer mugetatik haratago. 420 00:18:56,660 --> 00:19:00,100 Zortea eta programaren lortu nuen egingo zaintzeko exekutatzen jarrai dezan eta ez, 421 00:19:00,100 --> 00:19:03,450 baina, oro har, hau hain zuzen ere, nire programaren kraskatzea, 422 00:19:03,450 --> 00:19:06,440 eta akats bat dago, nire Oraingoz dut urratsa kode 423 00:19:06,440 --> 00:19:08,576 mugak array hori, nuelako 424 00:19:08,576 --> 00:19:10,450 ezagutzen ez bada nahitaez huts joan 425 00:19:10,450 --> 00:19:12,120 edo bada, besterik ez dut zortea iritsi. 426 00:19:12,120 --> 00:19:15,750 Beraz, hau da problematikoa delako Kasu honetan, lanera badirudi 427 00:19:15,750 --> 00:19:20,931 eta dezagun tempt patua hemen, nahiz eta IDE badirudi pixka bat nahiko jasatera 428 00:19:20,931 --> 00:19:21,430 of-- 429 00:19:21,430 --> 00:19:22,040 >> Hor dugu. 430 00:19:22,040 --> 00:19:23,240 Azkenik. 431 00:19:23,240 --> 00:19:26,470 Beraz, soilik bat, hori ikusi ahal izango naiz. 432 00:19:26,470 --> 00:19:29,630 Beraz, besterik gabe, fun Idazteko asko izan nuen Benetako Esaldi luzez egindako 433 00:19:29,630 --> 00:19:32,800 Hori, zalantzarik gabe gainditu zuen 16 byte, nuelako 434 00:19:32,800 --> 00:19:38,050 Lerro anitzeko luze ero honetan idatzitako esaldia, eta orduan konturatu zer gertatu zen. 435 00:19:38,050 --> 00:19:41,110 Programak saiatu da inprimatzeko eta gero lortu segmentazio matxura bat 436 00:19:41,110 --> 00:19:44,430 eta segmentazio hutsegite denean honen antzeko zerbait gertatzen da 437 00:19:44,430 --> 00:19:47,650 eta sistema eragilearen dio ez, ezin memoria ukitu. 438 00:19:47,650 --> 00:19:49,570 Hiltzeko goaz Programaren guztira. 439 00:19:49,570 --> 00:19:51,180 >> Beraz, hau problematikoa dela dirudi. 440 00:19:51,180 --> 00:19:54,540 Programaren zeinaren hobetu Nik gutxienez aukeratu memoria batzuk, 441 00:19:54,540 --> 00:19:58,000 baina horrek mugatuko badirudi litzateke Funtzio lortzean GetString du 442 00:19:58,000 --> 00:20:00,780 Zenbait luzera mugatua 16 kateak. 443 00:20:00,780 --> 00:20:04,200 Beraz, aurrerantzean gaitu nahi izanez gero Adibidea 16 karaktere baino, 444 00:20:04,200 --> 00:20:04,880 zer egin nahi duzu? 445 00:20:04,880 --> 00:20:07,970 Beno, handitu dezakezu 32ra buffer honen tamaina 446 00:20:07,970 --> 00:20:09,190 edo dirudiela motatako laburrean. 447 00:20:09,190 --> 00:20:12,260 Zergatik ez egin besterik ez dugu 1.000 baina bultza atzera. 448 00:20:12,260 --> 00:20:17,100 Zer da erantzunaren senez besterik eginez arazo hau saihestuz 449 00:20:17,100 --> 00:20:20,660 Nire buffer handiagoa, 1.000 karaktere bezala? 450 00:20:20,660 --> 00:20:23,470 Horrela GetString martxan jarriz. 451 00:20:23,470 --> 00:20:27,130 Zer da ona edo txarra hemen? 452 00:20:27,130 --> 00:20:28,033 Bai? 453 00:20:28,033 --> 00:20:30,574 Ikusleak: gora lotu duzu asko bada Espazioaren eta ez duzu erabili, 454 00:20:30,574 --> 00:20:33,500 gero, ezin duzu espazio hori berresleitzeko. 455 00:20:33,500 --> 00:20:34,500 DAVID MALAN: Absolutely. 456 00:20:34,500 --> 00:20:38,480 It parrastatzailea da ez duzun heinean balitz bezala benetan behar byte horiek 900 457 00:20:38,480 --> 00:20:41,057 eta oraindik galdetzen ari zaren Guztira 1.000 hala ere, 458 00:20:41,057 --> 00:20:44,140 Zu besterik Memoria gehiago kontsumitzen duzu erabiltzailearen ordenagailuan behar baino, 459 00:20:44,140 --> 00:20:45,740 eta guztiak, batzuk ondoren Jada aurkitu du 460 00:20:45,740 --> 00:20:47,620 bizitzan zaudenean dagoela programak asko exekutatzen 461 00:20:47,620 --> 00:20:50,470 eta ari bat ireki Memoria asko jatea izango dute, hau benetan eragin dezake performance 462 00:20:50,470 --> 00:20:52,220 eta erabiltzailearen esperientzia ordenagailuaren aurrean. 463 00:20:52,220 --> 00:20:56,090 Beraz, mota horretako alferrak irtenbide bat da, ziur, eta alderantziz, 464 00:20:56,090 --> 00:21:00,140 bakarra da luxuzalea zer arazo oraindik ere izaten jarraitzen du, nire buffer egiten baditut ere 465 00:21:00,140 --> 00:21:02,100 1.000? 466 00:21:02,100 --> 00:21:02,600 Bai? 467 00:21:02,600 --> 00:21:04,475 >> Ikusleak: katea luzera 1.001 da. 468 00:21:04,475 --> 00:21:05,350 DAVID MALAN: Zehazki. 469 00:21:05,350 --> 00:21:08,280 Zure katea luzera 1.001 badago, zehatza arazo bera izan duzu, 470 00:21:08,280 --> 00:21:10,705 eta nire argudioa arabera, nuke orduantxe egin da 2000an, 471 00:21:10,705 --> 00:21:12,830 baina ez dakizu in aurrera nola big izan beharko litzateke, 472 00:21:12,830 --> 00:21:16,890 eta, hala ere, ez dut nire programa konpilatzeko deskargatu dezazun aurretik jendeak erabili eta 473 00:21:16,890 --> 00:21:17,390 da. 474 00:21:17,390 --> 00:21:21,490 Beraz, hau zehazki mota da gauza CS50 liburutegia saiatzen dela 475 00:21:21,490 --> 00:21:24,750 lagunduko digu, eta begiratu bakarrik egingo dugu azpiko ezarpen batzuk 476 00:21:24,750 --> 00:21:29,790 hemen, baina hau da CS50 dot C. hau CS50 IDE ibilitako fitxategia da 477 00:21:29,790 --> 00:21:31,420 Aste hauetan guztietan duzula hemen erabiltzen dut. 478 00:21:31,420 --> 00:21:34,280 It aurrez konpilatutako da eta duzun izan da automatikoki erabiliz 479 00:21:34,280 --> 00:21:38,780 izatea izaeraren arabera etenaren L CS50 bandera Danbateko batez, 480 00:21:38,780 --> 00:21:42,300 baina behera joan I guztietan barrena bada Funtzio horiek, hona hemen GetString, 481 00:21:42,300 --> 00:21:44,636 eta besterik ez duzu eman nahi zaio zer gustua gertatzen da, 482 00:21:44,636 --> 00:21:46,760 dezagun begirada azkar batean konplexutasun erlatiboa. 483 00:21:46,760 --> 00:21:48,870 Ez da super luze bat funtzioa, baina ez genuen 484 00:21:48,870 --> 00:21:52,530 Guztiak gogor pentsatu behar nola kateak lortzean buruz joan. 485 00:21:52,530 --> 00:21:55,660 >> Hortaz, hona hemen nire buffer eta I itxuraz abiarazi null. 486 00:21:55,660 --> 00:21:57,990 Hau, jakina, da char izar gauza bera, 487 00:21:57,990 --> 00:22:00,585 baina erabaki dut CS50 liburutegia gauzatzeko 488 00:22:00,585 --> 00:22:02,460 goaz, bada erabat dinamikoa izan, 489 00:22:02,460 --> 00:22:05,770 Ez dut aldez baten zein handia ere ezagutzen katea erabiltzaile dira lortu nahi du. 490 00:22:05,770 --> 00:22:08,140 Beraz naiz martxan jarriko dut kate huts bat besterik ez 491 00:22:08,140 --> 00:22:11,507 eta naiz eraikitzeko bezainbeste noa memoria erabiltzaile katea egokitzeko behar dut 492 00:22:11,507 --> 00:22:13,340 eta ez badut dute nahikoa, nik eskatu dut 493 00:22:13,340 --> 00:22:15,010 memoria gehiagorako sistema eragilea. 494 00:22:15,010 --> 00:22:17,510 Beren katea mugitu noa memoria zatia handiagoa sartu 495 00:22:17,510 --> 00:22:21,847 eta naiz askatzeko edo askatzeko joan nintzen memoria zatia nahikoa handiak 496 00:22:21,847 --> 00:22:23,680 eta besterik ez goaz hau iteratively egin. 497 00:22:23,680 --> 00:22:25,570 >> Beraz, begiratu azkar bat, Hemen da aldagai bat besterik ez 498 00:22:25,570 --> 00:22:28,780 naiz segimendua egiteko, honekin joan Nire buffer edukiera du. 499 00:22:28,780 --> 00:22:30,071 Zenbat byte moldatzen dezaket? 500 00:22:30,071 --> 00:22:32,070 Hona hemen aldagai n a bertan noa mantentzeko joan 501 00:22:32,070 --> 00:22:36,200 zenbat byte Hemen benetan jarraipena buffer erabiltzaileak edo idatzi ditu. 502 00:22:36,200 --> 00:22:39,900 Ez ikusi duzun bada hau baino lehen, zehaztu ahal int bat bezala aldagai bat 503 00:22:39,900 --> 00:22:46,370 sinatu gabe dago, eta horrek Izenak dioen bezala, esan nahi ez negatiboa da, eta zergatik 504 00:22:46,370 --> 00:22:50,590 Inoiz zehaztera traba nahi dut int bat ez da bakarrik int, 505 00:22:50,590 --> 00:22:52,540 baina unsigned int bat da? 506 00:22:52,540 --> 00:22:55,064 Int ez negatiboa da. 507 00:22:55,064 --> 00:22:56,355 Zer egin [INAUDIBLE] esan nahi du? 508 00:22:56,355 --> 00:22:58,910 >> Ikusleak: zenbateko bat deskribatu da lukeen memoria [INAUDIBLE] izan daiteke. 509 00:22:58,910 --> 00:22:59,660 >> DAVID MALAN: Bai. 510 00:22:59,660 --> 00:23:03,710 Beraz, sinatu gabe esan nahi nizuke, hau da, benetan zuk aparteko memoria pixka bat emanez 511 00:23:03,710 --> 00:23:07,440 eta silly moduko dirudi, baina bazara osagarriak memoria pixka bat behar du, 512 00:23:07,440 --> 00:23:09,940 esan nahi du, bi aldiz izan duzu askotan bezala baloreak ordezkatzen dezakezu, 513 00:23:09,940 --> 00:23:11,570 0 edo 1 izan daitekeelako. 514 00:23:11,570 --> 00:23:14,660 Beraz, besterik ezean, int bat gutxi gorabehera izan daiteke negatiboa 2 milioi modu guztiak 515 00:23:14,660 --> 00:23:16,030 2 positiboa milioi. 516 00:23:16,030 --> 00:23:18,540 Horiek dira areak handia, baina oraindik motatako hondakin-ekoizpena 517 00:23:18,540 --> 00:23:21,280 buruz bakarra zaintzeko tamaina, eta horrek, intuizioa 518 00:23:21,280 --> 00:23:24,620 ez negatiboa izan behar du, edo positiboa edo 0, bai eta ondoren, 519 00:23:24,620 --> 00:23:28,884 zergatik ari zara alferrik galtzen 2 milioi zenbaki negatiboak balio posible 520 00:23:28,884 --> 00:23:30,300 bada inoiz ez zaren horiek erabili behar da? 521 00:23:30,300 --> 00:23:35,350 Beraz, sinatu gabe, orain nire int esanez ahal 0 eta 4 milioi artean, gutxi gorabehera, izan. 522 00:23:35,350 --> 00:23:39,280 >> Hortaz, hona hemen int arrazoiak direla eta C antolaketa ezin izango dugu sartu besterik ez orain bezala 523 00:23:39,280 --> 00:23:42,280 zergatik int bat beharrean da char bat, baina hemen da 524 00:23:42,280 --> 00:23:44,630 Zer gertatzen gist , eta batzuk on 525 00:23:44,630 --> 00:23:48,340 , baliatuz liteke, esate baterako, are PSet lau fgetc funtzioa 526 00:23:48,340 --> 00:23:51,580 edo hortik aurrera, ikusiko dugu Berriro arazo bost ezarri, 527 00:23:51,580 --> 00:23:55,410 fgetc da polita izen gisa delako motatako, ordenatzeko arcanely iradokitzen, 528 00:23:55,410 --> 00:23:57,940 Funtzio bat da hori pertsonaia bat jasotzen du eta beraz, 529 00:23:57,940 --> 00:24:00,690 Zer da funtsean ezberdinak zer GetString ari gara buruz 530 00:24:00,690 --> 00:24:03,110 ez da ari gara erabiliz modu berean scanf. 531 00:24:03,110 --> 00:24:07,550 Urrats-urrats batera besterik ez dugu creeping edozein dela gehiagoko erabiltzaileak idatzi ditu, 532 00:24:07,550 --> 00:24:10,970 dugu beti esleitu ahal izango delako char, eta, beraz, ezin dugu beti segurtasunez 533 00:24:10,970 --> 00:24:15,599 char bat begiratzeko garai batean, eta magia hemen gertatuko hasten da. 534 00:24:15,599 --> 00:24:17,890 Behera mugitzeko noa Funtzio honen erdialdera 535 00:24:17,890 --> 00:24:20,360 besterik laburki aurkeztu funtzio hau. 536 00:24:20,360 --> 00:24:22,670 Askoz bezala, ez da bat malloc funtzioa, ez da 537 00:24:22,670 --> 00:24:27,740 idazketa funtzioa non idazketa lets memoria zatia berresleitzeko duzu 538 00:24:27,740 --> 00:24:29,570 eta egin ezazu handiagoa edo txikiagoa. 539 00:24:29,570 --> 00:24:33,060 Hain luze ipuinean eta ekin nire esku eragin gaur, 540 00:24:33,060 --> 00:24:35,620 Badakizu zer GetString egiten ari da sort da 541 00:24:35,620 --> 00:24:39,720 magikoki hazten edo buffer gutxitu erabiltzaile moduan 542 00:24:39,720 --> 00:24:41,440 bere kateekin mota. 543 00:24:41,440 --> 00:24:43,962 >> Beraz, erabiltzaileak motak the bat kate labur, kode hau 544 00:24:43,962 --> 00:24:45,920 bakarra nahikoa bideratzen katea egokitzeko memoria. 545 00:24:45,920 --> 00:24:48,086 Erabiltzaileari idazketa mantentzen bada behin eta berriro egin nuen bezala 546 00:24:48,086 --> 00:24:50,330 eta berriro, bai, bada buffer-ren hasiera batean big honetan 547 00:24:50,330 --> 00:24:53,310 eta programaren konturatuko da, minutu bat itxaron, naiz espazioa, I, 548 00:24:53,310 --> 00:24:55,410 Nik bikoiztu egingo da buffer tamainaren 549 00:24:55,410 --> 00:24:59,110 eta, ondoren, bufferraren tamaina bikoiztu eta hori bikoiztea kode du, 550 00:24:59,110 --> 00:25:03,170 begiratuz gero hemen, da clever bat-liner hau besterik ez. 551 00:25:03,170 --> 00:25:06,830 Agian ez sintaxia hau ikusi duzu aurretik, baina esan duzu izar berdin bada, 552 00:25:06,830 --> 00:25:10,470 hau gauza bera da edukiera aldiz 2 esanez. 553 00:25:10,470 --> 00:25:13,390 Beraz mantentzen besterik ez da bikoiztu buffer-gaitasuna 554 00:25:13,390 --> 00:25:17,480 eta, ondoren, idazketa kontatzea eman bera memoria askoz gehiago dela. 555 00:25:17,480 --> 00:25:19,720 >> Orain, bat alde batera utzita, han dira beste hemen ere funtzio 556 00:25:19,720 --> 00:25:23,680 ez dugu, xehetasunez begiratu den beste GetInt erakusteko, 557 00:25:23,680 --> 00:25:26,150 GetString erabiltzen dugu GetInt. 558 00:25:26,150 --> 00:25:28,192 Egiaztatu dugu ez dela nulua, eta horrek, gogoratzen, 559 00:25:28,192 --> 00:25:30,400 balio berezia dela esan nahi du zerbait gaizki joan. 560 00:25:30,400 --> 00:25:31,233 Oraindik memoria atera dugu. 561 00:25:31,233 --> 00:25:32,310 Hobea dela egiaztatzeko. 562 00:25:32,310 --> 00:25:33,710 Eta Sentinel balioa itzuliko gara. 563 00:25:33,710 --> 00:25:37,850 Baina egingo iruzkinak gisa atzeratu dut zergatik eta gero scanf lehengusua hau erabili dugu 564 00:25:37,850 --> 00:25:42,100 sscanf izeneko eta bihurtzen da sscanf, edo kate scanf hori, 565 00:25:42,100 --> 00:25:45,310 lets lerroan begirada bat hartu duzu erabiltzaileak idatzi du eta utzi duzu 566 00:25:45,310 --> 00:25:49,610 funtsean aztertuko da, eta zer naiz Hemen egiten da sscanf kontatzen dut, 567 00:25:49,610 --> 00:25:54,440 aztertuko edozein erabiltzaileari ditu idatzitako eta ziur% i egiteko, 568 00:25:54,440 --> 00:25:59,250 ez da oso bat da, eta ez dugu gaur sartu zehazki zergatik da han ere 569 00:25:59,250 --> 00:26:03,760 % c hemen, baina hori hitz batean ahalbidetzen Erabiltzaile idatzitako du bada antzemateko gurekin 570 00:26:03,760 --> 00:26:06,050 Zerbait akastunak kopuruaren ondoren ere. 571 00:26:06,050 --> 00:26:11,766 Beraz, arrazoia GetInt eta GetString , berriz saiatu berriro saiatzeko esango dizu, berriz saiatu 572 00:26:11,766 --> 00:26:13,640 baita guztia kodea dugun idatzia, 573 00:26:13,640 --> 00:26:17,900 bere mota erabiltzailearen sarrera begira Ziur ere erabat zenbakizko da 574 00:26:17,900 --> 00:26:21,700 edo benetako mugikorreko bat da Puntu balio edo antzekoak, 575 00:26:21,700 --> 00:26:24,233 zer balio arabera funtziona erabiltzen ari zarela. 576 00:26:24,233 --> 00:26:25,060 >> Whew. 577 00:26:25,060 --> 00:26:25,710 ONDO DA. 578 00:26:25,710 --> 00:26:27,592 Hori izan zen mokadu bat baina puntua hemen da 579 00:26:27,592 --> 00:26:29,550 hori dela eta izan genuen buruzko prestakuntza gurpilak 580 00:26:29,550 --> 00:26:32,880 maila txikiena delako da, Hainbeste gauza besterik ez da hori 581 00:26:32,880 --> 00:26:35,674 gaizki joan daiteke nahi dugun preemptively kudeatu 582 00:26:35,674 --> 00:26:38,090 Gauza horiek, zalantzarik gabe, in klasearen goiztiarrena asteetan, 583 00:26:38,090 --> 00:26:42,230 baina orain PSet lau eta pset bost eta haratago Ikusiko duzu gehiago tokiraino dela 584 00:26:42,230 --> 00:26:45,570 duzu, baina, era berean, Oraindik gehiago gai problematika mota horiek konpontzeko 585 00:26:45,570 --> 00:26:47,180 yourself. 586 00:26:47,180 --> 00:26:51,770 GetString edo GetInt edozein galdera? 587 00:26:51,770 --> 00:26:52,630 Bai? 588 00:26:52,630 --> 00:26:55,130 >> Ikusleak: Zergatik bikoitza buffer-gaitasuna 589 00:26:55,130 --> 00:26:57,630 baizik eta, besterik gabe ari dira kopuru zehatza moduan da? 590 00:26:57,630 --> 00:26:58,100 >> DAVID MALAN: Galdera ona. 591 00:26:58,100 --> 00:27:00,474 Zergatik ahalmen bikoitza genuke bufferraren gisa aurka 592 00:27:00,474 --> 00:27:02,800 besterik izaten ari den balio konstante batzuk? 593 00:27:02,800 --> 00:27:03,900 Diseinu erabakia izan da. 594 00:27:03,900 --> 00:27:08,590 Erabaki besterik ez dugu hori joera duelako izan bat eskatu gutxi garestia denbora aldetik 595 00:27:08,590 --> 00:27:10,440 sistema eragilea memoria egiteko, ez baikenuen 596 00:27:10,440 --> 00:27:13,210 azkenean bat sartzea nahi kate handi bat egiteko egoera bat 597 00:27:13,210 --> 00:27:14,960 galdetzen ari garela OS behin eta berriro 598 00:27:14,960 --> 00:27:17,500 eta behin eta berriro memoria egiteko azkar. 599 00:27:17,500 --> 00:27:20,387 Beraz, erabaki dugu, besterik gabe, zertxobait arbitrarioki baina arrazoiz espero dugu, 600 00:27:20,387 --> 00:27:22,720 hori, badakizu zer, dezagun saiatu geure aurrera egin ahal izateko 601 00:27:22,720 --> 00:27:25,520 eta besterik gabe, gorde bikoiztu egin da, eta beraz, aldiz zenbatekoa gutxitzeko dugu 602 00:27:25,520 --> 00:27:29,010 malloc deitu dugun edo idazketa, baina epaia, guztira 603 00:27:29,010 --> 00:27:31,820 jakitea eza deitu Erabiltzaileek liteke idatzi nahi. 604 00:27:31,820 --> 00:27:33,600 Modu bi eztabaidagarria izan daiteke. 605 00:27:33,600 --> 00:27:35,430 Dudarik gabe ona. 606 00:27:35,430 --> 00:27:39,240 >> Beraz, dezagun begirada bat pare batean Beste aldean memoria ondorioak, 607 00:27:39,240 --> 00:27:41,610 gaizki joan daiteke gauzak eta ahal dituzu tresnak 608 00:27:41,610 --> 00:27:43,880 erabili akatsak mota horiek harrapatzeko. 609 00:27:43,880 --> 00:27:47,800 Zera gertatzen da duzun guztia, nahiz eta check50 ez du esan duzun bezala, 610 00:27:47,800 --> 00:27:50,050 dute buggy idazten astebete geroztik kodea, 611 00:27:50,050 --> 00:27:53,630 are check50 proba guztietan badira gainditu, eta, nahiz eta zuk eta zure TF 612 00:27:53,630 --> 00:27:56,010 dira super ziur dagoela Zure kodea du lan izan nahi du. 613 00:27:56,010 --> 00:27:59,190 Zure kodea ditu buggy edo duzula guztietan flawed, 614 00:27:59,190 --> 00:28:02,540 CS50 liburutegia erabiliz ere, dute memoria leaking. 615 00:28:02,540 --> 00:28:06,040 Zuk izan sistema eragilearen eskatuz programak gehienetan memoria for 616 00:28:06,040 --> 00:28:08,850 idatzi duzun, baina duzun inoiz benetan harekiko zor. 617 00:28:08,850 --> 00:28:12,110 GetString deitzen duzunean eta GetInt eta GetFloat, 618 00:28:12,110 --> 00:28:15,270 baina GetString, duzun inoiz unGetString edo Eman izeneko 619 00:28:15,270 --> 00:28:19,890 String Back edo antzekoak, baina ikusi dugu GetString esleitu memoria 620 00:28:19,890 --> 00:28:22,810 malloc modu edo honen arabera Funtzio idazketa, besterik ez da 621 00:28:22,810 --> 00:28:25,670 espirituz oso antzekoa, eta, hala ere, izan gara 622 00:28:25,670 --> 00:28:28,629 sistema eragilearen eskatuz memoria eta memoria behin eta berriro 623 00:28:28,629 --> 00:28:29,670 baina inoiz ez da ematen back. 624 00:28:29,670 --> 00:28:33,550 >> Orain, bat alde batera utzita bezala, bihurtzen da programa bat irten denean, memoriaren guztiak 625 00:28:33,550 --> 00:28:34,870 automatikoki libratuko da. 626 00:28:34,870 --> 00:28:36,150 Beraz, ez da akordio handi bat izan da. 627 00:28:36,150 --> 00:28:38,590 Ez da hautsi joan IDE edo motela gauzak behera, 628 00:28:38,590 --> 00:28:40,670 baina noiz programak egin Oro har, Leak memoria 629 00:28:40,670 --> 00:28:42,170 eta denbora luzez ari dira martxan. 630 00:28:42,170 --> 00:28:45,640 Ikusi duzun inoiz ergelak gutxi bada hondartza Mac OS edo erloju batean baloia 631 00:28:45,640 --> 00:28:51,160 Windows non mota da motelduz edo pentsatzen edo pentsamendu 632 00:28:51,160 --> 00:28:53,770 edo, besterik gabe, benetan hasten to arakatze bat moteldu, 633 00:28:53,770 --> 00:28:56,960 Oso seguru litezke memoria leak baten emaitza. 634 00:28:56,960 --> 00:28:59,970 Nork idatzi programatzaileek Erabiltzen ari zaren softwarea 635 00:28:59,970 --> 00:29:03,570 memoria sistema eragilearen eskatu Minutu batzuk, orduro. 636 00:29:03,570 --> 00:29:05,570 Baina zuk darabilzun du software, izanez gero, nahiz 637 00:29:05,570 --> 00:29:08,680 zure ordenadorean txikitzean amaieran ordu edo egunetan, 638 00:29:08,680 --> 00:29:11,980 zuk galdetzen liteke gero eta gehiago memoria eta inoiz benetan hura erabiltzen 639 00:29:11,980 --> 00:29:15,180 eta, beraz, zure kodea izan daiteke, edo programak memoria izango leaking liteke, 640 00:29:15,180 --> 00:29:18,350 eta memoria Leak hasten bazara, Han beste programen memoria gutxiago, 641 00:29:18,350 --> 00:29:21,220 eta ondorioa da motela dena behera. 642 00:29:21,220 --> 00:29:23,600 >> Orain, hori ikaragarri baten arabera da Gehien desmoche programak 643 00:29:23,600 --> 00:29:26,350 aukera izango duzu CS50 exekutatu neurrian 644 00:29:26,350 --> 00:29:31,650 bere irteera da, are gehiago baino gehiago esoterikoak gisa Danbateko en edo en edo komandoa edozein 645 00:29:31,650 --> 00:29:35,930 line programak aurretik exekutatu dugu baina zorionez, bere irteera murgildurik 646 00:29:35,930 --> 00:29:39,810 batzuk super aholku lagungarria da erabilgarria bai PSet lau izango dira 647 00:29:39,810 --> 00:29:41,510 edo zalantzarik pset bost. 648 00:29:41,510 --> 00:29:44,250 Beraz Valgrind tresna bat da Hori begiratzen erabili ahal izango da 649 00:29:44,250 --> 00:29:46,930 memoria programan filtrazioen. 650 00:29:46,930 --> 00:29:48,570 Nahiko erraz exekutatu da. 651 00:29:48,570 --> 00:29:51,420 Valgrind eta gero exekutatzen duzun, nahiz eta Luze apur bat izan arren, 652 00:29:51,420 --> 00:29:54,440 etenaren etenaren leak check berdinen osoa, eta, ondoren dot 653 00:29:54,440 --> 00:29:56,320 barra eta zure programaren izena. 654 00:29:56,320 --> 00:30:00,010 Beraz Valgrind ondoren, zure programa abiarazi da eta zure programaren amaieran 655 00:30:00,010 --> 00:30:02,240 irten aurretik korrika eta ematen dizu gonbita bat, 656 00:30:02,240 --> 00:30:04,980 nik, aztertzeko joan zure programa da da exekutatzen ari da 657 00:30:04,980 --> 00:30:07,740 eta esango dizut ba Leak duzu Edozein memoria eta are gehiago, 658 00:30:07,740 --> 00:30:10,610 zuen memoria ukitu ez duzu sartzen? 659 00:30:10,610 --> 00:30:13,700 Ezin du guztia harrapatzeko, baina da nahiko ona gauza gehienak harrapatzeko. 660 00:30:13,700 --> 00:30:19,700 >> Hortaz, hona hemen nire beharrik run adibide bat Programa honetan, run valgrind izatea, 661 00:30:19,700 --> 00:30:21,470 izeneko programa memoria, eta banoa 662 00:30:21,470 --> 00:30:24,730 diren lerroak nabarmentzeko gurekin interesgarriak azken finean. 663 00:30:24,730 --> 00:30:27,690 Beraz, ez da oharkabetasunak are gehiago Dudan diapositiba ezabatuko. 664 00:30:27,690 --> 00:30:30,930 Baina ikusi besterik zer hau programa dugun esateko gai da. 665 00:30:30,930 --> 00:30:34,800 Da gauzak kontatzen digu gai idatzi tamaina 4 baliogabe bezala. 666 00:30:34,800 --> 00:30:38,020 Beste era batera esanda, memoria ukitu izanez gero, Zehazki 4 byteko memoria 667 00:30:38,020 --> 00:30:40,350 behar duzula dute, Valgrind esan dezake. 668 00:30:40,350 --> 00:30:41,660 Tamaina 4 idazteko baliogabea. 669 00:30:41,660 --> 00:30:43,640 Lau byte ukitu duzu duzula izan behar du. 670 00:30:43,640 --> 00:30:44,840 Non asmatu duzue? 671 00:30:44,840 --> 00:30:45,900 Hau edertasuna. 672 00:30:45,900 --> 00:30:50,000 Memoria dot c line 21 da, non izorratu eta horregatik lagungarria da. 673 00:30:50,000 --> 00:30:53,410 Askoz GDB bezala, lagundu ahal izango da seinalatu benetako error hartan. 674 00:30:53,410 --> 00:30:57,170 >> Orain, hau apur bat gehiago da Luze, ez nahasia bada. 675 00:30:57,170 --> 00:31:01,307 40 byte 1 blokeak daude betiko galtzea 1 1 erregistro galduta. 676 00:31:01,307 --> 00:31:02,140 Zer esan nahi du horrek? 677 00:31:02,140 --> 00:31:05,920 Beno, besterik ez dela esan nahi du, galdetu duzu 40 byte eta inoiz ez duzu eman zion atzera. 678 00:31:05,920 --> 00:31:08,930 Malloc deitzen baduzu edo deitzen duzu GetString eta sistema eragilea 679 00:31:08,930 --> 00:31:12,450 Eman inoiz dituzu 40 byte, baina zuk askatua edo memoria askatzen, 680 00:31:12,450 --> 00:31:15,400 eta azoka izango da, inoiz ez dugu Nik erakutsi nola itzuli memoria. 681 00:31:15,400 --> 00:31:17,910 Turns han super bat da funtzio sinple free deitzen. 682 00:31:17,910 --> 00:31:21,170 Argumentu bat, gauza hartzen libratzeko edo eman berreskuratzea nahi duzu, 683 00:31:21,170 --> 00:31:23,430 baina 40 byte, itxuraz, programa honetan 684 00:31:23,430 --> 00:31:27,300 lerroan galdu egin dira C oroimenaren 20 dot. 685 00:31:27,300 --> 00:31:28,650 >> Beraz, ikus dezagun programa hau. 686 00:31:28,650 --> 00:31:31,020 Super alferrikakoa da. 687 00:31:31,020 --> 00:31:33,980 Bakarrik erakusten du Errore hau. 688 00:31:33,980 --> 00:31:34,920 Beraz, dezagun begirada bat. 689 00:31:34,920 --> 00:31:39,920 Hemen nagusia eta nagusiak, oharra, deiak da izeneko funtzio bat f eta gero itzultzen. 690 00:31:39,920 --> 00:31:41,550 Beraz, ez dela interesgarria. 691 00:31:41,550 --> 00:31:42,664 Zer f egin? 692 00:31:42,664 --> 00:31:44,330 Ohartu ez nuen prototipoa handirik jarri. 693 00:31:44,330 --> 00:31:46,520 Kodea mantendu nahi dut Ahalik eta minimoak. 694 00:31:46,520 --> 00:31:49,530 Beraz nagusiaren gainetik f jarri nintzen eta Hori fina, zalantzarik gabe, 695 00:31:49,530 --> 00:31:51,500 bezalako programak laburretan. 696 00:31:51,500 --> 00:31:56,910 Beraz, f ez du ezer egiten, eta ez da ezer egin, baina egin nahi du horrek. 697 00:31:56,910 --> 00:31:59,620 Deklaratzen, askoz ere atsegin hegazti adibidean, 698 00:31:59,620 --> 00:32:02,682 Hori x izeneko erakuslea joan int baten helbidea gordetzeko. 699 00:32:02,682 --> 00:32:03,890 Beraz, hori ezkerraldean da. 700 00:32:03,890 --> 00:32:07,230 Ingelesez, zer da Eskuinaldean egiten? 701 00:32:07,230 --> 00:32:09,770 Edonork? 702 00:32:09,770 --> 00:32:13,665 Zer da hau guretzat egiten? 703 00:32:13,665 --> 00:32:14,651 Bai? 704 00:32:14,651 --> 00:32:16,623 >> Ikusleak: [INAUDIBLE] aldiz int baten tamaina 705 00:32:16,623 --> 00:32:19,175 hau da, 10 aldiz [INAUDIBLE] 706 00:32:19,175 --> 00:32:20,800 DAVID MALAN: Ongi utzi ninduen laburtzeko. 707 00:32:20,800 --> 00:32:25,480 Beraz esleitu espazio nahikoa 10 zenbaki osoen edo 10, zer int baten tamaina da, 708 00:32:25,480 --> 00:32:29,340 lau byte, beraz, 10 aldiz 4 da da 40, hain eskuineko albo dudan 709 00:32:29,340 --> 00:32:33,930 nabarmendutako da ematen dit 40 byte eta Lehenengo byte helbidea gordetzeko 710 00:32:33,930 --> 00:32:34,940 x sartu. 711 00:32:34,940 --> 00:32:38,380 Eta orain, azkenik, eta hemen, non programa hau buggy, zer da 712 00:32:38,380 --> 00:32:41,540 21 linea gaizki oinarritutako logika horretan? 713 00:32:41,540 --> 00:32:45,197 714 00:32:45,197 --> 00:32:46,280 Zer da line 21 gaizki? 715 00:32:46,280 --> 00:32:46,780 Bai? 716 00:32:46,780 --> 00:32:49,550 IKUSLEEN: Ez x [INAUDIBLE] sartu indizea. 717 00:32:49,550 --> 00:32:50,300 DAVID MALAN: Bai. 718 00:32:50,300 --> 00:32:52,270 Nik ez horrelako x sartu indizea. 719 00:32:52,270 --> 00:32:53,850 Beraz, sintaktikoki, OK. 720 00:32:53,850 --> 00:32:56,990 Zer polita da, askoz gusta array baten izena tratatzeko dezakezu 721 00:32:56,990 --> 00:33:01,080 bagina bezala erakuslea da, era berean, ahal erakuslea tratatzeko bagina bezala da, 722 00:33:01,080 --> 00:33:06,425 sorta bat, eta, beraz, sintaktikoki ahal dut x bracket zerbait esaten, tarte x i, 723 00:33:06,425 --> 00:33:07,800 baina 10 problematikoa da. 724 00:33:07,800 --> 00:33:09,096 Zergatik? 725 00:33:09,096 --> 00:33:10,910 >> Ikusleak: ez delako barruan. 726 00:33:10,910 --> 00:33:12,390 >> DAVID MALAN: ez da zatia memoria hori barruan. 727 00:33:12,390 --> 00:33:15,306 Zer da balio handiena beharko nuke kortxete horietan jarriz? 728 00:33:15,306 --> 00:33:16,870 9 0 9 bidez. 729 00:33:16,870 --> 00:33:18,160 Zero indexatzeko delako. 730 00:33:18,160 --> 00:33:20,190 Beraz 0 9 bidez, ondo egongo litzateke. 731 00:33:20,190 --> 00:33:23,960 Tarte 10 ez da ona, eta baina, gogora ekarri arren, aldi bakoitzean 732 00:33:23,960 --> 00:33:27,017 CS50 IDE dezan lortu nahi dudalako akastunak balioak idatziz hutsegiteak 733 00:33:27,017 --> 00:33:29,100 ez du beti lankidetzan aritzeko, eta hain zuzen ere, sarritan 734 00:33:29,100 --> 00:33:31,460 zortea besterik ez delako ez du sistema eragile 735 00:33:31,460 --> 00:33:35,467 nabarituko beraz Inoiz zertxobait pusketa batzuk pasatzeko oroimenaren, 736 00:33:35,467 --> 00:33:38,300 Geratu teknikoki barruan duzulako Zure segmentuan, baina horretan gehiago 737 00:33:38,300 --> 00:33:40,940 sistema eragileak klase batean, eta beraz, honen antzeko zerbait 738 00:33:40,940 --> 00:33:43,000 oso erraz joan oharkabean. 739 00:33:43,000 --> 00:33:48,120 Zure programa da inoiz huts joan koherentziaz baina agian awhile behin. 740 00:33:48,120 --> 00:33:50,610 >> Eta beraz, saia gaitezen valgrind honetan, eta hemen, 741 00:33:50,610 --> 00:33:52,870 non itotzea lortu dugu irteera une arabera. 742 00:33:52,870 --> 00:34:00,810 Beraz, memoria valgrind leak check beteta dot barra memoria berdin. 743 00:34:00,810 --> 00:34:03,040 Eta hemen zergatik I agintzen hau izaten litzateke. 744 00:34:03,040 --> 00:34:05,700 Hona hemen zer valgrind, hona hemen zer Programatzaile bat, urte batzuk ago- 745 00:34:05,700 --> 00:34:08,469 erabaki ideia ona izango litzateke Irteeraren itxura egiteko. 746 00:34:08,469 --> 00:34:09,750 Hargatik hau zentzua. 747 00:34:09,750 --> 00:34:13,120 Beraz, ezker eskuko modu guztiak inolako arrazoirik alboko 748 00:34:13,120 --> 00:34:16,620 Prozesu programaren ID-a da besterik exekutatu dugu, identifikatzaile bakarra 749 00:34:16,620 --> 00:34:18,030 Programaren ran besterik ez dugu. 750 00:34:18,030 --> 00:34:19,738 Hori ezabatu hasita gaude diapositiba, baina ez dago 751 00:34:19,738 --> 00:34:22,190 Hemen ere informazio baliagarria da. 752 00:34:22,190 --> 00:34:24,684 >> Dezagun joan oso goian. 753 00:34:24,684 --> 00:34:25,600 Hemen da non hasi ginen. 754 00:34:25,600 --> 00:34:27,040 Beraz, ez da dena irteera hainbeste. 755 00:34:27,040 --> 00:34:30,429 Hona hemen baliogabea idatzi duten tamaina 4 on line 21ekoa. 756 00:34:30,429 --> 00:34:31,760 Beno, zer izan zen line 21? 757 00:34:31,760 --> 00:34:34,500 21 Line zehazki zen hau eta zentzuzkoa da 758 00:34:34,500 --> 00:34:37,290 nagoela baliodun batean 4 byte idazten nago delako 759 00:34:37,290 --> 00:34:40,389 Zenbaki oso hau jarri nahian, bertan ezer izan zitekeen, 760 00:34:40,389 --> 00:34:42,370 Gertatzen besterik ez da izan zero, baina saiatzen ari naiz 761 00:34:42,370 --> 00:34:44,940 da jarri kokaleku batean horrek ez du nireak. 762 00:34:44,940 --> 00:34:50,900 Gainera, behera hemen, 40 byte bakar batean Bloke betiko record 1 galdu. 763 00:34:50,900 --> 00:34:56,500 Orduan malloc deitu dudalako Hemen, inoiz benetan memoria libratzeko dut. 764 00:34:56,500 --> 00:34:58,140 >> Beraz, nola konpondu dugu? 765 00:34:58,140 --> 00:35:02,970 Dezagun aurrera me eta pixka bat seguruago eta ez 9 han eta utzi me hemen free x. 766 00:35:02,970 --> 00:35:04,820 Hau da, gaur egun dagoen funtzio berria da. 767 00:35:04,820 --> 00:35:11,520 Orain berrabiarazi dut egin memoria dot barra bada, dezagun exekutatu Valgrind berriz, bere gainean, 768 00:35:11,520 --> 00:35:14,990 ahalik eta gehien aprobetxatu nire leiho eta sakatu Sartu. 769 00:35:14,990 --> 00:35:16,900 Orain, ona da. 770 00:35:16,900 --> 00:35:19,590 Berri ona lurperatu dute irteera hori guztia. 771 00:35:19,590 --> 00:35:20,810 Zeure bloke guztiak aske zeuden. 772 00:35:20,810 --> 00:35:23,604 Itzuli dugu zer to zeure da, baina filtrazioak ez dira posible. 773 00:35:23,604 --> 00:35:25,520 Beraz, hau da, beste besterik zure tresna kit tresna 774 00:35:25,520 --> 00:35:30,220 horrek batekin has daiteke Horrelako akatsak aurkituko orain. 775 00:35:30,220 --> 00:35:34,532 >> Baina ikus dezagun zer Gehiago oker joan daiteke. 776 00:35:34,532 --> 00:35:38,890 Dezagun trantsizio orain benetan arazo bat konpontzeko. 777 00:35:38,890 --> 00:35:42,440 Bat alde batera utzita, bada hau bat arinduko du Nahasmena edo tentsioa pixka, 778 00:35:42,440 --> 00:35:43,430 hau da, gaur egun dibertigarria. 779 00:35:43,430 --> 00:35:46,400 780 00:35:46,400 --> 00:35:46,900 Bai. 781 00:35:46,900 --> 00:35:49,040 Hori nahiko ona. 782 00:35:49,040 --> 00:35:50,890 Erakusleak daudelako helbideak eta helbideak 783 00:35:50,890 --> 00:35:53,098 dira, oro har, konbentzio hamaseitarra idatzita. 784 00:35:53,098 --> 00:35:54,650 Ha, ha, hau dibertigarria da orain. 785 00:35:54,650 --> 00:35:58,390 Dena dela, beraz dezagun orain benetan arazo bat konpontzeko. 786 00:35:58,390 --> 00:36:00,840 Hau izan da super, super behe-mailako beraz, orain arte, 787 00:36:00,840 --> 00:36:03,950 eta, egia esan, ez erabilgarria dezakegu behe-mailako xehetasun hauekin gauzak. 788 00:36:03,950 --> 00:36:06,710 >> Beraz, aste gutxi batzuk sartu ditugu Duela array baten nozioa. 789 00:36:06,710 --> 00:36:09,177 Array bat izan zen, polita delako zaila da garbitzeko gure kodea 790 00:36:09,177 --> 00:36:11,760 bat idatzi nahi dugunean Anitz ikasleekin programa 791 00:36:11,760 --> 00:36:15,270 edo izenak eta etxe anitz eta Logela eta institutu eta hori guztia, 792 00:36:15,270 --> 00:36:19,430 Guztia gehiago gorde ahal izan genuen garbian array baten barruan. 793 00:36:19,430 --> 00:36:23,039 Baina arazotxo bat proposatzeko array baten orain arte. 794 00:36:23,039 --> 00:36:26,080 Nik ez baduzu ere pairatu it yourself programa batean, besterik senari, 795 00:36:26,080 --> 00:36:30,870 zer gauza txarra da array bat buruz, agian? 796 00:36:30,870 --> 00:36:32,337 Zurrumurru batzuk entzuten dut. 797 00:36:32,337 --> 00:36:34,170 Ikusleak: Zaila da tamaina aldatzeko. 798 00:36:34,170 --> 00:36:36,128 DAVID MALAN: Oso zaila da tamaina aldatzeko. 799 00:36:36,128 --> 00:36:38,660 Ezin duzu tamaina aldatzeko array baten, hain zuzen ere, per se 800 00:36:38,660 --> 00:36:43,040 C. ere beste array esleitu ahal izango duzu, guztia mugitu zaharraren 801 00:36:43,040 --> 00:36:45,380 berria, eta orain sartu beste tarte batzuk, 802 00:36:45,380 --> 00:36:47,469 baina ez da izan bezala bat Java edo Python bezalako hizkuntza 803 00:36:47,469 --> 00:36:49,760 edo beste edozein zenbaki horrekin hizkuntzetan dituzu batzuk 804 00:36:49,760 --> 00:36:52,070 Izan ezagutzen non duzu besterik gabe, gorde daiteke gauzak gehituz 805 00:36:52,070 --> 00:36:53,930 ad array baten amaiera emateko nauseam. 806 00:36:53,930 --> 00:36:57,880 When sorta bat behar duzu tamaina 6, bere tamaina da, 807 00:36:57,880 --> 00:37:01,970 eta hainbeste ideia lehenago bezala tamaina jakin bat buffer bat izatea, 808 00:37:01,970 --> 00:37:05,940 to atea asmatzen duzu zer tamaina ez dela nahi duzu? 809 00:37:05,940 --> 00:37:07,880 Handiegia Asmatzen baduzu, espazioa alferrik galtzen ari zara. 810 00:37:07,880 --> 00:37:10,950 Txikiegia asmatzen baduzu, ezin diren datuak gordetzeko, gutxienez 811 00:37:10,950 --> 00:37:12,940 Asko gehiago lan egin gabe. 812 00:37:12,940 --> 00:37:18,180 >> Beraz, gaur egun, erakusleak esker, ahal dugun hasteko gure pertsonalizatuak batera stitching 813 00:37:18,180 --> 00:37:20,989 Datu-egitura, eta in Izan ere, hemen zerbait da 814 00:37:20,989 --> 00:37:23,030 itxura apur bat gehiago Lehen begiratuan críptica, 815 00:37:23,030 --> 00:37:26,440 baina hau ez da bat lotuta zer deitu dugu zerrenda, eta bere izena laburbilduko mota 816 00:37:26,440 --> 00:37:26,940 da. 817 00:37:26,940 --> 00:37:29,550 Zenbakien zerrenda bat da, edo in Kasu honetan, zenbakien zerrenda, 818 00:37:29,550 --> 00:37:33,480 baina ezer zerrenda bat izan zitekeen, baina Honez lotuta elkarrekin geziak bidez, 819 00:37:33,480 --> 00:37:36,380 eta besterik etxebizitza bat hartu zer teknika 820 00:37:36,380 --> 00:37:38,310 dira gai izan behar dugu joan batu, 821 00:37:38,310 --> 00:37:42,540 moduko mataza batekin krispetak bezala, a lotuta zerrendak laukizuzenak hemen? 822 00:37:42,540 --> 00:37:43,936 Bere zenbakiak? 823 00:37:43,936 --> 00:37:45,560 Zein da azpiko hizkuntza Ezaugarri? 824 00:37:45,560 --> 00:37:46,350 >> Ikusleak: erakuslea. 825 00:37:46,350 --> 00:37:47,308 >> DAVID MALAN: erakuslea. 826 00:37:47,308 --> 00:37:51,700 Beraz geziak horietako bakoitzaren hemen adierazten erakuslea edo besterik helbide bat. 827 00:37:51,700 --> 00:37:54,590 Beraz, beste era batera esanda, nahi badut zenbakien zerrenda bat gordetzeko, 828 00:37:54,590 --> 00:37:59,040 Ezin dut besterik gorde nahi badut hazten eta txikitu gaitasuna 829 00:37:59,040 --> 00:38:00,990 array batean nire datu egitura. 830 00:38:00,990 --> 00:38:03,000 Beraz, apur bat izan behar dut Sofistikazio gehiago, 831 00:38:03,000 --> 00:38:05,720 baina konturatu Irudian, mota iradokitzen 832 00:38:05,720 --> 00:38:08,650 Oraintxe lortu hariak gutxi balitz dagoela dena lotu elkarrekin, 833 00:38:08,650 --> 00:38:13,100 Seguru asko ez da horren gogorra espazio egiteko laukizuzenak horietako bi arteko 834 00:38:13,100 --> 00:38:16,750 edo nodo horietako bi, dugu hasteko moduan horiek deituz, nodo berri bat jarri, 835 00:38:16,750 --> 00:38:19,547 eta gero hari berri batzuk, besterik ez hiru planotan ditch elkarrekin, 836 00:38:19,547 --> 00:38:22,880 Lehenengo bat, azkena, eta bat erdialdean txertatuko hori besterik ez. 837 00:38:22,880 --> 00:38:26,000 >> Eta, hain zuzen lotutako zerrenda bat, array bat bezala, dinamikoa da. 838 00:38:26,000 --> 00:38:27,840 Hazten daiteke eta, ahal txikitu eta ez duzu 839 00:38:27,840 --> 00:38:32,434 ezagutu edo aldez nola zaintzen dute gordetzeko dituzun datuak askoz bazoazela, 840 00:38:32,434 --> 00:38:35,600 baina bihurtzen da apur bat izan behar dugu hau nola bete esaten ibili. 841 00:38:35,600 --> 00:38:39,070 Beraz, lehen kontuan hartu nola gauzatu dugu utzi laukizuzenak txiki horietako bat. 842 00:38:39,070 --> 00:38:40,690 Oso erraza da int bat ezartzeko. 843 00:38:40,690 --> 00:38:44,000 Esan besterik ez duzu int n eta gero 4 byte int bat lortuko duzu, 844 00:38:44,000 --> 00:38:49,089 baina nola ez int bat lortu dut, deitu n, eta, ondoren, erakuslea, dezagun hurrengo deitu. 845 00:38:49,089 --> 00:38:50,880 Horiek deitu genezake Gauzak ezer nahi dugu 846 00:38:50,880 --> 00:38:53,590 baina datuak ohitura egitura bat behar dut. 847 00:38:53,590 --> 00:38:54,257 Bai? 848 00:38:54,257 --> 00:38:57,020 >> Ikusleak: AMPERSAND [INAUDIBLE]. 849 00:38:57,020 --> 00:39:00,940 >> DAVID MALAN: Beraz, ampersand dugu egingo da erabiltzeko nodo baten helbidea lortu potentzialki. 850 00:39:00,940 --> 00:39:02,740 Baina beste behar dugu C ezaugarririk ordenan 851 00:39:02,740 --> 00:39:06,700 niri emateko, sortzeko gaitasuna Laukizuzen ohitura hori, ohitura hau 852 00:39:06,700 --> 00:39:08,919 aldakorra, oroimenean izango bada. 853 00:39:08,919 --> 00:39:09,710 Ikusleak: egiturari. 854 00:39:09,710 --> 00:39:10,626 DAVID MALAN: egiturari. 855 00:39:10,626 --> 00:39:14,310 Astetik Gogoratu, sartu dugu Eta egitura, keyword nahiko simple hau 856 00:39:14,310 --> 00:39:16,254 horrelako gauzak egitea ahalbidetzen digu. 857 00:39:16,254 --> 00:39:18,420 C ez zuen datuak bat etorri egitura ikaslea izeneko. 858 00:39:18,420 --> 00:39:22,190 Dator int eta karroza eta char eta harekin batera hala nola, baina ez du ikaslea etorri, 859 00:39:22,190 --> 00:39:26,750 baina ikasleari datu-mota bat sortu ahal izango dugu, ikaslea egitura bat, sintaxia honekin 860 00:39:26,750 --> 00:39:27,250 hemen. 861 00:39:27,250 --> 00:39:28,350 Eta hau ikusiko duzu, behin eta berriro. 862 00:39:28,350 --> 00:39:30,426 Beraz, ez kezkatu keywords memorizatu, 863 00:39:30,426 --> 00:39:33,300 baina keyword, hori da garrantzitsua da Izan ere, esan dugun bezala, egiturari 864 00:39:33,300 --> 00:39:37,590 eta, ondoren, ikaslea deitzen dugu eta barruan Ikaslearen izena eta etxe bat izan zen 865 00:39:37,590 --> 00:39:39,390 edo gela bat edo antzekoak. 866 00:39:39,390 --> 00:39:41,980 >> Eta beraz, orain, gaur egun, dezagun proposatzen hau. 867 00:39:41,980 --> 00:39:45,240 Gehitu dut hitz batzuk egin, baina nahi badut laukizuzena hori gauzatu ahal izateko 868 00:39:45,240 --> 00:39:48,440 bai int eta lortu erakuslea, badakizu zer, ez naiz 869 00:39:48,440 --> 00:39:51,540 nodo izeneko egitura bat aldarrikatzen joan. 870 00:39:51,540 --> 00:39:55,630 Nago, halaber, horren barruan, esango nodo bat, laukizuzena, int bat dauka 871 00:39:55,630 --> 00:39:59,730 eta ikusiko dugu nola deitu n eta hurrengo erakuslea dauka. 872 00:39:59,730 --> 00:40:02,540 Eta hau da, pixka bat xeheak, baina hari buruzko uste baduzu, 873 00:40:02,540 --> 00:40:07,300 Irudian ziren geziak une bat duela zer datu-mota daude? 874 00:40:07,300 --> 00:40:12,330 Geziek horietako bakoitza seinalatuz zein datu-egitura mota? 875 00:40:12,330 --> 00:40:14,332 Ez da besterik per se int bat seinalatuz. 876 00:40:14,332 --> 00:40:16,165 Honez seinalatuz Gauza angeluzuzena osoak 877 00:40:16,165 --> 00:40:18,720 eta gauza angeluzuzenetan, esan genuen, hau da, nodo bat deitzen. 878 00:40:18,720 --> 00:40:21,720 Eta beraz, mota horretako daukagu errekurtsiboki definituko horrelako 879 00:40:21,720 --> 00:40:26,270 Nodo bat dela, esaten dugu, izeneko n int bat edukiko du 880 00:40:26,270 --> 00:40:31,070 hurrengo eta eta erakuslea izeneko Datuen egitura mota zein 881 00:40:31,070 --> 00:40:35,770 erakuslea duten itxuraz struct nodo izango. 882 00:40:35,770 --> 00:40:41,550 >> Beraz, hau da annoyingly xeheak eta besterik pedante izan nahi du, 883 00:40:41,550 --> 00:40:44,100 arrazoia ezin dugu zergatik besterik esan honi, Egia 884 00:40:44,100 --> 00:40:46,860 Itxura asko gehiago irakurgarria, dago Gogoratu C irakurri duelako 885 00:40:46,860 --> 00:40:48,710 Gauzak goitik behera, ezkerretik eskuinera. 886 00:40:48,710 --> 00:40:54,120 Ez da puntu eta koma lortu arte the keyword nodo benetan existitzen dela. 887 00:40:54,120 --> 00:40:57,980 Beraz moduko hori izatea nahi badugu erreferentziazko zikliko datuen barruan 888 00:40:57,980 --> 00:41:02,120 egitura, hau egin behar dugu, non egitura nodo esaten dugu goiko aldean, eta horrek 889 00:41:02,120 --> 00:41:06,770 hau deskribatzeko modua luzeagoa ematen digu gauza, ondoren, barruan egitura nodo esaten dugu, 890 00:41:06,770 --> 00:41:09,560 eta, ondoren, oso azken lerroan esaten dugu, eskubidea, C, bide batez, 891 00:41:09,560 --> 00:41:12,060 deitu madarikatua honetan guztian Gauza nodo bat eta gelditu 892 00:41:12,060 --> 00:41:14,360 keyword struct guztiz erabiliz. 893 00:41:14,360 --> 00:41:18,030 Beraz, hau da besterik Ordena sintaktikorik trick da, azken finean, aukera ematen digu sortu 894 00:41:18,030 --> 00:41:21,370 itxura zehazki honen antzeko zerbait. 895 00:41:21,370 --> 00:41:25,010 >> Beraz, gaur egun, bere gain hartzen badugu, ahal dugu Gauza hau ezartzeko C, 896 00:41:25,010 --> 00:41:28,040 nola egiten dugu benetan hasteko hura zeharkatzean? 897 00:41:28,040 --> 00:41:32,360 Beno, hain zuzen ere, guztiak egin behar duguna da Batetik bestera joateko ezkerretik eskuinera eta besterik 898 00:41:32,360 --> 00:41:35,960 motatako txertatu nodo nodo edo ezabatu edo bilatu gauzak egiteko lekuan nahi dugu, 899 00:41:35,960 --> 00:41:39,560 baina hori egin ahal izateko, goazen aurrera eta egin Gauzak apur bat gehiago benetako delako honetan 900 00:41:39,560 --> 00:41:42,560 du super behe-mailako egon orain arte. 901 00:41:42,560 --> 00:41:45,700 Egingo luke edonork literalki lehena izateko? 902 00:41:45,700 --> 00:41:46,200 ONDO DA. 903 00:41:46,200 --> 00:41:47,092 Goazen sortu. 904 00:41:47,092 --> 00:41:47,800 Nola deitzen zara? 905 00:41:47,800 --> 00:41:48,499 >> DAVID: David. 906 00:41:48,499 --> 00:41:49,290 DAVID MALAN: David. 907 00:41:49,290 --> 00:41:49,998 Urte askotarako. 908 00:41:49,998 --> 00:41:50,960 Ni ere. 909 00:41:50,960 --> 00:41:52,450 Ados. 910 00:41:52,450 --> 00:41:53,990 Eta zenbaki bat 9 behar dugu. 911 00:41:53,990 --> 00:41:55,240 Ez bezain ona lehen bezala, agian. 912 00:41:55,240 --> 00:41:56,430 Ados, 9. zenbakian. 913 00:41:56,430 --> 00:41:59,667 Zenbaki A 17, mesedez. 914 00:41:59,667 --> 00:42:01,000 Let me atzera pixka bat urrunago. 915 00:42:01,000 --> 00:42:03,980 Zenbakia 22, mesedez, eta nola urrunago atzera buruz 916 00:42:03,980 --> 00:42:06,344 Edozein esku ikusten dut bada argi guztiak edo bat ere ez. 917 00:42:06,344 --> 00:42:08,010 Norbaitek bertan boluntario ari. 918 00:42:08,010 --> 00:42:08,968 Ez Etorri nahi al duzu? 919 00:42:08,968 --> 00:42:10,450 Zure forearm da indarrez gora. 920 00:42:10,450 --> 00:42:12,340 Ados, 17. 921 00:42:12,340 --> 00:42:13,690 22. 922 00:42:13,690 --> 00:42:15,120 26 beherantz egiten ari da. 923 00:42:15,120 --> 00:42:18,450 Beste inork gustatzen forcefully-- Goazen sortu. 924 00:42:18,450 --> 00:42:21,030 Benetako boluntario bat. 925 00:42:21,030 --> 00:42:23,330 >> Beraz, oso azkar, bada Mutil antolatu lezake 926 00:42:23,330 --> 00:42:26,550 Gustatzen zeuen buruak besterik pantailan agertzen diren nodoak. 927 00:42:26,550 --> 00:42:27,510 Eskerrik asko. 928 00:42:27,510 --> 00:42:29,234 Eta 26 izango zara. 929 00:42:29,234 --> 00:42:30,650 Eskubidea eta azkar aurkezpenak guztiak. 930 00:42:30,650 --> 00:42:32,139 Beraz, David naiz eta zuk ere? 931 00:42:32,139 --> 00:42:32,680 DAVID: David. 932 00:42:32,680 --> 00:42:33,721 DAVID MALAN: Eta zuk dira? 933 00:42:33,721 --> 00:42:34,229 JAKE: Jake. 934 00:42:34,229 --> 00:42:34,729 SUE: Sue. 935 00:42:34,729 --> 00:42:35,229 ALEX: Alex. 936 00:42:35,229 --> 00:42:36,475 RAPHAEL: Raphael. 937 00:42:36,475 --> 00:42:37,100 TAYLOR: Taylor. 938 00:42:37,100 --> 00:42:37,466 DAVID MALAN: Taylor. 939 00:42:37,466 --> 00:42:37,590 Bikain. 940 00:42:37,590 --> 00:42:39,810 Beraz, hauek dira gure boluntarioek gaurko eta aurrera 941 00:42:39,810 --> 00:42:43,090 eta mugitzeko modu hori apur bat, eta besterik gabe, aurrera eta mantentzeko 942 00:42:43,090 --> 00:42:47,024 Zure zenbakiak zara eskuan gisa edo zure lehen zeinua, eta zure ezkerreko eskua erabiliz, 943 00:42:47,024 --> 00:42:48,940 joan aurretik eta ezartzeko geziak horiek, besterik 944 00:42:48,940 --> 00:42:51,360 zure ezkerreko literalki, beraz, seinalatu behar duzuna seinalatuz 945 00:42:51,360 --> 00:42:54,610 tan, eta eman zeure burua gela batzuk, beraz, dugu ikusmen ikusiko besoak benetan 946 00:42:54,610 --> 00:42:58,120 aldeko dira, eta apuntatu ahal izango duzu Sort lurrean gauza ederra da. 947 00:42:58,120 --> 00:43:03,040 >> Hortaz, hona lotuta inork zerrenda bat dugu, bi, hiru, lau, bost nodo hasiera batean, 948 00:43:03,040 --> 00:43:05,860 eta konturatu berezi hau daukagu Hasieran nor erakuslea 949 00:43:05,860 --> 00:43:09,770 gakoa segimendua dugulako osoari luzera zerrendaren nolabait. 950 00:43:09,770 --> 00:43:13,590 Mutil hauek, geratzen ari dira, nahiz eskuinera, atzera memorian atzera, 951 00:43:13,590 --> 00:43:15,950 Egia esan, ezin dira izan lekutan ordenagailuaren memorian. 952 00:43:15,950 --> 00:43:18,240 Beraz, mutil hauek izan liteke edonon zutik oholtza gainean 953 00:43:18,240 --> 00:43:20,960 eta hori da isuna, hain luze Oraindik dute benetan, beste bat seinalatuz, 954 00:43:20,960 --> 00:43:22,770 baina gauzak mantentzeko garbia eta erraza, dizkizugu 955 00:43:22,770 --> 00:43:25,728 besterik marraztu horiek ezkerrean bezala eskubidea hau, baina ez dago hutsuneak masiboa izan daiteke 956 00:43:25,728 --> 00:43:26,790 nodes dutenen artean. 957 00:43:26,790 --> 00:43:30,710 >> Orain, egia esan batzuk txertatu nahi badut balio berria, dezagun aurrera, eta hori egin. 958 00:43:30,710 --> 00:43:33,720 Aukera dugu orain Nodo bat hautatzeko. 959 00:43:33,720 --> 00:43:39,820 Esan dezagun hasteko off mallocing 55 batera. 960 00:43:39,820 --> 00:43:41,320 Litzateke axola norbait malloc izatea? 961 00:43:41,320 --> 00:43:42,280 Ados, goazen gora. 962 00:43:42,280 --> 00:43:42,992 Nola deitzen zara? 963 00:43:42,992 --> 00:43:43,700 RAINBOW: Rainbow. 964 00:43:43,700 --> 00:43:44,050 DAVID MALAN: Rainbow? 965 00:43:44,050 --> 00:43:44,810 Ados. 966 00:43:44,810 --> 00:43:46,600 Malloc Rainbow. 967 00:43:46,600 --> 00:43:47,450 Goazen sortu. 968 00:43:47,450 --> 00:43:51,610 Beraz, orain, geure buruari galdetu behar dugu algorithmically non 55 jarri ahal izango dugu. 969 00:43:51,610 --> 00:43:53,610 Beraz, guztiok dakigu, jakina, bertan seguruenik 970 00:43:53,610 --> 00:43:55,401 dagokio saiatzen ari gara bada hau horrela antolatu mantentzeko 971 00:43:55,401 --> 00:43:58,299 eta zuk mutil bat hartu balute atzerapausoa beraz, ez ditugu erortzen 972 00:43:58,299 --> 00:43:59,590 fasean, handia izango litzateke. 973 00:43:59,590 --> 00:44:01,420 Beraz, benetan, Rainbow, berriro hasi hemen nirekin, 974 00:44:01,420 --> 00:44:04,200 Ordenagailua orain ahal bezala dugulako aldagai bakarra ikusiko du aldi berean. 975 00:44:04,200 --> 00:44:05,190 Beraz, hau lehen nodoaren bada. 976 00:44:05,190 --> 00:44:07,160 Ohartu ez zuen nodo bat, erakuslea besterik ez dela, 977 00:44:07,160 --> 00:44:10,270 eta hori da, zergatik marrazten zuen izan bakarrik erakuslea baten tamaina, ez 978 00:44:10,270 --> 00:44:11,780 laukizuzenak osoa horietakoa. 979 00:44:11,780 --> 00:44:16,650 Beraz, goazen den bakoitzean egiaztatu joan iterazio da 9 baino 55 gutxiago? 980 00:44:16,650 --> 00:44:17,150 No. 981 00:44:17,150 --> 00:44:19,060 17 baino gutxiago 55 da? 982 00:44:19,060 --> 00:44:19,720 No. 983 00:44:19,720 --> 00:44:20,800 22 baino gutxiago? 984 00:44:20,800 --> 00:44:22,020 26 baino gutxiago? 985 00:44:22,020 --> 00:44:23,390 34 baino gutxiago? 986 00:44:23,390 --> 00:44:25,890 Eta, beraz, gaur egun, jakina, Rainbow amaieran dagokio. 987 00:44:25,890 --> 00:44:27,270 Beraz, argi eta garbi, eta zer zure izen-abizenak, Taylor zen? 988 00:44:27,270 --> 00:44:27,895 >> TAYLOR: Taylor. 989 00:44:27,895 --> 00:44:32,510 DAVID MALAN: Beraz, Taylor-en artean ezkerreko eta Rainbow eskuetan hemen, 990 00:44:32,510 --> 00:44:38,324 bere eskua zer amaitzen beharrak aginduko 55 txertatzeko zerrenda honetan? 991 00:44:38,324 --> 00:44:39,240 Zer egin behar dugu? 992 00:44:39,240 --> 00:44:39,700 Bai? 993 00:44:39,700 --> 00:44:41,140 >> Ikusleak: Taylor-en eskutik ezker azpimarratu behar da. 994 00:44:41,140 --> 00:44:41,680 >> DAVID MALAN: Zehazki. 995 00:44:41,680 --> 00:44:43,800 Beraz, nodo bat txertatzeak Zerrenda amaieran sartu 996 00:44:43,800 --> 00:44:47,140 nahiko erraza delako Taylor besterik , seinalatu ordez beheko aldean ditu 997 00:44:47,140 --> 00:44:49,640 edo dugu nulua deitu, null eza moduko da 998 00:44:49,640 --> 00:44:51,640 erakuslea edo berezi baten zero erakuslea, zaren 999 00:44:51,640 --> 00:44:53,740 zure ezkerreko seinalatzeko joan eskuko Rainbow eta gero Rainbow at, 1000 00:44:53,740 --> 00:44:55,910 Non egin behar zure ezkerreko alde batetik, seguruenik seinalatu? 1001 00:44:55,910 --> 00:44:56,570 Down. 1002 00:44:56,570 --> 00:45:00,140 Ez da ona, bere eskuan bada moduko off hemen edo sort edozein seinalatuz 1003 00:45:00,140 --> 00:45:00,640 horrek modu. 1004 00:45:00,640 --> 00:45:02,407 Hori kontuan hartu beharko litzateke zabor balioa, 1005 00:45:02,407 --> 00:45:04,240 baina puntu bada zuen balio ezagun batzuk, dugu 1006 00:45:04,240 --> 00:45:07,360 deitu zero edo hutsa, OK hau ere, epe bat izan dugulako 1007 00:45:07,360 --> 00:45:09,390 eta badakigu zerrendan orain dela betea. 1008 00:45:09,390 --> 00:45:11,550 >> Beraz, zein da beste Kasu nahiko erraza? 1009 00:45:11,550 --> 00:45:13,125 Ezin izan malloc dugu 5? 1010 00:45:13,125 --> 00:45:14,010 Goazen sortu. 1011 00:45:14,010 --> 00:45:14,782 Nola deitzen zara? 1012 00:45:14,782 --> 00:45:15,490 TIFFANY: Tiffany. 1013 00:45:15,490 --> 00:45:16,000 DAVID MALAN: sentitzen dut? 1014 00:45:16,000 --> 00:45:16,470 TIFFANY: Tiffany. 1015 00:45:16,470 --> 00:45:16,880 DAVID MALAN: Tiffany. 1016 00:45:16,880 --> 00:45:17,110 Ados. 1017 00:45:17,110 --> 00:45:19,071 Tiffany izan malloced 5 balio du. 1018 00:45:19,071 --> 00:45:19,570 Goazen sortu. 1019 00:45:19,570 --> 00:45:23,820 Bat, hau da, nahiko erraza da ere, baina kontuan hartu dezagun eragiketak ordena orain. 1020 00:45:23,820 --> 00:45:25,820 Nahiko erraza izan da Taylor amaieran. 1021 00:45:25,820 --> 00:45:30,302 9 baino gutxiago, jakina da, 5. zenbakian eta, beraz, David ditugu, Tiffany ditugu, 1022 00:45:30,302 --> 00:45:31,260 eta zer da zure izena? 1023 00:45:31,260 --> 00:45:31,680 >> JAKE: Jake. 1024 00:45:31,680 --> 00:45:32,470 >> DAVID MALAN: Jake. 1025 00:45:32,470 --> 00:45:34,300 Tiffany, Jake, eta David. 1026 00:45:34,300 --> 00:45:36,580 Norena da lehen eguneratu behar du lehenengo? 1027 00:45:36,580 --> 00:45:39,260 1028 00:45:39,260 --> 00:45:40,590 Zer ikusi, zer egin nahi duzu? 1029 00:45:40,590 --> 00:45:45,244 Ez da, pare bat modu posible, baina ez da ere modu gehiago oker bat edo. 1030 00:45:45,244 --> 00:45:46,620 >> Ikusleak: kontatuta hasi. 1031 00:45:46,620 --> 00:45:47,800 >> DAVID MALAN: kontatuta hasi. 1032 00:45:47,800 --> 00:45:49,008 Nor dago kontatuta hemen, ba? 1033 00:45:49,008 --> 00:45:49,700 Ikusleak: Lehenengoa. 1034 00:45:49,700 --> 00:45:50,366 >> DAVID MALAN: OK. 1035 00:45:50,366 --> 00:45:53,781 Beraz, lehenengo hasi eta non egiten duzu Nahi eguneratzeko David eskuetan izan? 1036 00:45:53,781 --> 00:45:54,780 Ikusleak: Hacia 5ean. 1037 00:45:54,780 --> 00:45:55,446 DAVID MALAN: OK. 1038 00:45:55,446 --> 00:45:59,026 Beraz, David, bost puntu edo Tiffany hemen, eta orain? 1039 00:45:59,026 --> 00:46:01,072 >> Ikusleak: Tiffany 9 puntu? 1040 00:46:01,072 --> 00:46:04,030 DAVID MALAN: Perfect, hegazti-en izan ezik Burua mota besterik erori egin da, ezta? 1041 00:46:04,030 --> 00:46:06,820 Zer da gaizki delako Argazki hau literalki? 1042 00:46:06,820 --> 00:46:08,070 Ikusleak: Nothing seinalatuz. 1043 00:46:08,070 --> 00:46:09,945 DAVID MALAN: Ezer ez da orain Jake seinalatuz. 1044 00:46:09,945 --> 00:46:13,360 Nik literalki umezurtz utzi dugu 9 eta 17, eta literalki dugu 1045 00:46:13,360 --> 00:46:18,450 memoria hori guztia leaked, zeren David eskua eguneratzeko lehen, hori da 1046 00:46:18,450 --> 00:46:21,660 Fina neurrian zuzentasunez duenez orain Tiffany seinalatuz, 1047 00:46:21,660 --> 00:46:25,410 baina inork ez balute den Jake amaitzen prospektiba 1048 00:46:25,410 --> 00:46:27,490 gero, galdu genuen Zerrenda hori oso-osorik. 1049 00:46:27,490 --> 00:46:28,200 Hargatik desegin. 1050 00:46:28,200 --> 00:46:30,950 Beraz, hori gauza ona izan behar da bidaia baino gehiago, baina dezagun zuzentzeko orain. 1051 00:46:30,950 --> 00:46:33,624 Zer egin behar dugu lehenengo ordez? 1052 00:46:33,624 --> 00:46:34,124 Bai? 1053 00:46:34,124 --> 00:46:35,791 >> Ikusleak: Tiffany 9 at seinalatu behar? 1054 00:46:35,791 --> 00:46:37,582 DAVID MALAN: ezin dut zuregana hurbilduko hori lortzeko. 1055 00:46:37,582 --> 00:46:38,720 Nor 9 at seinalatu behar? 1056 00:46:38,720 --> 00:46:39,220 >> Ikusleak: Tiffany. 1057 00:46:39,220 --> 00:46:39,390 >> DAVID MALAN: Ondo da. 1058 00:46:39,390 --> 00:46:41,200 Beraz Tiffany 9 lehen puntua beharko lukete. 1059 00:46:41,200 --> 00:46:43,550 Beraz Tiffany hartu behar balio berdina dagoelako on 1060 00:46:43,550 --> 00:46:45,820 David den, badirudi une batez erredundanteak, 1061 00:46:45,820 --> 00:46:48,820 baina hori da orain delako, bigarren urratsa, Daviden eskuz eguneratu ahal izango dugu 1062 00:46:48,820 --> 00:46:52,680 Tiffany egiten diete erreferentzia, eta, ondoren, bada Mota besterik garbi dugun gauza bat ireki 1063 00:46:52,680 --> 00:46:55,740 hau da udaberri-mota bagina bezala, orain dela-sartzeak zuzena da hori. 1064 00:46:55,740 --> 00:46:56,700 Beraz, bikain. 1065 00:46:56,700 --> 00:46:57,970 Beraz, gaur egun ia ez gara han. 1066 00:46:57,970 --> 00:47:01,075 Dezagun txertatzeko final bat 20 balio bezala balio. 1067 00:47:01,075 --> 00:47:03,010 Final boluntario bat malloc bagenu? 1068 00:47:03,010 --> 00:47:04,140 Goazen sortu. 1069 00:47:04,140 --> 00:47:06,224 Beraz, hau da, apur bat gehiago delikatua. 1070 00:47:06,224 --> 00:47:08,390 Baina benetan, kodea gaude idatziz, ahoz nahiz, 1071 00:47:08,390 --> 00:47:10,610 besterik mordo bat izatea bezala da baldintzetan orain, ezta? 1072 00:47:10,610 --> 00:47:12,318 Baldintza bat izan dugu dagokion egiaztatzen 1073 00:47:12,318 --> 00:47:13,840 Amaieran, agian, hasieran. 1074 00:47:13,840 --> 00:47:15,940 Begizta nolabaiteko behar dugu erdian lekua aurkitzeko. 1075 00:47:15,940 --> 00:47:17,400 Beraz, egin dezagun hau zer da zure izena utzi? 1076 00:47:17,400 --> 00:47:17,700 >> ERIC: Eric. 1077 00:47:17,700 --> 00:47:18,340 >> DAVID MALAN: Eric? 1078 00:47:18,340 --> 00:47:18,660 Eric. 1079 00:47:18,660 --> 00:47:19,368 Urte askotarako. 1080 00:47:19,368 --> 00:47:20,490 Beraz, 20 ditugu. 1081 00:47:20,490 --> 00:47:21,220 Bost baino gutxiago? 1082 00:47:21,220 --> 00:47:21,530 No. 1083 00:47:21,530 --> 00:47:22,160 Bederatzi baino gutxiago? 1084 00:47:22,160 --> 00:47:22,410 No. 1085 00:47:22,410 --> 00:47:23,050 17 baino gutxiago? 1086 00:47:23,050 --> 00:47:23,550 No. 1087 00:47:23,550 --> 00:47:23,740 ONDO DA. 1088 00:47:23,740 --> 00:47:25,701 Hemen kidea da eta Zure izenak dira berriz ere? 1089 00:47:25,701 --> 00:47:26,200 SUE: Sue. 1090 00:47:26,200 --> 00:47:26,880 DAVID MALAN: Sue. 1091 00:47:26,880 --> 00:47:27,379 ALEX: Alex. 1092 00:47:27,379 --> 00:47:28,790 DAVID MALAN: Sue, Alex, eta? 1093 00:47:28,790 --> 00:47:29,290 ERIC: Eric. 1094 00:47:29,290 --> 00:47:30,120 DAVID MALAN: Eric. 1095 00:47:30,120 --> 00:47:32,140 Zeinen eskuak eguneratzen lehen urratsak emateko behar? 1096 00:47:32,140 --> 00:47:32,930 >> Ikusleak: Eric. 1097 00:47:32,930 --> 00:47:33,429 ONDO DA. 1098 00:47:33,429 --> 00:47:35,200 Beraz, Eric non amaitzen behar? 1099 00:47:35,200 --> 00:47:35,930 22 etan. 1100 00:47:35,930 --> 00:47:36,430 Ona. 1101 00:47:36,430 --> 00:47:38,180 Eta orain zer? 1102 00:47:38,180 --> 00:47:40,800 Sue gero Eric amaitzen dezake eta orain, you guys bada besterik 1103 00:47:40,800 --> 00:47:44,077 gela batzuk, eta hori gauza ederra egiteko ikusmen, orain txertatzeko egin dugu. 1104 00:47:44,077 --> 00:47:47,160 Beraz, galdera bat kontuan hartu orain baina eskerrak, beraz, gure boluntarioek askoz. 1105 00:47:47,160 --> 00:47:48,090 Oso ondo egiten. 1106 00:47:48,090 --> 00:47:50,831 Gorde dezakezu, nahi izanez gero. 1107 00:47:50,831 --> 00:47:54,140 Eta ederra parting opari bat bada dugun bakoitzaren gustuko duzuna estresa baloi bat hartu. 1108 00:47:54,140 --> 00:47:56,030 Utz iezaguzu me honetan behera. 1109 00:47:56,030 --> 00:47:58,430 Beraz, zer eramateko da? 1110 00:47:58,430 --> 00:48:02,430 Hau dela dirudi harrigarria izango da gaur egun dugun heinean 1111 00:48:02,430 --> 00:48:06,360 alternatibo bat aurkeztu bati array hori ez da hain ezinik 1112 00:48:06,360 --> 00:48:07,780 tamaina finko batzuk array bat. 1113 00:48:07,780 --> 00:48:09,380 Dinamikoki hazi daitezen. 1114 00:48:09,380 --> 00:48:13,220 >> Baina genuen bezala askoz Nik aste ikusi Iraganean, inoiz ez dugu ezer lortuko, doan, 1115 00:48:13,220 --> 00:48:15,740 bezala, ziur aski, ez merkataritza-off hemen. 1116 00:48:15,740 --> 00:48:18,890 Beraz, bat lotuta hankaz batekin zerrenda, dinamismoa da hau? 1117 00:48:18,890 --> 00:48:21,590 Gaitasun hori eta hazten Egia, egin izan dugu ezabatu 1118 00:48:21,590 --> 00:48:23,570 eta behar den bezala txikitu ahal izan genuen. 1119 00:48:23,570 --> 00:48:24,710 Zer prezioa dugu ordainduz gero? 1120 00:48:24,710 --> 00:48:28,510 1121 00:48:28,510 --> 00:48:30,340 Birritan askoz espazio, lehenik bezala. 1122 00:48:30,340 --> 00:48:34,010 Begiratzen baduzu argazki hartan, jada ez Nago zenbaki osoen zerrenda bat gordetzeko. 1123 00:48:34,010 --> 00:48:36,740 Zerrenda naiz gordetzeko Osoko zenbaki plus erakusleak. 1124 00:48:36,740 --> 00:48:38,240 Beraz, leku kopurua bikoiztu egin naiz. 1125 00:48:38,240 --> 00:48:40,740 Orain, agian hori ez da, hala nola, akordio handi bat da, 4 byte, 8 byte, 1126 00:48:40,740 --> 00:48:43,160 baina zalantzarik zitekeela gehitu Datu multzo handiak sortu. 1127 00:48:43,160 --> 00:48:45,570 Zer arazotxo bat? 1128 00:48:45,570 --> 00:48:46,070 Bai? 1129 00:48:46,070 --> 00:48:48,010 >> Ikusleak: izan dugu zeharkatuko banan-banan. 1130 00:48:48,010 --> 00:48:48,760 DAVID MALAN: Bai. 1131 00:48:48,760 --> 00:48:50,260 Horiek zeharkatzeko bat-banan daukagu. 1132 00:48:50,260 --> 00:48:53,860 Zer sortu, eman genuen super hau ezagutzen duzu komenigarria kortxetea ezaugarririk 1133 00:48:53,860 --> 00:48:57,240 idazkera, egokiago ausazko sarbidea izenez ezaguna, 1134 00:48:57,240 --> 00:48:59,280 non besterik ez dugu salto dezake banakako elementu bat 1135 00:48:59,280 --> 00:49:01,470 baina orain, bada, oraindik izan nuen Nire boluntarioak hemen, 1136 00:49:01,470 --> 00:49:04,660 aurkitu nahi nuen 22, ezin dut besterik 1137 00:49:04,660 --> 00:49:06,620 parentesi zerbait zerbait salto. 1138 00:49:06,620 --> 00:49:10,530 Den zerrendan baino gehiago begiratu behar dut, askoz Gure adibide linealki bezala, 1139 00:49:10,530 --> 00:49:12,260 22 zenbakia aurkitu. 1140 00:49:12,260 --> 00:49:14,340 Beraz, prezio bat ordaindu behar ez garela ematen du. 1141 00:49:14,340 --> 00:49:16,430 Baina, hala ere, ezin dugu Arazoa. 1142 00:49:16,430 --> 00:49:18,587 >> Izan ere, let me aurkeztu besterik entzunezkoak pare bat. 1143 00:49:18,587 --> 00:49:20,920 Beraz duzun behera egon bada Mather en jantokia duela gutxi, 1144 00:49:20,920 --> 00:49:23,320 gogoratzen dituzu, beren Hau atsegin erretiluak pila, 1145 00:49:23,320 --> 00:49:26,300 hauek mailegatu dugu Klase aurretik Annenberg. 1146 00:49:26,300 --> 00:49:28,930 Beraz, erretiluak pila honetan, nahiz eta, ordezkaria da benetan 1147 00:49:28,930 --> 00:49:30,860 informatikako datu-egitura bat. 1148 00:49:30,860 --> 00:49:32,910 Ez dago datu-egitura bat da informatikako 1149 00:49:32,910 --> 00:49:38,010 pila bat bezala ezagutzen da, oso nicely erabaki bera zehazki bisuala honetarako. 1150 00:49:38,010 --> 00:49:41,380 Beraz erretiluak hauek guztiak ez badago bat erretilua baina zenbaki bat bezala, eta nahi nuen 1151 00:49:41,380 --> 00:49:45,010 zenbakiak gordetzeko, I Behera bat jarri izan hemen, 1152 00:49:45,010 --> 00:49:48,320 eta hemen beste bat jarri behera izan dut, eta jarraituko zenbakiak pilatzeko 1153 00:49:48,320 --> 00:49:53,180 beste bat, eta zer da gainean honi buruz lagungarri izan daitezkeen 1154 00:49:53,180 --> 00:49:55,450 da zer duten inplikazioa da Datuen egitura honen? 1155 00:49:55,450 --> 00:49:58,045 Zein zenbaki dezakezu tira I lehen komenigarria? 1156 00:49:58,045 --> 00:50:00,640 1157 00:50:00,640 --> 00:50:03,030 Azen han jartzen dena. 1158 00:50:03,030 --> 00:50:06,430 >> Beraz, hau da, zer litzateke ere deitzen dugun ordenagailu LIFO datuak egitura zientzia. 1159 00:50:06,430 --> 00:50:08,070 Iraungo, lehena inprimatu. 1160 00:50:08,070 --> 00:50:10,800 Eta zergatik luze baino lehen ikusiko dugu baliagarriak baina izan daiteke gaur egun, 1161 00:50:10,800 --> 00:50:12,200 besterik kontuan hartu jabetza. 1162 00:50:12,200 --> 00:50:15,158 Eta ergelak mota da uste baduzu jantokia, nola ez du horri buruz. 1163 00:50:15,158 --> 00:50:17,910 Aldi bakoitzean zuten erretiluak garbi eta jarri freskoena direnak gainean, 1164 00:50:17,910 --> 00:50:22,160 Aurretik garbi bat izan dezakezu baina, azkenean, oso zikinak eta hautsez 1165 00:50:22,160 --> 00:50:24,360 oso behean erretilua inoiz ez baduzu benetan 1166 00:50:24,360 --> 00:50:26,820 horren beheko lortzeko pila, duzulako besterik 1167 00:50:26,820 --> 00:50:29,380 mantentzeko berria jarriz eta gainean garbi direnak. 1168 00:50:29,380 --> 00:50:31,840 Gauza bera gerta liteke Supermerkatu batean gehiegi. 1169 00:50:31,840 --> 00:50:35,450 Arasa bat baduzu esnea eta denbora CVS guztietan 1170 00:50:35,450 --> 00:50:37,610 edo duenarentzat esne gehiago lortzen, shove besterik ez duzu esne du 1171 00:50:37,610 --> 00:50:39,880 Dagoeneko atzealdean behar duzu eta berriak jarri nahi izanez gero, aurrean, 1172 00:50:39,880 --> 00:50:43,088 batzuk nahiko zakarra izan joan zaren Datuen egitura amaieran esnea, 1173 00:50:43,088 --> 00:50:46,390 da beti delako behealdean edo baliokidean beti da atzealdean. 1174 00:50:46,390 --> 00:50:50,407 >> Baina ez pentsatu beste modu bat Datu eta esate baterako, hau Hornigaia. 1175 00:50:50,407 --> 00:50:53,490 Oraindik pertsonen bat nork atsegin lerro Apple dendak kanpo 1176 00:50:53,490 --> 00:50:55,610 produktu berri bat dator out, ziurrenik zaren 1177 00:50:55,610 --> 00:50:58,780 Ez pila datuak bat erabiliz egitura duzulako 1178 00:50:58,780 --> 00:51:03,070 alienatzeko litzateke besteek nor da Hornigaia jostailu berri batzuk erosteko. 1179 00:51:03,070 --> 00:51:06,610 Baizik eta, seguruenik ari zaren erabiliz zer nolako datuak egitura 1180 00:51:06,610 --> 00:51:10,050 edo zer nolako sistema mundu errealean? 1181 00:51:10,050 --> 00:51:13,493 Zorionez lerro bat da, edo gehiago Behar bezala edo gehiago British-bezala, ilaran joaten da. 1182 00:51:13,493 --> 00:51:17,700 Eta bihurtzen da ilara bat da, gainera, informatikako datu-egitura, 1183 00:51:17,700 --> 00:51:19,700 baina ilara bat dauka oso bat Jabetza ezberdinetan. 1184 00:51:19,700 --> 00:51:20,820 Ez da LIFO. 1185 00:51:20,820 --> 00:51:21,990 Iraungo, lehena inprimatu. 1186 00:51:21,990 --> 00:51:22,800 Jainkoa debekatzeko. 1187 00:51:22,800 --> 00:51:24,280 Egin beharrean FIFO. 1188 00:51:24,280 --> 00:51:26,110 Lehen ere, lehen egindako. 1189 00:51:26,110 --> 00:51:27,970 Eta hori gauza ona da zuzentasuna 'mesedetan 1190 00:51:27,970 --> 00:51:30,428 zalantzarik denean Hornigaia zu eman super goizaldean. 1191 00:51:30,428 --> 00:51:33,400 Iritsi duzun lehen ezkero, ateratzeko lehenengo baita nahi. 1192 00:51:33,400 --> 00:51:35,880 >> Eta, beraz, datu horiek guztiak egiturak, ilarak eta pilak 1193 00:51:35,880 --> 00:51:39,220 eta besteen sortak, bihurtzen duzu hau bezalako array bat besterik ez dela pentsa dezakezu. 1194 00:51:39,220 --> 00:51:41,820 Array bat da, agian, tamaina finko bat 4, baina nahiago 1195 00:51:41,820 --> 00:51:44,990 izan polita mota besterik ezin dugu pilatzen bada erretiluak ia infinituki altu badugu 1196 00:51:44,990 --> 00:51:46,780 erretiluak edo zenbakiak asko dituzte. 1197 00:51:46,780 --> 00:51:48,840 Beraz, agian nahi dugu lotutako zerrenda bat hemen erabili, 1198 00:51:48,840 --> 00:51:51,800 baina merkataritza-off izango da potentzialki memoria gehiago behar dugula, 1199 00:51:51,800 --> 00:51:55,930 denbora pixka bat gehiago hartzen du, baina ez dugu ez pila altuera mugatu, 1200 00:51:55,930 --> 00:51:59,550 askoz Mather bistaratzea kasuan bezala neurria muga dezake pila, 1201 00:51:59,550 --> 00:52:03,117 eta, beraz, horiek dira diseinu erabakiak edo Jar eskuragarri dauden aukerei azken finean. 1202 00:52:03,117 --> 00:52:04,950 Beraz, datu hauekin egiturak, hasi dugu 1203 00:52:04,950 --> 00:52:09,360 goiko mugetatik berria potentzialki ikusten Zer Aurretik zegoen super azkarra 1204 00:52:09,360 --> 00:52:11,260 eta bertan utziko dugu gaur off eta non 1205 00:52:11,260 --> 00:52:13,200 ra iritsi espero zaitugu Asteazkenean da, dugu 1206 00:52:13,200 --> 00:52:15,740 datuen a begiratzen hasteko gurekin bilatu ematen dizu egitura 1207 00:52:15,740 --> 00:52:18,260 Egunkariaren amaieran denboran datuak bidez berriro. 1208 00:52:18,260 --> 00:52:21,470 Eta, hori gogoratzen, aste zero ikusi genuen eta bilaketa bitarra edo arrail duena 1209 00:52:21,470 --> 00:52:22,180 eta konkistatzeko. 1210 00:52:22,180 --> 00:52:26,240 Honez oraindik atzera eta hobeto datozen, Asteazken honetarako Grial Santua 1211 00:52:26,240 --> 00:52:29,510 Etorri izango da benetan exekutatzen datu-egitura 1212 00:52:29,510 --> 00:52:32,070 edo teorikoki etengabeko denbora, zeinaren 1213 00:52:32,070 --> 00:52:34,760 Ez du axola zenbat milioika edo bilioika gauza 1214 00:52:34,760 --> 00:52:38,470 Datuen egitura dugun, izango da eramango gaituzte denbora etengabe, agian urrats bat 1215 00:52:38,470 --> 00:52:41,387 edo bi urrats edo 10 urrats, baina urrats zenbakiak etengabeko 1216 00:52:41,387 --> 00:52:42,970 Datuen egitura horren baitan bilatu. 1217 00:52:42,970 --> 00:52:46,300 Hain zuzen ere, Santo Grial izango baina hori Asteazkenean on gehiago. 1218 00:52:46,300 --> 00:52:49,045 Ikusi ya gero. 1219 00:52:49,045 --> 00:52:53,704 >> [Musika jotzen] 1220 00:52:53,704 --> 00:56:08,448