1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
[Musika jotzen] DAVID J. MALAN: Ondo da. Hau CS50 da, eta hau Astea Lau amaiera da. Gaur gaietako bat eta da Kernet digitalen duten, informazioa berreskuratzeko artea. Eta hain zuzen ere, nahiz eta Oraindik Erdi egina duzun eskuineko Bakearen orain hiru eta Breakout, datorren astean, foku izango da hain zuzen, domeinu honetan. 

Beraz, lanpostu coolest bat dut inoiz Izan graduondoko eskola batean itzuli zen, tokiko egin izan dut lan Middlesex County District Attorney bulegoan, Kernet egiten dabiltza. Beraz, funtsean, Massachusetts du Estatuko Polizia, behin, denean kasu lantzen ari iba disko gogorrak bezalako gauzak ekarri eta disketeak eta memoria txartelak eta antzekoak. Eta horien esku lukete ni eta nire Tutore izateko, eta gure helburua frogak aurkitzea zen, ez zen edozein, hedabide horien inguruan bada. Orain, ikusi dute agian glimpses Kernet mundu honetan komunikabideetan, telebista eta filmak. Baina lana, izan nuen eta daresay mundu horretan, ez da nahiko atsegin duzu ikusi nahi. Ikus dezagun begirada bat zer seguruenik ikusi duzun. [Bideo-erreprodukzioa] -Ados. Orain, dezagun begirada bat ona. 

[Musika jotzen] 

-Hold Da. Exekutatu back duten. 

-Wait Minutu bat. Joan eskubidea. Itzulpenak. Izoztu direla. -Pantaila -Full. 

-Ados. Izoztu direla. -Tighten Sortu horretan, ahal izango duzu? 

-Vector Ere horretan atzeko gurpila by guy. 

Hementxe Leku honetako ere -Zoom. 

Ekipamendu egokia aldera, irudia handitu egin daiteke, eta zorroztu. 

-Zer da hori? 

-It Hobekuntza-programa bat da. 

-Can Garbituz duen edozein? 

Ez naiz ez dakit. Dezagun hobetu da. 

-Enhance Artikulua A6. Xehetasun hobetu dut, and-- Uste dut, ez da nahikoa hobetzeko. Askatu nire pantailan. 

-I Bere begi isla indartu. Ekarri ditzagun exekutatu honen bidez Bideo hobekuntza. 

-Edgar, Hau ezin hobetu duzu? 

-Hang On. 

-I've Dira hausnarketa hori lantzen. 

Itzulpenak en norbaiten hausnarketa. 

-Reflection. Itzulpenak gizonaren aurpegia isla da. 

Hausnarketa-The! Itzulpenak hausnarketa bat da. -Zoom Ispilu gainean. Hausnarketa bat ikusi ahal izango duzu. 

-Can Irudian hobetzeko hemendik aurrera? -Can Sustatuko duzu? -Can Sustatuko duzu? -Can Hau indartzea dugu? -Can Sustatuko duzu? Bigarren batean -Hold. Hobetu dut. -Zoom Batean atean. -Times 10. -Zoom. In -Move. -Informazio. -Wait, Gelditu. Geldialdia. -Pause Da. -Rotate Iezaguzu 75 gradu bertikalen inguruan, mesedez. 

Geldialdia. Joan atzera zatia atea buruz berriro. 

Got irudia Enhancer bat bitmap daiteke? 

-Agian Pradeep Singh erabili ahal izango dugu Metodo leihoak sartzen ikusi. 

Software-The artearen egoera da. 

Autobalorearen da laguntasuna off. 

Eskubidea ditugu ikusgai algoritmoak konbinazio 

Amorratua en hartu argiztatzea Hurrengo mailara algoritmoak, eta horiek baliatzen ditut argazki hau hobetzeko. 

On -Lock eta z ardatzean handitzeko. 

-Enhance. Hobetzeko. -Enhance. -Freeze Eta hobetzeko. [END bideo-erreprodukzioa] DAVID J. MALAN: Beraz, ez dira horiek hitz guztiak, baina ez ziren Esaldi batean, behar bezala erabili. Eta, hain zuzen, etorkizunean, edozein unetan, mesedez, norbaitek hitza esaten entzuterakoan, "Hobetu", algara pixka bat. Denean hobetzeko saiatu zarelako, esate baterako, hau da, zer gertatzen den. 

Hortaz, hona hemen bat gorgeous argazki bat. Hau CS50 Daven egin da. Eta eman dezagun nahi dugun pilatzen dira bere begi Twinkle oinarrituta, edo isla zela argi txarra lasaia segurtasun kamerarekin ateratako argazkia. Hau da, zer gertatzen da zoom irudi bat duen kopuru mugatu batean baino ez ditu horri lotutako bit. 

Hau da, zer lortu nahi duzun. Eta, hain zuzen, Daven begian da baina lau, agian sei pixel osatzen duten zehazki zer ez glimmering zen. Beraz Arazoa Ezarri Lau azken finean dute Mundu honetan arakatzeko duzu, bereziki Zerbait izaeraren arabera deitzen dugun fitxategia i / o, non i / o fancy modu bat besterik ez da sarrera eta irteera esanez. 

Beraz, beraz, orain arte, interakzio guztia ordenagailu bat dugu izan dute neurri handi batean, zure teklatua eta pantaila, baina ez da hain disko gogor batera askoz, edo direnak haratago fitxategien aurrezteko zeuk idatzi. Zure programei beraz, orain arte izan ez dira sortzen, eta aurrezteko, eta beren fitxategiak eguneratzeko. 

Beno, zer da irudi bat? Beno, JPEG baten antzeko zerbait. Hau irudi bat agian da dute edo Facebook-era igo, edo ikusi web buruzko edozein tokitan. Izan ere, argazki besterik ez dugu Daven of zerra JPEG bat izan zen. Eta zer da interesgarria JPEGs bezalako fitxategiak buruzko da dute ezagut daitezkeela, normalean, bit patroi jakin batzuen arabera. 

Bestela esanda, zer dela JPEG bat bereizten GIF batetik Word batetik PING batetik Dokumentu Excel fitxategi batetik? Beno, besterik gabe, desberdina da bit ereduak. Eta eredu desberdinak direnak dira normalean, fitxategi horiek hasieran. 

Beraz, zure ordenagailuan Word bat irekitzen dituen doc, edo ordenagailua JPEG bat irekitzen du, normalean itxura hartan fitxategiko hainbat lehenengo bit. Eta eredu bat aitortzen bada, dio, oh, hau irudi bat da. Let it bistaratzeko me erabiltzaileak grafiko gisa. Edo, oh, hau Word doc itxura. Let it erakutsi erabiltzaile saiakera bat bezala me. 

Horrela, esate baterako, JPEGs, bihurtzen da, dira nahiko sofistikatuak kanpaia azpian. Baina lehen hiru byte gehien guztietan JPEG hiru zenbaki horiek hasteko. Beraz byte zero, bat, eta bi dira, in gehien JPEG behin, 255, eta ondoren kopurua 216, ondoren 255 zenbakira. 

Eta zer gai izango duzu Datorren astean egiten hasteko benetan azpian poking fitxategiak kanpaia JPEGs bezala eta bitmap fitxategiak bezala, eta ikusten zer da beti hor egon luze gisa Ordenagailu bat erabiliz izan ditudan bezala. 

Baina zer ez da normalean Zenbaki hamartar hau atsegin bezala idatzirik. Informatikariak ez joera hamartar mintzatzen. Ez dute benetan binary mintzatzen. Normalean, nahi dugun Zenbakiak adierazteko, benetan hamaseitarra erabiltzen dugu, Horrek gogora ekarri ahal izango duzu , esan, Arazoa Ezarri One, desafioa den beste sistema bat pentsatzen duzu. 

Dugu, noski, gai arruntei hamartar, zero bederatzi bidez. Binary buruz hitz egin dugu. Eta ez dugu benetan askoz ere, hemen erabiltzeko kanpo, zeren ordenagailuak erabiliko du. Baina programatzaile oso will askotan, baina ez beti, hamaseitarra erabili, besterik gabe esan nahi 16 zure alfabetoaren letrak izan duzu, Bi edo 10 aurka. 

Beraz, nola ez zenbatu handiagoa behar duzu hamaseitarrean bederatzi baino? Duzu joan 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, besterik ez konbentzio. Baina zer da gakoa, bakoitzak horien sinbolo bakar bat da. Ez dago 10. Ez dago 11, per se, bakoitza delako Zure digituen, besterik hamartarrean gustatzen eta besterik bitar bezala, behar besterik Pertsonaia bakar bat, konbentzio izan. 

Orduan hori alfabetoaren daukagun gure hamaseitarrean eskura. Beraz, zer duzu bada itxura JPEG bat ziren idazteko lehen hiru horiek Ez byte hamartar gisa baina, adibidez, hamaseitar bezala? Eta zergatik hex da, nahiz eta guztiak baliagarriak? 

Beno, begirada bat adibide bat. Beraz, bada bit idatzi dut zenbaki hamartar hauek adierazten hau apur bat herdoildu izan liteke orain aste batzuk atzera, baina ezker bat eta Eskuineko bat nahiko erraza. 255 zenbaki ditugu handiena izan zen zortzi bit liteke. Direnak izan zen. Beraz, inork hori da mildly bakarrik interesgarri erdikoa da. Eta zuk mota egin nahi den kanpo matematika, duela ondorioztatu beharko da, hain zuzen ere, baten eredua dela eta zeroen suposatzen 216. Hargatik zeintzuk besterik orain, horiek zuzenak dira. Baina zergatik da hau interesgarria? 

Beno, byte bat, jakina, zortzi bit. Eta bihurtzen da hori uste baduzu byte bat, bi, lau bit zatiak bezala, Hau atsegin. Let me besterik espazio batzuk gehitu. Beraz, aurretik, ondoren. Besterik espazio zuri batzuk ditut gehitutako Bisualizazio mesedetan hemen. Nola liteke orain adierazten dugu, esan, hamaseitarra bit quad bakoitzean, lau bit multzo bakoitzean? 

Beraz, adibidez, ezkerretik orain, 1111 ditugu bitarrean. Zer zenbaki hori hamartarrean da, kanpo egiten duzun math bada? Direnak leku daukazu, twos leku, the Fours leku eta eights lekua. 

IKUSLEEN: 15. DAVID J. MALAN: Da 15. Beraz, egiten dugu zortzi gehi lau bada gehi bi gehi bat, 15 lortuko dugu. Beraz, idatzi izan dut behera 15 azpitik 1111, baina puntu osoa hemen da hamaseitarra, ez hamartarra izan. Beraz ordez idazteaz 15, 1-5, Duten idazteko hex noa, horrek atzera uste baduzu, baduzu zero f bidez, zer dago 15 izango da? IKUSLEEN: f. DAVID J. MALAN: Beraz, bere f bihurtzen da. Eta hori lan dezakezu esanez, bai, bat da 10 bada, ondoren OK, f 15 da. Beraz, hain zuzen ere, berridatzi ahal izan genuen Zenbaki f f gisa multzo horretan bertan. Eta gero pixka bat egiten dugu math bada, ondorioztatu beharko dugu hori, eta d. Zortzi nahiko erraza da, dugulako eights lekuan bat daukate. Eta gero, pare bat gehiago f f-ren dugu. 

Beraz, zein gizakiak joera konbentzio egin denean erabiltzen dute hamaseitar dute besterik ez da idatzi hau apur bat gehiago succinctly, get zuri espazio hori gehiena kentzeko. Eta besterik gabe, super argi izateko irakurle hori hamaseitarra da, artean konbentzio simple gizakiak zero idazterakoan x, horrek ez baitu beste esanahi no identifikatzailea entzunezko bat baino, Hemen hex zenbaki bat dator. 

Eta gero, bi digituak jarri duzu, f Kasu honetan, f, orduan d a, orduan f f. Beraz, ipuin luze, hamaseitar besterik ez ohi lagungarri izateko bakoitzak bere zenbakiak, zero f bidez, primeran lerroak lau bit patroi batekin sortu. 

Beraz, hurrengo hamaseitarra izan beharko duzu, zero F, behin eta berriro eginez, primeran ematen dizu zortzi bit edo byte. Beraz, horregatik ohi da conventionally erabilgarria izango. Ez dago intelektual no Benetan hori baino haratago eduki, bere benetako utility baino beste. 

Orain JPEGs ez dira soilik fitxategi formatu grafiko da. Gogoratzen ez direla fitxategi hau bezalako munduan, gutxienez, urte batzuk atzera. 

Beraz, hau izan zen benetan Windows XP instalatuta Mundu osoko PC milioika on. Eta honek bitmap fitxategi bat, BMP zen. Eta bitmap fitxategi bat, ikusiko duzu hurrengo moduan astean, besterik puntu eredu bat esan nahi du, pixel deitzen ari dira, a bit buruzko mapa, benetan. 

Beraz, zer da interesgarria, nahiz eta, fitxategi formatu hau, BMP buruz, da duten kanpaia azpian, hura besterik hiru byte baino gehiago ditu dela bere goiburua konposatzen, hain esateko, lehen puska batzuk. Benetan itxura apur bat da Lehen begiratuan zaila. Eta hau ikusiko duzu P multzoan. Eta zerbait lortzean honetatik kanpo bereziki orain ez da hain garrantzitsua, besterik gabe, izan ere, gisa duten bitmap bakoitzaren hasieran fitxategia, formatu grafiko bat, han zenbakien sorta oso bat da. 

Orain Microsoft eta, Formatu honen egileak, horiek deitu ohi Gauzak ez ints eta karakteretan eta karroza baina hitzak eta d Hitz eta Longs eta byte. Beraz, besterik gabe, datu-mota ezberdinak daudela. Izen desberdinak ari dira gauza bera da. Baina hori ikusiko duzu P Ezarri Lau urtean. 

Baina hau ez dago esan dugunez, giza bat bada .bmp fitxategia batzuetan klik bikoitza egiten bere edo bere disko gogorrean, eta leiho bat irekitzen du zion edo bere irudia egin badute sortu, duen eragilea delako gertatu sistema ustez nabaritu ez bakarrik .bmp luzapenarekin fitxategia izenean, baina baita Izan ere, ez da batzuk bit patroi den konbentzio hasieran oso bitmap fitxategi hori. 

Baina dezagun orain arreta en adibidez, fitxategi zailean, baina horren ordez, honen antzeko zerbait. Demagun hemen gedit, I besterik ez dute hasieratik hori nahiko sinplea da programa bat. Nik batzuk sartzen dira sortu top. Orain lortu dut #include "structs.h" baina Etorriko naiz atzera une batean. Baina hau oso erabilgarria da, oraingoz. Beraz, hau programa bat da, hori ezartzea joan Erregistro datu-base bezala. Beraz, ikasleek datu-base bat, eta munduko ikasle guztiek Izen bat eta etxe bat eta, seguruenik batzuk ditu beste gauzak, baina simple mantendu egingo. Ikasle bakoitzak izen bat eta etxe bat dauka. 

Beraz bat idatzi nahi badut programa horren helburua bizitzan besterik tik bestera joateko zen zero hiru gehienez, hiru ikasle badago Harvard Unibertsitatean. Eta besterik gabe, lortzeko GetString erabiliz nahi dut, ikasle bakoitzaren izena eta etxea, eta, ondoren, inprimatu horiek out. 

Hau Ordena Week bezalakoa da One, Aste Bi gauzak orain, non nahi dut bat begizta edo horrelako zerbait. Eta GetString deitu batzuk bat nahi dut aldiz, eta ondoren f hainbat aldiz inprimatu. Beraz, nola liteke hau egiten dut, nahiz eta, denean bai izena eta etxe bat dira parte hartzen duten ikasle bakoitzak? 

Beraz, nire lehen sena agian izan honen antzeko zerbait egin nahi. Lehenengo agian diot, bai, ematen dit, esateko, izenak izeneko kateak array bat. Eta ez dut hardcode hiru hemen nahi. Zer jarri nahi dut? Beraz STUDENTS, hori delako, besterik gabe, konstante bat goialdean deklaratu, Ez dut besterik ez beraz, hardcode Leku bat baino gehiago hiru. Horrela, leku bat aldatu ahal izango dut, eta aldaketaren bat nonahi eragiten die. Eta gero, agian egin behar dut katea STUDENTS daude. 

Eta orain, agian antzeko zerbait egin nuen for (int i = 0; i <IKASLEAK; i ++. Beraz, azkar ari naiz idazten, baina hau da, ziurrenik ezagutzen sintaxia orain. 

Eta orain, hau berriagoa zen. To the i-garren jarri nahi badut ikaslearen izena, uste dut egin behar dut. Eta gero, ez izenak baina etxe tarte i. Hau egin dut, GetString, eta utzi atzera me eta lerro hau konpontzeko. Onartzen dut? Ados? Ez da oso lagungarria. Ez dut erabiltzaileak zer egin esan. 

Baina orain, badut gainera, nahi geroago, dezagun esan, inprimatu gauza horiek out-- beraz TODO geroago. Honekin gehiago egin nahi dut da horrek, dudarik gabe, hau da ezartzeko zuzena Izenak eta etxeak, hiru lortzean Horietako bakoitzean, guztira, erabiltzaile batek. 

Baina hori ez da diseinu oso ona, ezta? Zer ikasle bat da ez bakarrik izen bat badu eta etxe bat, baina, halaber, identifikazio zenbaki bat, eta telefono zenbakia, eta helbide elektroniko bat, eta, agian, hasiera orri bat, eta agian Twitter heldulekua, eta beste edozein xehetasun kopurua Ikasle bat edo pertsona bat lotutako, oro har. Nola gehitu hasiko genuke Programa honen funtzionalitate? 

Beno, modurik errazena bezala sentitzen dut agian izan antzeko zerbait egin nahi, demagun, int ids STUDENTS. Beraz, beren identifikazioak guztiak jarri ahal izango dut hor. Eta gero, zerbait Telefono zenbakiak bezala, Ez nago ziur nola besterik gabe adierazten duten. Beraz, dezagun aurrera eta deia besterik hau Twitters STUDENTS, zein Apur bat arraroa, but-- da eta mordo bat gehiago eremuak. 

Nik hasi eraginkortasunez kopiatu eta itsatsi hemen. Eta hori nahiko hazten joan unwieldy nahiko azkar, ezta? Ez litzateke polita izango da eta ez ziren munduko datu-egitura bat ezagutzen Ez int bat edo kate bat, baina zerbait gisa maila handiagoa, abstrakzioa, beraz, esateko, ikasle gisa ezagutzen? C ez zuen eraiki-etortzen ikasleentzat funtzionaltasuna, baina zer da, hala nola eman nahi badut? 

Beno, bihurtzen da, noa ireki structs.h hemen izeneko fitxategi bat, eta zehazki hori egin dezakezu. Eta ari gara hau egiten hasteko behar. Eta P Ezarri Hiru kanpaia azpian, Nik jadanik hau orain egiten ari. Badira g Laukiz gisa gauza, hala nola ez da: edo g programazio hizkuntza C. batean obalo bat 

Stanford at Folks horiek inplementatu Datu mota hurbilketa hau erabiliz hemen arabera, beren datu berriak egin deklaratzen keyword berri bat erabiliz motak izeneko egiturari eta beste typedef izeneko bat. Eta hain zuzen ere, nahiz eta sintaxia itxura apur bat gauzak desberdinak ikusi dugu aurretik, in Printzipioz, super erraza da. 

Hori esan nahi du "mota bat definitzeko". Hori bat izango da joan egitura, eta egitura bat besterik edukiontzi bat bezalakoa da Gauza bat baino gehiago da. Eta egitura hori joan Izen izeneko kate bat izatea, eta etxea izeneko kate bat. Eta dezagun deitu, besterik gabe, erosotasuna, osoa datu-egitura ikaslea honetan. 

Beraz, oraingoz lortzeko aukera puntu eta koma, orain duzu Zure datuak propioa sortu Ikasle izeneko mota orain dela int ondoan dago, eta karroza, eta char, eta katea, eta g Laukiz, eta g obalatua, eta edozein zenbaki beste gauza pertsona izan asmatu. 

Beraz, zein da honi buruz erabilgarria orain dela atzera egin badut 0 struct eta amaitzeko hau ezartzeko, eta bertan idatzi nuen aldez aurretik, hemen, hori guztia nabarituko saihestezina messiness duten gehitu dut hala gertatzen hasteko zorian zegoen Telefono zenbaki eta Twitters eta guztiak gauza horiek beste ikasle baten definizioa, orain succinctly da bilduta ikasleen array bakar gisa. 

Eta ikasleak horietako bakoitzean orain anitz gauza horren barruan dago. Beraz, besterik gabe, galdera bat uzten du. Nola lortu izenaren at duzu, eta etxea, eta identifikazioa eman, eta, dena dela ere da Ikasle-barrutik? Super simple, baita. Sintaxia, baina, ideia soil bat. 

You indizea besterik array sartu, azken astean, eta hau egin dugu. Eta zer da argi eta garbi, sintaxia pieza berria? Just., Horrek esan nahi du "barruko joan egitura eta get izeneko eremuan izena, lortu house izeneko eremuan, lortuko ikaslea izeneko eremuan. " 

Beraz, P ezarri Three, bazaude Oraindik ere horretan lanean, eta jende gehienak oraindik direnean, konturatzen zara gisa duten gauzak bezala erabiltzen hasteko g laukizuzenei eta g ovals eta beste gauza ez direla dirudi Aste zero, bat edo bi etorriko da, konturatzen hori Stanford delako Datu-mota berri batzuk izendatu. 

Eta hain zuzen ere, hori da zehazki zer zaitugu egin, bai, P ezarri Lau denean, gauza aurre hasten gara irudiak, bit-mapak, eta gehiago atsegin. Beraz, hori besterik teaser bat eta bat zer da etorri eredu mental. Orain, procrastinated dut Pixka bat gaur goizean. Motatako bitxi zer ikusi izan dut Microsoft wallpaper benetan gaur egun duen itxura. Eta bihurtzen da 2006an norbaitek benetan joan zen ia, hain zuzen errealitatean argazkiak Leku berean zer itxura egun hauetan. Eremu apur bat estali egiten da orain. 

Beraz, gaur egun hitz egiten duten irudiak, horrek ekarri itzuli Daven hemen utzi pantailan eta Nicholas on, eta besterik gogorarazten duten gurekin bazkaltzeko nahi izanez gero ostiral honetan, gure ohiko URL burua hemen. 

Beraz, non off utzi genuen astelehenean? Arazo hau aurkeztu dugu, ezta? Hau izan zen, itxuraz zuzen bat swap ezartzeko, Horren bidez, bi ints hartzen duzu, baten bat b izeneko izeneko bat,, swap horiek, Laura egin hemen besterik ez bezalakoa esnea eta ura batera eszenatokian, Aldi baterako bat erabiliz aldakorra, edo kopa huts bat, horrela jarri b genezake eta batean ere b gauzak gaizki egin gabe. Aldagai bat erabiliko dugu. Honez temp izenekoa. 

Baina zer funtsezkoa izan zen Kode hau astelehenean duen arazoa? Zein izan zen arazoa? Bai. 

IKUSLEEN: leku gehiago sortu behar izaten ditu. 

DAVID J. MALAN: Hartzen gehiago espazioa, I aldagai bat erabiltzen ari delako, eta OK. Hau da egia, baina nago OK esan du. Grand bit 32 besterik ez da eskema gauza, beraz, ez da big aurre. Beste pentsamenduak? IKUSLEEN: besterik trukeak It aldagai lokalean. DAVID J. MALAN: Zehazki. Aldagaiak bakarrik trukeak Lokalean. Delako edonoiz funtzio bat deitu denean Annenberg erretiluak izan nuen Azken aldiz, behean nagusiak duzu. Bezain laster izeneko funtzio bat deitu gisa swap, swap ez du x eta y lortu, jatorrizko balioak. Zer swap lortu du, ez zuen aldarrikatzen dugu? IKUSLEEN: kopiak. DAVID J. MALAN: Beraz, horien kopia. Beraz, bat eta bi lortzen da, nahi baduzue Gogoratzen adibidez azken aldian plazaratzen, baina bat eta bi kopia bat diren ongi trukatu. Baina, azken batean, tamalez, oraindik balio horiek berdinak dira. Beraz, hau ikusi ahal izango dugu, gure Lagun berriak, zorionez, GDB, zuk edo TFS eta Ca-en izan duen Izan gidatzen honela aldera. 

Beraz, swap abisuaren no itxura antzeko dezagun ireki honen itxura this--. X hasieratu dugu bat, eta bi egiteko. Inprimatu f-ren mordo bat izan zuen. Baina orduan, funtsezko deia Hemen izan zen, trukatu zein zehazki kodea garen da besterik ez duela une bat ikusi. Zein da zuzena lehen at begiratuan, baina funtzionalki, Programa honetan ez du funtzionatzen, zeren ez ez da betirako swap x eta y. 

Beraz, ikus dezagun hau, bero azkar bat hemen GDB, ./noswap batekin sortu. Erabatekoa informazio mordo bat duen Lortu dut Kontrol L kentzeko oraingoz. Eta orain, ez naiz joan Aurretik joan eta exekutatu. Eta zoritxarrez, hori ez zela baliagarria. Honen barruan programaren ran GDB, araztailea izeneko programa, baina ez zuen utzi ikutu zidan. 

Beraz, nola benetan pausatu ahal dut Programa honen barruan exekuzioa? Beraz apurtu. Eta ezin edozein apurtzen dut linea-zenbakia, bata, 10, 15. Baina nik ere sinbolikoki hautsi ahal break nagusiak esanez. Eta hori break bat hasteko puntua, itxuraz 16 linea nagusian at. Eta non line 16 da? Goazen sortu kodeari eta igo noswap izateko. Eta hain zuzen ere, 16 linea da programan oso lehen. 

Beraz, gaur egun, aurretik joan naiz eta idatzi oraingoan exekutatu, Sartu, bertan pausatu. Hargatik Poke inguruan. Inprimatu x-- zergatik x zero da? Eta alde batetara dolarraren ikurra. Hori besterik fancier Programaren erabilera. Zergatik da x zero une honetan? Bai. 

IKUSLEEN: eskuineko aurretik pausatu da 16 linea, ez benetan on line 16. DAVID J. MALAN: Zehazki. GDB, berez, pausatu exekuzioa besterik line 16 baino lehen. Beraz, ez da exekutatu, eta horrek x esan nahi du balioa ezezagun batzuk da. Eta zortea da hori lortu dugu Zerbait zero atsegin garbi. Beraz, orain aurrera idazten badut, orain 16 exekutatu da. Honez for 17 me exekutatu zain. Dezagun aurrera eta inprimatu x me. It bat da. Dezagun aurrera eta inprimatu y me. Orain zer ikusi behar dut? 

IKUSLEEN: [INAUDIBLE] 

DAVID J. MALAN: apur bat ozenago. 

IKUSLEEN: [INAUDIBLE] DAVID J. MALAN: ez da adostasun bat nahiko. Beraz, bai, zabor balio batzuk ikusten ditugu. Orain, 134514064 han y da. Beno, besterik ez zabor balio batzuk da. Nire programa erabiltzen du RAM helburu ezberdinetarako. Beste funtzio Ez dago. Beste pertsona nire ordenagailuan barruan idatzi zuen. Beraz bit horiek erabili dira beste balio, eta zer ikusten dut zenbait aztarnak da aurretiko memoria hori erabiltzea. 

Beraz, big aurre ez, zeren eta lasterren hurrengo idazten nuen, eta, ondoren, inprimatu eta, nik hasieratu hori nahi dut balioa. Beraz, gaur egun, dezagun aurrera, pixka bat azkarrago. N hurrengoa da. Berriro egin dezagun da. Berriro egin dezagun da. Baina ez dut nahi hit hemen, badut delako zer gertatzen da barruan ikusi nahi swap, zer da komandoa? 

IKUSLEEN: urratsak. 

DAVID J. MALAN: urratsak. Beraz, hau urrats me batean funtzioa, baizik eta haren gainean baino. Eta orain, apur bat críptica da egia esanda, baina hori besterik ez da me kontatzea naiz lerro 33 orain. Eta Berriro egin dezagun. Print temp. Garbage balioa, une honetan negatiboa, baina horrek zabor-balioa besterik ez oraindik. Beraz, egin ondoan, inprimatu temp utzi. Honez 1 hasieratu, zein x-ren balioa, a aka zen. 

Orain, non gure direla eta x datozen? Beno, nagusian nabarituko, dugu balio horiek x eta y deitu. Orduan gainditu dugu honela swap horiek. X izan zen lehenengo, Koma y. Eta gero, swap horiek x eta y deitu daiteke. Baina argitasuna, da Horietako bat, eta b deituz. Baina a eta b dira orain izango da x eta y, hurrenez kopiak. 

Beraz, GDB atzera jo dut, temp bada da, gaur egun bat eta da gaur egun ere. Baina hurrengo egin dut eta orain bada egin inprimatu a, a jadanik mugitu baino gehiago. Esnea du lehenengoak isurtzen laranja zukua beira, edo alderantziz. 

Eta hurrengo Berriro egiten badut, eta, orain, out behatu kontrol gisa inprimatu badut, da oraindik bi, baina b da gaur egun bat. Egia, oraindik hor da. Ez zait axola zer temp da. Baina orain idazten dudanean bezain laster, demagun, atzera joan jarraituko du, gaur egun naiz amaieran dut programan. Eta zoritxarrez, x da oraindik inork eta y da oraindik bi. 

Beraz, zer izan da GDB ez baliagarritasuna? Ez zuen lagundu me konpondu arazoa per se, baina, zorionez, lagundu dit Ulertzen konturatu hori bai, nire logika eskuinera, baina Nire kodea ez da, azken finean izatea inpaktu iraunkorra. Beraz, hori arazo bat ari gara Orain konpondu gaur egingo. 

Baina dezagun Iritsi honen bidez. String gezur bat da. Ere, ez da datu-mota bat duten C. existitzen Da zenbait sinonimo izan beste zerbait egiteko garaia, eta honela ager dezakegu. 

Dezagun aurrera eta ireki Programa bat izeneko alderatu-0. Eta hau idazten out beharrean, ondorengo kodea ibiltzeko hasiko dugu Jadanik idatzi nuen, baina lerro batzuk besterik ez da. Beraz, hau da alderatu-0. Eta lehenengo gauza egiten ari naiz da testu lerro bat lortzeko. 

Baina konturatu zer naiz lehen aldiz egiten. Zer desberdina da line 21 argi zer? Egia esan, minutu bat itxaron. Hau kopia bi. Hori ez da, nahiz eta eskuineko programa. Eskuinera, spoiler alert guztiak. Ondo da, beraz, inoiz ez dio axola. Hori etorkizuneko galdera bati erantzuna. 

Hemen alderatu-0 da, eta ez naiz testu lerro bat lortzeko buruz. Programa horrek askoz errazagoa. Beraz, hau erraza da. This One Week, Aste Bi gauza bezalakoa da une honetan. katea s = GetString. Orain, berriro esango dut hemen. katea t = GetString. Eta gero, azken honetan gauzaren programa, bere izena dioen bezala, hau da, naiz alderatu eramaten saiatuko da. 

Beraz, sua bada, lehenengo katea, berdinen = t, orduan naiz gauza bera idazten duzun esan nahi du. Bestela, esan noa Idazten duzun gauza desberdinak. Hargatik konpilatu eta exekutatu programa hau. Beraz, alderatu zero. Itxura ona. No konpilazio akatsak. 

Dezagun aurrera me now eta idatzi ./compare-0. Dezagun aurrera eta zerbait esan : Daven eta zerbait: Rob. Eta idazten dudanean gauza desberdinak. Orain arte, beraz, ona da. Programa dirudi zuzena izan. 

Baina dezagun berriro exekutatu. Esan zerbait: Gabe. Esan zerbait: Gabe. Guztiak eskubidea. Agian espazio barra sakatu dut edo zerbait funky. Berriro egin dezagun da. Beraz Zamyla. Zamyla. Gauza desberdinak. Beraz, zer gertatzen da? 

Beraz, bi lerro hauek ditugu kodea, GetString ari birritan deitu. Eta gero, besterik ez naiz s eta t alderatu nahian. Baina benetan zer orduan gertatzen da? Beno, nire idazkera-ren buruz harategia Adibide honetan zertxobait. Eta dezagun benetan bota hau hemen baino gehiago, baita. 

Beraz bezalako lerro bat dugu katea s = GetString. Beraz, besterik gabe, lehena programa hori lerro interesgarri. Baina zer gertatzen da denbora honetan guztian izan da den gertatzen kanpaia azpian? Beno, ezkerreko albo katea da, zein aldagai mota batzuk, eta, s izeneko it. Beraz, hau da memoria erabiliz ezagutzen dut, edo RAM, nire ordenadorean nolabait. Beraz noa abstraktuan marraztu karratu gisa. 32 bit, bihurtzen da, baina etorkizunean horretan gehiago. Eta gero, zer gertatzen da hemen? 

Beno, jakina, GetString erabiltzaileak kate bat jasotzen du. Eta GetString lortu Zamyla edo Gabe edo Daven. Hargatik aukeratu lehenengoa horiek, eta horrek Daven zen. Beraz, modu eraginkorrean, zer GetString lortu Lehenengo kasu horretan ni D-a-v-e-n izan zen. Eta gero, zer gehiago egin niri eman ezkutuka? IKUSLEEN: [INAUDIBLE] DAVID J. MALAN: Bai, / 0 edo nulua pertsonaia. Beraz, modu eraginkorrean, kate bat eman dit. Baina dagoeneko ezagutzen Aurrekoen dugu itxura duen katea array bat besterik ez da pertsonaien, eta nik amaitu Sentinel pertsonaia berezi hau, / 0. 

Baina hau egia bada eta hau karratu bat da, hau da, argi eta garbi laukizuzen askoz handiagoa. Eta, hain zuzen, hau da, Aldarrikatzen dut, bit 32 bakarrik. Eta hau da, argi eta garbi, 32 baino gehiago bit, hau da, ziurrenik delako zortzi gehi zortzi gehi zortzi plus zortzi gehi zortzi, besterik ez ASCII byte delako. Nola demontre ari gara moldatzen joan Daven kutxa txiki hau hemen sartu? 

Beno, zer da benetan egiten GetString? Beno, sare honek hemen adierazten nire ordenagailuko memorian edo RAM. Beraz, esan dezagun arbitrarioki bada horietako bakoitzean byte adierazten du, orduan guk bakoitzak pentsa dezakezu byte helbide bat izatea, 33 Oxford Street, edo 34 bezalako Oxford Street, edo 35 Oxford Street. 

Beraz, besterik ez bezala etxeetan izan helbideak eta eraikinak izan helbideak hacerlo byte banakako memoria helbideak edo zenbakiak duten bakarrean identifikatu. Orain, hau arbitrarioa da. Baina simple mantentzeko, noa hamaseitarra erabili besterik ez konbentzio, baina 0x ezer beste esan nahi du baino "hau hamaseitarra da." eta nik nahi duten erreklamatzeko joan nintzen "D" amaitzen byte memorian at. 

Beste ezerk ez den gertatzen lortu nuen memoria, beraz Daven lehen spot lortu Byte One at. Honek, beraz, hau da 0x2 izango. Hau da 0x3 izango. Hau da 0x4 izango. Hau da 0x5 izango. Hau da 0x6 izango. 

Baina behin pentsatzen hasteko ordenagailuaren zertan ari buruz kanpaia azpian, to ondoriozta hasteko dezakezu nola zuk, duela urte batzuk, litzateke Izan C bera inplementatu. Zer da GetString seguruenik returning-- delako sentitzen ez bezala itzuli Daven, per se, zuen ziur aski ez delako to box-- txiki honetan kabitzen beraz, zer da GetString ziurrenik itzuli? 

IKUSLEEN: [INAUDIBLE] 

DAVID J. MALAN: Daven kokalekua. Eta hori izan da lan hau egiteko geroztik One Week. Zer GetString da, benetan itzuli ez den kate bat, per se. Hori da gezur zuri pixka bat. En helbide itzuli da memoria Kate, berezko helbidea. Daven 33 Oxford Street at bizi da. Baina gehiago succinctly, Gavin bizi 0x1 at, helbidea eta zenbakia One. 

Beraz, zer lortzen honetan jarri kutxa txiki, ondoren, argi eta garbi, besterik kate hori helbidea da. Beraz, denbora horretan guztian, honek izan gertatzen da. Baina zer gertatzen da hau ukituak orain hori guztia izanez gero ditu barruan zenbaki bat, nor da gelditzeko, programatzailea, edozein zenbaki jarriz etatik edozein aldagai eta besterik saltoka zatia memoria hori? Eta, hain zuzen, ikusiko dugu mehatxu hurrengoan bat da. 

Baina orain, hau sentitzen nahikoa. Diot bada, get me a katea, me ematen duzu Daven. Baina ez duzu benetan ematen dit Daven. Guztiak me ematen duzu Daven helbide da. Zelan orduan ziur jakin non Daven hasi eta ends-- Istorioa hamarkadako weird-- lortzean non Daven hasten eta bukatzen da, eta, ondoren, hurrengo memorian katea hasten da? 

Beno, duzu gozamenerako bazabiltza me Daven hasieran, funtsean, nola ez dakit Bertan, bere izena amaieran da? Null karaktere berezia duten, zein da guztiak orain garrantzitsuagoa azpian kateak bada hood dira, besterik gabe identifikatu bakarrean beren memoria kokapena arabera. Beraz, denbora horretan guztian, hori da zer gertatzen da. 

Beraz, oraingoz begiratu dugu Kodea hemen, azaldu line 26 bug baduzu. Zergatik Zamyla eta Zamyla desberdina da? Zergatik Gabe eta Gabe desberdina da? Bai, berriro. 

IKUSLEEN: helbideak ezberdinak dituzte. 

DAVID J. MALAN: Besterik ez delako helbideak desberdinak dituzte. GetString deitu duzulako berriro, eta horrek hemen egin dut azkar egingo, hau da, bigarren lerroa, kate bada t, programa hori ere egin nuen bezala, beste GetString dei berdin. Hurrengo aldiz esaten diot GetString, noa oroimenaren desberdinak pusketa bat lortzeko. 

GetString da onartzen eragilea eskatu Gero eta gehiago, memoria sistema. Ez da gauza bera berrerabiltzea joan Sei byte aldi bakoitzean bakarra. Honez berri bat iritsi memoria zatia, eta horrek esan t da iritsi hemen baino gehiago, beste balio batzuk. 

Beraz, ez dut s = berdinen t, ez duzu alderatuz ari Hau eta A aurka D hau eta V honen aurka. Hau alderatzen ari zara hau da, aurka Egia nahiko useful-- useless-- da da, nahiko alferrikakoa, benetan delako zaintzen non kateak oroimenean daude? 

Eta, hain zuzen, ez dugu. Eta ez gara joan hasteko bereziki solidario. Only den neurrian bugs, eragin dezaketen eta segurtasun mehatxuak borondate sor ditzake benetan honi buruz zaintzen hasten gara. Hargatik konpondu arazo hau. Kontua da, konpondu duzu super besterik gabe. 

Eta dezagun benetan, I aurretik agerian uzten berriro, zer egingo zenuke Egin duzu CS50 klase bat bada, eta ezartzea izan duzu bi kateak aurka konparaketa. Argi eta garbi, ezin duzu erabili s berdinen = t. Baina besterik logikoki, nola litzateke katea erkatzen dugu Kate honek C kodea erabiliz aurka? Bai. 

IKUSLEEN: Just egin du begizta [INAUDIBLE] DAVID J. MALAN: Perfect. IKUSLEEN: [INAUDIBLE] DAVID J. MALAN: Bai. Just erabili loop edo bat begizta edo dena berriz. Baina besterik oinarrizko ideia aplikatzen bada hau memoria edo array baten zatia da eta hau da, batetik bestera joateko baino gehiago biak aldi berean. Eta besterik letrak konparatu. 

Eta lortu duzun bat izan nahi du gutxi ibili, zeren nahi ez hatz bestea iragana joan zeren kate bat da bestea baino luzeagoa. Beraz, ari den begiratzea nahi zoazen amaierako balioa berezi honetan, nulua. Baina benetan, izandako amaieran, hori bezain erraza. Eta Egia, ez dugu behar gurpil asmatu. Hemen Bi bertsioa da. Eta hemen zer esan nahi dut hau da: ordez s konparatuz berdinen = t, Naiz ordez esan, joan katea bada s koma t konparaketa berdinen = 0. Orain, zer kate alderatu da? 

Bihurtzen da, funtzio bat da hori C, eta horren helburua bizitzan dator da bi kateak konparatzeko. Eta irabiatu alderatu, irakurri badugu bere Man orri edo dokumentazioa edo CS50 erreferentzia, izango da besterik ez dira ez nahastean duen itzultzen bai negatiboa alderatu zenbakia edo zenbaki positibo bat edo zero, non zero esan berdina ari dira. 

Aierua Beraz, besterik ez. Zer eragin izan dezake bada irabiatu alderatu itzultzen Balio negatibo edo positibo? IKUSLEEN: baino handiagoa edo baino gutxiago. DAVID J. MALAN: Bai, baino handiagoa edo baino gutxiago. Beraz, osotasunean ordenatzeko nahi baduzu kateak sorta hiztegian batean azkenean road-- behera egingo dugu potentzialki erabiltzeko funtzio perfektua, ez da eta ez da egin delako kateak konparatzeko zuretzat, eta esango egiten duzu bat b aurretik dator, edo ez b alfabetikoki bat lehenago etorri. Zehazki hori egin ahal izango dugu. 

Eta konturatu bata bestearen egin nuen Adibide honetan gauza. Zer gehiago egin du goi mailako aldatu funtzio nagusia honetan sortu? Char *. Eta hori beste gezur txikia dela. Denbora horretan guztian, noiz dituzun dira idazten katea, dute ezkutuka berridazketa dugu katea char * gisa beraz clang dela benetan ulertzen duzu. 

Bestela esanda, CS50.h saioa eta ikusiko dugu azkenean, ikusi, sinonimo izeneko kate bat egin dugu char * gauza bera da. Eta orain, jakin duten bakarra *, Testuinguru horretan, gutxienez, helbide esan nahi du. 

Zer helbide? Ba, hain zuzen, esan nuen char *, eta ez int * edo flotatzen *, esan char * dela char helbidea. Beraz, kutxa txiki honetan hemen, aka katea, benetan mota char * da, Horrek, besterik gabe, esaten modu fancy bat da, Kutxa hau helbide bat joango dira. Eta zer helbide duten erreferentzia egiten? Dirudienez, char bat. 

Baina ezin izan erabat dugu int * eta beste gauza batzuk izan. Baina, oraingoz, char * benetan gehien zuzena eta interes bat. Beraz, arazo hau va , igotzen den arren, berriz ere. 

Demagun, ireki dut programa hau. Ea orain iragartzeko ahal badugu dezagun Zer da kode hori gaizki. Beraz, programa honetan, kopia-0, naiz Aurretik joan eta berriro deitu joan GetString eta s balioa gordetzeko. 

Eta orduan, zergatik am egiten dut, besterik aste iraganeko oroigarri gisa? GetString hori esan egin dugu batzuetan null itzultzen. Zer esan nahi ote duen GetString itzultzen null? Zerbait oker joan. Agian esan nahi du kate handiegia da big, ordenagailuaren memorian daudelarik. Super, super, super Gertatzen da gutxitan, baina gerta zitekeen. Bertan egiaztatu nahi dugu, eta hori guztia egiten ari gara. 

Ikusiko dugu orain delako, ez baduzu hasteko eskuarki egiaztapena gauzak null bezala, baliteke benetan joan hasteko helbideak memorian nahi duten baliogabeak dira. Eta ari inducing hasteko zoazen gero eta segmentazio matxurak. Edo Mac edo PC bat, besterik ez ordenagailu bat eragiten zintzilikatzeko , edo programa bat izozteko potentzialki. 

Beraz, orain, diotenez, kopia-0.c dut, dut naiz kate horiek kopiatzeko modu joan lerroa 28. Eta gero, noa behealdean diotenez hemen noa horietako bat aldatzeko. 

Beraz, nabarituko hau. Gure zaharra lagun strlen deitzen naiz. Eta besterik ingelesez azaldu lerro hau 34 zer egiten ari da? Zer t tarte 0 egiten du ezkerreko ordezkatzen. Bai. 

IKUSLEEN: t eta behin pertsonaia? DAVID J. MALAN: t eta behin pertsonaia. Hori da. T urteko lehen pertsonaia, nahi dut maiuskulaz bertsioa esleitzeko t lehenengo pertsonaiaren. Beraz, hau da kapitalizatuz lehen letra. Eta gero, oso azken gauza egin nahi dut Programa honen dagoen aldarrikatzen dut hemen jatorrizkoa, s, eta hemen kopiatu, t da. 

Baina istorioa oinarrituta dugu besterik kateak benetan zer dira buruz esan, zer linea 28 benetan , egiten du eta zer da Emaitzeko bug joan pantailan izan? 

Beraz, lehenik eta behin, lehen galdera, 28. Zer da katea t = s benetan egiten? Hemengo ezkerreko on bada albo hemen katea t = s; duen kaxa bat ematen dit Hemen eta hemen kutxa bat. Eta demagun helbide honetan 0x da, demagun, 50 oraingo honetan, arbitrarioki. Zer esan nahi du kate t = s kanpaia azpian egin? 

IKUSLEEN: [INAUDIBLE] 

DAVID J. MALAN: memorian gordetzen aurre ez, beraz, 0x50 ez doa. Beraz, gaur egun bada, lehenik nahi dut t-en pertsonaia eta, maiuskulaz, zer naiz eraginkortasunez s egiten? Benetan gauza bera ari naiz egiten, ezta? Helbidea 0x50-- bada delako, eta besterik gabe, I ez dute taula gainean tarte handirik hemen, baina suposatuko hori 0x50 behera hemen, nire ordenagailuaren memoria nonbait. 

Eta, adibidez, Gabe I Hemen minuskula, hau atsegin dute. Eta esan dut t tarte 0 kapitalizatuta lortzen. Beno, t tarte 0 da t lehen hizkia. Beraz g gutxi dago joan bihurtu G. big Baina arazoa hau da, zer esan s Ere seinalatu? 

IKUSLEEN: Gauza bera gertatzen da. 

DAVID J. MALAN: jakinarazi bera gauza zehatza. Beraz, azalpen sinple bat agian, sintaxia pixka bat arraroa bada ere. Beraz, egin dezagun hau. Egin kopia-0 eta ondoren ./copy-0. Esan zerbait: Gabe. Eta zoritxarrez, bai dute orain kapitalizatzen dira horiek, baina horretarako azpiko Horregatik besterik ez gara orain helbideak aurre. 

Beraz, nola hasiko egiten dizuegu address-- Pun ez intended-- nola aurre hasteko ez dugu arazo jakin hori? Beno, copy1.c ere, gauzak ez dira joan pixka bat zailagoa lortzeko. Baina bat erreklamatzeko nuke Irtenbide kontzeptualki sinplea. 

Beraz, zaila da hasiera batean lortu. Ez da lehenengo erraza izango da idazten duzun denbora, agian, baina arazoa dela, bada Besterik gabe, t = s besterik egiten kopiak helbide, zer, Berriro zuk ezin dut jaso bada, da konponbidea izango da benetan kate bat kopiatzeko? 

IKUSLEEN: ziurrenik dugu begizta bat berriro erabili. 

DAVID J. MALAN: Bai. Beraz, begizta bat berriro behar du. Eta kopiatu nahi badugu, zeren katea s kate batean sartzeko, ziurrenik ere egin nahi dugu pertsonaia by pertsonaia. Baina arazoa da, bada hau da, jatorriz s, orain esplizituki hasi behar dugu memoria esleitzean t da. 

Beste era batera esanda, dezagun marraztu hau azken aldiz. Hau da, kate s = GetString. Eta dezagun jarri hau hemen, bai. Hau GetString da. Eta gero, zerbait irudian Horrelako da lehen bezala izango, g-a-b-e-/ 0. Honen antzeko zerbait apur bat itxura. Eta s, beraz, hau 0x50 deitzen diogu, eta hori, 51, 52 izango da. 

Beraz, hau 0x50 da. Eta gero, egin dut kate t. Memoria, hori besterik ez da joan ematen dit hau bezalako plaza txiki bat. Beraz, zer funtsezko urratsa da orain? S kopiatzeko t sartu nahi badut, zer hutsik egin hemen bete behar dugu? Edo zer egin behar dugun goi-mailan egin? Bai? Norbaitek? Bai. 

IKUSLEEN: behar [INAUDIBLE] nahi dugu. DAVID J. MALAN: Bai, dugu to hau hutsik bete behar. Ezin dut kopiatu eta gero larriz Gabe izena sistema eragilearen eskatu arte I beste zatia memoria bat egiteko hori da behintzat jatorrizko bezain handiak. Beraz, galdera bat uzten gaitu. 

Zelan sistema eragilea eskatzen dut ez besterik gabe, apur erakuslea sinple bat deritzo honetan bezala, bat helbidea, erakuslea bat ez little box sinple bat hau bezalako kate bat deitu? Zelan eragilea eskatzen dut memoria zatia handi bat sisteman? Horrela, orain arte, besterik ez dut atzera ahaztuak GetString deituz zeharka. Beraz, nola da GetString nahiz eta bere memoria lortzean? 

Beno, bihurtzen da, ez dagoela beste funtzio hau hemen egingo dugu orain hasteko erabili. Orain, itxura modu gehiago críptica than-- eta naiz bakarra nork ikusi ahal hobeto esanda lerro hau itxura modu gehiago críptica ondoren egin beharko lukete lehen begiratuan. Baina dezagun aurre egiten ez ezik. 

Ezkerreko aldean, daukat char * t. Beraz, ingelesez, dezagun hasteko formulatu jargon teknikoetan esaldiak egokia. Beraz, hau da esleitzean bat mota char aldagai * izeneko t. Orain, benetan zer esan nahi du? 

Beno, hori esan nahi du, zer egingo dut t izeneko aldagai hau jartzen? Char baten helbide bat. Beraz, besterik gabe, errazagoa da, zentzuzko modu gehiago ren ezkerraldean deskribatzeko. Beraz, lauki hau hemen bakarrik sortzen. Beraz, eskuineko aldean, ustez, va ra handiagoa esleitu oroimenaren nola zatia? Hargatik tease honetan gain. 

Honez Lehen begiratuan erabatekoa, baina zer gertatzen da barruan hemen? Lehenik eta behin, ez da malloc, itxuraz gure lagun berria, "Memoria esleitu". Beraz, honen argumentua ari gainditu da sartu, beraz, argumentua nahiko handi bat da. Hargatik tease honetan gain. 

S strlen, noski, suposatzen the-- IKUSLEEN: karaktere kopurua. DAVID J. MALAN: Just s karaktere kopurua. Beraz s luzera, jatorrizko katea. Beraz, G-a-b-e. Beraz, ziurrenik, lau kasu honetan ez da. Zergatik naiz +1 egiten ondoren S strlen deituz? IKUSLEEN: [INAUDIBLE] DAVID J. MALAN: Dela null karaktere berezia. Galdetu zer luzera Gabe izena, naiz lau esanen. Kanpaia azpian, nahiz eta, behar dut null karaktere bosgarren byte duten. Beraz, horregatik +1 egiten ari naiz. 

Orain badaezpada duzu hau exekutatzen ari programa ez den beste ordenagailu batean, esateko, CS50 tresnaren, non char baten tamaina ezberdina izan daiteke nire ordenagailuan propioa bihurtzen ahal izango dut hau deitu operadorea sizeof, besterik ordenagailu eskatu, zer baten tamaina da ordenagailu honetan char? 

Eta biderkatzeko bost honetan Adibidez char baten tamaina, eta haietako ordenagailu gehienetan will bakar bat, malloc izan da me big horretarako esleitu joan memoria zatia hemen eskuineko ertzean zehar. Eta nik to itzultzeko joan funtzio bat da, da, beraz, niri zer itzultzeko? IKUSLEEN: helbide? DAVID J. MALAN: zer helbide? IKUSLEEN: memoria esleitu da? DAVID J. MALAN: Of the memoria da esleituko. Beraz, ideia ez dut, Egia, kode hau amaitzeko da. Proposatzen noa nik amaitzeko 0x88 at joatea. Erabat arbitrarioak, baina nonbait 0x50 baino beste, sistema eragilea delako, zer Windows eta Mac OS niretzat egin, da ziurtatu ematen ari dela me RAM zatiak ezberdinak. 

Beraz, honen balioa kode hau da memoria zatia amaitzeko ditzake. Beraz, hau da amaitzen hemen, 0x88. Beraz, gaur egun, argi eta garbi, ulertzen dut hori ez da honen berdina da, tan ari dira seinalatuz delako memoria zatiak ezberdinak. Beraz, badut orain benetan hau kopiatu nahi urtean, egin zure proposatutako irtenbide utzi. 

Goazen besterik sortu, begizta bat, eta egin t tarte i s tarte i lortzen. Orain erabili ahal dudalako array-antzeko izendapen hori, delako, nahiz eta malloc oso oro bideratzen dit memoria, memoria besterik Alboko byte da. Byte, byte, byte, back to back back. 

Ziur aski, ahal nuen programatzaile gisa array bat bezala tratatzen da eta horrek esan nahi du erabili ahal izango dut hau azkenik ezagunak kortxete batzuk besterik idazkera. 

Hargatik pausatu ni han, zeren hau asko da guztiak aldi berean, nahiz eta laburpena oinarrizko ideia katea da, denbora honetan guztian, Ez da datu-mota berri bat per se. Erakuslea deiturikoak bat besterik, pertsonaia baten ezaugarriak, besterik gabe esan nahi zenbakia da duten giza konbentzio to 0x zerbait bezala idatzi ohi dugu. 

Baina zenbaki bat besterik ez da, 33 Oxford Street bezala, eta hori gertatzen izaten CS eraikin helbidea. Datu horiek edozein galdera? Bai? 

IKUSLEEN: Zergatik egiaztatu dugu t beragatik null? 

DAVID J. MALAN: Zergatik egiten dugu egiaztatu t null berdina egiteko? Documentation-- irakurri badugu malloc for question-- handia, nik to inprimatu fina esan, batzuetan malloc null itzultzeko agian, besterik GetString bezala. Eta, hain zuzen, GetString null itzultzen du Aldi berean, malloc null itzultzen bada, GetString malloc erabiltzen delako. 

Eta agian OS bada gertatuko, Mac OS, Windows, edozein dela ere, besterik ez da, zuretzat memoria. Beraz, zer gertatu da. 

Eta dezagun beste gauza bat erakusten dit besterik agian putz zure kontuan edo erabat izan urrunegi line zehar. Baina Tira me the kopiatzeko begizta bera, Duela une bat, berreskuratutako honetan. t tarte i s tarte i lortzen. 

Nice eta erabiltzaileak errespetatzen. Astea Bi bezala sentitzen berriro. Baina bertsio hau benetan ahal izango honek, itxura críptica gisa berridatzi. Izeneko teknika erakuslea da aritmetika, helbidea aritmetika. Baina zergatik egiten du lan? 

Orain annoyingly, the C egileek erabaki erabiltzea * helburu ezberdinetarako ikurra. Ikusi dugu behin erabiltzen da dagoeneko, char *, horrek esan nahi du "ematen dit aldagai bat hori eduki joan char helbidea. " Testuinguru horretan, beraz, char * esan nahi du "ematen dit aldagai bat." 

Zoritxarrez, gabe * erabiltzen baduzu horren aurrean hitz bat, char bezala, nik orain deitzen du dereference operadorea. Eta honen gehiago ikusiko dugu, luze baino lehen. Baina esan nahi besterik ez da "Hara joan." Bat esanez bezala, norbait entregatu me bada paper zati batean "33 Oxford Street," Egiten dut "* 33 Oxford Street," bada, horrek esan nahi "Jaisten errepidea CS eraikina." 

Beraz, * joan besterik esan nahi ez bada han aurrean hitza ez da. Beraz, zer da t, argi izan behar du? t zatia helbidea da horretan eman zen atzera me to memoria. ak zer, argi izan behar du helbidea da, Adibidez, gure taldea izan da, eztabaidatzen ditudan minuskulaz gabe of? s helbidea da horretako IKUSLEEN: kate hauek. DAVID J. MALAN: Gabe jatorrizko izena Of. Beraz helbidea idatzi da zatia memoria hau. Beraz, esan badut t + i i, iragarki, gure laguna besterik ez zituela. Besterik indize-aldagai bat da hori up on zerotik errepikatzean katea s luzera. Beraz, zero, gero bat izango da, ondoren, bi, hiru, lau. Hargatik muntatzen berri horiek Scratch-moduko puzzle piezak, izango bada, nahiz eta, berriro ere, sintaxia askoz Scratch baino urrutira. Beraz, t helbide + da i da niri emateko zenbaki bat, horien delako guztiak garela dira marrazten ditudan hex moduan zenbakiak. Baina zenbakiak besterik ez dira. 

Beraz, t-helbidea, esan badugu 0x88 zen, zer da 0x88 gehi zero. Oraindik eroso ez bada ere hex oraindik ere, hartu asmatzeko. 

IKUSLEEN: Jatorrizkoa. 

DAVID J. MALAN: Oraindik 0x88. Beraz, zer esan nahi du * 0x88? , Esan nahi du "Hara joan" horrek esan nahi du eraginkortasunez, "jarri atzamarra hemen." Eta orain, eskuineko eskua bestaldean Espresio hau, * eta ondoren parens, s + i z esan nahi du, hau da, jorratuko gora g txikiaren hemen. s + 0 da, noski, s, edozein izanda s da. 

Beraz, gaur egun, * s, ez da besterik bezalako * 33 Oxford Street esan nahi helbidera joan s. Beraz, hemen hatz honetan, eskuineko eskua da. Beraz, zer ari naiz, zer sartu kopiatu joan? Eskubideari buruzko gauza, hau da, gabe, g gutxi hemen, hemen sartu. 

Eta beraz, eragina begizta honen lehenengo iterazio, , proposatzen duzun bezala, nahiz eta itxura crazy gehiago ezer baino konplexuagoa ikusi dugu aurretik, da, besterik gabe, esaten hemen joan eta pertsonaia horren kopia hemen. Honez bi leku-mapa bat ematen dizu. 

Eta, orain arte honen gehiago ikusiko dugu. Baina orain, itxaropena besterik ez da oinarrizko ideia horietako batzuk aurkeztera. Eta hain zuzen ere, utzi ditzagun final programa bat hemen, eta gero agindu claymation, horrek dena du eskuin egingo. Guztiak eskubidea. Hargatik up-- ireki ez gara. Hargatik me itzuli beharko dugu Argazki hau luze baino lehen. Ireki me Azken adibide hau hemen. 

Hortaz, hona hemen bat super, super da programa hori accomplishes duten hauek egiten ditu bizitzan ezer ez. Lehen bi aldagai, x deklaratzen da eta y, ez direla oraingoan zenbakiak, per se. Oraindik ez dute osokoak, per se. Itxuraz dira int dute *. Beraz, besterik ez edonork, zer esan nahi du Zure aldakorra, zure datu-mota bada, mota int * izarra da? Hau int baten helbidea da. 

Beraz Dut ez daki non da oraindik. Besterik gabe esan nahi du "jarri da, azkenean, int hemen helbidea. " 0x50, 0x88, lekuan bertan memoria, helbide bat dago han. Eta hori zer da, y , egon baita joan. 

Orain esaten badut x = malloc (sizeof (int)), hau esaten modu fancy bat da, hey sistema eragilea, malloc bidez, emaidazu nahikoa memoria tamaina Int bat, hau da, ziurrenik, 32 bit edo lau byte izango. 

Beraz, zer itzuliko du malloc? Malloc helbide bat itzultzen du. Beraz, zer da x in get gordetzen ari da? Zatia helbide memoria, lau byte, malloc besterik niretzat aurkitu galdetuz sistema eragilea. 

Orain berriz, lerro lau hemen * x = 42,. Just argi izan, zer da hor behera joan? Ezkerreko aldean, * x. duten * 33 Oxford Street bezala. Beraz * x esan zer? 

IKUSLEEN: Joan. 

DAVID J. MALAN: helbide horretara joan. Lekuan zatia duten memoria da, bertara joaten. Eta jarri zer ez, noski? IKUSLEEN: 42. DAVID J. MALAN: 42. Ondo da, * y, ideia bera. Y en helbide honetara joan. Jarri 13 zenbakia ez, baina zer da une y? IKUSLEEN: Ez dago memoria ez da y da. DAVID J. MALAN: Ez dago no y memoria da. Beraz, zer egiten duen eta, seguruenik, eduki, izan dugu esaten? 

IKUSLEEN: Garbage. 

DAVID J. MALAN: zabor balio batzuk. Orain, zabor balioa zenbaki bat da oraindik. Oraindik ezin da helbide bat oker. Norbaitek bagina bezala da scribbled zerbait behera, eta haren esanahia gisa interpretatu dut kalean behera eraikin batzuk. Eta saiatu besterik ez duzu bada joan sartu eraikin batzuk ez duzu jabea, edo memoria zatia, batzuetan ez duzu eman zaio, gauza txarrak gerta liteke. Computer huts dezake, edo beste batzuk Zehaztu gabeko jokabidea gerta liteke. 

Beraz, intro, ondoren, hegazti hau da. Oraindik gogoan dut, 20 Zenbait urte bakoitietan geroago, non, azkenik, I nengoela erakusleak ulertzen. 

Zein da, duzu bada utzi hemen hiru minututan eta uste ez dut erakusleak ulertzen, konturatzen 20 izan dut gogoan crazy arrazoi batzuk urte noiz eta zergatik azkenean hondoratu da urtean, nire irakasle batekin eserita ikaskide, Nishat Mehta in the Eliot, Jatetxe atzealdean. Orain, gogoan dut horregatik hau izan zen gaietako I, in bat Bereziki, borrokatu. Eta gero, azkenik, bertan klik egin, bezalako gaiak asko esango nuke azkenean izango. Eta orain, hori sentitzen guztiak egiteko zoriontsuago eta gehiago guztiak konbentzitzen, dezagun ere azken begirada bat gure Azken hiru minutu hemen Binky at, gure laguna, Nick Parlante Stanford from. 

[Bideo-erreprodukzioa] 

-Aizu, Binky. Wake up! Erakuslea fun denbora da. 

-Zer da hori? Erakusleak buruz ikasi? Oh, GOODY! 

Beno, hasteko, ez dut asmatzen ari gara erakusleak pare bat behar izango. 

-Ados. Kode hau bi erakusleak esleitzen, bertan osokoak seinalatu. -Ados. Beno, bi erakusleak ikusten dut, baina ez dute ez dirudi ezer seinalatuz izan. 

Hori da eskubidea. Hasieran, erakusleak ez ezer seinalatu. Seinalatu deitzen dira momentu honetan gauza hauek pointees, eta horiek egungo konfiguratzen beste urrats bat. 

-Oh, Eskuin, eskuin. Hori banekien. Pointees dira bereizi. Er, beraz, nola ez pointee esleitu duzu? 

-Ados. Beno, kode hori bideratzen zenbaki oso pointee berri bat, eta parte multzo honek x hura seinalatu. 

-Aizu, Itxura hobea. Beraz, zerbait egin da. 

-Ados. Egingo erakuslea x dereference dut 42 zenbakia gordetzeko bere pointee sartu. Trick honetarako, behar dut nire Wand dereferencing Magic. 

-Zure Makila magikoa Dereferencing of? Egia hori handia. 

Zer kodea itxura da -Honek. Besterik ez dut kopurua, eta [POP] eratu 

-Aizu, Begiratu. Ez doa. 

On x jarraitzen dereference bat egiten -Beraz gezi bere pointee sartzeko. Kasu honetan, denda batean 42 hor. Hey saiatu hura erabiltzen zenbakia gordetzeko 13 beste erakuslea, y. 

-Ados. Besterik ez dut joan hona y arte, eta zenbakia 13 set up. Eta gero, hartu Wand Dereferencing eta besterik [BUZZ] 

-Oh! 

-Oh, Hey! Horrek ez du funtzionatzen. Esan, hegazti, ez dut uste dereferencing y ideia ona da, badakizu delako, pointee konfiguratzeko beste urrats bat da. Eta ez dut uste inoiz egin dugu. 

-Good Puntua. -Bai. Erakuslea y bideratu dugu, baina ez dugu inoiz ezarri nahi pointee bat seinalatu. 

-Oso Observant. -Aizu, Ona ez bilatzen ari zaren, Binky. Ezin konpondu da, beraz, y puntu pointee x bera? 

-Sure. Nire Magic Wand erabili dut erakuslea esleitzeko. 

-Da Duten izango da aurretik bezala arazo bat? -No. Honek ez du pointees ukitzeko. Erakuslea bat aldatzen besterik ez da beste gauza bera seinalatu. 

-Oh, Ikusten dut. X bezala leku berean Orain y puntos. Beraz, itxaron. Orain, y finkoa da. Pointee bat du. Beraz, makila dastatu ahal izango dituzu Berriro dereferencing 13 baino gehiago bidaltzeko. 

-Uh, OK. Hemen doa. [POP] 

-Aizu, Hori begiratu. Orain y buruzko lanak dereferencing. Eta erakusleak partekatzen ari delako pointee bat dela, biek ikusi du 13. -Bai. Partekatzea, edozein izanda ere. Beraz, leku batetik bestera joateko gaur egun? 

Oh, begira. Oraindik denbora atera dugu. 

-But-- 

-Just Hiru erakuslea arauak gogoratzeko. Zenbakia One, oinarrizko egitura da erakuslea bat duzula, eta puntu ezazu pointee bat. Baina erakuslea eta pointee bereizi dira, eta akats arruntenak da konfiguratzeko erakuslea, baina pointee bat emateko ahaztu. 

Zenbakia bi, erakuslea dereferencing erakuslea hasten eta gainean dagokion gezi jarraitzen bere pointee sartzeko. Dakigun bezala, honetan bakarrik lan egiten ez bada pointee bat, zein motatako lortzen back zenbakia One araua. 

Kopurua hiru, erakusle esleitzeko erakuslea bat hartzen eta seinalatu aldatzen da pointee bera erakuslea beste gisa. Beraz, esleipena egin ondoren, bi erakusleak egingo du pointee bera seinalatu. Batzuetan, hori partekatzea du izena. Eta hori da dena hor da, benetan. Bye-bye orain. [END bideo-erreprodukzioa] DAVID J. MALAN: Hau CS50 da. Duzu datorren astean ikusiko dugu.