[Powered by Google Translate] [Wythnos 4, Parhad]
[David J. Malan - Harvard University]
[Mae hyn yn CS50. - CS50.TV]
>> Mae hyn yn CS50, ac mae hyn yn y diwedd yr wythnos 4.
Felly, ychydig o newyddion da a newyddion drwg.
Dim darlith ar ddydd Llun, nid oes problem yn gosod yr wythnos nesaf. [Fyfyrwyr bloeddio]
Nid ydych chi'n mynd i fwynhau'r lle mae hyn yn mynd.
Ond rydym yn cael y lle ddydd Mercher nesaf,
ac mae hefyd yn unol â'r maes llafur ddarlith dydd Gwener 1 dydd Gwener nesaf fel y gallwn aros ar y trywydd iawn.
Ond bydd popeth yn cael ei ffilmio fel arfer, felly peidiwch â phoeni.
>> Ac o ran yr hyn y cwis 0 byddwn yn ei wneud tuag at ddiwedd wythnos
yn cael ei bostio ar cs50.net hafan y cwrs esboniad
o pa fath o ddisgwyliadau dylai fod gennych pan ddaw at y cwis cyntaf.
Yn gyffredinol, bydd yn dewis lluosog, yn wir-ffug, ateb byr, problemau codio byr.
Nid ydych yn mynd i fod disgwyl i weithredu'r yr hyn sy'n cyfateb
o broblem y byddech yn ei weld ar pset, y mae gennych gyfrifiadur
a debugger ac yn y blaen, ond bydd problemau codio bach.
>> Ac yn wir, y canllaw gorau i gael syniad o'r hyn y CS50 cwisiau yn debyg
yw mynd i cs50.net, ewch i'r cyswllt Cwisiau,
a gallwch weld y blynyddoedd diwethaf sawl blwyddyn gwerth o gwisiau.
Dim ond yn sylweddoli nad yw'r cwricwlwm bob amser wedi bod yr un fath dros y blynyddoedd.
Weithiau rydym yn ychwanegu, weithiau'n tynnu,
felly os ydych yn gweld rhywfaint o destun ar un o'r hen cwisiau
nad oes gennych syniad beth mae'n sôn amdano, mae'n naill ai ein bod yn cynnwys hynny
neu nad ydym yn cynnwys hynny.
Ond yn y ffurf o adolygiadau, mae hyn Sul, Llun a Mawrth
yn ogystal â chwrs ar draws y sesiwn adolygu ar nos Sul -
amser a lleoliad i'w gyhoeddi ar hafan y cwrs -
chi i gyd yn cael cyfle i adolygu gydag gymrodorion addysgu y cwrs
deunydd ar gyfer y flwyddyn hon, yn adran ac fel dosbarth cyfan,
a bydd y rhai yn cael ei ffilmio fel arfer yn ogystal.
>> Mae pob hawl. Felly, heb wastraffu mwy o eiriau, un sylw ar llwyddo / methu ac ychwanegu / gollwng.
Efallai eich bod wedi gweld fy nodiadau neithiwr, ac mae hyn yn wir dim ond rhai sicrwydd ychwanegol
os ydych yn ymhlith y rhai arbennig yn llai cyfforddus neu rywle yn y canol
ac rydych yn teimlo ychydig bach mewn dros eich pen,
sylweddoli bod yn wir yn eithaf normal, ac mae 'na strwythur cymorth digonol yn eu lle,
un ohonynt oriau swyddfa yn benderfynol o wella yn fwy am bob noson fy e-bost diwethaf,
ac yn sylweddoli hefyd fod yn opsiwn fel llwyddo / methu ar gyfer dosbarth fel hyn
mewn gwirionedd yn golygu fel mecanwaith i gymryd y ymyl oddi ar gwrs fel hyn,
fel hynny eto os ydych yn ei wario y rhai 10, 15, 20 awr
jyst yn ceisio cael rhywfaint o pset i weithio a ydych yn gwybod eich bod 90-95% o'r ffordd yno
ond nad ydych yn gallu ddod o hyd i bug damn, mewn pasio / methu model sy'n fath o iawn.
>> Y syniad yw bod â mecanwaith hwnnw yna gallwch fynd canolbwyntio ar eich psets eraill
neu gysgu neu beth bynnag yw eich bod am ganolbwyntio ar.
Felly, yn sylweddoli bod gennych tan nos Fawrth yma yn dod - yn dechnegol y dydd Llun 5ed,
ond bod yn cael gwyliau, felly nos Fawrth yma yn dod - i newid o pasio / methu â vice graddedig neu i'r gwrthwyneb.
Ac os ydych chi'n wirioneddol ar y dibyn ac yn meddwl o adael yn gyfan gwbl,
os gwelwch yn dda ddal i mi ar ôl darlith neu anfon nodyn ataf.
Byddem wrth ein bodd o leiaf cyn i chi sgwrsio cais adieu.
Mae pob hawl. Felly, rydym yn dechrau cymryd yr olwynion hyfforddiant oddi ar y tro diwethaf.
Yn benodol, rydym yn canolbwyntio ar linyn.
Llinyn yn rhywbeth sydd wedi datgan yn y llyfrgell CS50,
yn benodol yn y ffeil o'r enw cs50.h y byddwn yn dechrau edrych ar yr wythnos hon a'r nesaf.
Ond mae llinyn mewn gwirionedd dim ond symleiddio o rywbeth
dyna ychydig yn fwy arcanely disgrifir fel * torgoch.
Golosg rydym yn gyfarwydd â hwy. Mae'n dim ond un cymeriad.
Ond * o ddydd Llun dynodi beth? >> [Myfyrwyr] Mae pwyntydd.
Mae pwyntydd. A beth pwyntydd? >> [Myfyrwyr] Mae cyfeiriad.
>> Mae fel cyfeiriad, lleoliad yn y cof.
Beth yw cyfeiriad neu leoliad neu gof?
Unwaith eto, mae pob un ohonom yn cael gliniaduron gyda gig neu 2 gigabeit o RAM fwyaf tebygol y dyddiau hyn,
ac mae hynny'n golygu bod gennych biliwn neu 2000000000 bytes gwerth y cof.
Ac nid yw'n wir ots beth yn gorfforol yn edrych fel,
ond yn ymgymryd â ffydd y gallwch rifedi ar yr holl bytes unigol bod eich gliniadur eich hun wedi -
mae hyn yn beit 0, mae hyn yn beit 1, mae hyn yn beit 2000000000 -
a dyna'n union beth yw cyfrifiadur yn ei wneud.
Pan fyddwch yn neilltuo lle ar gyfer cymeriad unigol, er enghraifft,
mae'n amlwg bod ganddo i fyw yn rhywle er cof am eich cyfrifiadur,
ac efallai ei fod yn yn rhif beit 12,345,
ac mae hynny'n rhywle i fyny yma er cof am eich cyfrifiadur.
Ac y cyfeiriad yna y cymeriad yn 12345.
>> Yn awr, yn wythnos 0 drwy hyn hyd yn hyn, nid ydym wedi gofalu mewn gwirionedd
lle mewn pethau cof yn cael eu storio gan ein bod fel arfer yn defnyddio symbolau,
newidynnau, ac araeau i mewn gwirionedd yn cael ar ein data.
Ond o ddydd Llun ac yn fwy heddiw, yr ydych yn awr yn mynd i gael
yr holl alluoedd yn fwy mynegiannol gyda rhaglenni ysgrifennu
i 'n sylweddol thrin cof cyfrifiadur bynnag yr ydych yn gweld yn dda,
i'r ddau ddiben da a drwg,
bugs fod yn ganlyniad cyffredin iawn ar y pwynt hwn mewn dysgu pethau hyn.
Ond beth mae'n ei olygu mewn gwirionedd i fod yn * torgoch?
Gadewch i ni fynd yn ei flaen yn ôl i - a byddwn yn dod yn ôl i Binky fel yr addawyd heddiw.
Gadewch i ni fynd at enghraifft syml yma.
Gadewch i mi arbed y ffeil fel compare.c, a gadewch imi fynd rhai cod templed yma
felly dylech gynnwys stdio.h, gadewch i mi hefyd yn rhoi fy hun yn cynnwys cs50.h. 'N annhymerus' chwyddo i mewn i fyny yno.
Gadewch i mi ddechrau ysgrifennu int brif, prif (gwag), ac yn awr yr wyf yn awyddus i wneud rhywbeth fel hyn:
printf ("Rhowch i mi llinyn:") ac yna byddaf yn defnyddio llinyn s yn cael GetString
i gael llinyn gan y defnyddiwr, yna rwy'n mynd i ofyn i'r defnyddiwr am un arall.
("Rhowch i mi bluen arall:") ac rwy'n mynd i ofyn iddynt trwy GetString i gyrraedd hynny.
'N annhymerus' ei alw oherwydd t t s yn dod ar ôl a s yn enw braf ar gyfer llinyn os ei fod yn eithaf generig.
Felly GetString, ac yn awr Fi jyst eisiau gwneud gwiriad pwyll ac rydw i'n mynd i ddweud
os (au == t) yna Im 'jyst yn mynd i ddweud wrth y defnyddiwr printf ("chi deipio yr un peth \ n!");
arall yr wyf i'n mynd i argraffu rhywbeth fel ("chi deipio rhywbeth gwahanol! \ n")
neu beth bynnag fydd y ddedfryd. Felly, rhywbeth fel 'na.
Yna, fel arfer, byddaf yn dychwelyd 0 a dim ond dynodi nad oes dim drwg yn digwydd,
ac yr wyf i'n mynd i fynd yn ei flaen ac yn llunio a rhedeg y rhaglen hon.
>> Ond ar ddydd Llun, cynhaliwyd y rhaglen hon,
ac mewn gwirionedd Dywedwyd wrthym na HELO yn HELO ac nid HWYL FAWR yn HWYL FAWR.
Mae ymddygiad a welsom oedd ychydig yn fwy fel hyn.
Gadewch i mi fynd i mewn i fy cyfeiriadur ffynhonnell, chwyddo i mewn yma, a gadewch i ni yn gwneud cymharu.
Lluniwyd iawn. Gadewch i mi redeg cymharu. Rhowch i mi llinyn: HELO.
Rhowch i mi bluen arall: HELO.
Chi deipio rhywbeth gwahanol!
Wel, gadewch i mi roi cynnig ar rywbeth symlach fel 50, 50. Chi deipio rhywbeth gwahanol!
hi, hi. Felly, yn amlwg, mae rhywbeth yn mynd ymlaen yma.
Ond beth oedd yr esboniad am pam?
Mae'n debyg, llinell 12 yn gwbl gamweithredol.
Beth yw'r broblem sylfaenol yma? Yeah. >> [Myfyrwyr] Mae'n cymharu'r cyfeiriadau.
Yeah, yn union. Mae'n mewn gwirionedd yn cymharu'r cyfeiriadau
lle HELO a HELO yn cael eu storio.
Dyw hi ddim yn cymharu y llythrennau HELO dro ar ôl tro,
oherwydd yr hyn sydd wedi digwydd mewn gwirionedd, i gyd y cyfnod hwn rydym wedi bod yn defnyddio GetString -
Mae'r bwrdd du unwaith eto cof ein cyfrifiadur,
a gadewch i ni ddweud fy mod yn galw GetString ar ôl datgan s amrywiol.
Beth mae fy nghof yn edrych?
Gadewch i ni fympwyol yn dweud bod yn edrych fel hyn. Mae'n sgwâr.
A 'n bert lawer unrhyw adeg Rwyf wedi tynnu darn o gof ar y sgrin
os yw'n 32 catiau Rwyf wedi bod yn tynnu sgwariau fel hyn oherwydd bod yn wir yn y peiriant,
pwyntydd, cyfeiriad, yw 32 darnau. Mae yr un fath â int.
Gall hynny amrywio yn seiliedig ar system gyfrifiadurol.
Mae'r rhai ohonoch sydd yn fras gyfarwydd â'r ffaith bod eich Mac neu PC yn 64 darnau,
sydd mewn gwirionedd yn dynodi bod eich cyfrifiadur yn defnyddio 64-bit awgrymiadau,
64-bit cyfeiriadau, ac ymhlith y upsides hynny yw eich cyfrifiaduron
yn gallu cael RAM llawer mwy na fu.
Stori fer hir, yn ôl yn y dydd pan yw cyfrifiaduron yn unig a ddefnyddir 32 catiau
i gynrychioli cyfeiriadau, y nifer fwyaf o bytes gallech gynrychioli
yn yr achos hwnnw oedd yr hyn os oes gennych 32 catiau?
Felly 4 biliwn, iawn, oherwydd 2 i 32 yw 4 biliwn.
Mae'r nifer hwn wedi bod yn digwydd eto yn y cwrs.
>> Felly, os mai dim ond 32 catiau, y nifer uchaf y gallwch ei gyfrif i yn fras 4 biliwn.
Ond roedd cyfyngiad sylfaenol o gyfrifiaduron hyd nes ychydig flynyddoedd yn ôl
oherwydd os gallwch ond yn cyfrif fel uchel â 4 biliwn,
does dim ots os ydych yn prynu 8 gigabeit o RAM, neu hyd yn oed 5 gigabeit o RAM;
Ni allwch gyfrif mor uchel â hynny, felly roedd yn ddiwerth.
Gallech yn cael mynediad i'r 3 neu 4 wythnos gyntaf gigabeit o gof eich cyfrifiadur.
Dyna llai o broblem yn awr, a gallwch brynu Pros MacBook a Dells
gydag 8 gigabeit o RAM neu hyd yn oed yn fwy y dyddiau hyn.
Ond os wyf yn dyrannu yn eithaf syml yn y rhaglen hon pwyntydd, pwyntydd o'r enw s,
gallai fod yn edrych fel hyn ar y sgrin oherwydd yn wir mae angen i ni croen yn ôl haen hon.
Rwy'n cadw llinyn ei ddweud, ond o ddydd Llun, llinyn yn wirioneddol * torgoch,
cyfeiriad ryw gymeriad.
Felly, gadewch i ni gymryd y olwyn hyfforddiant i ffwrdd hyd yn oed er y bydd yn parhau i ddefnyddio GetString am y tro.
Felly, yr wyf wedi datgan s, ac mae hyn yn dalp o gof, 32 did.
Beth sydd yn fan hyn er cof yn ddiofyn? >> [Anghlywadwy ymateb y myfyrwyr]
Beth sy'n bod? >> [Myfyrwyr] Garbage. Garbage >>. Yn union.
Os nad ydych y rhaglennydd yn rhoi gwerth mewn newidyn, pwy a ŵyr beth yw e?
Weithiau byddwch yn cael lwcus ac mae'n 0, sy'n fath o 'n glws, gwerth diofyn yn lân,
ond fel y gwelsom Dydd Llun, weithiau mae'n nonsens llwyr,
ryw nifer mawr iawn positif neu negyddol a ddaeth o ble?
Yeah. >> [Myfyrwyr] Y swyddogaeth o'r blaen. >> Yeah.
>> Yn aml, mae'r swyddogaeth a gafodd eu galw o'r blaen oherwydd gofio,
wrth i chi alw swyddogaethau mewn cof, maent yn cymryd mwy o le a mwy o'r gwaelod i fyny,
a chyn gynted ag y ffurflenni swyddogaeth, bod y cof yn cael ei ailddefnyddio
gan y dyn nesaf sy'n cael ei alw, sy'n defnyddio eich tafell un o gof.
Ac os ydych wedi garbage chwith yno, gwerthoedd blaenorol,
efallai y byddwn yn camgymryd s fel chael rhywfaint o werth pan mewn gwirionedd nid ydym wedi rhoi unrhyw beth yno.
Felly mae ein RAM ar y pwynt hwn yn edrych fel hyn.
Nawr ar yr ochr dde-law llinell 7 rydym yn galw GetString,
yr ydym wedi bod yn ei wneud nawr am wythnosau, ond yr hyn sy'n GetString ei wneud mewn gwirionedd?
GetString a ysgrifennwyd gan y staff CS50 ychydig yn ddeallus
yn bod cyn gynted ag y defnyddiwr yn dechrau allweddi teipio a hits Mewnbynnu,
GetString ffigurau allan faint o keystrokes wnaeth y daro defnyddiwr,
faint o gymeriadau sydd eu hangen arnaf i ddyrannu RAM ar eu cyfer.
A lle y RAM yn dod o, pwy a ŵyr?
Mae'n rhywle yn eich cyfrifiadur Sant 2 gigabeit neu whatnot o gof.
Ond gadewch i ni dybio bod y cyfrifiadur o hyd lle ar gyfer y gair HELO iawn yma.
Mae'r gair yr wyf deipio yn H-E-L-L-O.
Ac os ydym yn tynnu hyn fel dilyniant o gymeriadau, efallai y byddwn yn ei dynnu fel hyn.
Ond mae angen i mi wneud 1 peth ychwanegol. Beth perthyn ar ddiwedd unrhyw llinyn yn C?
Mae'r cymeriad null, yr ydym yn ysgrifennu fel \ 0.
Mae'n dechnegol y 0 rhif, ond mae'r ôl-slaes yn gwneud yr holl gliriach
bod hyn yn llythrennol y rhif 0, y 0 cyfanrif;
na, er enghraifft, dyfynnwch-unquote 0 y gallech deipio ar y bysellfwrdd.
Felly mae hyn yn HELO.
>> A beth oedd yr ydym yn dweud ar ddydd Llun bod swyddogaeth fel GetString
mewn gwirionedd yn dychwelyd yr holl wythnosau hyn?
Dyw hi ddim yn dychwelyd llinyn fel y cyfryw oherwydd nid yw hynny'n wir mae ystyr
oherwydd nad llinynnau yn bodoli. Maent yn fath o fabrication yn y llyfrgell CS50.
Beth yw mewn gwirionedd yn llinyn, yn fwy technegol? >> [Myfyrwyr] Mae'n cymeriad cyntaf.
Yn union. Mae'n syml iawn yw'r cyfeiriad y nod cyntaf y mae'r defnyddiwr deipio i mewn
Felly, os bydd fy gair HELO dod i ben i fyny yn 123 beit rhif ac yna yn rhif beit 124,
125, 126, ac yn y blaen, os wyf dim ond rhif fy bytes o 0 ar i fyny,
beth sydd wir yn GetString yn dychwelyd yn llythrennol 123 rhif.
Felly, beth sy'n cael ei roi yn s yn y 123 Nid rhif, H llythyr, nid y gair HELO,
yn syml y cyfeiriad lle y gallaf ddod o hyd i'r llythyren gyntaf HELO.
Ond nid yw hynny'n ymddangos fel ddigon. Rwy'n gofyn i chi am llinyn, nid cymeriad.
Felly sut rydym neu'r cyfrifiadur yn gwybod bod ELLO fath o ddod ynghyd â'r H?
Beth y math o gytundeb sydd gennym? Yeah.
[Myfyrwyr] Mae'n cadw dweud ei hun i ddod o hyd i gymeriadau rhai mwy. >> Yn union.
>> Mae confensiwn hwn ddynol-gyfrifiadur lle pan fyddwch yn delio â llinynnau,
a elwir yn awr fel sêr torgoch, rydych yn syml rhaid i chi chyfrif i maes
lle ddiwedd pob llinyn mewn bywyd yw drwy mewn gwirionedd dim ond ailadrodd drosto gyda dolen i,
a, dolen tra bod beth bynnag, felly pan fyddwch yn dod o hyd diwedd y llinyn
nawr gallwch gasglu oddi wrth hynny, oh, y gair cyfan yn HELO.
Gall y rhai ohonoch sydd â phrofiad blaenorol rhaglennu yn gwybod yn Java
gallwch ffonio. hyd ac mewn ieithoedd eraill y gallwch eu ffonio hyd neu debyg.
Mae hynny oherwydd mewn llawer o ieithoedd, yn enwedig pethau o'r enw gwrthrych-oriented ieithoedd,
hyd rhywbeth yn fath o tu fewn crynhoi y darn o ddata ei hun,
llawer yn hoffi ydym IDs crynhoi ac enwau a thai tu mewn i fyfyriwr ar ddydd Llun.
Ond mae C yn lefel llawer is. Nid oes unrhyw wrthrychau neu ddosbarthiadau, os ydych chi wedi clywed y telerau hynny o'r blaen.
Y cyfan sydd raid wir yn gyfeiriadau cof.
Felly, mae hyn yn fath o ffordd hen ffasiwn o gynrychioli strwythurau data diddorol.
Mae gennych werth dechrau fel y cyfeiriad y nod cyntaf
ac yna dim ond rhai confensiwn mympwyol bod pawb yn cytuno i ddilyn.
Felly sut mae hyd llinyn rhoi ar waith, wnaethon ni gynnig?
Strlen, strlen, y mae rhai ohonoch wedi defnyddio erbyn hyn ychydig o weithiau. Mae'n eithaf syml, dde?
Mae fel 2 linell o god.
Mae'n 'n bert lawer yn ddolen ar gyfer o ryw fath, efallai gyda newidyn lleol ychwanegol.
Ond strlen yn unig wedi i gymryd pwyntydd ac yna dechrau chwilio am \ 0.
>> A chyn gynted ag y mae'n ei chael yn, gall ddychwelyd cyfanswm nifer y camau y mae wedi cymryd yn y llinyn.
Felly, gallwn gasglu o hyn yr hyn sy'n digwydd nesaf.
Gadewch i ni dybio yna rwyf yn datgan t gan fy mod i wedi gwneud yn llinell 10.
Mae hyn yn rhai gwerth garbage. Pwy sy'n gwybod yn gyntaf?
Ond ar yr ochr dde-law o linell o 10 Rwy'n galw GetString eto.
Pwy a ŵyr lle mae hyn yn dod i ben i fyny?
Gadewch i ni fympwyol dweud bod y system weithredu o hyd lle iddo ffordd dros yma.
Yr wyf yn digwydd i gyd-ddigwyddiad deipio H-E-L-L-O eto,
ac felly gallwn dynnu yr un math o llun.
Ond y ffaith fy mod i wedi ail-lunio darlun hwn yn fwriadol
oherwydd mae hynny'n a. wahanol HELO na hwn
Felly dyma gallai hyn fod yn lleoliad 456, mae hyn yn 457, ac yn y blaen.
Felly, beth sy'n cael ei roi lle y marc cwestiwn unwaith oedd?
Yn yr achos hwn 456.
Rydym yn casglu rhifau hyn fympwyol oherwydd wir ar ôl heddiw
nid ydym yn mynd i ofalu cymaint am yr hyn y cyfeiriad unrhyw beth yn.
Mae pob ydym yn gofalu amdano yw ein bod yn gallu chyfrif i maes y cyfeiriad o rai darn o ddata fel HELO.
>> Felly mewn gwirionedd yr hyn y rhan fwyaf o bobl yn ei wneud mewn gwyddoniaeth gyfrifiadurol wrth siarad am gyfeiriadau cof
a siarad am awgrymiadau penodol,
yn hytrach na trafferthu figuring 123 - sy'n gofalu lle mae y pethau hyn mewn gwirionedd yw,
rydym yn unig yn gwybod ei fod ar ryw gyfeiriad rhifiadol -
gallwn symleiddio'r byd a dim ond dweud bod s yn pwyntio at y cymeriad
a t yn pwyntio at y cymeriad hwnnw.
Ac mae'r ffaith ei fod yn saeth yn eithaf fwriadol
oherwydd llythrennol nawr s yn pwyntio at H a t yn pwyntio at H eraill
oherwydd ar ddiwedd y dydd, nid oes gwahaniaeth beth yw'r cyfeiriad yw,
ond mae'n fater bod gennym y gallu i fynegi cyfeiriad hwnnw gyda rhai darn o god.
Nid ydym wedi trin y cyfeiriadau hyn yn wir eto
felly byddwn yn gweld lle gallwn interject a didoli o wneud pethau gyda awgrymiadau,
ond am nawr yn llinell 12 llythrennol pa werthoedd yr ydym yn cymharu
yn ôl y stori hon yn llinell 12?
Rydym yn ei ddweud yw 123 gyfartal gyfartal i 456? Ac nad bendant yn wir.
A hyd yn oed yn gysyniadol, mae'r pwyntydd yn bendant nid yr un fath gan fod hyn yn
oherwydd eich bod yn galw GetString eilwaith, ac ni GetString yn ceisio bod yn glyfar super,
Nid yw'n ceisio sylweddoli, oh, i chi deipio HELO 5 munud yn ôl;
gadewch i mi roi i chi y pwyntydd un gan fy mod yn rhoi i chi o'r blaen,
'i jyst yn dyrannu cyfran newydd o gof bob tro y byddwch yn ei alw.
>> Felly sut rydym yn atgyweiria hon broblem?
Os lefel uwch wyf am gymharu y llinynnau HELO a HELO -
Nid wyf yn poeni am yr awgrymiadau - sut ydw i'n mynd ati i ateb y cwestiwn,
oedd y defnyddiwr deipio yr un peth? Beth angenrheidiol yma? Yeah.
[Myfyrwyr] Defnyddiwch swyddogaeth. >> Gallaf ddefnyddio swyddogaeth allan o'r bocs.
Gallaf ddefnyddio swyddogaeth a elwir yn strcmp, s-t-r-c-m-p,
dim ond y fersiwn cryno o ddweud llinyn cymharu.
Ac os ydym yn mynd i mewn, er enghraifft, cymharu 2, sydd ymhlith taflenni heddiw,
Rwy'n gwneud yn union hynny.
Yr wyf yn cadw popeth arall yr un fath o linell 1 ar i lawr i 26 neu lai,
ac yn awr sylwi ar y rhan hon wedi newid dim ond ychydig bach.
Gadewch i ni anwybyddu llinell 28 am funud a chanolbwyntio yn unig ar yr un yma.
Beth wnaethom ni ei ddweud Llun, fod str cymharu ei wneud?
Mae'n ymdrin â'r broses o gymryd 2 awgrymiadau, sa t yn yr achos hwn,
math o bron rhoi ei bys ar y 2 lythyren,
a'r hyn y mae'n rhaid ei wneud yw rhywbeth fel dolen gyfnod, neu ar gyfer dolen,
ac mae'n dweud a yw'r rhain yr un fath? Os felly, mae'n symud y bysedd neu'r awgrymiadau ymlaen.
A yw'r rhain yr un fath, mae'r rhain yr un, y rhain, yr un fath
rhain yn yr un, mae'r un? Ac www, rwy'n ar ddiwedd y llinyn ar lefel sa t.
Nid wyf wedi dod o hyd i unrhyw wrthddywediadau. Ydy, mae'r rhain llinynnau yn yr un fath.
A beth mae str cymharu ddychwelyd os 2 llinynnau yr un fath, mae'n debyg? Zero.
Felly 0 yn dda yn yr achos hwn oherwydd os bydd yn dychwelyd -1 neu +1,
sy'n golygu bod dim ond yn digwydd i ddod gerbron t yn nhrefn yr wyddor neu ar ôl t.
A byddai pam fod yn ddefnyddiol i gael swyddogaeth sy'n dweud wrthych pa llinyn yn dod cyn
neu ar ôl mewn geiriadur?
[Myfyrwyr] Chwilio. >> Chwilio a didoli.
>> Felly, gallwch wneud pethau fel chwiliad deuaidd neu fath swigod neu uno fath
lle mae'n rhaid i gymharu pethau.
Hyd yn hyn rydym wedi fath o dorri rhai corneli a siarad yn unig am ddatrys
yng nghyd-destun niferoedd oherwydd ei fod yn braf ac yn hawdd i siarad am,
ond yn sicr gallwch gymharu llinynnau, afal a banana,
oherwydd os afal yn hysbys i ddod gerbron banana, yn yr un modd,
gallwch symud o gwmpas mewn llinynnau cof yn union fel y gwnaeth Rob gyda uno fath yn y fideo
ac ni wneud hynny yma ar y llwyfan gyda, didoli dewis didoli mewnosod, a didoli swigen.
Felly, ble arall rydym yn cymryd hyn? Gadewch i ni geisio hyn.
Gadewch i ni fath o anghofio y wers honno am eiliad ac yn ceisio awr a chopïo 1.c i wneud y canlynol.
Yn llinell 21 i ddim yn dweud rhywbeth print,
yna rwy'n cael llinyn gan y defnyddiwr,
yna rwy'n gwirio hyn.
Nid ydym wedi gotten wir i mewn arfer hwn eto, ond gadewch i ni nawr wneud hyn.
Gadewch i ni mewn gwirionedd croen yn ôl haen hon. Mae hyn yn wir * torgoch. Mae hyn yn guy yn wirioneddol * torgoch.
Felly, beth mae'n ei olygu i fod yn gwirio os yw == null?
Mae'n troi allan bod pan fyddwch yn ffonio swyddogaeth fel GetString
neu'n fwy cyffredinol yn unig yn gofyn cyfrifiadur i roi peth cof,
gallai rhywbeth fynd o'i le.
Gallech fod yn wallgof ac yn gofyn i'r cyfrifiadur am terabeit o gof
drwy ofyn am trillions o bytes o gof sydd nid yn unig yn bodoli yn y cyfrifiadur,
ond mae swyddogaethau GetString ac eraill angen rhyw ffordd o gweiddi arnoch chi
os ydych wedi gofyn am ormod.
A'r ffordd GetString gwneud hyn yw os ydych wedi gofyn am fwy o cof
nag sydd ar gael yn y cyfrifiadur, hyd yn oed os mai super, super tebygolrwydd isel
oherwydd nid oes neb ohonom yn mynd i deipio cymeriadau triliwn ac yna pwyswch Enter,
ond tebygolrwydd yn isel er y gall fod, yr wyf yn dal yn awyddus i edrych ar ei gyfer rhag ofn,
a'r gwerth arbennig sy'n dychwelyd GetString, ateb, a swyddogaethau eraill
os bydd rhywbeth wedi mynd o'i le yn NULL ym mhob gapiau.
>> A beth yw null? NULL ond fel y digwydd i gynrychioli pwyntydd. Mae'n 0 cyfeiriad cof.
Mae'r byd fod yn fympwyol, os yw hyn yn fy cof cyfrifiadur - eich bod yn gwybod beth? -
rydym yn mynd i ddwyn dim ond 1 beit o gof bob cyfrifiadur, ac mae hyn yn lleoliad 0.
Rydym yn mynd i roi ei lysenw o NULL, ac rydym yn mynd i addo
na fyddwn byth yn mewn gwirionedd yn rhoi data go iawn yno
oherwydd rydym yn unig fympwyol angen werth arbennig, 0, aka NULL,
fel y gallwn gweiddi ar ddefnyddwyr os bydd rhywbeth yn mynd o'i le.
Fel arall, efallai nad ydych yn gwybod yn 0 yn golygu rhoi rhywbeth yma
ynteu a yw'n golygu rhywbeth yn mynd o'i le?
Mae'n rhaid i ni i gyd yn cytuno nad oes unrhyw beth yn golygu NULL dychwelyd,
unrhyw gyfeiriad gwirioneddol yn dychwelyd.
Nawr, dyma Im 'jyst yn mabwysiadu fy confensiwn dynol yr wyf yn dychwelyd 1 o brif
os bydd rhywbeth yn mynd o'i le.
Mae hynny oherwydd confensiwn dychwelyd prif yw dychwelyd 0 os da,
1 neu rhywfaint o werth arall os drwg.
Ond GetString ac unrhyw swyddogaeth sy'n delio mewn ffurflenni cof NULL os aiff rhywbeth drwg.
>> Iawn. Felly, yn anffodus, llinell 27, syml super er ei bod yn, yn methu'n llwyr i copi y llinyn.
Pam? Gallwn weld hyn fel a ganlyn.
Rwy'n hawlio yn unol 27 i gael eu gwneud copi o s a galw ei t.
Felly dydw i ddim yn gofyn i'r defnyddiwr ar gyfer 2 llinynnau y tro hwn; Im 'jyst yn dweud y gwerth yn s
dylid eu rhoi mewn t yn ogystal.
Felly, yn awr yn unig i ddangos sut y mae hyn yn torri, yn llinell 29 ymlaen beth ydw i'n ei wneud?
Yn gyntaf rwy'n gwirio os yw hyd y t yn fwy na 0.
Mae rhywfaint o linyn yno. Y defnyddiwr deipio rhywbeth i mewn
Beth yw llinell 32 yn ei wneud, mae'n debyg?
[Ymateb y myfyrwyr Anghlywadwy] Hawl >>. Gallwch fath o awgrymu'n o'r hyn a ddywedais ei fod yn ei wneud.
Ond yn dechnegol, beth mae hyn yn ei wneud? t [0] cynrychioli'r hyn?
[Myfyrwyr] Y cymeriad 0. >> [Malan] Y cymeriad 0.
Neu, yn fwy dynol-fel, y nod cyntaf mewn t, beth bynnag hynny yw, H efallai yn yr achos hwn.
A toupper gwneud yr hyn y mae'n ei ddweud. Os yw'n manteisio cymeriad 0 o t ac mae'n newid ei.
Felly, mae hyn yn golygu cymryd y cymeriad 0 o t, ei gwneud yn priflythyren,
a'i roi yn ôl yn yr un lleoliad.
Felly, os wyf yn teipio helo mewn llythrennau bach, dylai hyn newid y h lythrennau bach i H. cyfalaf
Ond y broblem yw bod mewn llinellau 35 a 36 yr hyn rwy'n ar fin ei wneud yw argraffu i ni sa t.
A beth yw eich hunch?
Beth ydw i'n wir yn mynd i weld os wyf wedi'i deipio mewn helo ym mhob llythrennau bach?
Beth sy'n mynd i gael eu hargraffu? >> [Anghlywadwy ymateb y myfyrwyr] >> Beth sy'n bod?
[Myfyrwyr] Big H a gweddill bach. >> Mae H fawr ac mae'r gweddill bach ar gyfer y, s neu t?
[Myfyrwyr] Mae'r ddau. >> Ddau. Yn union. Felly, gadewch i ni weld beth sy'n mynd ymlaen yma.
>> Gadewch i mi fynd yn ei flaen ac yn llunio hyn. Mae hyn yn copy1, felly gwnewch yn copy1. Mae pob hawl.
Chwyddo i mewn Gadewch i mi fynd yn ei flaen ac yn rhedeg copy1, Mewnbynnu, Dweud rhywbeth: helo mewn llythrennau bach.
Mae'n cyfalafu y copi, ond mae'n debyg cyfalafu y gwreiddiol yn ogystal,
oherwydd yr hyn bellach yn digwydd yn y stori hon?
Yn llinell 27 Nid wyf yn ymddangos i fod yn copïo y llinyn,
ond hyd yn oed er y gallai eich bod wedi gobeithio reddfol bod i fod yn wir,
os ydych yn meddwl am y llun, yr hyn mewn gwirionedd a wneuthum i?
Mae hanner y darlun yr un fath.
Felly, gadewch i ni gyflwyno yn ôl mewn amser fel nad t yn bodoli eto yn y stori.
Gall S yn bodoli yn y stori, ond gadewch i lythrennau bach hello y tro hwn.
Felly, gadewch i mi atgyweiria hyn yr wyf deipio mewn gwirionedd mewn
Yn yr achos yma mae gennym h-e-l-l-o.
Byddwn yn tynnu fel dilyniant o gymeriadau, yn rhoi fy llinellau gwahanydd yma ac fy \ 0.
Felly, dyma lle rydym yn cyn gynted ag llinell 1 trwy 24-ish, rhoi neu gymryd, wedi cyflawni.
Dyma lun o fy nghof.
Pan fyddaf yn mynd i'r llinell 27, beth sy'n digwydd?
Yn union fel o'r blaen, byddaf yn cael pwyntydd, a bydda i'n tynnu gan fod hyn yn sgwâr.
Mae'n cael ei alw t. A beth yw ei werth yn ddiofyn? Pwy a wyr? Mae rhai gwerth garbage.
>> Felly, 'n annhymerus' haniaethol bod i ffwrdd fel marc cwestiwn.
A chyn gynted ag yr ochr dde-law llinell 27 executes, beth ydw i'n rhoi y tu mewn o t?
Mae'r un peth sy'n sydd yn s.
Felly, os ydym am eiliad dileu'r tynnu y saeth, ac rydym yn dweud,
oh, mae hyn yn gyfeiriad 123 llwyth cof, pan fyddwch yn dweud t yn cael s, hanner colon,
ydych yn llythrennol yn rhoi 123 yma.
Nawr, os ydym yn fath o symleiddio ein byd unwaith eto gyda lluniau,
beth rydych wedi ei wneud mewn gwirionedd yn cael ei ychwanegu un arall saeth i eich byd
sydd wedi pwyntio o'r t i'r llinyn union yr un.
Felly pan yn llinell 31 a 32 Fi 'n weithredol fynd ati i newid t [0],
beth yw t [0] ymddangos yn gyfystyr â nawr? s [0]
Felly dyna'r cyfan sy'n digwydd.
A hyd yn oed er bod y math hwn o yn teimlo lefel ychydig yn isel ac yn ddirgel
ac y math hwn o bosibl yn teimlo fel yn reddfol dylai hyn fod wedi gweithio yn unig -
Rydw i wedi gwneud copïau o bethau cyn ac 'i jyst yn gweithio -
os ydych mewn gwirionedd yn meddwl am yr hyn y llinyn mewn gwirionedd, mae'n * torgoch.
Wel, beth yw hynny? Dyma'r cyfeiriad ryw gymeriad.
Yna, efallai ei fod yn gwneud mwy o synnwyr pan fyddwch yn ceisio gwneud rhywbeth
super ymddangos yn syml fel hyn, y cyfan rydych chi'n ei wneud yn copïo cyfeiriad cof.
Dydych chi ddim mewn gwirionedd yn gwneud unrhyw beth gyda'r llinyn ei hun.
Felly, hyd yn oed os nad oes gennych syniad sut y byddech yn datrys y broblem hon mewn cod,
lefel uchel, yn gysyniadol, beth sydd angen i ni ei wneud er mwyn gwneud ta gopi cywir o s, mae'n debyg?
Yeah. >> [Myfyrwyr] Rhowch gynnig lleoliad newydd? >> Yn union.
>> Mae angen i ni roi t lleoliad newydd sbon.
Mae angen i ni rywsut yn creu byd yr ydym yn cael darn newydd o gof,
sydd yn unig ar gyfer mwyn eglurder y byddaf yn tynnu dde o dan yr un yma, ond nid oes angen i fod yno.
Ond mae angen iddo fod yr un maint, felly byddaf yn tynnu hyn llinellau fertigol yn yr un lle.
Mae'n iawn os yw hyn yn holl garbage i ddechrau. Pwy a ŵyr beth oedd yno?
Ond mae cam 1 yn mynd i gael i gael ei roi i mi fel cof gymaint ag yr wyf ei angen
i osod copi o helo, ac yna chyfrif i maes sut i gopïo h yma, mae'r e yma,
y l yma ac yn y blaen.
Ond mae hyn eisoes fod yn teimlo ychydig yn amlwg hyd yn oed os yw rhai o'r manylion yn dal yn haniaethol.
I gopïo y llinyn i mewn i hyn, 'i' jyst am ddolen neu ddolen tra
neu rywbeth yr ydych wedi dod yn fwy cyfarwydd.
Felly, gadewch i ni geisio hyn. Gadewch i mi fynd i mewn i copy2.c.
Yn copy2.c mae gennym bron yr un rhaglen ac eithrio ar gyfer llinell 27.
Mae'n edrych braidd yn gymhleth, ond os ydym yn ei dorri i lawr darn wrth ddarn,
yr ochr chwith yr un fath.
Torgoch * t yn creu y peth hyn mewn cof, er gyda marc cwestiwn
oherwydd nid oes gennym unrhyw syniad beth sydd yno yn ddiofyn.
Ar yr ochr dde rydym yn awr yn cyflwyno swyddogaeth newydd, malloc,
ar gyfer cof dyrannu, yn rhoi i mi cof,
ac mae'n debyg cymryd faint o ddadleuon, faint o bethau y tu mewn cromfachau?
Clywais duchan 1 a 2, ond dim ond 1.
Does dim coma, sy'n golygu mae dim ond 1 peth y tu mewn i'r cromfachau.
Hyd yn oed er mae cromfachau eraill, gadewch i mi dynnu sylw at
beth sydd tu mewn i'r cromfachau pellaf, ac mae'n ymadrodd hwn:
(Strlen (s) + 1) * sizeof (torgoch).
Felly, os ydym mewn gwirionedd yn meddwl hyn trwy, mae hyn yn ei ddweud yn rhoi i mi hyd s.
Pam ydw i, fodd bynnag, ychwanegu 1 ar y hyd? >> [Anghlywadwy ymateb y myfyrwyr]
Yn union. Mae angen lle ar gyfer y boi yn y gynffon, y cymeriad chweched oes unrhyw ystyr Saesneg
ond nid oes rhaid ystyr arbennig rhaglennol.
>> Felly mae angen + 1 am hynny am fod strlen dychwelyd y disgwyliad dynol o hyd,
helo neu 5, nid yw'n rhoi i chi y cymeriad null ychwanegol.
Felly, yr wyf â llaw yn ychwanegu hyn gyda + 1.
Ac yna mae hyn, maint * o (torgoch), nid ydym wedi gweld hyn o'r blaen.
Nid yw hyn yn dechnegol swyddogaeth.
Mae'n keyword arbennig mai dim ond yn dweud wrthych beth yw'r maint yn rhai math data ar gyfrifiadur
oherwydd mewn gwirionedd, mae rhai ohonom yn 32-bit cyfrifiaduron.
Mae gen i gyfrifiadur eithaf hen yn y cartref, a dim ond yn defnyddio 32 catiau i gynrychioli awgrymiadau.
Ac felly os wnes i faint o fath data, gallai fod yn 32 ddarnau.
Ond os wyf yn defnyddio fy nghyfrifiadur newydd ffansi, efallai y byddwn yn mynd yn ôl gwerth o 64 did
ar gyfer rhywbeth fel cyfeiriad.
Felly, yn yr achos hwn, dim ond i fod yn ddiogel super, nid ydym yn mynd i rywbeth cod caled fel -
yn dda, beth yw maint y golosg yn ôl i'r hyn yr ydym wedi dweud hyd yn hyn?
Rydym wedi dweud 'n bert lawer ar lafar ei fod yn 1 beit, a bod' n bert lawer yn wir ar draws y bwrdd.
Ond unwaith eto, rhagdybiaethau yn tueddu i fod yn ddrwg.
Maent yn arwain i feddalwedd bygi os yw pobl yn defnyddio eich meddalwedd mewn ffyrdd nad oeddech yn bwriadu.
Felly gadewch i ni haniaethol hyn i ffwrdd a dim ond yn fwy generig ddweud
Fi angen y darnau llawer o gof
a dylai pob darn o gof yn cyfateb i faint o gymeriad,
sydd mewn gwirionedd yn hafal i 1 yn yr achos hwn, ond mae'n ffordd fwy cyffredinol o ysgrifennu.
Felly, os yw'r gair yn helo, faint o bytes yn ôl pob golwg malloc ddyrannu ar gyfer helo?
[Myfyrwyr] Chwech. >> Chwech. Yn union gymaint ag y byddwn wedi marciau cwestiwn ar y sgrîn.
Ac yna cymryd dyfalu awr yn seiliedig ar eich dealltwriaeth o GetString
beth mae malloc yn debygol o ddychwelyd? >> [Myfyrwyr] Mae cyfeiriad.
Mae cyfeiriad beth? O'r darn cyntaf o cof.
>> Nid oes gennym unrhyw syniad beth sydd yno oherwydd bod rhai swyddogaeth arall
gellid bod wedi defnyddio'r cof yn flaenorol.
Ond malloc, fel GetString, yn dychwelyd cyfeiriad y beit cyntaf o cof
ei fod wedi neilltuo i chi.
Fodd bynnag, yr hyn nad yw'n ei wneud yw llenwi hwn yn wag gyda null slaes cymeriad
oherwydd ei fod yn troi allan gallwch ddefnyddio malloc i ddyrannu unrhyw beth: ints, llinynnau, araeau,
fflotiau, strwythurau myfyrwyr.
Gallwch ddefnyddio malloc gwbl generig.
Nid yw'n gofalu neu rhaid i chi wybod beth rydych chi'n dyrannu cof ar gyfer.
Felly, byddai'n rhyfygus i malloc i roi 0 \
ar ddiwedd pob darn o gof mae'n rhoi i chi
gan fod hyn yn \ 0 peth yn unig yw gonfensiwn ar gyfer llinynnau.
Dyw hi ddim yn ei ddefnyddio ar gyfer ints, nid yw'n ei ddefnyddio ar gyfer fflotiau, nid yw'n cael ei ddefnyddio ar gyfer myfyrwyr.
Ac felly y Gotcha gyda malloc yw bod y baich yn gyfan gwbl ar chi y rhaglennydd
gofio faint o bytes ydych wedi ei glustnodi, ac nid i erioed defnyddio ar gyfer dolen
neu ddolen ychydig ac yn mynd heibio ffin y darn o gof a roddwyd i chi.
Rhowch ffordd arall, cyn gynted ag y byddwch yn dyrannu cof,
Ni allwch ofyn y system weithredu, oh, gan y ffordd, pa mor fawr o ddarn o gof oedd hyn?
Mae'n hollol i fyny i chi i gofio os ydych angen y gwerth.
>> Felly, gadewch i ni weld sut yr wyf yn symud ymlaen i ddefnyddio'r cof.
Yn llinell 28 a 29 pam ydw i'n gwneud hyn?
Dim ond gwiriad pwyll cyfanswm.
Rhag ofn rhywbeth yn mynd o'i le, yr wyf yn gofyn am ryw swm crazy o gof
neu fy mod wedi cymaint o bethau yn rhedeg ar y cyfrifiadur nad oes nid yn unig yn ddigon o gof,
rhywbeth fel 'na, yr wyf o leiaf am i wirio am null.
Mewn gwirionedd, bydd y rhan fwyaf o gyfrifiaduron yn rhoi i chi y rhith bod pob rhaglen
ddefnyddio eich holl RAM,
ond hyd yn oed felly, os bydd y defnyddiwr mewn rhai mathau llinyn hir crazy efallai oherwydd eu bod yn ddyn drwg
ac maent yn bod mewn gwirionedd yn ceisio at chwilfriwia eich rhaglen neu darnia i mewn iddo,
rydych am o leiaf wirio gwerth dychwelyd malloc ac a yw'n cyfateb null.
Ac os ydyw, gadewch i 'jyst roi'r gorau iddi ar hyn o bryd gan nad wyf yn gwybod beth i'w wneud yn yr achos hwnnw.
Sut ydw i'n gopïo y llinyn? Mae ychydig o ffyrdd i wneud hyn.
Mae str gopïo swyddogaethau yn C, ond mae'n super syml i ni wneud hyn, mae'r hen-ffasiwn ffordd.
>> Yn gyntaf gadewch i mi chyfrif i maes beth hyd s yn.
Gallwn fod wedi rhoi hyn yn y ddolen ond yn hytrach Fi jyst ei roi allan yma er eglurder.
Felly n awr yn storio hyd y llinyn gwreiddiol, sydd i bob golwg 5.
Yna, yn fy ddolen ar gyfer rwy'n ailadrodd o 0 ar hyd at n,
ac ar bob iteriad rwy'n rhoi s [i] tu mewn t [i].
Felly dyna beth wyf yn awgrymu gyda fy 2 bysedd yn pwyntio at y llinynnau o'r blaen.
Fel hyn ar gyfer dolen ailadrodd fel hyn, dwi'n mynd i fod yn copïo h i mewn yma,
e i mewn yma, l i yma oherwydd mae hyn yn s, mae hyn yn t.
Ac yna yn olaf, yn llinell 35 ar pam ydw i'n gwneud hyn?
Angen i mi wneud yn siwr fy mod yn dod i ben y llinyn t.
Ac yr wyf yn gwneud hynny y ffordd i fod yn super penodol.
Ond gynnig, rhywun, pe gallech, yn ffordd wahanol o wneud hyn.
Dydw i ddim wir angen llinell 35. Mae ffordd arall i wneud hyn.
Yeah. >> [Anghlywadwy ymateb y myfyrwyr] >> Dywedwch uwch.
[Myfyrwyr] Llai na neu'n hafal i. >> Yn union.
Gallem ddweud yn llai na neu'n hafal i n, sydd yn gyffredinol wedi bod yn ddrwg
fod bron bob amser pan fyddwn yn mynd i fyny at gyfartal at y peth rydym yn cyfrif
rydym yn mynd 1 cam yn rhy bell.
Ond cofiwch, faint o bytes oedd yr ydym yn dyrannu?
Rydym yn dyrannu strlen s, hynny 5 + 1 am gyfanswm o 6.
Felly, yn yr achos hwn y gallem wneud rhywbeth fel hyn
fel ein bod yn copïo nid yn unig y helo ond hefyd y 0 \ ar y diwedd un.
Fel arall, gallem ddefnyddio swyddogaeth a elwir yn str copi, strcpy,
ond ni fyddai hynny'n hwyl bron cymaint.
Ond dyna i gyd mae'n ei wneud o dan y cwfl.
Yna, yn olaf, rydym yn gwneud yr un peth ag o'r blaen.
I fanteisio t ac yna yr wyf yn honni bod y gwreiddiol yn edrych fel hyn a'r copi yn edrych fel 'na.
Felly, gadewch i ni geisio hyn yn awr. Gadewch i mi fynd i mewn yma. Gwnewch copy2. Byddwn yn chwyddo i mewn ac yn rhedeg copy2.
Rydw i'n mynd i deipio hello yn llythrennau bach, ac yn wir i mi gael lythrennau bach helo fel y gwreiddiol
ond cyfalaf Helo am y copi.
Ond dydw i ddim yn gwneud dim ond eto. Angen i mi wneud 1 peth olaf yma.
46 a 47 yn amlwg yn rhyddhau cof, ond beth mae hynny'n ei olygu mewn gwirionedd?
Beth ydw i'n ei wneud, yn eich barn chi, drwy ffonio llinell 46 a llinell 47?
Pa effaith mae'n ei gael? Yeah.
[Ymateb y myfyrwyr Anghlywadwy] >> Yn union.
>> Rydych yn unig yn dweud wrth y system weithredu, hey, diolch am y cof.
Gallwch yn awr ei ddefnyddio ar gyfer rhywun arall.
A dyma enghraifft berffaith o werthoedd garbage.
Rwyf wedi defnyddio dim ond y cof i ysgrifennu i lawr y gair hello yn 2 le,
yma, yma, yma, ac yma.
Felly mae hyn yn h-e-l-l-o-\ 0.
Ond yna yr wyf ffoniwch llinell 46 a llinell 47, a ydych yn gwybod beth sy'n digwydd yno o ran y llun?
A dweud y gwir, aros, mae'r darlun hwn yn yr hen un.
Unwaith y byddwn yn gwneud y copi, y boi mewn gwirionedd yn pwyntio yma,
felly gadewch i ni gael gwared ar y rhifau a dim ond haniaethol i ffwrdd fel ein saethau eto.
Beth sy'n digwydd yn y llun pan fyddaf yn galw am ddim?
[Ymateb y myfyrwyr Anghlywadwy] >> Ddim hyd yn oed.
Os byddaf yn ffoniwch am ddim ar sa t - math o gwestiwn tric - nid y darlun hwn yn newid o gwbl
oherwydd galw s ac yn galw t jyst yn dweud wrth y system weithredu,
hey, gallwch ddefnyddio hwn cof eto, ond nid yw'n newid hyn i null
neu ryw gymeriad arbennig, nid yw'n newid hyn,
nid yw'n newid y h neu'r e neu'r l neu'r l neu'r o naill ai mewn lle i unrhyw beth arall.
O ran y darlun, cyn gynted ag y byddwch yn galw dim yn newid rhad ac am ddim,.
Ac yno yn gorwedd y tarddiad o werthoedd garbage oherwydd os wyf yna yn ddiweddarach yn y rhaglen hon
gofyn i'r system weithredu ar gyfer cof mwy o GetString neu malloc neu rywbeth fel 'na
a'r system weithredu yn dweud, yn sicr, yr wyf wedi 12 bytes o gof rhyddhau yn unig i fyny,
ddefnyddio'r rhain, beth ydych chi'n mynd i gael ei rhoi?
Rydych yn mynd i gael eu trosglwyddo darn o gof y byddem fel arfer yn tynnu
gyda marciau cwestiwn, ond beth yw'r rhai marciau cwestiwn?
Maent yn digwydd bod yn h-e-l-l-o, h-e-l-l-o.
Mae'r rhain yw ein gwerthoedd garbage newydd cyn gynted ag y byddwch yn rhyddhau'r bod y cof.
>> Mae goblygiadau byd go iawn yma hefyd.
Mae hyn yn digwydd i wneud gyda RAM, ond bod eich cyfrifiaduron
mewn gwirionedd yn gwneud yr un peth gyda disg.
Byddwn yn siarad am hyn yn benodol gyda set problemau yn y dyfodol sy'n canolbwyntio ar fforensig.
Ond beth yn union sy'n digwydd os oes gennych rywfaint ffeil ariannol sensitif ar eich bwrdd gwaith
neu ryw JPEG fras ac rydych yn llusgo i mewn i'ch sbwriel,
beth sy'n digwydd pan rydych yn llusgo i mewn i'r sbwriel neu'r bin ailgylchu?
Rydych yn gwybod beth oeddwn yn sôn amdano. [Chwerthin]
Beth sy'n digwydd pan fyddwch wedi llusgo y dystiolaeth yn eich bin ailgylchu neu sbwriel yn gallu?
[Ymateb y myfyrwyr Anghlywadwy]
Wel, mor ofalus. Beth sy'n digwydd pan fyddwch yn gwneud hynny?
Yr ateb byr yw ddim, dde?
Ffeil fratiog neu sensitif yn dal i eistedd yno yn rhywle yn eich disg galed.
Mae'r rhan fwyaf ohonom o leiaf wedi dysgu'r ffordd galed bod angen i chi wagio eich sbwriel
neu eich recycle bin i mewn gwirionedd yn dileu ffeiliau.
Ac yn wir, pryd 'ch dde chlecia neu'n Rheoli cliciwch ar eich sbwriel yn gallu
neu dewiswch File, Trash gwag neu beth bynnag
a ydych mewn gwirionedd yn gwagio'r sbwriel yn gallu neu ailgylchu bin, beth yn union sy'n digwydd wedyn at y darlun hwn?
Dim byd mwy. Felly dim byd mewn gwirionedd yn digwydd ar ddisg.
>> Ac os ydym yn unig dros dro yn anghofio ac ysgrifennu - I'll defnyddiwch y cefn y.
Felly, yn awr y stori yn newid o RAM, a dyna lle mae rhaglenni yn bodoli
tra byddwch chi'n eu rhedeg, i ddisg, lle cânt eu storio yn y tymor hir
hyd yn oed pan fydd y pŵer yn mynd allan, am y tro - a byddwn yn dod yn ôl i hyn yn y dyfodol -
gadewch i ni dim ond esgus bod hyn yn cynrychioli y tu mewn yriant caled eich cyfrifiadur
am fod yn ôl yn y dydd y maent yn arfer bod yn disg crwn, yn debyg iawn disgiau hyblyg.
Felly, os ydych yn cael rhywfaint o ffeil Excel sensitif, gallai gymryd hyd y darn o gof
ar ddisg eich cyfrifiadur, a Im 'jyst tynnu 1s un mympwyol a 0au.
Pryd rydych yn llusgo y ffeil fel hynny i'ch sbwriel neu ailgylchu bin,
llythrennol dim byd yn digwydd oherwydd bod Apple a Microsoft wedi penderfynu yn unig
y sbwriel yn gallu ac ailgylchu bin mewn gwirionedd dim ond dalfan dros dro.
Efallai y pen draw bydd y OS wagio i chi, ond yn nodweddiadol, nid yw'n gwneud unrhyw beth,
o leiaf nes eich bod yn isel iawn ar y gofod.
>> Fodd bynnag, pan fyddwch yn mynd i sbwriel wag neu wag ailgylchu bin,
yn yr un modd, nid oes dim yn digwydd at y darlun hwn.
Y cyfan sydd yn digwydd yn rhywle arall ar eich cyfrifiadur, mae rhyw fath o dabl.
Mae'n fath o fel taflen twyllo ychydig sy'n dweud hynny, gadewch i ni ddweud, resume.doc,
fel bod eich ailddechrau mewn ffeil Word Microsoft yn arfer byw yn y lleoliad 123 ar eich disg galed,
nad ydynt mewn cof ac nid yn RAM, ond ar eich disg galed,
a bod eich bywydau JPEG bendant ar 456, a bod eich ffeil Excel byw yn 789 neu ble bynnag.
Pan fyddwch yn dileu ffeiliau drwy gwirionedd yn gwagio'r sbwriel neu'r bin ailgylchu,
Nid yw y darlun hwn yn newid. Nid yw'r 0au ac 1 ar eich disg caled yn mynd yn unrhyw le.
Ond y tabl hwn, y gronfa ddata fawr o ryw fath, yn newid.
Pan fyddwch yn dileu eich CV, mae fel pe y ffeil yn cael ei ddileu mewn rhyw ystyr,
ond mae'r holl cyfrifiadur yn cael ei anghofio lle y peth byw ar eich disg galed.
Mae'r 0s a 1s sy'n cyfansoddi eich CV neu unrhyw un o'r ffeiliau eraill yn dal yn gyfan.
>> Felly, os ydych yn gwneud hyn yn ddamweiniol, mae dal i fod yn tebygolrwydd nad yw'n sero
y gallwch adennill eich data gan ddefnyddio Norton Utilities neu ryw feddalwedd fasnachol
y mae ei bwrpas mewn bywyd yw dod o hyd 0s a 1s sydd wedi fath o amddifad,
anghofio yma ond i'r chwith yma, fel y gallwch gael eich data yn ôl.
Neu a fyddai'n ymchwilwyr fforensig gyda'r heddlu neu'r FBI mewn gwirionedd yn cymryd 'n anawdd cathrena
ac mewn gwirionedd yn edrych am batrymau 0s a 1s sy'n edrych fel JPEG, yn edrych fel ffeiliau Excel,
ac adennill iddynt y ffordd hyd yn oed os yw'r cyfrifiadur wedi anghofio amdanyn nhw yno.
Felly, yr unig ffordd mewn gwirionedd i ddileu data, gan y bydd yn ei drafod yn y dyfodol,
yw prysgwydd neu wipe y ffeil neu ddisg galed gan -
Ni allwch gael gwared ar y 0au ac 1
oherwydd fel arall y byddech yn dechrau gyda gyriant caled gigabyte
a byddech yn darfod i fyny ag 'n anawdd cathrena megabeit os ydych yn gyson yn dileu,
llythrennol, 0s a 1s.
Felly, beth fyddech chi'n ei wneud os ydych wir eisiau i dalu eich traciau
a'r broblem sylfaenol yw bod yn dal 0s a 1s ar y ddisg?
Rwy'n gweld rhywun ystumiau y byddech yn gorfforol torri'r ddyfais. A fydd yn gweithio.
[Chwerthin] Ond os dyna'r math o ateb drud, beth fyddai yn fwy rhesymol?
Yeah. >> [Myfyrwyr] Ysgrifennu dros iddynt. >> Ysgrifennu dros iddynt beth? >> [Myfyrwyr] data eraill.
Data eraill. Alli jyst trosysgrifo eich disg gyda 0au neu 1s neu bob 0au, pob 1s.
>> A dyna yn wir beth mae rhai o'r meddalwedd ei wneud.
Gallwch brynu meddalwedd neu hyd yn oed gael meddalwedd am ddim,
ac adeiladu hyd yn oed i mewn i Mac OS y dyddiau hyn, yn llai felly mewn Ffenestri,
yw'r gallu i ddileu ddiogel.
Mewn gwirionedd, os ydych am i bob cartref yn rhedeg heddiw os oes gennych Mac a wnawn hyn,
os oes gennych gall rhai pethau yn eich sbwriel, gallwch wneud Trash Diogel Gwag,
sy'n gwneud yn union hynny.
Yn hytrach na ffeiliau dileu yn unig yma, nid yw'n dileu'r yma 0s a 1s,
yn hytrach, 'i jyst yn newid nhw i gyd, er enghraifft, i 0au a dot, dot, dot.
Felly, bydd un o'ch psets yn y dyfodol mewn gwirionedd fod yn fwriadol adfer data -
lluniau yr ydym wedi eu cymryd o bobl, lleoedd, a phethau ar y campws
y byddwn yn gwneud delwedd fforensig o gerdyn cof camera digidol, gan
sef yr un syniad yn union - a bydd yn rhaid i chi eu herio i ddod o hyd mewn gwirionedd
y patrymau sy'n cynrychioli JPEG ar eich disg caled,
lawer fel 'na cyn-fyfyriwr y mae ei e-bost yr wyf yn darllen ychydig wythnosau yn ôl oedd
i adennill ffotograffau ei chwaer.
Pam nad ydym yn cymryd egwyl o 5 munud yma, a byddwn yn regroup gyda mwy ar y cof.
Felly, dyma lle mae pethau'n cael ychydig meddwl-blygu, ond mae hyn yn gam pwerus iawn
tuag at ddeall hyn i gyd yn fwy.
Dyma raglen o'r enw pointers.c.
Mae'n un cod sampl heddiw.
Sylwch fod yn y llinellau cyntaf, 19 trwy 22, y cyfan rydym yn ei wneud yn rhywbeth fel GetString
a dychwelyd cyfeiriad, ei storio yn y s.
O hyn allan am pset hyd yn oed 3 os ydych eisiau ond pset 4 ac ar
lle y gallwch ddechrau cymryd y olwynion hyfforddiant oddi ar eich hun,
nid oes unrhyw reswm i esgus bod llinynnau bodoli anymore.
Mae'n sicr yn iawn i ddim ond dechrau dweud * torgoch.
>> Fel o'r neilltu, mewn cyfeiriadau ar-lein ac mewn llyfrau efallai y byddwch yn aml yn gweld y seren nesaf at y newidyn.
Efallai y byddwch hyd yn oed weld mannau o gwmpas y ddau o boptu iddo.
Mae pob un o'r rheini yn swyddogaethol gywir.
Am y tro, fodd bynnag, byddwn yn safoni ar y dull hwn i wneud super glir
y * torgoch yn debyg i ddweud pwyntydd cymeriad.
Dyna'r math data.
Ac yna enw'r newidyn s yn yr achos hwn.
Felly, rydym wedi gotten llinyn ac rydym wedi galw ei s.
Ac yna i lawr yma yn sylwi fy mod yn gwneud mewn gwirionedd ychydig o dwyll.
Gelwir hyn yn, rhifyddeg pwyntydd sydd yn fath o syml super.
Mae'n jyst yn golygu adio a thynnu rhifau hyd at awgrymiadau.
Ond mae hyn yn gweithio mewn gwirionedd.
Mae'r rhaglen hon yn ymddangos yn argraffu'r llinyn s 1 cymeriad fesul llinell fel bod y canlyniad terfynol -
Dim ond er mwyn i ni difetha lle mae hyn yn mynd, gwneud awgrymiadau, awgrymiadau redeg, gadewch i mi chwyddo i mewn
Nawr, gadewch i mi deipio i mewn rhywbeth fel HELO a math Rhowch
ac y bydd yn argraffu 1 cymeriad fesul llinell.
Hyd at eiliad yn ôl, byddem wedi gwneud hyn gyda nodiant braced sgwâr.
Byddwn gennym ar gyfer dolen a byddem yn ei wneud printf o s [i] a byddem yn gwneud hynny eto ac eto ac eto
gyda n slaes ar ddiwedd pob llinell.
Ond mae'r rhaglen hon yn wahanol. Mae'r rhaglen hon yn defnyddio, yn llythrennol, rhifyddeg.
Felly beth sy'n mynd ymlaen yma?
Yn gyntaf oll, cyn i'r ddolen hyd yn oed yn gweithfeydd, beth, dim ond i fod yn glir, a oes mewn gwirionedd?
S yw? >> [Myfyrwyr] Mae cyfeiriad. >> Mae cyfeiriad.
>> Ac mae'n cyfeiriad, yn achos hello, y cymeriad cyntaf yn y gair, sydd yn h.
Felly s, yn yr enghraifft benodol, y cyfeiriad h.
Felly, beth mae'n ei olygu i wneud s + i?
Wel, i ddechrau am 0 yn hyn ar gyfer dolen. Rydym wedi gwneud gwaith y mae llawer.
I yn mynd i fynd i fyny i hyd y llinyn, mae'n debyg.
Felly, ar y fersiwn gyntaf y ddolen, i yn amlwg 0.
Felly ymadrodd hwn yn ei ddweud s + i - yn hytrach, s +0--dyna amlwg dim ond s.
Felly, beth yw * s yma?
Nawr rydym yn defnyddio'r seren mewn ffordd ychydig yn wahanol.
Gadewch i mi fynd yn ei flaen a chael gwared ar t oherwydd ein bod yn gwneud yn siarad am t a chopïau o s.
Nawr rydym yn unig am ddweud stori sy'n cynnwys s.
Ac felly ar hyn o bryd, ar ôl cael llinyn fath, mae ein byd yn edrych yn eithaf tebyg y gwnaeth o'r blaen
gyda dim ond s storio cyfeiriad h ac yn fwy cyffredinol pwyntio at y llinyn helo.
Os byddaf yn ei wneud yn awr linell fel * (s + i), gadewch i ni geisio hyn.
Felly * (s + i). Gadewch i mi symleiddio hyn oherwydd mae hyn yn 0, felly mae hwn yn * (s +0).
Wel, arhoswch funud. Symleiddio ymhellach. Mae hyn yn * (au).
Wel, yn awr y cromfachau yn fath o dwp, felly, yn awr gadewch i ni dim ond gwneud * s.
Felly, yn y fersiwn gyntaf y ddolen, y llinell sydd wedi tynnu sylw at, 26,
'n bert lawer cyfateb i argraffu hyn.
Beth yw'r math o ddata * s?
Yn y cyd-destun hwn, oherwydd bod y seren yn digwydd i fod yn nesaf at y au ei hun,
ond yn fwy penodol, oherwydd ein bod bellach yn datgan s,
nid ydym yn creu newidyn anymore, does dim sôn am * torgoch yn llinell 26,
does dim sôn am y llinyn keyword, rydym ond yn defnyddio'r newidyn a elwir yn s,
mae'n troi allan yn awr y seren ychydig yn wahanol ac, rhaid cyfaddef, yn ddryslyd ystyr.
* S yma yn golygu mynd i'r cyfeiriad yn s ac argraffu beth bynnag sydd yno.
Felly s yma, * s yw - math o fel llithrennau ac Ysgolion, dilynwch y saeth - yma.
Felly, mae hyn yn s *.
>> Felly, beth sy'n cael ei argraffu ar y fersiwn cyntaf y ddolen yn llinell 26?
I argraffu%, c, sef y placeholder ar gyfer cymeriad,
yna \ n ar gyfer llinell newydd. * (S + i) lle i yw 0 yn unig yw hyn.
Felly beth torgoch ydw i'n rhoi i mewn ar gyfer c%? H.
Yn y fersiwn nesaf y ddolen - mae'n debyg y gallwch weld lle mae hyn yn mynd -
y fersiwn nesaf yn amlwg i 1, felly mae hyn yn golygu s +1,
ac yna yn awr yr wyf angen y cromfachau oherwydd yn awr y seren mae angen i ddweud
mynd i gyfeiriad cof s +1.
Beth yw s? Gadewch i rholio yn ôl mewn amser ac yn dweud hyn saeth nid yn awr mewn gwirionedd yn gwneud i ni unrhyw ffafrio.
Gadewch yn fwy penodol yn dweud bod hyn yn storio rhif 123
oherwydd bod y ddechrau'r llinyn helo, mae hyn yn gyfeiriad 123, mae hyn yn 124, ac yn y blaen.
Felly, ar yr ail ailadroddiad pan oeddwn i'n dweud s +1, dyna fel dweud 123 +1,
elwir fel arall yn 124, felly beth golosg yn cael ei argraffu ar y ail ailadroddiad?
E yn 124 cyfeiriad cof.
Yna + eto, 125, 126, 127, ac mae hyn yn ddolen diolch byth yn dod i ben cyn i ni gyrraedd yma
oherwydd fy mod i'n defnyddio strlen i wneud yn siŵr nad yw'n cyfrif i yn rhy uchel.
Felly dyna hefyd yw hi.
Unwaith eto, mae hyn yn union fel petaem wedi gwneud wythnos yn ôl.
Gadewch i mi ysgrifennu ar y llinell isod er nad ydym am i wneud y ddau.
Mae hyn yn union yr un fath bellach i hyn.
>> Felly hyd yn oed er s yn llinyn, fel yr ydym wedi bod yn galw am wythnosau, mae mewn gwirionedd yn * torgoch.
Felly, os ydym am fod yn rhefrol super, mae'n wirioneddol cywir i ysgrifennu cymeriad penodol
yn y lleoliad ith defnyddio'r cyfeiriadau hyn rhifol ac mae'r gweithredwr seren,
ond dweud y gwir, mae hyn yn lanach yn unig cymaint. Felly, nid yw hyn yn ddrwg.
Dim rheswm i roi'r gorau i wneud llinell 27 yma, ond 26 yn swyddogaethol yr un fath,
ac mae'n swyddogaethol yr un fath am yr union y rhesymau yr ydym wedi bod yn eu trafod hyd yn hyn.
Ac yn olaf, 29 yn arfer unig yn dda.
Galw yn rhad ac am s yn golygu bod yn awr eich bod yn rhoi rhywbeth yn ôl y cof sydd GetString a roddwyd i chi
oherwydd eto, fel y soniais Dydd Llun, GetString am wythnosau
wedi bod yn cyflwyno a bug i mewn i'ch cod.
Eich cod ar gyfer wythnos wedi cael gollwng cof
lle rydych wedi bod yn gofyn GetString ar gyfer cof, ond nad ydych erioed wedi bod yn rhoi yn ôl.
A dyna ei dewis yn fwriadol gan i ni pedagogically
oherwydd ei fod yn ormod i feddwl am yn gynnar.
Ond nawr mae angen cymesuredd mwy.
Os byddwch yn gofyn i'r cyfrifiadur ar gyfer cof, fel sy'n wir ar gyfer GetString,
fel yn achos pob golwg dros malloc,
mae'n rhaid i chi yn awr ar gyfer ymlaen pset 4 hefyd yn rhad ac am ddim unrhyw cof o'r fath.
Sylwi ar hyn yn wahanol i ddweud n int.
Nid oes angen i ryddhau hyn oherwydd nad oeddech yn galw GetString
ac nid oeddech yn galw malloc.
>> A hyd yn oed os ydych yn galw GetInt gan y byddwn yn y pen draw yn gweld,
Nid GetInt yn dyrannu cof ar gyfer chi oherwydd gallwch chi mewn gwirionedd yn mynd o gwmpas cyfanrifau
a fflotiau a chars dim ond y ffordd yr ydym wedi bod yn gwneud am wythnosau.
Strings, fodd bynnag, yn arbennig oherwydd eu bod yn wir yn y concatenation o chars lluosog.
Felly, maent yn unig yn wahanol o chars a fflotiau a ints ac yn y blaen.
Ond byddwn yn dod yn ôl at hynny cyn hir.
Unrhyw cwestiynau, yna ar y dechrau awgrymiadau? Yeah.
[Gwestiwn myfyrwyr Anghlywadwy]
Ah, cwestiwn da iawn.
Un o'r ychydig bethau C yn ei wneud i chi, sydd yn gyfleus,
mae'n cael ei ffigurau allan i chi beth yw'r maint yn y math data
ac wedyn yn gwneud y math hwnnw o lluosi i chi.
Mae hyn yn amherthnasol yn achos chars gan fod bron bob amser yn golosg yn 1 beit,
felly mae hyn yn unig yn gweithio.
Ond er mwyn drafodaeth, os ydych mewn gwirionedd yn argraffu cyfanrifau
ac roeddech yn ceisio argraffu ar rai gwerth oedd yn pwyntio mewn cyfanrif,
na fyddech yn yr un modd mae angen i wneud + 4 * fi jyst oherwydd bod int yw 4 bytes.
Rhifyddeg Pointer yn golygu bod C a compiler wneud popeth mathemateg i chi.
Y cyfan sydd raid i ofalu amdano yw'r cyfrif yn rhyw fath o synnwyr dynol. Yeah.
[Myfyrwyr] Os ydych chi'n datgan llinyn y tu mewn i am ddolen, rhaid i chi ei ryddhau yn ddiweddarach?
Da cwestiwn.
>> Os byddwch yn datgan y tu mewn llinyn y ddolen ar gyfer, a oes angen i ryddhau yn ddiweddarach?
Dim ond angen i chi cof am ddim eich bod yn dyrannu gyda GetString neu gyda malloc.
Felly, os ydych yn unig yn dweud rhywbeth fel - gadewch i mi roi braces cyrliog nawr er yr holl cod yn gysylltiedig.
Os byddwch yn gwneud rhywbeth, er buggily, fel hyn, cols * t = s,
Nid oes angen i chi t am ddim oherwydd nad t oedd yn cynnwys unrhyw sôn am malloc neu GetString.
Os ar y llaw arall wnaethoch chi hyn, GetString, yna ie, byddai angen i chi t rhad ac am ddim.
Ac yn wir, eich unig gyfle i wneud hynny yn awr y tu mewn i'r ddolen, ar gyfer yr un rhifyn o gwmpas
yr ydym wedi trafod yn y gorffennol.
Fel arall, byddech yn dyrannu cof, dyrannu cof, dyrannu cof,
ac ar ddiwedd y rhaglen oherwydd eich bod y tu allan y ddolen,
Nid yw t yn bodoli, ond dydych chi byth dweud wrth y system weithredu
nad oedd angen bod y cof anymore.
A chyn hir, ar gyfer pset 4 neu 5 byddwn yn eich arfogi â rhaglen o'r enw Valgrind,
sy'n debyg o ran ysbryd i'r GDB yn ei fod yn cael rhywfaint o ryngwyneb dirgel,
ond mae ei phwrpas mewn bywyd yw eich helpu chi.
Ac Valgrind yn rhaglen a fydd, yn y dyfodol yn chwilio eich rhaglenni
chwilio am ollyngiadau cof, boed o GetString neu malloc,
y byddwn yn dechrau defnyddio yn fwy wrth i ni roi'r gorau i ddefnyddio'r llyfrgell CS50 cymaint.
Rydym yn olaf yn awr fath o eirfa a'r math o fodel meddwl mewn theori
â hwy i ddatrys y rhaglen wedi torri.
>> Felly, yn y rhaglen wedi torri, cyfnewid yn gweithio tu mewn cyfnewid,
erioed, ond mae'n gweithio mewn gwirionedd yn y brif oherwydd bod y prif basiwyd yn x ac y, galw i gof,
a'r rhai oedd yn pasio i mewn gan werthoedd, felly, i siarad.
Mae copïau ohonynt a roddir i gyfnewid.
Erbyn diwedd y cyfnewid, roedd a a b yn wir eu cyfnewid,
ond wrth gwrs nid oedd x ac y, fel y trafodwyd ar ddydd Llun, wedi bod.
Felly, yr wyf yn cynnig mewn gwyrdd yma bod hyn mewn gwirionedd yn yr ateb yma.
Ac mewn gwirionedd, gadewch i mi symud fy sêr yn unig i fod yn gyson
hyd yn oed er, unwaith eto, swyddogaethol nid yw hyn yn fater.
Yn ystod yr wythnosau dyfodol, byddwn yn esbonio pryd a pham ei fod yn bwysig.
Felly, mewn gwyrdd bellach yn ateb.
A dweud y gwir, mae'n edrych yn llawer iawn anniben oherwydd fy mod yn cael yr holl o'r sêr.
Gadewch i mi nodi un peth.
Mae'r llinell uchaf yma lle mae'n dweud int * a a int * b
yn sylfaenol yn gwneud yr un peth ag y mae bob amser yn.
Mae'n datgan 2 ddadleuon neu baramedrau i gyfnewid,
y cyntaf ac mae hynny'n argoeli'n int a elwir yn,
yr ail ac mae hynny'n argoeli'n int o'r enw b.
Yr unig beth sy'n newydd yn y fan hon yw'r ffaith bod yna seren yno.
>> Beth mae hynny'n ei olygu? Nid yw A yn int, nid b yn int.
A yw'r cyfeiriad yn int a b yw'r cyfeiriad int gwahanol.
Down yma, dyma lle yr wyf yn cyfaddef C yn cael ddryslyd.
Nawr rydym yn defnyddio seren, ond mae ganddo ystyr gwahanol mewn cyd-destun hwn.
Gan nad ydym yn datgan awgrymiadau gan ein bod i fyny yma,
yma rydym yn dereferencing pethau.
Felly, yn dechnegol, y seren yn y cyd-destun hwn y llinell gyntaf, yn ail, a'r trydydd tu mewn cyfnewid
yn y gweithredwr dereference a dim ond yn golygu mynd yno.
Felly, yn union fel fy mys yn dilyn y saeth i h,
* Modd yn mynd i'r cyfeiriad hwnnw a dod o hyd i mi int sy'n yno.
* Yn golygu b mynd i'r cyfeiriad a basio i mi beth sydd yno.
Felly, gadewch i ni ail-lunio'r darlun o ddydd Llun bellach yn defnyddio pentwr o fframiau,
yr un gwaelod sydd yn mynd i fod yn brif,
yr un uchaf sydd yn mynd i fod yn cyfnewid,
fel bod ein byd yn edrych, yn union fel Llun, fel hyn.
Dyma ddarn o gof y prif yn mynd i'w defnyddio.
>> Dwyn i gof o ddydd Llun fod y rhaglen yn unig 2 o newidynnau,
un a elwir yn x ac un o'r enw y, ac yr wyf wedi rhoi'r rhifau 1 a 2 yno.
Nawr pan fydda i'n galw gyfnewid fel y gwnes i ar ddydd Llun,
flaenorol pan fyddaf yn defnyddio'r fersiwn coch y rhaglen hon, sy'n edrych fel hyn,
Rwy'n cael 2 paramedrau, a b, ac, a beth oedd byddwn yn ysgrifennu yma ac yma?
Dim ond 1 a 2, yn llythrennol copïau o'r x ac y.
Heddiw, rydym yn newid hynny.
Heddiw, yn hytrach na pasio mewn ints a a b rydym yn mynd i basio i mewn 2 gyfeiriad.
Mae'r rhai cyfeiriadau yn digwydd i bwyntio at ints, ond nid y rhai cyfeiriadau yn cael eu ints eu hunain.
Maent yn gyfeiriadau. Mae fel cyfeiriad post yn lle hynny.
Felly, yn awr mae angen i ni dim ond yn rhoi fy hun ychydig mwy o fanylder ar y sgrin.
Mae hyn yn fy cof cyfrifiadur fel ei fod wedi bod drwy'r dydd.
Nawr rydym angen rhywfaint o gynllun rhifo fympwyol.
Felly, gadewch i 'jyst dweud, dim ond drwy siawns, bod hyn yn 123, cyfeiriad cof 124.
Gadewch i 'jyst dweud hyn yw 125, mae hyn yn 126, ac yn y blaen, ond mae hynny'n hollol fympwyol.
Rydym yn unig angen rhyw gynllun rhifo yn fy nghof.
Felly nawr pan oeddwn mewn gwirionedd yn mynd yn x ac y, nid wyf ddim yn mynd i basio i mewn x ac y;
Rydw i'n mynd i basio yn y cyfeiriad post, fel petai, o x a y
fel nad yw yr hyn sy'n cael ei storio yma ac yma yw 1 a 2,
ond os gallwch weld fy testun bach, beth sy'n cael ei phasio yma ac yma?
[Ymateb y myfyrwyr Anghlywadwy] >> Yn union. 123 yn cael ei rhoi yma a 124 yn cael ei rhoi yma.
>> Yn awr, oherwydd fy mod yn defnyddio'r seren yn y ffordd hon llinell gyntaf yma ar ben,
fy rhaglen dim ond yn gwybod bod 123 a 124, er eu bod yn amlwg cyfanrifau
y gallai unrhyw dynol yn sylwi arnynt, dylent gael eu dehongli fel cyfeiriadau, cyfeiriadau rhifol.
Nid ydynt yn i mewn ac ohonynt eu hunain ints, maen nhw'n cyfeiriadau,
ac mae hynny oherwydd fy mod wedi rhoi benodol y sêr yno.
Felly, yn awr yn fy llinell gyntaf, ail, a'r trydydd o god gwirioneddol hyn sy'n digwydd yma?
Gadewch i ni dynnu gweddill y llun.
Tmp yn union fel yr oedd ar ddydd Llun. Nid oes dim arbennig am tmp.
Mae'n yn unig yw 32 darnau lleol amrywiol, ac y tu mewn o hynny yr wyf yn ôl pob golwg storio gwerth * a.
Yn awr, os wyf newydd ei ddweud tmp = a, beth fydden i'n ei roi yma? >> [Myfyrwyr] 123.
123. Ond nid dyna beth rwy'n ei wneud.
I ddim yn dweud tmp = * a. Golygu Star yn mynd yno.
Felly dyma yw, 123. Sut ydw i'n mynd yno? Esgus fel mae saeth.
Wel, dyna ni, 1. Felly, beth sy'n cael ei storio mewn tmp, mae'n debyg? Dim ond 1.
Felly, mewn geiriau eraill, tmp yn * a, * modd yn mynd i'r cyfeiriad sydd ar hyn o bryd mewn,
sydd i bob golwg 123.
>> Iawn, dyma ni yn y lleoliad 123, rwy'n gweld y rhif 1,
felly dwi'n mynd i roi'r rhif 1 yno.
Nawr beth ddylwn i ei wneud yn llinell 2, * a = * b?
Mae hyn yn un ychydig yn fwy o ran oherwydd yn awr beth yw? Mae'n 123.
Felly * a lle? Hawl lle roeddwn o'r blaen. Felly, ewch yno. Iawn.
Yn awr, yn olaf, ac yna yn olaf bydd hyn yn dechrau gwneud synnwyr, gobeithio,
* B yn golygu yr hyn sydd yn b? 124. Felly, mae angen i mi fynd yno, sef 2.
Felly, beth ddylwn i roi lle?
2 yn mynd i mewn yma oherwydd * b yn mynd i mewn i * a. Felly, byddaf yn gwneud hynny.
A allwch chi eisoes yn gweld, efallai, ein bod ni'n llawer agosach
i ddatrys hyn dwp, problem syml yn gywir am y tro cyntaf
oherwydd erbyn hyn mae gennym atgof o'r hyn a oedd x,
mae gennym 2 gopi, rhaid cyfaddef, y y,
ond llinell 3 awr yn dweud * b.
Felly dyma b. * Yn golygu b mynd yno. Felly, lle yn lleoliad 124?
Mae'n debyg yma. Felly, beth ddylwn i ei roi yma? Yn amlwg, tmp.
Felly, yn awr yr wyf yn gwneud hyn. Felly mae gen i 1 yma a 2 yma.
Ac yn awr beth am hyn oll, y 123, 124, a 1?
Cyn gynted ag y ffurflenni cyfnewid, y cof cystal ag golli
oherwydd cyn gynted ag y ffurflenni cyfnewid, y system weithredu
yn rhad ac am ddim i ddefnyddio'r cof eto yn y dyfodol.
Dim ond prif cof ar waelod y pentwr hyn a elwir yn ffyn o gwmpas.
>> Ac felly rydym o'r diwedd yn awr bod fersiwn weithio.
Gadewch i mi fynd i mewn i swap.c, ac yn sylwi ar y canlynol.
Ar ben y rhaglen rwyf wedi newid fy prototeip i fod yn int * a a int * b.
Felly, yr unig beth yr wyf newid i fynd o goch, a oedd yn ddrwg, i wyrdd, sy'n beth da,
yn cael ei wyf yn ychwanegu y sêr heddiw.
Ond yna i lawr yma yn cyfnewid ei hun oedd gen i gopïo, gludo yr hyn a oedd dim ond ar y sleid.
Mae gen i seren yma, seren yma - sy'n cyfateb i prototeip -
ac yna yr holl bethau hyn yn awr sêr ac eithrio ar gyfer tmp
gan fod y defnydd o newidyn dros dro, does dim byd newydd yno.
Fi jyst angen storio dros dro ar gyfer int.
Felly nid oes angen seren yno.
Rydym yn unig angen y seren er mwyn i ni groesi y math hwn o ffin mympwyol
rhwng y 2 fframiau er cof am fy cyfrifiadur.
Ond mae un peth olaf rhaid i hyn newid, ac efallai y byddwch wedi cael cipolwg ar yn barod.
Pa llinell eraill yn amlwg yn wahanol erbyn hyn? >> [Myfyrwyr] & x.
>> Yeah, felly 25 yn y llinell olaf o god angen i mi newid er mwyn i hyn weithio.
Mae wythnos yn ôl a hyd yn oed ar ddydd Llun yn edrych llinell 25 fel hyn, cyfnewid x ac y,
a chafodd hyn ei dorri oherwydd os ydych yn dweud cyfnewid (x, y)
eich bod yn rhoi copïau o x ac y i gyfnewid, yna mae'n gwneud ei peth,
ond nid ydych yn newid mewn gwirionedd x ac y ei hun.
Felly, hyd yn oed os nad ydych erioed wedi gweld y cymeriad hwn o'r blaen gyda'r ampersand yn y cod,
dim ond yn cymryd dyfalu. Beth mae'r ampersand yn ei wneud, mae'n debyg?
[Myfyrwyr] Cymryd y cyfeiriad. >> Cymryd y cyfeiriad.
Felly, mae'r ampersand yn ei ddweud yn rhoi i mi gyfeiriad x.
Pwy a ŵyr ble y mae? Mae'n digwydd i fod yn 123. Dydw i ddim gofal. Jyst yn rhoi i mi gyfeiriad x.
& Y yn golygu rhoi i mi gyfeiriad y.
Ac ar y pwynt y stori yn berffaith gyson â'r darlun fe wnaethom funud yn ôl.
>> Felly, 'n annhymerus' cyfaddef awgrymiadau, yn sicr i mi pan ddechreuais ddysgu hyn,
yn bendant yn un o'r pethau anoddaf i lapio o gwmpas fy meddwl.
Ond yn sylweddoli, yn enwedig wrth i ni barhau chwarae â'r mathau hyn o bethau,
os byddwch yn torri i lawr at y math syml super o ddeallusol anniddorol problemau
o dim ond symud o gwmpas rhifau, yr ateb i lawer o ddryswch gyda awgrymiadau
wir yn gallu deillio o hyn mecaneg sylfaenol iawn.
Dyma gyfeiriad. Ewch yno gyda'r seren.
Neu i'r gwrthwyneb, dyma 'an ampersand. Chyfrif i maes beth yw'r cyfeiriad mewn gwirionedd.
Mae pob hawl.
Felly, ble mae hyn i gyd gof yn dod o?
Rydym wedi tynnu darlun hwn ychydig o weithiau, ac yr wyf yn cadw addawol byddwn yn dod yn ôl ato,
ond yma yn y gynrychiolaeth o gof eich cyfrifiadur
dyna ychydig yn fwy na labelu ein bwrdd sialc yma.
Mae'r segment testun ar y brig yn cynrychioli beth mewn perthynas â'ch rhaglen?
[Ymateb y myfyrwyr Anghlywadwy] >> Mae'n ddrwg gennym? Dweud eto.
[Myfyrwyr] Mae'r rhaglen ei hun. >> Mae'r rhaglen ei hun.
>> Felly, y Clang 0s a 1s eich bod wedi casglu ar ôl ysgrifennu C cod ac yna'n rhedeg
a chynhyrchu dod i ben 0s a 1s hyd yn cael ei guddio yno er cof
oherwydd pan fyddwch yn dwbl glicio ar eicon ar eich Mac neu PC
neu rhedeg gorchymyn fel Mario yn eich brydlon, eich 0s a 1s o ddisg
cael eu llwytho i mewn i gof fel y gall y cyfrifiadur yn trin eu
ac yn gweithredu yn fwy cyflym.
Data ymgychwyn Felly, a data uninitialized, ni fyddwn yn siarad llawer am y rhai,
ond y rhai yn unig newidynnau byd-eang.
Golygu ymgychwyn newidynnau byd-eang a roddasoch i werthoedd;
uninitialized golygu newidynnau byd-eang nad ydych wedi eto yn rhoi gwerthoedd.
Yna mae hyn newidynnau amgylchedd sy'n byddaf yn llwyr chwifio fy llaw yn,
ond eu bod yno a bod pethau siopau fel eich enw defnyddiwr
a math arall o fanylion ar lefel is.
Ond y darnau mwyaf suddlon o gynllun eich cof yn y peth hyn a elwir yn y pentwr a'r domen.
Mae'r stac unwaith eto, i fod yn glir, yn y cof sydd ei ddefnyddio pryd bynnag y swyddogaethau yn cael eu galw,
pryd bynnag y newidynnau lleol
a phryd bynnag y mae paramedrau yn cael eu pasio o gwmpas.
Mae hynny i gyd yn digwydd yn y pentwr.
Mae'r domen nid ydym wedi siarad amdano, ond gan gymryd dyfalu sy'n defnyddio'r domen.
Dim ond darn gwahanol o gof.
Mae'n digwydd i gael ei dynnu yma ar y brig, ond mae hynny'n gonfensiwn darluniadol mympwyol.
Pwy sydd wedi ymddangos bod yn defnyddio cof o'r domen am wythnosau?
Mae'n dechnegol chi ond yn anuniongyrchol. >> [Myfyrwyr] GetString.
GetString a malloc. Felly dyma y gwahaniaeth sylfaenol.
>> Rydych yn gwybod am yr wythnosau diwethaf, os oes angen cof, dim ond datgan newidyn.
Os oes angen llawer o gof, datgan amrywiaeth dde y tu mewn eich swyddogaeth.
Ond y broblem rydym wedi cadw wynebu yw os ydych yn datgan newidynnau lleol y tu mewn o swyddogaethau,
cyn gynted ag y ffurflenni swyddogaeth, beth sy'n digwydd i'r cof a'r rhai newidynnau?
Dim ond math o ei fod bellach yn eiddo i chi, dde? 'I jyst yn diflannu fath o gysyniadol.
Mae'n dal i fod yn gorfforol yno, yn amlwg, ond mae'n mwyach eich hawl i ddefnyddio.
Mae hyn yn amlwg yn broblem os ydych am i ysgrifennu swyddogaethau mewn bywyd
sydd mewn gwirionedd yn dyrannu cof ac nid ydynt yn rhoi yn ôl ar unwaith.
Enghraifft o hyn: GetString pwrpas mewn bywyd yw cael unrhyw syniad ymlaen llaw
pa mor fawr o linyn Rydw i'n mynd i deipio ar y bysellfwrdd,
ond mae'n rhaid i fod yn gallu dyrannu cof i ddal David neu helo
neu draethawd cyfan y gallai'r defnyddiwr wedi ei deipio i mewn
Felly GetString wedi bod yn defnyddio malloc.
Malloc bod rhaid felly ei defnyddio nid y pentwr;
yn hytrach mae'n defnyddio peth hyn a elwir y domen.
Does dim byd gwahanol am y cof. Dyw hi ddim yn gyflymach neu'n arafach neu unrhyw beth fel 'na.
Mae'n yn gorfforol yn unig mewn lleoliad gwahanol.
>> Ond y rheol yw bod y cof sydd wedi eu dyrannu ar y domen
fydd byth yn cael eu cymryd oddi arnoch chi nes i chi alw - gymryd dyfalu - rhad ac am ddim.
Ar y llaw arall, mae unrhyw cof byddwch yn gofyn amdano ar y pentwr at jyst yn datgan amrywiaeth
neu ddatgan unrhyw newidyn fel yr ydym wedi bod yn ei wneud am wythnosau,
bod yn ddiofyn yn dod i ben i fyny ar y pentwr.
A bod yn gweithio iawn 90% o'r amser, ond ar yr achlysuron hynny prin
lle rydych yn dymuno dyrannu cof ac yn ei gadw o gwmpas,
Yna, bydd angen i chi ddefnyddio swyddogaeth fel malloc.
Neu, rydym wedi defnyddio swyddogaeth fel GetString, sydd yn ei dro yn defnyddio malloc.
Gadewch i ni weld lle y gallai hyn dorri i lawr ac yna cymryd cipolwg ar Binky.
Byddwn yn dod yn ôl at hynny yn y dyfodol.
Dyma raglen syml super bod yn y 2 llinell gyntaf gwneud beth?
Yn Saesneg, beth y 2 llinell gyntaf o god wneud y tu mewn o brif?
[Ymateb y myfyrwyr Anghlywadwy]
Ofalus. Nid yw'n rhoi i mi gyfeiriad x neu y.
[Myfyrwyr] Mae'n rhoi awgrymiadau i ints. >> Da. Rhowch fi 2 awgrymiadau i gyfanrifau.
Mewn geiriau eraill, rhowch fi 2 darnau o gof i sicrhau bod fy tynnu heddiw,
hyd yn oed er fy mod yn dileu nawr, fel sgwariau.
Rhowch fi 2 darnau o cof, un a elwir yn x, un o'r enw y -
yn gynharach wyf yn galw yn eu sa t - a beth yw'r math hwnnw darn o gof?
Mae'n mynd i storio cyfeiriadau.
Mae o * int fath.
>> Felly, bydd y cyfeiriad o int yn y pen draw yn byw yn x,
Bydd y cyfeiriad o int yn y pen draw yn byw yn y,
ond i ddechrau, beth sydd y tu x ac y? Pwy a wyr? Gwerthoedd Garbage.
Mae ganddo ddim i'w wneud â awgrymiadau.
Os nad ydym wedi rhoi rhywbeth yno, pwy a ŵyr beth sydd mewn gwirionedd yno?
Yn awr, x. Beth sy'n digwydd yma? Mae hyn yn legit yn awr oherwydd x yn pwyntydd. Mae'n * int.
Felly mae hynny'n golygu y gallaf ei roi yn y cyfeiriad x rhai darn o gof.
Beth mae malloc dychwelyd? Perffaith, mae'n dychwelyd cyfeiriadau,
y cyfeiriad y beit cyntaf mewn darn cyfan o gof.
Faint o bytes yw hyn yn ymddangos yn dyrannu, er enghraifft, yn y peiriant?
Beth yw maint o int? 4.
Os ydych yn meddwl yn ôl i wythnos 1, nid yw'n super bwysig i bob amser yn cofio,
ond yn yr achos hwn, mae'n ddefnyddiol gwybod, 4 bytes.
Felly, mae hyn yn dyrannu ar y 4 domen bytes
ac mae'n dychwelyd y cyfeiriad yr un cyntaf i mi yn fympwyol.
Nawr, beth yw x yn ei wneud?
A * x = 42 sy'n gwneud beth?
Os ydych ar y pwynt hwn yn y stori gennym x, sy'n edrych fel hyn gyda rhywfaint o werth garbage,
hyn yn awr yn y gyda rhai gwerth garbage, yn awr yn llinell 3 Rwyf wedi neilltuo 4 bytes.
Mae'r darlun hwn yn ei hanfod yn edrych fel hyn.
Neu yn fwy penodol, os yw hyn yn gyfeiriad mympwyol 123, mae hyn yn beth mae ein hanes yn awr yn edrych fel.
* X = 42 awr yn golygu beth? Mae hynny'n golygu mynd i gyfeiriad 123 a rhowch y rhif 42 yno.
Nid oes angen i mi dynnu llinellau hyn oherwydd nad ydym yn gwneud llinynnau.
>> Dylwn i fod wedi ysgrifennu dim ond fel hyn, a dim ond ar gyfer arddangos mwyn, yn
42 fel un math o int cymryd llawer o le, 4 bytes.
Felly, dyna beth sydd wedi digwydd yno, ond mae yna broblem yn awr.
* Y = 13. Beth sy'n mynd i ddigwydd yma?
Y broblem yw * y yn ein byd symlach yn golygu dim ond yn mynd i'r cyfeiriad yn y.
Beth sydd yn y? Mae'n rhywfaint o werth garbage.
Felly, gadewch i ni dybio bod y gwerth yn garbage 5551212, rhywbeth crazy fel 'na.
* Yn golygu y mynd i'r afael 5,551,212.
Dyna hoffi dros yma. Nid yw'n bodoli, er enghraifft.
Felly * y yn cael 13 yn golygu fy mod yn ceisio tynnu 13 yma. Nid yw'n bodoli.
Rwyf wedi rhagori ar y segment y bwrdd du. Beth ydw i'n ei gael?
Bod nam neges segmentu cryptig am fy mod i'n ceisio rhoi er cof
gwerth fel 13 ar lefel lle nad yw'n bodoli.
Efallai y bydd gweddill y rhaglen yn gweithio iawn, ond hyd at y pwynt nad yw'n gwneud hynny.
Felly, gadewch i ni geisio adrodd y stori hon.
Byddwn yn dod yn ôl i'r unwaith rydym wedi trafod hecs.
Gadewch i ni fynd yn ôl at hyn a gorffennaf gyda hyn beth a elwir Binky,
sy'n galw i gof yn athro Stanford eistedd yn y cartref chwarae gyda animeiddio clai,
i ddweud y stori yn union yr un rhaglen.
Dim ond tua 3 munud o hyd. Yma, mae gennym Binky.
[Siaradwr gwrywaidd ar fideo] Hey Binky, deffro. Mae'n amser ar gyfer hwyl pwyntydd.
[Binky] Beth sy'n bod? Dysgu am awgrymiadau? O, anrhegion!
[Siaradwr gwrywaidd] Wel, i ddechrau arni, mae'n debyg ein bod yn mynd i angen awgrymiadau cwpl.
>> [Binky] Iawn. Mae'r côd hwn yn dyrannu 2 awgrymiadau a all bwyntio at gyfanrifau.
[Siaradwr gwrywaidd] Iawn. Wel, rwy'n gweld y 2 awgrymiadau, ond nid ydynt yn ymddangos i fod yn pwyntio i unrhyw beth.
[Binky] Mae hynny'n iawn. I ddechrau, nid yw arwyddion yn cyfeirio at unrhyw beth.
Y pethau y maent yn cyfeirio at yn cael eu galw'n pointees, a gosod i fyny yn gam ar wahân.
[Siaradwr gwrywaidd] O, iawn, iawn. Roeddwn yn gwybod hynny. Mae'r pointees ar wahân.
Er, felly, sut ydych chi'n dyrannu pointee?
[Binky] Iawn. Mae'r cod hwn yn dyrannu pointee cyfanrif newydd, ac mae hyn yn gosod rhan x i bwynt iddo.
[Siaradwr gwrywaidd] Hey, sy'n edrych yn well.
Felly, yn ei gwneud yn gwneud rhywbeth. >> [Binky] Iawn.
'N annhymerus' dereference y x pwyntydd i storio'r rhif 42 yn ei pointee.
Am y tric 'n annhymerus' angen fy ffon hud o dereferencing.
[Siaradwr gwrywaidd] Eich ffon hud dereferencing? Mae hynny'n wych.
[Binky] Dyma beth mae'r cod yn edrych. 'N annhymerus' jyst gosod y nifer a ... [Popping cadarn]
[Siaradwr gwrywaidd] Hey edrych, mae y mae'n mynd.
Felly gwneud dereference ar x yn dilyn y saeth i gael mynediad at ei pointee,
yn yr achos hwn i storio 42 yn y fan honno.
Hey, ceisiwch ei ddefnyddio i storio rhif 13 drwy pwyntydd eraill, y.
[Binky] Iawn. 'N annhymerus' jyst yn mynd dros yma i y a chael y rhif 13 yn sefydlu
ac yna cymryd y ffon o dereferencing a dim ond ... [Sain suo] Whoa!
[Siaradwr gwrywaidd] O hey, nad oedd yn gweithio.
>> Dweud, Binky, nid wyf yn credu y dereferencing yn syniad da
oherwydd sefydlu'r pointee yn gam ar wahân
ac nid wyf yn credu ein bod byth yn gwneud hynny.
[Binky] Hmm, pwynt da.
[Siaradwr gwrywaidd] Yeah. Rydym yn dyrannu'r y pwyntydd, ond ni fyddwn byth yn ei osod i dynnu sylw at pointee.
[Binky] Hmm, graff iawn.
[Siaradwr gwrywaidd] Hey, rydych yn edrych yn dda yno, Binky.
Allwch chi drefnu pethau fel bod pwyntiau y pointee i'r un x? >> [Binky] Cadarn.
Byddaf yn defnyddio fy ffon hud o aseiniad pwyntydd.
[Siaradwr gwrywaidd] yw hynny'n mynd i fod yn broblem fel o'r blaen?
[Binky] Na, nid yw hyn yn cyffwrdd y pointees.
'I jyst yn newid un pwyntydd i bwyntio at yr un peth ag un arall. [Popping cadarn]
[Siaradwr gwrywaidd] O, rwy'n gweld. Nawr pwyntiau y at yr un lle ag x.
Felly aros. Nawr y yn sefydlog. Mae ganddo pointee.
Felly, gallwch roi cynnig ar y ffon o dereferencing eto i anfon pobl dros 13.
[Binky] Uh, iawn. Yma yn mynd. [Popping cadarn]
[Siaradwr gwrywaidd] Hey, edrych ar hynny. Nawr dereferencing gwaith ar y.
Ac oherwydd bod y awgrymiadau yn cael eu rhannu bod un pointee, maent yn gweld y 13.
[Binky] Yeah, rhannu. Beth bynnag.
>> Felly, rydym yn mynd i newid lleoedd nawr?
[Siaradwr gwrywaidd] O edrych, rydym yn allan o amser. >> [Binky] Ond -
[Siaradwr gwrywaidd] Ond cofiwch y 3 rheolau pwyntydd.
Rhif 1, y strwythur sylfaenol yw bod gennych pwyntydd ac mae'n dangos drosodd i pointee.
Ond mae'r pwyntydd a pointee ar wahân, ac mae'r camgymeriad cyffredin yw i sefydlu pwyntydd
ond i anghofio i roi cynnig pointee.
Rhif 2, pwyntydd dereferencing yn dechrau ar y pwyntydd ac yn dilyn ei saeth
i gael mynediad at ei pointee.
Fel yr ydym i gyd yn gwybod, mae hyn ond yn gweithio os oes pointee,
pa fath o mynd yn ôl i rheol rhif 1.
Rhif 3, aseiniad pwyntydd yn cymryd un pwyntydd ac yn newid ei
i bwyntio at y pointee un arall pwyntydd.
Felly, ar ôl yr aseiniad, bydd y 2 awgrymiadau pwyntio at y pointee un.
Weithiau gelwir yn rhannu.
>> A dyna i gyd yna iddo mewn gwirionedd. Bye-bye awr.
Mae hyn yn Binky. Mae hyn yn CS50. Gwelwn ni chi wythnos nesaf. [Cymeradwyaeth]
>> [CS50.TV]