>> [CHWARAE CERDDORIAETH]
DAVID J. Malan: pob hawl.
Mae hyn yn CS50, ac mae hyn yw diwedd Wythnos Pedwar.
Ac un o'r pynciau heddiw yw hynny o fforensig digidol,
y grefft o adfer gwybodaeth.
Ac yn wir, er bod ydych chi yn y canol
ar hyn o bryd Heddwch yn Three a Breakout, yr wythnos nesaf,
Bydd y ffocws ar union y parth hwn.
>> Felly, un o'r swyddi coolest mi erioed Roedd yn ôl yn yr ysgol i raddedigion,
pan oeddwn yn gweithio ar gyfer yr leol Middlesex Sir Dosbarth Twrnai
swyddfa, yn gwneud fforensig yn gweithio.
Felly y bôn, mae'r Massachusetts Heddlu y Wladwriaeth, ar adegau,
wrth weithio ar achosion byddai dod mewn pethau fel 'n anawdd drives
a disgiau hyblyg a cardiau cof ac yn y blaen.
A byddent yn eu llaw i mi a fy mentor,
ac mae ein nod oedd dod o hyd i dystiolaeth, os oedd unrhyw, ar y cyfryngau hyn.
Cipolwg Nawr, efallai eich bod wedi gweld o y byd hwn o fforensig
yn y cyfryngau, teledu a ffilmiau.
Ond mae'r swydd oedd gen, a debygol iawn y byd,
Nid yw union fel y byddech yn ei weld.
Gadewch i ni edrych ar yr hyn mae'n debyg eich bod wedi ei weld.
[VIDEO Playback]
-OK.
Yn awr, gadewch i ni gael edrych yn dda ar chi.
>> [CHWARAE CERDDORIAETH]
>> -Hold Iddo.
Rhedeg y cefn.
>> -Wait Funud.
Ewch i'r dde.
-Mae.
Rhewi hynny.
-Full-Sgrîn.
>> -OK.
Rhewi hynny.
-Tighten Fyny ar hynny, a wnewch chi?
>> -Vector Mewn ar hynny guy gan yr olwyn gefn.
>> -Zoom Mewn dde yma ar y fan a'r lle hwn.
>> -With Yr offer cywir, mae'r Gellir ddelwedd gael ei chwyddo a hogi.
>> -Beth Yw hwnna?
>> -Mae'n 'An rhaglen wella.
>> -Can Ydych yn glir bod unrhyw?
>> Nid -Rwy'n ddim yn gwybod.
Gadewch i ni wella.
>> -Enhance Adran A6.
Yr wyf yn gwella y manylion, ac--
-Rwy'n Credu bod digon i wella.
Rhyddhau i fy sgrin.
>> Gwella -I adlewyrchiad yn ei llygaid.
-Let Ei redeg hyn drwy gwella fideo.
>> -Edgar, Gallwch wella hyn?
>> -Hang Ar.
>> -I've Bod yn gweithio ar fyfyrio hwn.
>> Adlewyrchiad rhywun -Mae yn.
>> Reflectiar.
-Mae Yn adlewyrchiad o wyneb y dyn.
>> Adlewyrchiad -Y!
-Mae Yn adlewyrchiad.
-Zoom I mewn ar y drych.
Gallwch weld adlewyrchiad.
>> -Can Byddwch gwella delwedd o fan hyn?
-Can Chi ei wella?
-Can Ni'n gwella hyn?
-Can Chi ei wella?
-Hold Ar ail.
'N annhymerus' yn gwella.
-Zoom I mewn ar y drws.
-Times 10.
-Zoom.
-Move Mewn.
-Mwy.
-Wait, Rhoi'r gorau.
-Stop.
-Pause Iddo.
-Rotate 75 gradd ni o amgylch y fertigol, os gwelwch yn dda.
>> -Stop.
Ewch yn ôl at y rhan am y drws unwaith eto.
>> -Got Enhancer delwedd bitmap a all?
>> -Maybe Gallwn ddefnyddio'r Pradeep Singh dull i weld i mewn i'r ffenestri.
>> -Y Meddalwedd yn gyflwr y celf.
>> -Y Eigenvalue i ffwrdd.
>> -With Yr hawl cyfuniad o algorithms--
>> -He Yn cymryd golau algorithmau i'r lefel nesaf,
a gallaf eu defnyddio i gwella'r y llun.
>> -Lock Ar ac ehangu'r z-echel.
>> -Enhance.
Gwella.
-Enhance.
-Freeze A gwella.
[DIWEDD Playback VIDEO]
DAVID J. Malan: Felly dyna'r pob gair, ond nid oeddent yn
ddefnyddir mewn brawddegau yn gywir.
Ac yn wir yn y dyfodol, unrhyw bryd, os gwelwch yn dda, byddwch yn clywed rhywun yn dweud y gair,
"Gwella," chwerthin dim ond ychydig bach.
Oherwydd pan fyddwch yn ceisio gwella, er enghraifft, mae hyn yn beth sy'n digwydd.
>> Felly dyma llun hyfryd.
Mae hyn yn Daven CS50 ei hun.
Ac mae'n debyg ein bod yn awyddus i canolbwyntio i mewn ar y twinkle yn ei lygad,
neu adlewyrchiad y dyn drwg a oedd yn amlwg
eu dal gan y camera diogelwch.
Mae hyn yn beth sy'n digwydd pan chi chwyddo i mewn ar ddelwedd sy'n
Mae dim ond nifer cyfyngedig o ddarnau sy'n gysylltiedig ag ef.
>> Dyna'r hyn y byddech yn ei gael.
Ac yn wir, yn y llygad Daven yn yw ond pedwar, efallai chwe picsel
sy'n cyfansoddi yn union beth Roedd glimmering yno.
Felly bydd Problem Set Pedwar yn y pen draw yn cael chi edrych ar y byd hwn, yn enwedig
yn ôl natur yr rywbeth rydym yn galw ffeil i / o, lle
i / o yn unig yw ffordd ffansi o ddweud mewnbwn ac allbwn.
>> Hyd yn hyd yn hyn, pob un o'r rhyngweithiadau rydym wedi cael gyda chyfrifiadur
wedi bod i raddau helaeth gyda'ch bysellfwrdd a sgrin,
ond nid cymaint ag y ddisg galed, neu arbed o ffeiliau y tu hwnt i'r rhai yr ydych
ysgrifennu eich hun.
Mae eich rhaglenni hyd yn hyn wedi Nid yw bod yn creu, ac yn arbed,
ac yn diweddaru eu ffeiliau eu hunain.
>> Wel, beth yw ffeil?
Wel, rhywbeth fel JPEG.
Mae hwn yn ddelwedd rydych efallai wedi neu llwytho i Facebook,
neu'n gweld yn unrhyw le ar y we.
Yn wir, llun yr ydym newydd ei Gwelodd o Daven yn JPEG.
A beth sy'n ddiddorol am ffeiliau fel JPEG
yw y gellir eu hadnabod, nodweddiadol, gan batrymau penodol o ddarnau.
>> Mewn geiriau eraill, yr hyn yw hi y gwahaniaethu JPEG o GIF
o PING o Word dogfen o ffeil Excel?
Wel, 'i' jyst yn wahanol patrymau o ddarnau.
A phatrymau gwahanol hynny yn fel arfer ar ddechrau ffeiliau hynny.
>> Felly, pan fydd eich cyfrifiadur yn agor Word doc, neu pan fydd cyfrifiadur yn agor JPEG,
mae'n edrych fel arfer yn y nifer o ddarnau cyntaf yn y ffeil.
Ac os ei fod yn cydnabod yn batrwm, y mae'n ei ddweud, oh, mae hyn yn ddelwedd.
Gadewch i mi arddangos i y defnyddiwr fel graffig.
Neu, oh, mae hyn yn edrych yn debyg i doc Word.
Gadewch i mi ddangos i'r defnyddiwr fel traethawd.
>> Felly, er enghraifft, JPEG, mae'n troi allan, yn cael eu
eithaf soffistigedig o dan y cwfl.
Ond mae'r tri bytes cyntaf yn y rhan fwyaf mhob JPEG yn dechrau gyda y tri rhif.
Felly beit sero, un, a dau ohonynt, yn y rhan fwyaf o bob JPEG, 255, yna bydd y nifer
216, yna bydd y rhif 255.
>> A beth byddwch yn gallu i ddechrau yn ei wneud yr wythnos nesaf
mewn gwirionedd yn procio o dan y cwfl o ffeiliau fel JPEG
ac fel ffeiliau didfap, a gweld yr hyn bob amser wedi bod yno am gymaint o amser
fel yr ydych wedi bod yn defnyddio cyfrifiadur.
>> Ond yr hyn sy'n nad oes fel arfer ysgrifennu fel rhifau degol fel hyn.
Nid yw gwyddonwyr cyfrifiadurol yn ei wneud yn tueddu i siarad yn y degol.
Nid ydynt yn wir yn siarad yn deuaidd.
Yn nodweddiadol, pan fyddwn am i fynegi rhifau,
yr ydym mewn gwirionedd yn defnyddio hecsadegol, y gallwch cofio
o, dyweder, Datrys Set Un, a heriodd
chi feddwl am system wahanol.
>> Yr ydym, wrth gwrs, yn gyfarwydd gyda degol, sero drwy naw.
Buom yn siarad am deuaidd.
Ac nid ydym ddim yn cael i ddefnyddio bod llawer yma
ar y tu allan, oherwydd bydd cyfrifiaduron defnyddio hynny.
Ond bydd rhaglenwyr iawn Yn aml, ond nid bob amser,
defnyddio hecsadegol, a dim ond yn golygu mae gennych 16 llythyr yn eich wyddor,
yn hytrach na dau neu 10.
>> Felly, sut ydych chi'n cyfrif at uwch na naw yn hecsadegol?
Rydych yn mynd 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, dim ond drwy confensiwn.
Ond yr hyn sy'n allweddol yw bod pob o'r rhain yn symbol sengl.
Nid oes unrhyw 10.
Nid oes 11, fel y cyfryw, oherwydd bod gan bob o'ch digid, yn union fel yn y degol
ac yn union fel yn deuaidd, dylai dim ond fod yn gymeriad sengl, yn ôl confensiwn.
>> Fel bod yna yw'r wyddor sydd gennym ar gael i ni ar gyfer hecsadegol.
Felly beth mae JPEG edrych fel os ydych yn oedd i ysgrifennu allan y rhai tri cyntaf
Nid bytes fel degol, ond, er enghraifft, fel hecsadegol?
A pham mae hecs hyd yn oed bob un sy'n ddefnyddiol?
>> Wel, edrych yn sydyn ar enghraifft.
Felly, os wyf yn ysgrifennu darnau sy'n cynrychioli numbers-- degol hyn
gallai hyn fod ychydig yn rhydlyd bellach o ychydig wythnosau yn ôl,
ond yr un ar y chwith a'r un cywir yn eithaf hawdd.
255 oedd y nifer mwyaf yr ydym Gallai gynrychioli gydag wyth darnau.
Yr oedd yr holl rai.
Felly, yr unig un sy'n ychydig ddiddorol yw'r un canol.
Ac os ydych yn fath o yn ei wneud allan y mathemateg, byddwch yn diddwytho hynny, yn wir,
y patrwm hwnnw o un a seroau yn cynrychioli 216.
Felly gadewch i ni dim ond nodi am nawr bod y rhain yn gywir.
Ond pam mae hyn yn ddiddorol?
>> Wel, mae beit, wrth gwrs, yw wyth did.
Ac mae'n troi allan, os ydych yn meddwl o beit fel dau darnau o bedwar ddarnau,
fel hyn.
Gadewch imi ychwanegu rhywfaint o le.
Felly, cyn, ar ôl.
Rwyf newydd ychwanegu ychydig o le gwyn er mwyn delweddu yma.
Sut y gallem nawr yn cynrychioli mewn, dyweder, hecsadegol pob cwad o ddarnau,
pob set o bedwar ddarnau?
>> Felly, er enghraifft, ar y chwith Erbyn hyn, mae gennym 1,111 yn deuaidd.
Beth yw y rhif hwnnw yn degol, os ydych yn gwneud allan y cwestiwn?
Mae gennych y lle rhai, y lle fesul dau, y lle pedwar, a'r lle wyth.
>> CYNULLEIDFA: 15.
DAVID J. Malan: Mae'n 15.
Felly, os ydym yn ei wneud wyth a phedwar a dau ac un, rydym yn cael 15.
Felly gallwn ysgrifennu i lawr 15 isod 1111, ond holl bwynt yma
yn hecsadegol, nid degol.
Felly, yn lle ysgrifennu i lawr 15, 1-5, Rydw i'n mynd i ysgrifennu hynny mewn hecs,
ac os ydych yn meddwl yn ôl, os oes gennych sero drwy f, yr hyn sy'n 15 mynd i fod?
CYNULLEIDFA: f.
DAVID J. Malan: Felly, mae'n troi allan ei fod yn f.
A gallwch weithio hynny allan drwy ddweud, yn dda, os yw yn 10, yna OK, f yw 15.
Felly yn wir, gallem ailysgrifennu hyn yn un set o rifau fel f f.
Ac yna, os ydym yn gwneud ychydig o mathemateg, byddwn yn dewch i'r casgliad fod hynny'n d.
Wyth yn eithaf hawdd, oherwydd ein cael un yn y lle wyth.
Ac yna, mae gennym gwpl mwy o f f yn.
>> Felly, beth mae pobl yn tueddu i wneud yn ôl confensiwn pan fyddant yn defnyddio hecsadegol yw maent ond
ysgrifennu hyn ychydig yn fwy cryno, cael gwared ar y rhan fwyaf o'r gofod gwyn.
A dim ond i fod yn super glir i darllenwyr fod hyn yn hecsadegol,
y confensiwn syml ymhlith bodau dynol yn cael i ysgrifennu sero
x, sydd heb unrhyw ystyr arall na dynodwr gweledol,
yma hon rhif hecs.
>> Ac yna, byddwch yn rhoi y ddau ddigid, f f yn yr achos hwn, yna d yn, yna f f.
Mor fyr stori hir, hecsadegol yn unig yn tueddu
i fod yn ddefnyddiol gan fod pob un o'i digid, sero drwy f, berffaith llinellau
i fyny gyda phatrwm o bedwar ddarnau.
>> Felly os oes gennych ddau ddigid hecsadegol, sero drwy F, dro ar ôl tro,
sy'n rhoi i chi berffaith wyth darnau neu un beit.
Felly dyna pam ei bod yn tueddu i fod yn gonfensiynol ddefnyddiol.
Does dim deallusol cynnwys gwirioneddol y tu hwnt i hynny,
ac eithrio ei cyfleustodau gwirioneddol.
>> Nawr nid JPEG yw'r unig ffeilio fformatau ar gyfer graffeg.
Efallai y byddwch yn cofio bod yna ffeiliau fel hyn yn y byd,
o leiaf o rai blynyddoedd yn ôl.
>> Felly, mewn gwirionedd roedd hyn yn gosod i mewn Ffenestri XP
ar filiynau o gyfrifiaduron ar draws y byd.
Ac roedd hyn yn ffeil didfap, BMP.
A ffeil bitmap, fel y byddwch yn gweld nesaf wythnos, dim ond yn golygu patrwm o ddotiau,
picsel ag y maen nhw'n gelwir, a map ar ddarnau, mewn gwirionedd.
>> Felly, yr hyn sy'n ddiddorol, fodd bynnag, am y fformat ffeil hwn, BMP, mae
bod o dan y cwfl, mae'n wedi mwy na dim ond tri bytes
hynny cyfansoddi ei header, felly i siarad, yr ychydig brathiadau cyntaf.
Mae'n mewn gwirionedd yn edrych ychydig yn gymhleth ar yr olwg gyntaf.
A byddwch yn gweld hyn yn y P a osodwyd.
Ac yn cael rhywbeth allan arbennig o hyn yn awr
Nid yw mor bwysig, fel dim ond y ffaith hynny ar ddechrau pob didfap
ffeil, fformat graffigol, mae criw cyfan o rifau.
>> Nawr Microsoft, mae'r awdur y fformat hwn,
tueddu i alw y rhai pethau nad ints a chars
a fflotiau ond geiriau a d geiriau a hiraethu a bytes.
Felly, maen nhw jyst gwahanol fathau o ddata.
Maen nhw'n enwau gwahanol am yr un peth.
Ond byddwch yn gweld bod yn P Set Four.
>> Ond dim ond i ddweud os yw dynol dwbl-cliciau rhywfaint ffeil .BMP ar ei
neu hi 'n anawdd cathrena, a ffenestr yn agor fyny ddangos iddo neu iddi fod ddelwedd,
a ddigwyddodd oherwydd bod y gweithredu system yn sylwi yn ôl pob tebyg, nid yn unig
estyniad ffeil .BMP yn enw'r ffeil,
ond hefyd y ffaith bod mae rhywfaint confensiwn i batrwm o ddarnau
ar y dechrau o'r ffeil didfap.
>> Ond gadewch i ni bellach yn canolbwyntio ar ffeil o'r fath yn gymhleth,
ond yn hytrach ar rywbeth fel hyn.
Gadewch i ni dybio yma yn Gedit, yr wyf yn dim ond yn cael y dechreuadau
o raglen sy'n eithaf syml.
Rwyf wedi cael rhai yn cynnwys hyd top.
Nawr mae gen i #include "structs.h" ond 'N annhymerus' yn dod yn ôl at hynny mewn munud.
Ond mae hyn yn ddefnyddiol am y tro.
Felly, mae hon yn rhaglen sy'n mynd i weithredu
fel cronfa ddata y cofrestrydd.
Felly cronfa ddata o fyfyrwyr, a phob myfyriwr yn y byd
Mae enw a thŷ ac yn ôl pob tebyg rhai pethau eraill, ond byddwn yn cadw pethau'n syml.
Mae pob myfyriwr yn cael enw a thŷ.
>> Felly os oeddwn i eisiau ysgrifennu rhaglen sydd â'r diben mewn bywyd
Roedd dim ond i ailadrodd o sero ar hyd at dri,
os oes tri myfyriwr ym Mhrifysgol Harvard.
Ac yr wyf am gael, gan ddefnyddio GetString, enw a dy pob myfyriwr,
ac yna dim ond argraffu'r rheiny allan.
>> Mae hyn yn fath o fel Wythnos Un, Wythnos Dau pethau yn awr,
ble Fi jyst eisiau i dolen neu rywbeth fel 'na.
Ac yr wyf am alw GetString ychydig amserau, ac yna ei argraffu f ychydig o weithiau.
Felly, sut y gallwn wneud hyn, fodd bynnag, pan fydd y ddau enw a thŷ
yn cael eu cynnwys ar gyfer pob myfyriwr?
>> Felly, efallai fy ngreddf gyntaf fod yn gwneud rhywbeth fel hyn.
Efallai fy mod yn gyntaf yn dweud, yn dda, yn rhoi i mi, dweud, amrywiaeth o llinynnau galw enwau.
Ac nid oes arnaf eisiau i hardcode tri yma.
Beth ydw i am ei roi yno?
Felly MYFYRWYR, oherwydd bod yn unig gysonyn datgan ar y brig,
yn unig fel nad oes rhaid i mi hardcode tri mewn mannau lluosog.
Fel hyn, gall yr wyf yn newid yn un lle, ac mae'n effeithio ar newid ym mhob man.
Ac yna, efallai y byddwn yn ei wneud llinyn yn gartref MYFYRWYR.
>> Ac yn awr, efallai y byddwn yn gwneud rhywbeth fel am (int i = 0; ff <MYFYRWYR; ff ++.
Felly rydw i'n teipio yn gyflym, ond mae hyn yn yn ôl pob tebyg cystrawen cyfarwydd erbyn hyn.
>> Ac yn awr, mae hyn yn fwy diweddar.
Os ydw i eisiau rhoi yn y i-fed enw'r myfyriwr, yr wyf yn meddwl fy mod yn gwneud hyn.
Ac yna, nid yw enwau ond mae tai braced i.
Yr wyf yn gwneud hyn, GetString, a gadael i mi fynd yn ôl ac yn atgyweiria hon llinell.
Cytuno?
Anghytuno?
Dyw hi ddim yn iawn hawdd ei ddefnyddio-.
Nid wyf wedi dweud wrth y defnyddiwr beth i'w wneud.
>> Ond yn awr, os wyf hefyd yn eisiau nes ymlaen, gadewch i ni
dyweder, argraffu pethau hyn out-- felly TODO ddiweddarach.
Dw i'n mynd i wneud mwy gyda this-- hyn gellid dadlau yw
mae gweithrediad cywir o cael enwau a thai, tri
ohonynt yn gyfanswm o bob un, gan ddefnyddiwr.
>> Ond nid yw hyn yn dylunio yn dda iawn, dde?
Beth os bydd myfyriwr yn cael nid yn unig enw a thŷ, ond hefyd yn rif adnabod,
a rhif ffôn, a chyfeiriad e-bost,
ac efallai tudalen gartref, ac efallai Twitter handlen,
ac unrhyw nifer o fanylion eraill gysylltiedig gyda myfyriwr neu berson,
yn fwy cyffredinol.
Sut y byddem yn dechrau ychwanegu ymarferoldeb i'r rhaglen hon?
>> Wel, yr wyf yn teimlo fel y ffordd symlaf allai fod yn gwneud rhywbeth fel, gadewch i ni ddweud,
int MYFYRWYR bidiau.
Felly, yr wyf yn gallu rhoi eu holl IDs mewn 'na.
Ac yna, ar gyfer rhywbeth fel rhifau ffôn,
Dydw i ddim yn siwr sut i cynrychioli mai dim ond eto.
Felly, gadewch i ni fynd yn ei flaen a dim ond alwad mae hyn twitters MYFYRWYR, sy'n
ychydig yn rhyfedd, but-- a bagad mwy o gaeau.
>> Rwyf wedi dechrau yn effeithiol gopïo a gludo yma.
Ac mae hyn yn mynd i dyfu 'n bert anhylaw yn weddol gyflym, dde?
Oni fyddai'n braf pe bai yn y byd strwythur data hysbys
nid fel int neu linyn, ond rhywbeth lefel uwch, mae tynnu dŵr, felly
i siarad, a elwir fel myfyriwr?
Nid oedd C yn dod gyda adeiledig yn ymarferoldeb ar gyfer myfyrwyr,
ond beth os oeddwn am ei roi o'r fath?
>> Wel, mae'n troi allan, yr wyf i'n mynd i agor ffeil o'r enw structs.h yma,
a gallwch wneud yn union hynny.
Ac rydym yn mynd i ddechrau gwneud hyn nawr.
Ac o dan y cwfl o P Set Tri, ydych eisoes wedi bod yn gwneud hyn yn awr.
Nid oes y fath beth â g rect neu mae g hirgrwn yn y C. iaith raglennu
>> Folks yn Stanford rhoi ar waith y rhai fathau o ddata drwy ddefnyddio'r dull hwn yma,
yn datgan eu data newydd eu hunain mathau ddefnyddio allweddair newydd
Gelwir struct ac un arall un o'r enw typedef.
Ac yn wir, er bod y gystrawen yn edrych ychydig yn wahanol i bethau
ydym wedi ei weld o'r blaen, yn egwyddor, 'i' super syml.
>> Mae hyn yn unig yn golygu "yn diffinio math."
Mae hynny'n mynd i fod yn strwythur, a strwythur
yn union fel cynhwysydd gyfer pethau lluosog.
Ac mae strwythur sydd yn mynd i gael llinyn o'r enw enw,
ac mae llinyn o'r enw tŷ.
A gadewch i ni alw, dim ond ar gyfer hwylustod, y myfyriwr strwythur data cyfan.
>> Felly, o bryd i chi ddod i yr hanner colon, mae gennych nawr
creu eich data eich hun math a elwir yn fyfyriwr
sydd bellach yn sefyll ochr yn ochr â int, ac arnofio, a torgoch, a llinyn,
a g rect, a g hirgrwn, ac unrhyw rif o bethau eraill bobl wedi dyfeisio.
>> Felly beth sy'n ddefnyddiol am hyn yn awr yw bod os byddaf yn mynd yn ôl
i struct 0 a gorffen hyn gweithredu, sy'n ysgrifennais
o flaen llaw yma, yn sylwi bod yr holl o'r messiness anochel y
ar fin dechrau digwydd wrth i mi ychwanegu rhifau ffôn a twitters a phob
y pethau eraill i diffiniad myfyriwr,
erbyn hyn mae'n cael ei lapio fyny yn gryno fel un yn unig amrywiaeth o fyfyrwyr.
>> Ac mae pob un o'r myfyrwyr hynny yn awr Mae gan lluosog bethau tu mewn iddo.
Fel bod dim ond yn gadael un cwestiwn.
Sut ydych chi'n ei gael yn yr enw, a'r tŷ, a'r adnabod,
a beth bynnag arall yw tu mewn i'r myfyrwyr?
Super syml, yn ogystal.
Cystrawen newydd, ond mae syniad syml.
>> Rydych yn syml mynegai i mewn i'r casgliad, fel y gwnaethom yr wythnos diwethaf, ac mae hyn.
A beth yn glir y darn newydd o gystrawen?
Dim ond., Sy'n golygu "mynd y tu mewn i'r strwythur a chael y cae o'r enw
enw, yn cael y cae o'r enw tŷ, cael y cae o'r enw myfyriwr. "
>> Felly, yn P Set Tri, os ydych yn dal i weithio ar hynny,
a'r rhan fwyaf o Folks yn dal yn cael eu, yn sylweddoli bod wrth i chi
ddechrau defnyddio pethau fel g rects a g ovals
a phethau eraill nad ydynt yn ymddangos i dod o Wythnos Zero, Un, neu Dau,
sylweddoli bod hynny oherwydd Stanford Datganodd rhai mathau ddata newydd.
>> Ac yn wir, dyna'n union yr hyn yr ydym annhymerus wneud, yn ogystal, yn P Set Pedwar, pan
rydym yn dechrau i ddelio â phethau fel delweddau, bitmaps, a mwy.
Felly dyna dim ond ymlid ac mae model meddwl ar gyfer yr hyn sydd i ddod.
Yn awr, yr wyf yn ei ohirio ychydig y bore yma.
Roeddwn yn fath o chwilfrydig i weld beth y papur wal Microsoft mewn gwirionedd
edrych fel heddiw.
Ac mae'n troi allan rhywun yn 2006 aeth mewn gwirionedd i bron yn union
yr un man i dynnu lluniau mewn gwirionedd hyn sy'n edrych fel hynny y dyddiau hyn.
Mae'r maes hwn yn ychydig yn gordyfu erbyn hyn.
>> Felly, yn siarad yn awr o ddelweddau, gadewch i ni ddod yn ôl Daven yma
ar y sgrin a Nicholas, a dim ond eich atgoffa
os hoffech chi ymuno â ni am ginio dydd Gwener yma, pennaeth i'n URL arferol
yma.
>> Felly, lle wnaethon ni adael i ffwrdd ar ddydd Llun?
Rydym yn cyflwyno y broblem hon, dde?
Roedd hyn yn ymddangos yn gywir gweithredu cyfnewid,
lle rydych yn cymryd dau ints, un a elwir yn, un o'r enw b,
cyfnewid nhw, yn union fel y gwnaeth Laura yma ar y llwyfan gyda'r llaeth a'r dŵr,
drwy ddefnyddio dros dro amrywiol, neu gwpan wag,
fel y gallem roi b mewn ac mae yn b heb wneud llanast o bethau.
Rydym yn defnyddio newidyn.
Mae'n cael ei alw temp.
>> Ond beth oedd y sylfaenol broblem â'r cod hwn ar ddydd Llun?
Beth oedd y broblem yma?
Yeah.
>> CYNULLEIDFA: Mae'n cymryd mwy o le.
>> DAVID J. Malan: Yn cymryd mwy gofod, oherwydd fy mod i'n defnyddio newidyn,
ac mae hynny'n iawn.
Mae hynny'n wir, ond rwy'n mynd i ddweud mae hynny'n iawn.
Mae'n dim ond 32 darnau yn y mawreddog cynllun o bethau, felly nid yw llawer mawr.
Sylwadau eraill?
CYNULLEIDFA: Dim ond yn cyfnewid y newidynnau yn lleol.
DAVID J. Malan: Yn union.
Dim ond yn cyfnewid y newidynnau yn lleol.
Oherwydd bod unrhyw tro y byddwch yn ffonio function-- pan gefais y hambyrddau o Annenberg
tro diwethaf, mae gennych prif ar y gwaelod.
Cyn gynted ag y byddwch yn galw swyddogaeth o'r enw cyfnewid, nid yw cyfnewid yn mynd x ac y,
y gwerthoedd gwreiddiol.
Beth mae cyfnewid get, wnaethon ni hawlio?
CYNULLEIDFA: Copïau.
DAVID J. Malan: Felly gopïau ohonynt.
Felly, mae'n mynd un a dau, os ydych yn dwyn i gof yr enghraifft o dro diwethaf,
ond mae copi o un a dau sy'n cael eu cyfnewid yn llwyddiannus.
Ond yn anffodus yn y diwedd, gwerthoedd hynny yn dal i fod yr un fath.
Felly, gallwn weld hyn gyda'n ffrind newydd, gobeithio GDB,
chi neu'r TFS a Ca ei bod yn rhaid i bod yn arwain i chi tuag at fel a ganlyn.
>> Felly nid oes cofio cyfnewid yn edrych like-- gadewch i ni agor this-- edrych fel hyn.
Rydym ymgychwyn x i un, y i ddau.
Roedd criw o brint f yn.
Ond yna, yr alwad allweddol yma oedd i gyfnewid, sy'n
yn union mae'r cod rydym jyst yn gweld funud yn ôl.
Pa yn gywir ar y dechrau yr olwg, ond yn swyddogaethol,
nid yw'r rhaglen hon yn gweithio, oherwydd nid yw'n cyfnewid x ac y yn barhaol.
>> Felly, gadewch i ni weld hyn, mae cynnes cyflym hyd yma gyda GDB, a ./noswap.
Mae criw o wybodaeth llethol y 'N annhymerus' cael gwared â Rheoli L am y tro.
Ac yn awr, yr wyf i'n mynd i mynd yn ei flaen ac yn rhedeg.
Ac yn anffodus, bod Nid oedd hynny'n ddefnyddiol.
Roedd yn rhedeg y rhaglen tu mewn hon rhaglen o'r enw GDB, a debugger,
ond nid oedd yn gadael i mi brocio o gwmpas.
>> Felly, sut y gallaf mewn gwirionedd yn oedi gweithredu y tu mewn y rhaglen hon?
Felly torri.
A gallwn dorri ar unrhyw rhif, un, 10, 15 llinell.
Ond gallaf hefyd dorri symbolaidd drwy ddweud main egwyl.
Ac mae hynny'n mynd i osod seibiant pwynt, yn ôl pob golwg ar linell 16 yn y prif.
A lle mae llinell 16?
Gadewch i ni fynd i fyny at y cod ac yn mynd i fyny at noswap.
Ac yn wir, llinell 16 yw'r cyntaf un yn y rhaglen.
>> Felly nawr, os wyf yn mynd yn ei flaen a math rhedeg y tro hwn, Mewnbynnu, mae'n seibio.
Felly gadewch i brocio o gwmpas.
Argraffu x-- pam mae x sero?
Ac yn anwybyddu'r arwydd ddoler.
Dyna dim ond ar gyfer ffansi defnydd o'r rhaglen.
Pam fod x sero ar hyn o bryd?
Yeah.
>> CYNULLEIDFA: Mae'n seibio dde cyn llinell 16, nid mewn gwirionedd ar-lein 16.
DAVID J. Malan: Yn union.
GDB, yn ddiofyn, wedi seibio gweithredu ychydig cyn llinell 16.
Felly, nid yw wedi ei weithredu, sy'n golygu x yw o ryw werth anhysbys.
Ac rydym got 'n ffodus ei fod yn rhywbeth glân fel sero.
Felly, yn awr os wyf yn teipio nesaf, erbyn hyn mae'n dienyddiwyd 16.
Mae'n aros i mi i weithredu 17.
Gadewch i mi fynd yn ei flaen ac argraffu x.
Mae'n un.
Gadewch i mi fynd yn ei flaen ac argraffu y.
Beth ddylwn i ei weld yn awr?
>> CYNULLEIDFA: [Anghlywadwy]
>> DAVID J. Malan: A gryfach bach.
>> CYNULLEIDFA: [Anghlywadwy]
DAVID J. Malan: Ddim yn dipyn o gonsensws.
Felly ie, rydym yn gweld rhywfaint o werth garbage.
Yn awr, y mae 134514064 yno.
Wel, dim ond rhywfaint o werth garbage.
Mae fy rhaglen yn defnyddio RAM at wahanol ddibenion.
Mae swyddogaethau eraill.
Ysgrifennodd pobl eraill y tu mewn 'm chyfrifiadur.
Felly darnau hynny wedi cael eu defnyddio ar gyfer gwerthoedd eraill, a beth rwy'n ei weld
yw gweddillion rhai defnydd blaenorol o'r cof.
>> Felly nid oes llawer mawr, oherwydd cyn gynted ag y fel yr wyf deipio nesaf ac yna ei argraffu y,
'i' ymgychwyn i gwerth yr wyf am.
Felly nawr, gadewch i ni fynd yn ei flaen ychydig yn gyflymach.
N am nesaf.
Gadewch i ni wneud hynny eto.
Ond nid wyf am i daro yma, oherwydd os wyf
am weld beth sy'n mynd ymlaen y tu mewn o cyfnewid, beth yw'r gorchymyn?
>> CYNULLEIDFA: grisiau.
>> DAVID J. Malan: grisiau.
Felly, mae hyn yn camu i mi i mewn i swyddogaeth, yn hytrach nag drosto.
Ac yn awr, mae'n ychydig yn cryptig onest, ond mae hyn yn unig
yn dweud wrthyf fy mod yn llinell 33 awr.
A gadewch i ni wneud hyn eto.
Print temp.
Gwerth Garbage, negyddol y tro hwn, ond dim ond dal i fod yn werth garbage.
Felly gadewch i ni ei wneud nesaf, temp print.
Mae'n initialized i 1, sy'n oedd gwerth x, aka a.
>> Yn awr, os yw ein a a x yn dod o?
Wel, yn sylwi yn y prif, rydym Gelwir gwerthoedd hyn x ac y.
Yna, rydym yn pasio nhw i gyfnewid fel a ganlyn.
Daeth X yn gyntaf, atalnod y.
Ac yna, gallai cyfnewid alw x ac y yn eu.
Ond er eglurder, mae'n galw nhw a a b.
Ond mae a b yn awr yn mynd i fod copïau o x ac y, yn y drefn honno.
>> Felly, os byddaf yn mynd yn ôl i GDB, dros dro bellach yn un ac mae bellach yn un.
Ond os wyf yn ei wneud nesaf ac erbyn hyn yn gwneud argraffu mae, mae eisoes wedi cael ei symud dros.
Mae'r llaeth wedi cael ei arllwys i mewn i'r hen gwydr sudd oren yn, neu i'r gwrthwyneb.
>> Ac os wyf yn ei wneud nesaf eto, ac yn awr os byddaf argraffu fel gwiriad pwyll,
mae yn dal dau, ond b bellach yn un.
A dweud y gwir, mae'n dal i fod yno.
Nid wyf yn poeni beth temp yn.
Ond cyn gynted ag yr wyf yn awr deipio, gadewch i ni ddweud, parhau i fynd yn ôl, erbyn hyn rwy'n ar y diwedd
y rhaglen.
Ac yn anffodus, x yw dal i fod yn un ac y yn dal dau.
>> Felly beth oedd y cyfleustodau o GDB yno?
Nid oedd yn fy helpu i drwsio y broblem fel y cyfryw,
ond mae'n gobeithio fy helpu ei ddeall trwy wireddu
bod ie, fy rhesymeg yn iawn, ond Nid yw fy cod yn y pen draw gael
effaith barhaol.
Felly dyna broblem rydym yn mynd yn hyn yn datrys heddiw.
>> Ond gadewch i ni gyrraedd yno ar ffordd o hyn.
Llinyn yn gelwydd.
Mae, hefyd, nid yn fath data sy'n bodoli yn C. Mae'n
bod yn gyfystyr ar gyfer rhai amser ar gyfer rhywbeth arall,
a gallwn ddatgelu hynny fel a ganlyn.
>> Gadewch i mi fynd yn ei flaen ac yn agor i fyny rhaglen o'r enw cymharu-0.
Ac yn hytrach na teipio hwn allan, byddwn yn dechrau i gerdded drwy'r cod
Rwyf eisoes yn ysgrifennu, ond 'i' dim ond ychydig o linellau.
Felly, mae hyn yn cael ei gymharu-0.
A'r peth cyntaf fy mod yn gwneud yn cael llinell o destun.
>> Ond sylwi ar yr hyn rwy'n ei wneud am y tro cyntaf.
Yr hyn sy'n wahanol yn glir ynghylch llinell 21?
Mewn gwirionedd, arhoswch funud.
Mae hwn yn gopi dau.
Nid yw hyd yn oed y rhaglen gywir.
Mae pob, effro spoiler cywir.
Mae pob hawl, felly byth yn meddwl hynny.
Dyna'r ateb i gwestiwn yn y dyfodol.
>> Yma yn cael ei gymharu-0, ac rwy'n fin gael llinell o destun.
Rhaglen yn llawer symlach.
Felly, mae hyn yn syml.
Mae hyn yn debyg Wythnos Un, Wythnos Dau stwff ar hyn o bryd. llinyn s = GetString.
Yn awr, dywedaf eto i lawr yma.
llinyn t = GetString.
Ac yna, y peth olaf yn hyn rhaglen, fel yr awgryma'r enw,
yw fy mod i'n mynd i geisio eu cymharu.
>> Felly os yw ef, y llinyn cyntaf, hafal = t, yna rwy'n
mynd i ddweud i chi deipio yr un peth.
Arall, yr wyf i'n mynd i ddweud chi deipio pethau gwahanol.
Felly gadewch i ni lunio a rhedeg y rhaglen hon.
Felly gwnewch yn cymharu sero.
Edrych yn dda.
Dim gwallau casgliad.
>> Gadewch i mi fynd yn ei flaen yn awr a theipiwch ./compare-0.
Gadewch i mi fynd yn ei flaen ac yn dweud rhywbeth : Daven a rhywbeth: Rob.
Ac yr wyf yn teipio pethau gwahanol.
Hyd yn hyn, felly da.
Rhaglen yn ymddangos i fod yn gywir.
>> Ond gadewch i ni redeg eto.
Dweud rhywbeth: Gabe.
Mae pob hawl.
Efallai fy taro bar gofod neu rywbeth ffynci.
Gadewch i ni wneud hynny eto.
Felly Zamyla.
Zamyla.
Gwahanol bethau.
Felly beth sy'n mynd ymlaen?
>> Felly mae gennym y ddwy linell o cod, GetString cael eu galw ddwywaith.
Ac yna, dwi'n syml ceisio gymharu s a t.
Ond yr hyn sy'n wir, yna yn mynd ymlaen?
Wel, mae fy llawysgrifen yn fin cigydd enghraifft hon braidd.
A gadewch i ni mewn gwirionedd yn taflu hyn i fyny dros yma, yn ogystal.
>> Felly mae gennym linell tebyg llinyn s = GetString.
Felly dyna syml, y cyntaf Llinell diddorol o'r rhaglen honno.
Ond yr hyn i gyd y tro hwn wedi bod mynd ymlaen o dan y cwfl?
Wel, ar y chwith ochr yn llinyn, sydd yn rhyw fath o newidyn,
ac fe'i gelwir s.
Felly yr wyf yn gwybod bod hyn yn defnyddio cof, neu RAM, yn fy chyfrifiadur rhywsut.
Felly dw i'n mynd i haniaethol tynnu hynny fel sgwâr.
32 darnau, mae'n troi allan, ond mwy am hynny yn y dyfodol.
Ac yna, beth sy'n digwydd dros yma?
>> Wel, GetString yn amlwg cael llinyn gan y defnyddiwr.
Ac GetString got Zamyla neu Gabe neu Daven.
Felly gadewch i ni ddewis y cyntaf o'r rheini, a oedd Daven.
Hynny'n effeithiol, pa GetString got fi yn yr achos cyntaf oedd D-a-v-e-n.
Ac yna, beth arall a wnaeth yn rhoi i mi yn gyfrinachol?
CYNULLEIDFA: [Anghlywadwy]
DAVID J. Malan: Yeah, y / 0 neu gymeriad null.
Felly rhoddodd effeithiol llinyn mi.
Ond rydym eisoes yn gwybod o blaenorol edrych bod llinyn yn unig yw amrywiaeth
o gymeriadau, ac mae'n cael ei derfynu gan gymeriad hon sentinel arbennig, / 0.
>> Ond os yw hyn yn wir ac mae hwn yn sgwâr,
mae hyn yn amlwg yn llawer mwy petryal.
Ac yn wir, mae hyn yn, Allaf hawlio, dim ond 32 o ddarnau.
Ac mae hyn yn amlwg yn fwy na 32 darnau, oherwydd mae hyn yn ôl pob tebyg
wyth plws wyth ynghyd ag wyth ynghyd ag wyth ynghyd ag wyth,
dim ond oherwydd o bytes mewn ASCII.
Sut mae'r Heck ydym yn mynd i ffitio Daven i mewn i flwch bach hyn yma?
>> Wel, yr hyn sy'n GetString gwirionedd yn gwneud?
Wel, grid hyn yma yn cynrychioli chof fy nghyfrifiadur neu RAM.
Felly gadewch i ni fympwyol dweud os pob un o'r rhain yn cynrychioli beit,
yna gallwn feddwl am bob un beit fel un cyfeiriad,
fel 33 Oxford Street, neu 34 Stryd Rhydychen, neu 35 Oxford Street.
>> Felly, yn union fel cartrefi yn cael cyfeiriadau ac adeiladau yn cael cyfeiriadau,
felly y mae beit unigol o cof yn cael cyfeiriadau neu rifau
sy'n eu nodi unigryw.
Yn awr, mae hyn yn fympwyol.
Ond er mwyn cadw pethau'n syml, yr wyf i'n mynd i defnyddio hecsadegol dim ond drwy confensiwn,
ond mae'r 0x yn golygu dim byd arall na "mae hyn yn hecsadegol."
ac yr wyf i'n mynd i honni bod y "D" yn dod i ben i fyny at Byte Un mewn cof.
>> Yr wyf yn ddim byd arall yn digwydd yn cof, felly Daven got y fan a'r lle cyntaf
yn Beit Un.
Mae hyn, felly, yn mynd i fod 0x2.
Mae hyn yn mynd i 0x3.
Mae hyn yn mynd i fod 0x4.
Mae hyn yn mynd i 0x5.
Mae hyn yn mynd i fod 0x6.
>> Ond ar ôl i chi ddechrau meddwl am yr hyn y thrwy hynny yn y cyfrifiadur
o dan y cwfl, gallwch ddechrau casglu
sut yr ydych yn, rai blynyddoedd yn ôl, byddai wedi gweithredu C ei hun.
Beth yw GetString yn ôl pob tebyg returning-- oherwydd ei fod yn
teimlo fel nad yw'n dychwelyd Daven, fel y cyfryw,
oherwydd yn sicr nid mae'n mynd i gyd-fynd box-- bach hwn
felly beth sy'n GetString yn ôl pob tebyg yn dychwelyd?
>> CYNULLEIDFA: [Anghlywadwy]
>> DAVID J. Malan: Mae lleoliad Daven.
Ac mae wedi bod yn gwneud hyn byth ers Wythnos Un.
Yr hyn GetString yn wirioneddol Nid yw dychwelyd yn llinyn, fel y cyfryw.
Dyna un o'r celwyddau bach gwyn.
Mae'n dychwelyd y cyfeiriad y llinyn yn y cof, y cyfeiriad unigryw.
Daven yn byw yn 33 Oxford Street.
Ond yn fwy cryno, Gavin yn byw yn y 0x1, Cyfeiriad Rhif Un.
>> Felly, yr hyn sy'n cael ei roi yn y blwch bach wedyn, i fod yn glir,
yn unig yw gyfeiriad y llinyn.
Felly yr holl amser hwn, mae hyn wedi bod yn digwydd.
Ond beth mae hyn yn awgrymu yn awr yw bod os bydd yr holl s wedi
yw nifer tu mewn iddo, pwy sydd i roi'r gorau i chi, y rhaglennydd,
rhag rhoi unrhyw rif mewn unrhyw newidyn a dim ond neidio
i'r darn o gof?
Ac yn wir, byddwn yn gweld mae hynny'n fygythiad tro nesaf.
>> Ond am y tro, mae hyn yn teimlo'n annigonol.
Os wyf yn dweud, mynd i mi yn llinyn, byddwch yn rhoi Daven mi.
Ond nad ydych yn wir yn rhoi Daven mi.
Y cyfan sydd ei roi i mi yn gyfeiriad Daven yn.
Sut ydw i'n wedyn yn gwybod i sicrwydd lle mae Daven dechrau ac ends--
y stori yn mynd weird-- lle mae Daven dechrau ac yn gorffen,
ac yna, mae'r nesaf llinyn mewn cof yn dechrau?
>> Wel, os ydych yn dosbarthu mi ddechrau Daven,
yn y bôn, sut ydw i'n gwybod lle diwedd ei enw yw?
Bod cymeriad null arbennig, sy'n yn oed yn fwy pwysig yn awr
os llinynnau o dan y cwfl yn cael eu nodi yn syml
unigryw gan eu lleoliad yn y cof.
Felly yr holl amser hwn, dyna beth sydd wedi bod yn digwydd.
>> Felly, pan fyddwn yn edrych nawr ar y cod yma, eglurwch
os byddech y byg yn llinell 26.
Pam mae Zamyla a Zamyla yn wahanol?
Pam mae Gabe a Gabe yn wahanol?
Yeah, yn y cefn.
>> CYNULLEIDFA: Mae ganddynt wahanol gyfeiriadau.
>> DAVID J. Malan: Yn syml oherwydd ganddynt wahanol gyfeiriadau.
Oherwydd pan fyddwch yn ffonio GetString unwaith eto, y byddaf yn ei wneud yn gyflym yma,
os yw hyn yn yr ail linell, llinyn t, fel y gwneuthum yn y rhaglen honno,
hafal alwad arall i GetString.
Y tro nesaf y byddaf yn galw GetString, dw i'n mynd
i gael darn gwahanol o gof.
>> GetString chaniateir i ofyn i'r gweithredu
system ar gyfer mwy a mwy o gof.
Dyw hi ddim yn mynd i ailddefnyddio yr un fath chwe bytes bob tro.
Mae'n mynd i gael newydd darn o gof, a oedd
golygu t yn mynd i gael rhywfaint o werth arall dros yma.
>> Felly, pan fyddaf yn ei wneud s hafal = t, nad ydych yn cymharu
D yn erbyn hyn ac A yn erbyn hyn a V yn erbyn hyn.
Rydych yn cymharu hyn erbyn hyn, a oedd yn
dweud y gwir yn eithaf useless-- useful-- yn eithaf 'n annefnyddiol, oherwydd sydd wir
gofalu lle mae'r llinynnau mewn cof?
>> Ac yn wir, nid ydym wedi.
Ac nid ydym yn mynd i cychwyn arbennig o ofalgar.
Dim ond i'r graddau y gall bygiau godi a gall bygythiadau diogelwch godi ewyllys
yr ydym mewn gwirionedd yn dechrau i ofalu am hyn.
Felly gadewch i ni atgyweiria hon broblem.
Troi allan, byddwch yn atgyweiria 'super yn syml.
>> A gadewch i ni mewn gwirionedd, cyn i mi datgelu bod eto, beth fyddai
chi ei wneud os mewn dosbarth CS50, a bu'n rhaid i chi weithredu
cymhariaeth yn erbyn dau llinynnau.
Rydych yn amlwg nad all jyst arfer s hafal i = t.
Ond dim ond yn rhesymegol, sut byddech yn cymharu llinyn hwn
yn erbyn y llinyn hwn gan ddefnyddio C cod?
Yeah.
>> CYNULLEIDFA: Dim ond gwneud y ar gyfer dolen [Anghlywadwy]
DAVID J. Malan: Perffaith.
CYNULLEIDFA: [Anghlywadwy]
DAVID J. Malan: Yeah.
Dim ond defnyddio ar gyfer dolen neu tra dolen neu beth bynnag.
Ond dim ond yn berthnasol y syniad sylfaenol, os mae hwn yn dalp o gof neu arae
ac mae hyn yn, ailadrodd drosodd y ddau ar yr un pryd.
Ac yn union yn cymharu y llythrennau.
>> Ac mae'n rhaid i chi fod yn bach yn ofalus, oherwydd eich bod
nad ydych am un bys i fynd heibio i'r arall
oherwydd bod un llinyn yn hirach na'r llall.
Felly, rydych chi'n mynd i fod eisiau i wirio am mae hyn werth arbennig ar y diwedd, null.
Ond y mae mewn gwirionedd, yn y diwedd, mor syml â hynny.
Ac yn dweud y gwir, nid oes angen i ni ailddyfeisio'r olwyn hynny.
Dyma Fersiwn Dau.
A hyn yr wyf i'n mynd i ddweud yma yw bod yn lle gymharu s hafal = t,
Im 'yn lle mynd i ddweud, os bydd llinyn cymhariaeth o s t atalnod hafal = 0.
Yn awr, yr hyn a llinyn yn cymharu?
>> Mae'n troi allan, mae'n swyddogaeth sy'n hon gyda C, y mae eu pwrpas mewn bywyd
yw cymharu dau llinynnau.
Ac dro cymharu, os ydym yn darllen ei dudalen neu ddogfennaeth neu CS50 ddyn
cyfeirio, bydd yn yn syml yn dweud bod cynnwrf chi
cymharu ffurflenni naill ai negyddol Rhif neu nifer gadarnhaol neu sero,
lle y sero yn golygu eu bod yn gyfartal.
>> Felly dim ond dyfalu.
Hyn y gallai ei olygu os droi ffurflenni cymharu
gwerth negyddol neu werth positif?
CYNULLEIDFA: Mwy na neu'n llai na.
DAVID J. Malan: Yeah, fwy na neu'n llai na.
Felly, os ydych am roi trefn cyfan criw o dannau mewn dictionary--
fel y byddwn yn y pen draw i lawr y road-- swyddogaeth perffaith i'w ddefnyddio o bosibl,
oherwydd ei fod yn mynd i wneud hynny cymhariaeth o linynnau i chi, a dweud
ydych yn gwneud yn dod gerbron b, neu a yw b yn dod gerbron yn nhrefn yr wyddor.
Gallwn wneud yn union hynny.
>> Ac rybudd Fe wnes un arall peth yn yr enghraifft hon.
Beth arall sydd wedi newid yn uwch hyd yn hyn yn brif swyddogaeth?
Torgoch *.
Ac mae hyn yn bod gorwedd gwyn arall.
Pob yr amser hwn, pan eich bod wedi bod yn ysgrifennu llinyn,
rydym wedi bod yn ail-ysgrifennu ddirgel llinyn fel torgoch * fel bod chlang mewn gwirionedd
deall chi.
>> Mewn geiriau eraill, yn CS50.h ac fel y byddwn yn y pen draw yn gweld,
gwnaethom cyfystyr o'r enw llinyn dyna yr un peth â torgoch *.
Ac am y tro, yn gwybod yn unig fod y *, Yn y cyd-destun hwn, o leiaf,
golygu y cyfeiriad.
>> Mae cyfeiriad yr hyn?
Wel, mae'r ffaith fy mod wedi dweud torgoch *, ac nid int * neu arnofio *,
golygu bod torgoch * yn y cyfeiriad o torgoch.
Felly bocs bach hyn yma, aka llinyn, yn wirioneddol o'r math char *,
sydd, yn syml, yn ffordd ffansi o ddweud, yn y blwch hwn yn mynd yn gyfeiriad.
A beth mae hynny'n ei gyfeiriad cyfeirio at?
Mae'n debyg, mae torgoch.
>> Ond gallem gwbl cael int * a phethau eraill.
Ond am nawr, torgoch * sydd mewn gwirionedd yn y rhan fwyaf o syml ac yn un o ddiddordeb.
Felly, y broblem hon yn mynd i godi, fodd bynnag, unwaith eto.
>> Gadewch i ni dybio fy mod yn agor y rhaglen hon.
Gadewch i ni weld os erbyn hyn gallwn ragweld beth sydd o'i le ar y cod hwn.
Felly, yn y rhaglen hon, copïo-0, rwy'n mynd i fynd yn ei flaen ar ôl tro yn galw
GetString a storio'r gwerth yn s.
>> Ac yna, pam ydw i'n gwneud hyn, yn union fel atgof o wythnosau diwethaf?
Fe wnaethom ddweud bod GetString weithiau yn dychwelyd null.
Beth mae'n ei olygu os GetString yn dychwelyd null?
Aeth rhywbeth o'i le.
Mae'n debyg ei fod yn golygu bod y llinyn yn rhy mawr, allan y cyfrifiadur yn y cof.
Mae'n digwydd super, super, super anaml, ond gallai ddigwydd.
Rydym am i wirio am iddo, a dyna'r cyfan yr ydym yn ei wneud.
>> Oherwydd byddwn yn gweld yn awr, os nad ydych yn ei wneud dechrau gwirio fel arfer ar gyfer pethau
fel null, gallech chi mewn gwirionedd yn dechrau mynd
i gyfeiriadau yn y cof sydd yn annilys.
A ydych yn mynd i ddechrau ysgogi mwy a mwy o namau segmentu.
Neu mewn Mac neu PC, dim ond gan achosi cyfrifiadur i hongian
neu raglen i rewi, o bosibl.
>> Felly nawr, gallaf wneud cais amdano yn y copi-0.c, fy mod wyf yn mynd i gopïo llinynnau hyn drwy
o linell 28.
Ac yna, dw i'n mynd i hawlio ar y gwaelod
yma fy mod i'n mynd i newid un ohonynt.
>> Felly sylwi ar hyn.
Rydw i'n galw ein hen gyfaill strlen.
Ac yn union esbonio yn Saesneg beth mae hyn yn llinell 34 yn ei wneud?
Beth mae t braced 0 gynrychioli ar y chwith.
Yeah.
>> CYNULLEIDFA: cymeriad cyntaf o t?
DAVID J. Malan: cymeriad cyntaf o t.
Dyna ni.
Cymeriad cyntaf o t, yr wyf am i aseinio y fersiwn priflythyren
y nod cyntaf mewn t.
Felly, mae hyn yn manteisio y llythyr cyntaf.
Ac yna, y peth olaf un yr wyf yn ei wneud yn y rhaglen hon yw i'n hawlio dyma
y gwreiddiol, s, a dyma y copi, t.
>> Ond yn seiliedig ar y stori rydym yn unig gwybod am yr hyn y llinynnau gwirionedd,
beth yw llinell 28 mewn gwirionedd yn ei wneud, a beth yw
y byg ganlyniad mynd i fod ar y sgrin?
>> Felly, yn gyntaf, y cwestiwn cyntaf, 28.
Beth yw t llinyn = s 'n sylweddol yn ei wneud?
Os byddwn yn ei gael ar yr ochr chwith ochr yma t string = s;
sy'n rhoi un blwch i mi yma ac un bocs yma.
Ac yn debyg y cyfeiriad hwn yn 0x, gadewch i ni ddweud, 50 y tro hwn, fympwyol.
Beth mae t llinyn = s ei wneud o dan y cwfl?
>> CYNULLEIDFA: [Anghlywadwy]
>> DAVID J. Malan: Mae'n storio'r cof rhoi sylw yno, felly 0x50 yn mynd yno.
Felly os nawr, byddaf yn mynd i'r cyntaf cymeriad mewn t ac yn priflythyren iddo,
beth ydw i'n ei wneud yn effeithiol i s?
Dwi wir yn gwneud yr un peth, dde?
Oherwydd os Cyfeiriad 0x50-- a chyfiawn, yr wyf yn Nid oes rhaid i llawer o le ar y bwrdd yma,
ond yn cymryd yn ganiataol bod hyn yn 0x50 i lawr yma, rhywle er cof am fy cyfrifiadur.
>> Ac yr wyf wedi, er enghraifft, Gabe mewn llythrennau bach yma, fel hyn.
Ac yr wyf wedi dweud t braced 0 yn cael eu cyfalafu.
Wel, t braced 0 yn y llythyr cyntaf yn t.
Cyn lleied o g yn mynd i dod G. mawr Ond y broblem
yw, beth mae hefyd yn tynnu sylw at s?
>> CYNULLEIDFA: Yr un peth.
>> DAVID J. Malan: Mae'r un peth yn union.
Felly eglurhad syml efallai, hyd yn oed os yw'r gystrawen yn ychydig yn od.
Felly gadewch i ni wneud hyn.
Gwneud copi-0 ac yna ./copy-0.
Dweud rhywbeth: Gabe.
Ac yn anffodus, y ddau o nhw bellach wedi cael eu cyfalafu,
ond ar gyfer y sylfaenol rheswm ein bod yn syml
bellach yn delio â chyfeiriadau.
>> Felly sut rydym yn dechrau address-- dim pun intended--
sut allwn ni ddechrau mynd i'r afael broblem arbennig hon?
Wel, mewn copy1.c, mae pethau'n mynd i gael ychydig yn fwy cymhleth.
Ond byddwn yn hawlio gysyniadol ateb syml.
>> Mor galed i fynd ar yr olwg gyntaf.
Ddim yn mynd i fod yn hawdd i'r cyntaf tro y byddwch yn ei deipio allan, efallai,
ond os bydd y broblem yw bod yn syml yn gwneud t = s yn unig
copïau y cyfeiriad, yr hyn, eto os gallaf ddewis ar chi,
yn mynd i fod yr ateb am gwirionedd yn copïo llinyn?
>> CYNULLEIDFA: Yr ydym yn ôl pob tebyg chi helpu defnyddio dolen eto.
>> DAVID J. Malan: Yeah.
Felly, rydym yn mynd i angen dolen eto.
Ac oherwydd os ydym am i gopïo yn s llinyn i mewn i linyn arall,
yr ydym yn ôl pob tebyg am ei wneud cymeriad gan gymeriad.
Ond y broblem yw, os mae hyn yn wreiddiol s,
yn awr mae angen i ni ddechrau yn benodol dyrannu cof ar gyfer t.
>> Mewn geiriau eraill, gadewch i ni ail-lunio hyn am y tro olaf.
Os yw hyn yn llinyn s = GetString.
A gadewch i ni roi hyn i fyny yma, yn ogystal.
Mae hyn yn GetString.
Ac yna, mae'r darlun ar gyfer rhywbeth fel yna yn mynd i fod fel o'r blaen,
g-a-b-e / 0.
Sy'n edrych yn rhywbeth bach fel hyn.
Ac s felly, rydym yn galw hyn 0x50, ac mae hynny'n mynd i fod yn 51, 52.
>> Felly, mae hyn yn 0x50.
Ac yna, yr wyf yn gwneud t llinyn.
Er cof, mae hynny'n jyst yn mynd i roi ychydig o sgwâr fel hyn i mi.
Felly beth yw'r cam allweddol yn awr?
Os ydw i eisiau i gopïo s i t, beth wag oes angen i ni lenwi fan hyn?
Neu beth sydd angen i ni'n ei wneud ar lefel uchel?
Yeah?
Rhywun?
Yeah.
>> CYNULLEIDFA: Mae angen i ni [Anghlywadwy].
DAVID J. Malan: Yeah, rydym yn Mae angen i lenwi'r wag hon.
Ni allaf gopïo ac yna manteisio enw Gabe yn
nes i mi ofyn i'r system weithredu ar gyfer darn arall o gof
dyna o leiaf mor fawr â'r gwreiddiol.
Fel bod ein gadael gyda chwestiwn.
>> Sut ydw i'n gofyn i'r system weithredu nad dim ond am pointer-- bach syml
fel y gelwir hyn yn, yn cyfeiriad, nid pointer--
am focs bach syml fel hyn a elwir yn llinyn?
Sut ydw i'n gofyn i'r gweithredu system ar gyfer darn mawr o gof?
Hyd yn hyn, rwyf wedi gotten dim ond y cefn anuniongyrchol drwy ffonio GetString.
Felly sut yn GetString hyd yn oed yn cael ei gof?
>> Wel, mae'n ymddangos fod yna y swyddogaeth eraill yma
y byddwn ni nawr yn dechrau defnyddio.
Yn awr, mae hyn yn edrych than-- ffordd fwy cryptig a fi yw'r unig un sy'n gallu gweld iddo--
y llinell hon yn edrych yn ffordd fwy cryptig Yna, dylai ar yr olwg gyntaf.
Ond gadewch i ni tynnu ar wahân.
>> Ar yr ochr chwith, mae gen i torgoch * t.
Felly, yn y Saesneg, gadewch i ni ddechrau i lunio brawddegau priodol mewn jargon technegol.
Felly, mae hyn yn dyrannu amrywiol o fath torgoch * elwir t.
Yn awr, beth mae hynny'n ei olygu mewn gwirionedd?
>> Wel, mae hynny'n golygu, beth ydw i'n mynd i roi mewn newidyn yma o'r enw t?
Mae cyfeiriad o torgoch.
Felly dyna dim ond y symlach, mwy o ffordd resymol
o ddisgrifio ochr chwith.
Felly mae hynny'n creu blwch hwn yma yn unig.
Felly yr ochr dde, yn ôl pob tebyg, yn mynd
i ddyrannu bod mwy darn o gof sut?
Felly gadewch i ni tynnu hyn ar wahân.
>> Mae'n llethol ar yr olwg gyntaf, ond beth sy'n mynd ymlaen y tu mewn fan hyn?
Yn gyntaf, mae malloc, sy'n yn ôl pob golwg mae ein cyfaill newydd,
"Cof dyrannu."
Felly mae hwn yn y ddadl sy'n cael ei basio i mewn iddo, felly mae'n ddadl eithaf mawr.
Felly gadewch i ni tynnu hyn ar wahân.
>> strlen o s, wrth gwrs, yn cynrychioli the--
CYNULLEIDFA: Y nifer o gymeriadau.
DAVID J. Malan: Dim ond y nifer o gymeriadau yn s.
Felly, hyd y s, y llinyn gwreiddiol.
Felly G-a-b-e.
Felly mae'n debyg pedwar yn yr achos hwn.
Pam ydw i'n ei wneud +1 ar ôl ffonio strlen o s?
CYNULLEIDFA: [Anghlywadwy]
DAVID J. Malan: Ar gyfer y cymeriad null arbennig.
Os byddwch yn gofyn i mi beth yw hyd y Gabe yn enw, yr wyf yn mynd i ddweud pedwar.
O dan y cwfl, fodd bynnag, mae angen i mi hynny pumed beit ar gyfer y cymeriad null.
Felly dyna pam fy mod yn gwneud y 1.
>> Yn awr rhag ofn eich bod yn rhedeg hyn rhaglen ar gyfrifiadur ac eithrio, yn dweud,
y peiriant CS50, lle yr un maint â torgoch
Gallai fod yn wahanol o fy computer-- hun
troi allan y gallaf alw hyn sizeof gweithredwr, gofynnwch y cyfrifiadur,
beth yw yr un maint â CHAR ar y cyfrifiadur hwn?
>> Ac trwy luosi pump yn hyn enghraifft drwy yr un maint â torgoch, sy'n
ar y rhan fwyaf o gyfrifiaduron bydd yn unig fod yn un, malloc
yn mynd i ddyrannu i mi hyn fawr darn o gof dros yma ar y dde.
Ac mae'n mynd i return-- mae'n function-- felly mae'n
mynd i ddychwelyd i mi beth?
CYNULLEIDFA: Gall y cyfeiriad?
DAVID J. Malan: Y cyfeiriad yr hyn?
CYNULLEIDFA: O'r cof ei ddyrannu?
DAVID J. Malan: O'r cof ei ddyrannu.
Felly, nid oes gennyf unrhyw syniad, dweud y gwir, lle mae hyn yn mynd i roi diwedd ar i fyny.
Rydw i'n mynd i gynnig bod mae'n mynd i roi diwedd ar i fyny at 0x88.
Hollol fympwyol, ond rhywle heblaw 0x50,
oherwydd bod y system weithredu, beth Windows a Mac OS ei wneud i mi, yw
wneud yn siŵr ei fod yn rhoi mi gwahanol darnau o RAM.
>> Felly, mae hyn yw gwerth lle mae hyn Gallai darn o gof yn y pen draw.
Felly, mae hyn yn beth yn dod i ben i fyny yn fan hyn, 0x88.
Felly, yn awr yn glir, gall yr wyf yn deall nad yw hyn yr un peth â hyn,
oherwydd eu bod yn pwyntio at gwahanol darnau o gof.
Felly os wyf yn awr mewn gwirionedd yn awyddus i gopïo hyn mewn, gadewch i ni wneud eich ateb a gynigir.
>> Gadewch i jyst yn mynd, creu ar gyfer dolen, ac yn gwneud t braced ff yn cael s braced i.
Oherwydd erbyn hyn y gallaf ddefnyddio arae-fel hyn nodiant,
oherwydd er malloc iawn generig yn dyrannu cof i mi,
cof yw beit unig cyffiniol.
Beit, beit, beit, gefn wrth gefn wrth gefn.
>> Gallaf yn sicr fel rhaglennydd drin fel arae, a oedd yn
golygu y gallaf ddefnyddio hyn yn olaf gyfarwydd nodiant o rai cromfachau sgwâr.
>> Felly, gadewch i mi oedi yno, oherwydd mae hyn yn llawer i gyd ar unwaith, hyd yn oed
er bod y syniad sylfaenol i ailadrodd yw y llinyn, i gyd y tro hwn,
Nid yn fath ddata newydd fel y cyfryw.
Mae'n dim ond pwyntydd fel y'u gelwir, cyfeiriad o gymeriad,
a dim ond yn golygu ei fod yn rhif bod gan gonfensiwn dynol
rydym yn tueddu i ysgrifennu fel 0x rhywbeth.
>> Ond mae'r un nifer, fel 33 Oxford Street,
sy'n digwydd bod yn y Cyfeiriad adeiladau CS yn.
Unrhyw gwestiynau ar y manylion hyn?
Yeah?
>> CYNULLEIDFA: Pam rydym yn gwirio gyfer t cyfartal i null?
>> DAVID J. Malan: Pam rydyn ni'n gwirio am t cyfartal i null?
Os byddwn yn darllen y documentation-- question-- gwych i malloc,
mae'n mynd i ddweud yn y print mân, Weithiau efallai malloc dychwelyd null,
yn union fel GetString.
Ac yn wir, GetString yn dychwelyd null os, yn ei dro, malloc yn dychwelyd null,
oherwydd GetString yn defnyddio malloc.
>> A allai ddigwydd os yw'r AO, Mac OS, Windows, beth bynnag, yn syml
allan o gof i chi.
Felly dyna beth ddigwyddodd yno.
>> A gadewch i mi yn datgelu un peth arall Efallai mai dim ond yn chwythu eich meddwl
neu fod yn rhy bell yn gyfan gwbl dros y llinell.
Ond gadewch i mi dynnu i fyny y un fath ar gyfer dolen ar gyfer copïo,
a oedd funud yn ôl, galw i gof yn hyn. t braced ff yn cael s braced i.
>> Nice ac yn hawdd eu defnyddio.
Teimlo fel Wythnos Dau eto.
Ond mae hyn yn fersiwn mewn gwirionedd gall fod yn hailysgrifennu fel hyn, sy'n edrych cryptig.
Mae'n dechneg a elwir pwyntydd rhifyddeg, cyfeiriad rhifyddeg.
Ond pam mae hyn yn gweithio?
>> Nawr annoyingly, mae'r awduron C penderfynu defnyddio
y * symbol ar gyfer gwahanol bwrpasau.
Rydym wedi gweld ei defnyddio unwaith yn barod, cols *, sy'n golygu "rhoi newidyn mi
mae hynny'n mynd i gynnwys y cyfeiriad o torgoch. "
* Felly torgoch yn y cyd-destun golygu "rhoi newidyn i mi."
>> Yn anffodus, os ydych yn defnyddio'r * heb gair o'i flaen, fel torgoch,
mae bellach yn cael ei alw i'r Dadgyfeirio gweithredwr.
A byddwn yn gweld mwy o hyn cyn bo hir.
Ond 'i jyst yn golygu "mynd yno."
Mae'n fel dweud, os bydd rhywun yn rhoi i mi ar ddarn o bapur "33 Oxford Street,"
os wyf yn gwneud "* 33 Oxford Street," sy'n golygu "Mynd i lawr y ffordd i adeilad y CS."
>> Felly * jyst yn golygu mynd yno os does dim air o'i flaen.
Felly beth yw t, i fod yn glir?
t yw'r cyfeiriad y darn o cof a roddwyd yn ôl i mi.
s yn y cyfeiriad o beth, i fod yn glir, yn yr enghraifft yr ydym wedi bod yn eu trafod,
o Gabe llythrennau bach?
s yw'r cyfeiriad o-
CYNULLEIDFA: Y llinyn.
DAVID J. Malan: O'r enw gwreiddiol Gabe yn.
Felly mae'n y cyfeiriad o darn hwn o gof.
Felly, os wyf yn dweud t + i-- i, rhybudd, yn unig yw ein hen gyfaill.
Mae'n dim ond newidyn mynegai sy'n cael ei ailadrodd o sero ar i fyny
ar hyd y s llinyn.
Felly, mae'n mynd i fod yn sero, yna un, Yna, dau, yna dri, yna pedwar.
Felly gadewch i ni cydosod rhain newydd Darnau pos Scratch-fel, os gwnewch,
hyd yn oed er, unwaith eto, mae'r gystrawen yn llawer mwy arcane nag Scratch.
Felly t yn gyfeiriad + fi yn mynd i roi i mi
nifer, gan fod y rhain i gyd yn niferoedd ein bod wedi bod yn darlunio fel hecs.
Ond maen nhw jyst rhifau.
>> Felly, os yw'r cyfeiriad o t dweud ein Roedd 0x88, beth sydd 0x88 plws sero.
Hyd yn oed os nad ydych yn gyfforddus gyda hecs eto, cymryd dyfalu.
>> CYNULLEIDFA: Y gwreiddiol.
>> DAVID J. Malan: Dal 0x88.
Felly beth mae 0x88 * yn ei olygu?
Mae'n golygu, "mynd yno" sy'n golygu effeithiol, "rhoi eich bys yma."
Ac yn awr ar yr ochr dde ymadrodd hwn, * ac yna mewn parens,
s + ff golygu s, sef y sylw i fyny yma o fawr ddim y g.
s + 0 yw, wrth gwrs, s, beth bynnag yw.
>> Felly nawr, mae'n * s, a oedd yn union fel * 33 Stryd Rhydychen yn golygu mynd i'r cyfeiriad
s.
Felly dyma bys hwn, llaw dde.
Felly, beth ydw i'n mynd i gopïo i mewn i beth?
Y peth ar y dde, sydd yn Gabe, ychydig o g yma, i mewn yma.
>> Ac felly mae'r effaith hynny iteriad cyntaf y ddolen,
wrth i chi arfaethedig, er ei fod yn edrych crazy fwy cymhleth nag unrhyw beth
ydym wedi ei weld o'r blaen, yn syml yn dweud ewch yma a chopi y cymeriad yma.
Mae'n rhoi map i ddau leoliad i chi.
>> A byddwn yn gweld llawer mwy o hyn.
Ond am nawr, y gobaith yn unig i gyflwyno rhai o'r syniadau sylfaenol hyn.
Ac yn wir, gadewch i ni edrych ar un rhaglen derfynol yma,
ac yna y animeiddio clai a addawyd, a fydd yn gwneud popeth yn iawn.
Mae pob hawl.
Felly, gadewch i mi agor up-- dyna ni.
Felly gadewch me-- byddwn yn dod yn ôl i'r llun hwn cyn hir.
Gadewch i mi agor yr enghraifft olaf yma.
>> Felly dyma yw super, super rhaglen sy'n accomplishes
dim byd mewn bywyd sy'n gwneud y canlynol.
Mae'n gyntaf datgan dau newidyn, x ac y, nad ydynt yn y niferoedd y tro hwn,
fel y cyfryw.
Nid ydynt yn gyfanrifau, fel y cyfryw.
Maent yn ôl pob golwg int *.
Felly dim ond i unrhyw un, beth mae'n ei olygu os yw eich math data, eich newidyn,
yw o fath int * seren?
Dyna y cyfeiriad o int.
>> Felly, yr wyf i wedi ddim syniad lle mae'n eto.
'I jyst yn golygu "rhoi, yn y pen draw, y cyfeiriad o int fan hyn. "
0x50, 0x88, lle bynnag y mae yn cof, mae cyfeiriad yn mynd yno.
A dyna beth y mae mynd i fod, yn ogystal.
>> Os wyf yn awr yn dweud x = malloc (sizeof (int)), mae hyn yn ffordd ffansi o ddweud,
hey system weithredu, drwy malloc, rhoi digon o gof i mi ar gyfer maint
o int, sydd yn ôl pob tebyg mynd i fod yn 32 o ddarnau neu bedwar bytes.
>> Felly beth mae malloc dychwelyd?
Malloc dychwelyd cyfeiriad.
Felly beth sy'n mynd i gael eu storio mewn x?
Cyfeiriad y darn o cof, mae'r pedwar bytes, hynny malloc
dim ond dod o hyd i mi drwy ofyn y system weithredu.
>> Yn awr yn y cyfamser, llinell pedwar yma, mae'r * x = 42.
Dim ond i fod yn glir, beth sy'n mynd i lawr yno?
Ar yr ochr chwith, * x.
dyna fel * 33 Oxford Street.
Felly * x yn golygu beth?
>> CYNULLEIDFA: Ewch i.
>> DAVID J. Malan: Ewch i'r cyfeiriad hwnnw.
Ble bynnag y darn o cof yw, yn mynd iddo.
A rhowch beth yno, yn amlwg?
CYNULLEIDFA: 42.
DAVID J. Malan: 42.
Mae pob hawl, * y, un syniad.
Ewch at y cyfeiriad yn y.
Rhowch y rhif 13 yno, ond beth yw y ar hyn o bryd?
CYNULLEIDFA: Nid oes unrhyw cof am y.
DAVID J. Malan: Mae oes unrhyw cof am y.
Felly beth mae y yn ôl pob tebyg cynnwys, fel yr ydym wedi bod yn ei ddweud?
>> CYNULLEIDFA: Garbage.
>> DAVID J. Malan: Rhai gwerth garbage.
Yn awr, gwerth garbage yn dal i fod yn rhif.
Gall fod yn dal ei gamgymryd am gyfeiriad.
Mae'n fel pe bai rhywun sgriblo rhywbeth i lawr,
ac yr wyf yn ei gamddehongli fel ystyr rhywfaint o adeilad i lawr y stryd.
Ac os ydych yn unig yn ceisio mynd i mewn i ryw adeilad nad ydych yn berchen,
neu ryw darn o gof nad oes gennych wedi ei roi, gallai pethau drwg yn digwydd.
Gallai Cyfrifiadur chwalu, neu ryw arall Gallai ymddygiad amhendant ddigwydd.
>> Felly y intro, yna, i Binky yw hyn.
Rwy'n dal i gofio, 20 rai blynyddoedd yn od yn ddiweddarach,
lle'r oeddwn pan oeddwn yn olaf deall awgrymiadau.
>> Pa un yw dweud, os ydych yn gadael yma mewn tri munud
ac yn meddwl nad wyf yn ei wneud deall awgrymiadau, yn sylweddoli
Rwyf wedi cofio am 20 blynyddoedd am ryw reswm crazy
pryd a pham ei suddo yn olaf mewn, yn eistedd gyda fy addysgu
cyd, Nishat Mehta yn y nghefn y Neuadd Fwyta Eliot.
Yn awr, rydw i wedi cofio hyn gan fod hyn yn
un o'r pynciau yr wyf, mewn benodol, trafferth gyda.
Ac yna, mae clicio yn olaf, fel yr wyf yn siŵr gen i llawer o bynciau
yn y pen draw fydd.
Ac yn awr, i wneud y teimlo holl hapusach ac yn fwy argyhoeddiadol,
gadewch i ni gymryd golwg terfynol yn ein tair munud olaf yma yn Binky,
gan ein cyfaill, Nick Parlante o Stanford.
>> [VIDEO Playback]
>> -Hey, Binky.
Wake i fyny!
Mae'n amser am hwyl pwyntydd.
>> -Beth Yw hwnna?
Dysgu am awgrymiadau?
O, anrhegion!
>> -Well, I ddechrau arni, mae'n debyg ein bod mynd i angen cwpl o awgrymiadau.
>> -OK.
Mae'r cod hwn yn clustnodi dau awgrymiadau, sy'n gallu pwyntio at gyfanrifau.
-OK.
Wel, yr wyf yn gweld y ddau awgrymiadau, ond maent yn Nid yw'n ymddangos i fod yn pwyntio at unrhyw beth.
>> -bod Iawn.
I ddechrau, awgrymiadau nid ydynt yn cyfeirio at unrhyw beth.
Y pethau y maent yn pwyntio at eu galw pointees, a gosod i fyny yn
yn gam ar wahân.
>> -OH, Ar y dde, ar y dde.
Roeddwn i'n gwybod hynny.
Mae'r pointees ar wahân.
Er, felly sut ydych chi'n dyrannu pointee?
>> -OK.
Wel, y cod hwn yn dyrannu mae pointee cyfanrif newydd,
ac mae hyn yn rhannol yn gosod x i bwyntio ato.
>> -Hey, Sy'n edrych yn well.
Felly, yn ei gwneud yn gwneud rhywbeth.
>> -OK.
'N annhymerus' Dadgyfeirio y pwyntydd x i storio'r rhif 42 yn ei pointee.
Ar gyfer tric hwn, bydd angen i mi fy Magic Wand o Dereferencing.
>> -Eich Ffon hud o Dereferencing?
That-- mae hynny'n wych.
>> -Mae Yw'r hyn y mae'r cod yn edrych fel.
'N annhymerus' newydd sefydlu nifer, ac yn [POP]
>> -Hey, Edrychwch.
Yno mae'n mynd.
>> -So Gwneud Dadgyfeirio ar x dilyn y saeth i gael mynediad at ei pointee.
Yn yr achos hwn, siop 42 i mewn 'na.
Hey ceisiwch ddefnyddio i storio'r rhif 13 drwy'r pwyntydd arall, y.
>> -OK.
'N annhymerus' jyst yn mynd drosodd yma i y, ac yn cael y rhif 13 set i fyny.
Ac yna, yn cymryd y ffon o Dereferencing a dim ond [BUZZ]
>> -OH!
>> -OH, Hey!
Nad oedd yn gweithio.
Dweud, Binky, nid wyf yn credu dereferencing y yn syniad da, oherwydd eich bod yn gwybod,
sefydlu'r pointee yn gam ar wahân.
Ac nid wyf yn credu ein bod byth yn gwneud hynny.
>> Pwynt -Good.
-Yeah.
Dyrannwyd y pwyntydd y, ond yr ydym yn byth yn ei osod i bwyntio at pointee.
>> -Very Sylwgar.
-Hey, Rydych yn edrych yn dda yno, Binky.
Allwch chi atgyweiria 'fel bod y pwyntiau i'r un pointee ag x?
>> -Sure.
'N annhymerus' defnyddio fy ffon hud o Pointer Aseiniad.
>> -A Bod mynd i fod problem debyg o'r blaen?
-Dim.
Nid yw hyn yn cyffwrdd y pointees.
'I jyst yn newid un pwyntydd i cyfeirio at yr un peth â un arall.
>> -OH, Rwy'n gweld.
Nawr y pwyntiau at yr un lle ag x.
Felly aros.
Yn awr, y yn sefydlog.
Mae ganddo pointee.
Felly, gallwch roi cynnig ar y hudlath o Dereferencing eto i anfon y 13 drosodd.
>> -Uh, OK.
Yma, mae'n mynd. [POP]
>> -Hey, Edrych ar hynny.
Nawr dereferencing gwaith ar y.
Ac oherwydd bod y awgrymiadau yn cael eu rhannu bod un pointee, y ddau ohonynt yn gweld y 13.
-Yeah.
Rhannu, beth bynnag.
Felly, yr ydym yn mynd i newid lleoedd nawr?
>> O, edrychwch.
Rydym yn allan o amser.
>> -But--
>> -Just Cofiwch y tri rheolau pwyntydd.
Rhif Un, mae'r strwythur sylfaenol yw bod gennych pwyntydd,
ac mae'n tynnu sylw drosodd i pointee.
Ond mae'r pwyntydd a'r pointee ar wahân,
ac y gwall cyffredin yw sefydlu pwyntydd,
ond i anghofio i roi cynnig pointee.
>> Rhif Dau, dereferencing pwyntydd dechrau yn y pwyntydd
ac mae'n dilyn ei saeth dros i gael mynediad at ei pointee.
Fel yr ydym i gyd yn gwybod, mae hyn dim ond yn gweithio os oes
mae pointee, pa fath o mynd yn ôl at Rheol Rhif Un.
>> Rhif Tri, pwyntydd aseiniad yn cymryd un pwyntydd
ac yn newid iddo i dynnu sylw at y un pointee ag pwyntydd arall.
Felly, ar ôl yr aseiniad, y ddau awgrymiadau
Bydd pwyntio i'r un pointee.
Weithiau, mae hynny'n cael ei alw o rannu.
A dyna i gyd yna iddo, mewn gwirionedd.
Ffarwelio nawr.
[DIWEDD Playback VIDEO]
DAVID J. Malan: Dyna ni am CS50.
Byddwn yn gweld chi yr wythnos nesaf.