[Powered by Google Translate] [Roinn 4 - Níos Compordach]
[Rob Bowden - Ollscoil Harvard]
Is é [seo CS50. - CS50.TV]
Tá amárach tráth na gceist, i gcás nach raibh tú guys fhios sin.
Tá sé go bunúsach ar gach rud d'fhéadfaí tú ag feiceáil sa rang nó ar chóir feicthe sa rang.
Go leideanna san áireamh, cé go bhfuil siad ar ábhar an-le déanaí.
Ba chóir duit ar a laghad tuiscint a fháil ar leibhéil arda acu.
Rud ar bith a bhí imithe go os a chionn sa rang ba chóir duit a thuiscint ar an tráth na gceist.
Mar sin, má tá ceisteanna agat orthu, is féidir leat iad a iarraidh anois.
Ach tá sé seo dul chun bheith ina seisiún an-mac léinn-threoraithe áit a bhfuil tú guys ceisteanna a chur,
sin tá súil againn do dhaoine ceisteanna a bheith acu.
An bhfuil aon duine ceisteanna agat?
Tá. >> [Mac léinn] An féidir leat dul thar leideanna arís?
Feicfidh mé dul thar leideanna.
Gach ceann de do chuid athróg beo gá i gcuimhne,
ach de ghnáth ní gá duit a bheith buartha faoi sin agus a rá leat ach x + 2 agus y + 3
agus beidh an tiomsaitheoir figiúr amach i gcás ina bhfuil na nithe beo ar do shon.
Nuair a bhíonn tú ag déileáil le leideanna, anois tá tú ag baint úsáide as go sainráite na seoltaí cuimhne.
Mar sin, beidh athróg aonair ach amháin beo riamh ag seoladh amháin ag aon am ar leith.
Más mian linn a dhearbhú pointeoir, tá cad é an cineál ag dul chun breathnú cosúil le?
>> Ba mhaith liom a dhearbhú p pointeoir. Cad a dhéanann an cineál cuma mhaith?
[Mac léinn] slánuimhir * p. >> Yeah. Mar sin, o * p.
Agus conas is féidir liom a dhéanamh pointe a x? >> [Mac léinn] COMHARTHA AGUIS.
[Bowden] Dá bhrí sin tá COMHARTHA AGUIS a dtugtar literally an seoladh an oibreora.
Mar sin, nuair a rá liom & x tá sé ag fáil an seoladh chuimhne ar an x ​​athraitheach.
Mar sin, anois tá mé an p pointeoir, agus áit ar bith i mo cód féidir liom a úsáid * p
nó d'fhéadfadh liom a úsáid x agus beidh sé an rud ceannann céanna.
(* P). Cad é seo a dhéanamh? Cad a dhéanann a réalta chiallaíonn?
[Mac léinn] Ciallaíonn sé luach ag an bpointe sin. >> Yeah.
Mar sin, má táimid ar sé, is féidir é a bheith an-úsáideach a tharraingt amach na léaráidí
nuair is bosca beag de chuimhne le haghaidh x, a tharlaíonn go bhfuil an luach 4,
ansin ní mór dúinn bosca beag de chuimhne do p,
agus mar sin de na pointí p x, mar sin againn a tharraingt saighead ó p go dtí x.
Mar sin, nuair a deirimid * p táimid ag rá dul go dtí an bosca go bhfuil p.
Star Is é a leanúint ar an arrow agus ansin a dhéanamh is cuma cad ba mhaith leat leis an bosca ceart ann.
Sin, is féidir liom a rá * p = 7, agus go mbeidh dul go dtí an bosca go bhfuil x agus athrú go dtí 7.
Nó d'fhéadfadh liom a rá slánuimhir z = * p * 2; Sin mearbhall mar tá sé réalta réalta,.
Tá an réalta amháin dereferencing p, tá an réalta eile a iolrú faoi 2.
Fógra raibh mé in ann a bheith díreach chomh maith in áit an p * le x.
Is féidir leat iad a úsáid ar an mbealach céanna.
Agus ansin is féidir ina dhiaidh sin ar dom phointe p a rud nua go hiomlán.
Féidir liom a rá ach p = &z;
Mar sin, p anois aon phointí níos faide x = pointí sé le z.
Agus aon uair is féidir liom * p tá sé mar an gcéanna a dhéanamh z.
Mar sin, is é an rud úsáideach faoi seo nuair a thosaíonn muid ag dul i bhfeidhmeanna.
>> Tá sé de chineál ar useless a dhearbhú pointeoir a dhíríonn ar rud éigin
agus ansin tá tú ag dereferencing díreach tar éis é
nuair a d'fhéadfá a úsáid ar an athróg bunaidh chun tús a chur leis.
Ach nuair a thagann tú i bhfeidhmeanna - mar sin a ligean le rá ní mór dúinn roinnt feidhm, slánuimhir foo,
a thógann pointeoir agus díreach a dhéanann * p = 6;
Cosúil chonaic muid roimh le babhtála, ní féidir leat a dhéanamh ar babhtála éifeachtach agus feidhm ar leith
ag díreach slánuimhreacha a rith toisc go bhfuil gach rud i C rith i gcónaí de réir luacha.
Fiú nuair a bhíonn tú leideanna a rith bhfuil tú ag rith ag luach.
Tharlaíonn sé ach ionas go mbeidh na luachanna seoltaí cuimhne.
Mar sin, nuair a rá liom foo (p); Tá mé ag dul thar an pointeoir ar an fheidhm foo
agus ansin tá foo ag déanamh * p = 6;
Mar sin, taobh istigh na feidhme sin, is é * p fós cothrom le x,
ach ní féidir liom a úsáid x taobh istigh na feidhme sin toisc nach bhfuil sé scoped laistigh den fheidhm.
Mar sin, tá * p = 6 an t-aon bhealach is féidir liom rochtain a fháil ar athróg áitiúil ó eile a chomhlíonadh.
Nó, go maith, go bhfuil leideanna ar an bhealach is féidir liom rochtain a fháil ar athróg áitiúil ó eile a chomhlíonadh.
[Mac léinn] rá Let s a raibh tú a thabhairt ar ais pointeoir. Conas go díreach a dhéanann tú sin a dhéanamh?
[Bowden] Fill ar ais ar pointeoir mar atá i rud éigin cosúil le slánuimhir y = 3; ais & y? >> [Mac léinn] Yeah.
[Bowden] Maith go leor. Ní ba chóir duit é seo a dhéanamh. Tá sé seo dona.
I mo thuairimse, chonaic mé sna sleamhnáin léacht a thosaigh tú ag féachaint ar an léaráid seo go hiomlán de chuimhne
i gcás suas anseo tá tú seoladh cuimhne 0
agus síos anseo tá tú cuimhne seoladh 4 gigs nó 2 a ghabhann leis an 32.
Mar sin, ansin tá tú bhí roinnt rudaí agus roinnt rudaí agus ansin tú do Stack
agus tá tú do carn, a thosaigh tú díreach ag foghlaim faoi, ag fás aníos.
[Mac léinn] Nach bhfuil an gcarn os cionn an chairn?
>> Yeah. Is é an gcarn ar bharr nach bhfuil sé? >> [Mac léinn] Bhuel, chuir sé 0 ar an mbarr.
[Mac léinn] Oh, chuir sé 0 ar an mbarr. >> [Mac léinn] Oh, maith go leor.
Séanadh: Áit ar bith a bhfuil CS50 bhfuil tú ag dul chun é a fheiceáil ar an mbealach seo. >> [Mac léinn] Maith go leor.
Tá sé sin go díreach nuair a bhíonn tú ag féachaint ar an chéad stacks,
Is maith nuair a cheapann tú de chairn a cheapann tú de rudaí cruachta ar bharr a chéile.
Mar sin, claonadh a bhíonn againn le smeach seo timpeall ionas go bhfuil an chairn ag fás suas mar a bheadh ​​de ghnáth Stack
in ionad an chairn crochta síos. >> [Mac léinn] Ná heaps ag fás go teicniúil suas freisin, cé?
Braitheann sé ar cad is ciall agat ag fás suas.
Tá an chairn agus carn ag fás i gcónaí i dtreoracha os coinne.
Tá chairn ag fás suas i gcónaí sa chiall go tá sé ag fás suas
i dtreo go bhfuil seoltaí cuimhne níos airde, agus an gcarn ag fás síos
sa mhéid is go tá sé ag fás i dtreo seoltaí cuimhne níos ísle.
Mar sin, tá an barr 0 agus is é an bun seoltaí cuimhne ard.
Tá siad araon ag fás, ach i dtreonna gcoinne.
[Mac léinn] i gceist agam go díreach mar a dúirt tú tú a chur ar Stack ar bun
mar is cosúil sé níos iomasach toisc chun an chairn chun tús a chur ag barr an gcarn,
gcarn Tá ar bharr féin freisin, mar sin that's - >> Yeah.
Cheapann tú freisin an gcarn mar atá ag fás suas agus níos mó, ach tá an chairn níos mó ná sin.
Mar sin, tá an chairn an ceann go bhfuil muid de chineál ar iarraidh a thaispeáint ag fás aníos.
Ach tá i ngach áit a fhéachann tú ar shlí eile ag dul a thaispeáint seoladh 0 ag barr
agus an seoladh chuimhne is airde ag an mbun, mar sin tá sé seo do thuairim is gnách ar an chuimhne.
>> An bhfuil ceist?
[Mac léinn] An féidir leat insint dúinn níos mó faoi an gcarn?
Yeah. Beidh mé a fháil chun go sa dara.
Is é an chéad, dul ar ais ar cén fáth ar ais agus y droch-rud,
ar an chruach a bhfuil tú a bunch de fhrámaí chairn a léiríonn gach ceann de na feidhmeanna
atá ar a dtugtar.
Mar sin, neamhaird a dhéanamh rudaí roimhe seo, tá an barr do chairn ag dul i gcónaí a bheith ar an phríomhfheidhm
ós rud é go bhfuil an fheidhm sin den chéad uair tá bheith ar a dtugtar.
Agus ansin nuair a ghlaonn tú eile fheidhm, is é an chairn ag dul chun fás síos.
Mar sin, má ghlaonn mé roinnt fheidhm, foo, agus faigheann sé a fráma Stack féin,
is féidir é a glaoch ar roinnt fheidhm, barra; faigheann sé a fráma cruaiche féin.
Agus d'fhéadfadh barra a bheith recursive agus d'fhéadfadh glaoch féin é,
agus mar sin go bhfuil an dara glao chun barra ag dul a fháil a fráma cruaiche féin.
Agus tá sin cad a théann i na frámaí Stack gach ceann de na hathróga áitiúil
agus gach ceann de na hargóintí fheidhm sin -
Aon rudaí a bhfuil go háitiúil scoped chun an fheidhm seo dul i na frámaí chairn.
Mar sin, Ciallaíonn sé sin nuair a dúirt mé go bhfuil rud éigin cosúil le barra a chomhlíonadh,
Tá mé ag dul díreach tar éis a dhearbhú slánuimhir agus ansin pointeoir ar ais go dtí an slánuimhir.
Mar sin, ní i gcás y chónaí?
[Mac léinn] y ina chónaí i bar. >> [Bowden] Yeah.
Áit éigin i an cearnach beag de chuimhne cearnóg littler go bhfuil y ann.
Nuair a bheidh mé ar ais agus y, tá mé ag filleadh ar pointeoir leis an bloc beag de chuimhne.
Ach ansin nuair a tuairisceáin feidhm faigheann, a fráma cruaiche popped as an chairn.
Agus sin an fáth a bhfuil sé ar a dtugtar chairn.
Tá sé cosúil leis an struchtúr sonraí Stack, má tá a fhios agat cad é sin.
Nó fiú cosúil le Stack na tráidirí i gcónaí ar an sampla,
príomh-dul chun dul ar an ngrinneall, tá ansin an chéad fheidhm a ghlaonn tú ag dul chun dul ar a bharr sin,
agus ní féidir leat a fháil ar ais go dtí príomh dtí go mbeidh tú ar ais ó na feidhmeanna go léir a bheith ar a dtugtar
atá curtha ar a bharr.
>> [Mac léinn] Mar sin má rinne tú ar ais an y &, is é sin luach faoi réir a athrú gan fógra.
Sea, it's - >> [mac léinn] fhéadfadh sé a bheith overwritten. >> Yeah.
Tá sé go hiomlán - Má tá tú iarracht agus -
Bheadh ​​sé seo a bheith chomh maith bar * slánuimhir mar tá a sheoladh ar ais le pointeoir,
mar sin tá a chineál ar ais * slánuimhir.
Má tá tú iarracht úsáid a bhaint as an luach ar ais an fheidhm seo, tá sé iompar undefined
toisc go pointí sin pointeoir chun cuimhne dona. >> [Mac léinn] Maith go leor.
Mar sin, cad más rud é, mar shampla, a dhearbhú tú slánuimhir * y = malloc (deachúlach (o))?
Sin níos fearr. Tá.
[Mac léinn] Labhraíomar faoi conas nuair a rudaí a tharraingt chun ár n-athchúrsáil bruscair
nach bhfuil siad ag scriosadh i ndáiríre, táimid chailleann ach a gcuid leideanna.
Mar sin, sa chás seo is féidir linn a scriosadh i ndáiríre an luach nó go bhfuil sé fós ann i gcuimhne?
Don chuid is mó, tá sé ag dul a bheith fós ann.
Ach rá a ligean ar táimid ag tarlú chun glaoch ar roinnt feidhm eile, Baz.
Baz ag dul a fháil ar a fráma cruaiche féin ar anseo.
Tá sé seo ag dul a bheith fhorscríobh go léir an stuif seo,
agus ansin má tá tú iarracht ina dhiaidh sin agus bain úsáid as an pointeoir a fuair tú os comhair,
nach bhfuil sé ag dul a bheith ar an luach céanna.
Tá sé seo ag dul a bhfuil athrú díreach toisc go iarr tú ar an Baz fheidhm.
[Mac léinn] Ach ní raibh againn go mbeadh, ní mór dúinn a fháil fós 3?
[Bowden] I ngach dóchúlacht, a bheadh ​​agat.
Ach ní féidir leat a bheith ag brath ar sin. C deir díreach iompar gan sainmhíniú.
>> [Mac léinn] Oh, a dhéanann sé. Maith go leor.
Mar sin, nuair is mian leat a thabhairt ar ais pointeoir, is é seo nuair a thagann malloc in úsáid.
Tá mé ag scríobh i ndáiríre ar ais go díreach malloc (3 * Is uimhir (o)).
Beidh muid ag dul thar malloc níos mó i an dara, ach tá an smaoineamh malloc gach ceann de do athróg áitiúil
i gcónaí dul ar an chruach.
Théann aon rud a tá malloced ar an gcarn, agus beidh sé go deo agus i gcónaí a bheith ar an gcarn
dtí go mbeidh tú saor in aisce go sainráite é.
Mar sin, ciallaíonn sé seo go nuair malloc tú rud éigin, tá sé ag dul chun maireachtáil tar éis an tuairisceáin fheidhm.
[Mac léinn] An mbeidh sé tar éis maireachtáil stopann an clár ag rith? >> Uimh
Maith go leor, mar sin tá sé ag dul a bheith ann go dtí go bhfuil an clár léir ar an mbealach a rinneadh ag rith. >> Tá.
Is féidir linn dul thar sonraí faoi cad a tharlaíonn nuair a stopann an clár ag rith.
D'fhéadfadh gá duit a chur i gcuimhne dom, ach go bhfuil an rud ar leith go hiomlán.
[Mac léinn] Mar sin Cruthaíonn malloc a pointeoir? >> Yeah.
Malloc - >> [mac léinn] I mo thuairimse, malloc ainmníonn bloc cuimhne gur féidir le pointeoir a úsáid.
[Bowden] Ba mhaith liom go léaráid arís. >> [Mac léinn] Mar sin, oibríonn an fheidhm seo, cé go?
[Mac léinn] Yeah, malloc ainmníonn bloc cuimhne gur féidir leat é a úsáid,
agus ansin filleann sé ar an seoladh an bloc chéad chuimhne sin.
>> [Bowden] Yeah. Mar sin, nuair malloc tú, agus tú ag grabbing roinnt bloc cuimhne
go bhfuil faoi láthair i gcarn.
Má tá an gcarn ró-bheag, tá ansin an gcarn ag dul díreach ag fás, agus fásann sé sa treo seo.
Mar sin a ligean ar rá go bhfuil an gcarn ró-bheag.
Ansin, tá sé faoi ag fás le beagán agus a pointeoir filleadh ar an bloc gur fhás díreach.
Nuair a bheidh tú rudaí saor in aisce, agus tú ag déanamh seomra níos mó ar an gcarn,
Is féidir mar sin ansin glaoch níos déanaí malloc athúsáid go bhfuil cuimhne go raibh freed agat roimhe.
Is é an rud is tábhachtaí faoi malloc agus saor in aisce go dtugann sé tú smacht iomlán
thar shaolré na bloic cuimhne.
Tá athróga domhanda i gcónaí beo.
Tá athróg Áitiúil beo laistigh dá raon feidhme.
Chomh luath agus a théann tú anuas guailleán curly, is iad na hathróga áitiúla marbh.
Tá cuimhne Malloced beo nuair is mian leat é a bheith beo
agus ansin a scaoileadh nuair a dhéanann tú insint é a scaoileadh.
Glacfar iad i ndáiríre an 3 ach cineálacha de chuimhne, i ndáiríre.
Níl bainistíocht cuimhne uathoibríoch, a bhfuil an chairn.
Rudaí a tharlóidh ar do shon go huathoibríoch.
Nuair a rá leat x slánuimhir, tá cuimhne leithdháileadh le haghaidh x slánuimhir.
Nuair a théann x amach raon feidhme, tá cuimhne athghinte le haghaidh x.
Ansin, níl bainistíochta cuimhne dinimiciúil, a bhfuil cad é malloc,
a bhfuil nuair a tá tú rialú.
Tá tú cinneadh a dhéanamh dinimiciúil nuair ba chóir cuimhne nár agus ba chóir a leithdháileadh.
Agus ansin níl statach, rud a chiallaíonn go díreach saol sé go deo,
a bhfuil cad iad na hathróga domhanda.
Tá siad díreach i gcónaí i gcuimhne.
>> Ceisteanna?
[Mac léinn] An féidir leat a shainiú bloc díreach trí úsáid a bhaint braces gcuach
ach nach bhfuil a bheith acu? más rud é ráiteas nó ráiteas fad nó aon rud mar sin
Is féidir leat a shainiú bloc mar atá i bhfeidhm, ach go bhfuil braces gcuach freisin.
[Mac léinn] Mar sin, ní féidir leat a bheith díreach cosúil le péire randamach de na braces gcuach i do chód
go bhfuil athróg áitiúil? >> Is ea, is féidir leat.
Taobh istigh de barra slánuimhir féidir linn a bheith {slánuimhir y = 3;}.
Sin ceaptha a bheith ar dheis anseo.
Ach sainmhíniú go hiomlán ar an raon feidhme slánuimhir y.
Tar éis sin is guailleán curly an dara, ní féidir y a úsáid níos mó.
Tá tú beagnach riamh é sin a dhéanamh, cé.
Dul ar ais go dtí cad a tharlaíonn nuair a thagann deireadh le clár,
níl de chineál a bheidh míthuiscint / leath a thabhairt dúinn d'fhonn a dhéanamh ach rudaí níos éasca.
Insint duit go nuair a leithdháileadh tú cuimhne
bhfuil tú ag leithdháileadh roinnt smután de RAM don athróg.
Ach nach bhfuil tú i ndáiríre touching díreach RAM riamh i do chlár.
Má cheapann tú ar sé, conas a tharraing mé -
Agus i ndáiríre, má théann tú trí i GDB mbainfidh tú a fheiceáil ar an rud céanna.
Beag beann ar cé mhéad uair a ritheann tú do chlár nó cén clár a bhíonn tú ag rith,
Tá an chairn ag dul i gcónaí chun tús a chur -
bhfuil tú ag dul i gcónaí a fheiceáil athróg thart ar rud éigin oxbffff seoladh.
Tá sé de ghnáth áit éigin sa réigiún sin.
Ach conas is féidir a bheith 2 chlár, b'fhéidir, leideanna i gcuimhne céanna?
[Mac léinn] Níl roinnt ainmniú treallach ina bhfuil oxbfff ceaptha a bheith ar an RAM
is féidir a bheith i ndáiríre in áiteanna éagsúla ag brath ar nuair a bhí ar a dtugtar an fheidhm.
Yeah. Is é an téarma cuimhne fhíorúil.
Is é an smaoineamh go bhfuil gach próiseas amháin, gach clár amháin go bhfuil ag rith ar do ríomhaire
Tá a chuid féin - a ligean ar glacadh leis 32 giotán - spás seoladh go hiomlán neamhspleách.
Is é seo an spás seoladh.
Tá sé dá chuid féin go hiomlán neamhspleách 4 ghigibheart a úsáid.
>> Mar sin, má ritheann tú 2 chlár ag an am céanna, feiceann an clár seo 4 ghigibheart dó féin,
Feiceann an clár 4 ghigibheart dó féin,
agus tá sé dodhéanta ar an gclár seo téigh i pointeoir
agus deireadh suas le cuimhne ón gclár seo.
Agus is é an méid atá cuimhne fhíorúil mapáil ó spás seoladh próisis
chun rudaí a iarbhír ar RAM.
Mar sin tá sé suas le do chóras oibriúcháin a fhios go bhfuil,
hug, nuair a Guy seo oxbfff pointeoir dereferences, ciallaíonn sin i ndáiríre
gur mian sé RAM mbeart 1000,
ach más rud é seo oxbfff clár dereferences, is mian sé i ndáiríre RAM beart 10000.
Is féidir leo a bheith treallach i bhfad óna chéile.
Tá sé seo fiú fíor na rudaí taobh istigh de spás seoladh amháin próisis.
Mar sin, cosúil le Feiceann sé gach 4 ghigibheart dó féin, ach ligean le rá -
[Mac léinn] An bhfuil gach próiseas amháin -
Ligean le rá agat ar ríomhaire le amháin 4 ghigibheart de RAM.
An bhfuil gach próiseas amháin a fheiceáil ar fad 4 ghigibheart? >> Tá.
Ach tá an 4 ghigibheart mheasann sé a bheidh.
Tá sé ach cuí tá sé ar fad an chuimhne toisc nach bhfuil sé a fhios bhfuil aon phróiseas eile.
Beidh sé úsáid ach amháin cuimhne an oiread agus is mór é i ndáiríre.
Níl an córas oibriúcháin ag dul RAM a thabhairt don phróiseas
más rud é nach é a úsáid aon chuimhne sa réigiún ar fad.
Níl sé ag dul a thabhairt dó gcuimhne don réigiún.
Ach tá an smaoineamh go - Tá mé ag iarraidh smaoineamh ar - Ní féidir liom smaoineamh ar analaí.
Analogies deacair iad.
Ceann de na saincheisteanna de chuimhne fíorúil nó ar cheann de na rudaí sé ag réiteach
Is é gur chóir go mbeadh próisis a bheith go hiomlán aineolach ar a chéile.
Agus mar sin is féidir leat scríobh aon chlár go dereferences ach aon pointeoir,
díreach cosúil scríobh le clár a deir * (ox1234),
agus go bhfuil seoladh cuimhne dereferencing 1234.
>> Ach tá sé suas go dtí an córas oibriúcháin a aistriú ansin cad 1234 acmhainne.
Mar sin, a tharlaíonn má 1234 a bheith ina ainm na cuimhne bailí ar feadh an phróisis seo,
mar tá sé ar an chruach nó rud éigin, ansin beidh sé seo ar ais luach an seoladh cuimhne
chomh fada agus is eol don phróiseas.
Ach nach bhfuil má tá 1234 le seoladh bailí, mar a tharlaíonn sé i dtír
i roinnt píosa beag de chuimhne anseo go bhfuil níos faide ná an chairn agus thar an gcarn
agus nach bhfuil tú ag úsáid i ndáiríre go bhfuil, ansin go bhfuil nuair a fhaigheann tú rudaí cosúil le segfaults
toisc go bhfuil tú touching gcuimhne nach ba chóir duit a bheith touching.
Tá sé seo fíor freisin -
Tá córas 32-giotán, ciallaíonn 32 giotán a bhfuil tú 32 giotán a shainmhíniú seoladh cuimhne.
Tá sé cén fáth a bhfuil leideanna 8 bytes mar go bhfuil 32 giotán 8 bytes - nó 4 bytes.
Tá leideanna 4 bytes.
Mar sin, nuair a fheiceann tú pointeoir mhaith oxbfffff, is é sin -
Laistigh de aon chlár áirithe is féidir leat a thógáil ach aon pointeoir treallach,
áit ar bith ó ox0 go damh 8 f's - ffffffff.
[Mac léinn] An raibh tú ag rá nach bhfuil siad 4 bytes? >> Yeah.
[Mac léinn] Ansin, beidh gach beart ag - >> [Bowden] heicsidheachúlach.
Heicsidheachúlach - 5, 6, 7, 8. Mar sin, leideanna bhfuil tú ag dul a fheiceáil i gcónaí i heicsidheachúlach.
Tá sé díreach conas leideanna a rangú.
Tá gach 2 dhigit de heicsidheachúlach 1 bheart.
Mar sin, tá go bhfuil dul chun bheith 8 n-uimhir heicsidheachúlach ar feadh 4 bytes.
Dá bhrí sin tá gach pointeoir amháin ar chóras 32-giotán ag dul a bheith 4 bytes,
rud a chiallaíonn go i do phróiseas is féidir leat a thógáil ar bith 4 treallach bytes
agus a dhéanamh pointeoir as é,
rud a chiallaíonn go chomh fada agus is go bhfuil sé ar an eolas, is féidir é a dhíriú 2 ar fad ar an 32 bytes na cuimhne.
Cé nach bhfuil i ndáiríre rochtain ar,
fiú má tá do ríomhaire ach 512 meigibheart, is cuí léi tá sé go bhfuil cuimhne i bhfad.
Agus is é an córas oibriúcháin cliste go leor go mbeidh sé leithdháileadh ach an méid is gá duit i ndáiríre.
Ní chuireann sé dul díreach, ó, próiseas nua: 4 gigs.
>> Yeah. >> [Mac léinn] Cad a dhéanann an damh chiallaíonn? Cén fáth a bhfuil tú ag scríobh é?
Tá sé díreach an tsiombail le haghaidh heicsidheachúlach.
Nuair a fheiceann tú tús roinnt le damh, is iad na rudaí i ndiaidh a heicsidheachúlach.
[Mac léinn] raibh tú ag míniú faoi cad a tharlaíonn nuair a chríochnaíonn clár. >> Tá.
Cad a tharlaíonn nuair a chríochnaíonn clár an córas oibriúcháin
ach erases na mapálacha go bhfuil sé do na seoltaí, agus go bhfuil sé.
Is féidir leis an córas oibriúcháin anois a thabhairt ach go bhfuil cuimhne go clár eile a úsáid.
[Mac léinn] Maith go leor.
Mar sin, nuair a leithdháileadh tú rud éigin ar an gcarn nó na n-athróg chruach nó domhanda nó rud ar bith,
siad go léir thiachóga díreach chomh luath agus deireadh leis an gclár
toisc go bhfuil an córas oibriúcháin anois saor in aisce leis an chuimhne a thabhairt d'aon phróiseas eile.
[Mac léinn] Cé go bhfuil dócha go fóill luachanna scríofa i? >> Yeah.
Is iad na luachanna is dócha fós ann.
Tá sé ach tá sé ag dul a bheith deacair a fháil orthu.
Tá sé i bhfad níos deacra a fháil orthu ná mar atá sé a fháil ar comhad a scriosadh
toisc go suíonn an cineál comhad a scriosadh de ann ar feadh i bhfad agus is é an tiomántán crua a lán níos mó.
Mar sin, dul ar é a forscríobh áiteanna éagsúla de chuimhne
roimh a tharlaíonn sé a scríobh ar an smután de chuimhne go bhfuil comhad a úsáidtear a bheith ag.
Ach chuimhne is mó, RAM, timthriall tú trí a lán níos tapúla,
mar sin tá sé ag dul go han-tapa a bheith overwritten.
Ceisteanna ar seo nó aon rud eile?
[Mac léinn] Tá mé ceisteanna faoi ábhar éagsúla. >> Maith go leor.
An bhfuil aon duine ceist ar an?
>> Maith go leor. Ábhar éagsúla. >> [Mac léinn] Maith go leor.
Bhí mé ag dul trí roinnt de na tástálacha chleachtas,
agus i gceann acu ag caint sé ar tí an deachúlach
agus an luach a tuairisceáin sé nó cineálacha athraitheach éagsúla. >> Tá.
Agus dúirt sé go bhfuil an dá o agus fada araon, ar ais 4, agus mar sin tá siad an dá 4 bytes fada.
An bhfuil aon difríocht idir o agus le fada, nó go bhfuil sé an rud céanna?
Tá, tá difríocht.
An caighdeán C -
Tá mé ag dul is dócha a praiseach suas.
An caighdeán C díreach cosúil le cad é C, an doiciméadú oifigiúil C.
Is é seo a deir sé.
Mar sin, deir an caighdeán C ach go mbeidh Char go deo agus i gcónaí a bheith 1 bheart.
Gach rud ina dhiaidh sin - gearr i gcónaí díreach mar a bheith níos mó ná nó cothrom le Char.
D'fhéadfadh sé seo a bheith docht níos mó ná, ach ní dearfach.
Tá slánuimhir a shainmhínítear díreach mar a bheith níos mó ná nó cothrom le gairid.
Agus is é a fad a shainmhínítear díreach mar a bheith níos mó ná nó cothrom le slánuimhir.
Agus is fada fada níos mó ná nó cothrom le fada.
Mar sin, is é an rud ach an caighdeán C sainmhíniú ar ordú coibhneasta de gach rud.
Is é an méid iarbhír na cuimhne a ghlacadh rudaí ar bun go ginearálta suas go dtí cur i bhfeidhm,
ach tá sé go maith go leor sainmhínithe ag an bpointe seo. >> [Mac léinn] Maith go leor.
Mar sin, tá shorts beagnach i gcónaí ag dul a bheith 2 bytes.
Ints bhfuil beagnach i gcónaí ag dul a bheith 4 bytes.
Longs Long bhfuil beagnach i gcónaí ag dul a bheith 8 bytes.
Agus longs, braitheann sé ar cibé an bhfuil tú ag baint úsáide as 32-giotán nó córas 64-giotán.
Mar sin, tá fada ag dul chun freagairt do chineál córais.
Má tá tú ag baint úsáide as córas 32-giotán cosúil leis an fearas, tá sé ag dul a 4 bytes.
Má tá tú ag baint úsáide as 64-giotán ar nós a lán de ríomhairí le déanaí, tá sé ag dul a bheith 8 bytes.
>> Ints Tá beagnach i gcónaí 4 bytes ag an bpointe seo.
Tá longs Long beagnach i gcónaí 8 bytes.
San am atá caite, a úsáidtear ints a bheith ach 2 bytes.
Ach faoi deara go gcomhlíonann an hiomlán gach ceann de na caidrimh níos mó ná agus cothrom le.
Dá bhrí sin tá fada a cheadaítear breá le bheith ar an méid céanna mar slánuimhir,
agus tá sé ceadaithe chomh maith le bheith ar an méid céanna le fada fada.
Agus a tharlaíonn sé ach ionas go mbeidh go 99.999% de na córais, tá sé ag dul a bheith cothrom le
ceachtar slánuimhir nó le fada fada. Braitheann sé díreach ar giotán 32-nó 64-giotán. >> [Mac léinn] Maith go leor.
I flótaí, conas an pointe deachúil ainmnithe i dtéarmaí giotán?
Cosúil mar dhénártha? >> Yeah.
Ní gá duit a fhios gur le haghaidh CS50.
Ní gá duit a fhoghlaim fiú go 61.
Ní gá duit a fhoghlaim go i ndáiríre in aon chúrsa.
Tá sé ach go mbeidh ionadaíocht.
Mé dearmad ar an cuibhrinn beagán cruinn.
Is é an smaoineamh snámhphointe go leithdháileadh tú ndéanfar líon sonrach de giotán chun ionadaíocht a dhéanamh -
Go bunúsach, tá gach rud i nodaireacht eolaíoch.
Mar sin, leithdháileadh tú ndéanfar líon sonrach de giotán chun ionadaíocht a dhéanamh ar líon féin, cosúil le 1.2345.
Ní féidir liom ionadaíocht a dhéanamh ar roinnt le digití níos mó ná 5.
Ansin leat a leithdháileadh freisin ar roinnt áirithe de na píosaí ionas go bíonn sé a bheith cosúil le
is féidir leat dul ach suas le roinnt áirithe, cosúil le é go bhfuil an easpónant is mó is féidir leat a bheith acu,
agus is féidir leat ach dul síos go dtí easpónant áirithe,
Is maith gur ar an easpónant is lú is féidir leat a bheith.
>> Ní féidir liom cuimhneamh ar na píosaí ar bhealach cruinn a shanntar do gach ceann de na luachanna,
ach tá líon áirithe píosaí atá tiomanta do 1.2345,
eile líon áirithe píosaí atá tiomanta do na easpónant,
agus tá sé ach is féidir go dtabharfaí léiriú ar easpónant de mhéid áirithe.
[Mac léinn] Agus dúbailte? An é sin cosúil le snámh breise fada? >> Yeah.
Tá sé an rud céanna mar snámhphointe ach amháin anois tá tú ag baint úsáide as 8 bytes in ionad 4 bytes.
Anois, beidh tú in ann úsáid a bhaint as 9 dhigit nó 10 dhigit,
agus beidh sé seo a bheith in ann dul suas go dtí 300 in ionad 100. >> [Mac léinn] Maith go leor.
Agus tá floats freisin 4 bytes. >> Tá.
Bhuel, arís, braitheann sé is dócha foriomlán ar chur i bhfeidhm i gcoitinne,
ach tá flótaí 4 bytes, tá doubles 8.
Doubles a dtugtar dúbailte mar go bhfuil siad dhá oiread an méid de na báid.
[Mac léinn] Maith go leor. Agus doubles ann dúbailte? >> Níl.
I mo thuairimse, - >> [mac léinn] Cosúil longs fada? >> Yeah. Ní dóigh liom é. Tá.
[Mac léinn] ar na bliana seo caite tástála bhí ceist mar gheall ar an fheidhm is mó
a bhfuil a bheith mar chuid de do chlár.
An freagra a bhí go nach ndéanann sé a bheith ina chuid de do chlár.
Cén scéal? Sin an méid a chonaic mé.
[Bowden] Dealraíonn sé - >> [mac léinn] Cad scéal?
An bhfuil an fhadhb? >> [Mac léinn] Yeah, is féidir liom a tharraingt cinnte sé suas.
Ní chuireann sé a bheith, go teicniúil, ach go bunúsach tá sé ag dul a bheith.
[Mac léinn] a chonaic mé ar cheann ar na bliana difriúil.
Bhí sé cosúil le Fíor nó Bréagach: A bailí - >> Ó, a c comhad.?
. [Mac léinn] Ní mór aon c comhad a bheith - [araon labhairt ag an am céanna - dothuigthe]
Maith go leor. Mar sin, tá go leith.
>> A. C comhad riachtanais ach a feidhmeanna a bheith iontu.
Is féidir leat a chur le chéile comhad i cód meaisín, dénártha, is cuma cad,
gan é a bheith inrite go fóill.
Ní mór inrite bailí bhfuil feidhm mó.
Is féidir leat scríobh 100 feidhmeanna i 1 comhad ach ní mó
agus le chéile ansin síos go dtí dénártha,
ansin scríobhann tú comhad eile go bhfuil ach is mó ach iarrann sé a bunch de na feidhmeanna
sa chomhad seo dénártha thar anseo.
Agus mar sin nuair a bhíonn tú ag déanamh an inrite, go cad a dhéanann an nascóir
Tá sé le chéile na 2 chomhad dénártha isteach inrite.
Mar sin, nach. C comhad gá go mbeadh feidhm mó ar chor ar bith.
Agus ar bhoinn cód mór go mbainfidh tú a fheiceáil na mílte. Comhaid c agus 1 comhad is mó.
Ceisteanna níos mó?
[Mac léinn] Bhí ceist eile.
Dúirt sé a dhéanamh is tiomsaitheoir. Fíor nó Bréagach?
Agus bhí an freagra bréagach, agus thuig mé cén fáth nach bhfuil sé cosúil le clang.
Ach cad a dhéanann muid glaoch a dhéanamh más rud é nach bhfuil sé?
Déan go bunúsach ach - is féidir liom a fheiceáil go díreach cad iarrann sé é.
Ach ritheann sé ach orduithe.
Déan.
Is féidir liom a tharraingt suas seo. Yeah.
Oh, yeah. Déan dhéanann freisin go.
Deir sé seo is é cuspóir na tréithe déanamh chun a chinneadh go huathoibríoch
nach mór píosaí de chlár mór a recompiled
agus eisiúint na horduithe le recompile leo.
Is féidir leat a dhéanamh a dhéanamh comhaid go bhfuil go hiomlán ollmhór.
Déan bhreathnaíonn ar na stampaí ama de chomhaid agus, mar a dúirt muid roimh,
is féidir leat a chur le chéile comhaid aonair síos, agus nach bhfuil sé go dtí go leat a fháil chun an nascóir
go mbíonn siad a chur le chéile isteach inrite.
Mar sin, má tá tú 10 comhaid éagsúla agus a dhéanann tú athrú ar 1 acu,
ansin cad a dhéanamh ag dul a dhéanamh go díreach recompile go 1 comhad
agus relink ansin gach rud le chéile.
Ach tá sé i bhfad níos dumber ná sin.
Tá sé suas chun tú a shainmhíniú go hiomlán go bhfuil an méid ba chóir é a dhéanamh.
Tá sé de réir réamhshocraithe an cumas seo a aithint stuif stampa ama,
ach is féidir leat scríobh comhad déanamh aon ní a dhéanamh.
Is féidir leat scríobh a dhéanamh comhad ionas gur nuair a scríobhann tú a dhéanamh ach cd ar go ceann eile eolaire.
Bhí mé ag dul frustrated mar gheall ar gach rud a tack mé taobh istigh de mo Fearas
agus ansin mé féachaint ar an PDF ón Mac.
>> Mar sin liom dul go dtí Aimsitheoir agus is féidir liom a dhéanamh Go, Ceangail le Freastalaí,
agus is é an freastalaí ceangal mé le mo fearas, agus ansin mé a oscailt suas an PDF
go bhfaigheann chéile ag LaTeX.
Ach bhí mé ag dul frustrated mar gheall ar gach uair amháin is gá dom a athnuachan an PDF,
Bhí mé chun é a chóipeáil le comhadlann ar leith go bhféadfadh sé teacht ar
agus a bhí ag fáil sé annoying.
Mar sin, ina ionad sin scríobh mé comhad déanamh, a bhfuil tú a chinneadh conas a dhéanann sé rudaí.
Cén chaoi a dhéanann tú i go bhfuil an PDF LaTeX.
Díreach mar aon chomhad eile déanamh - nó buille faoi thuairim mé nach bhfuil feicthe agat na comhaid a déanamh,
ach ní mór dúinn i fearas comhad déanamh domhanda a deir go díreach,
má tá tú ag a thiomsú comhad C, bain úsáid as clang.
Agus mar sin anseo i mo chomhad déanamh a dhéanamh liom a rá liom,
an comhad seo atá tú ag dul go dtí gur mian a chur le chéile leis an PDF LaTeX.
Agus mar sin tá sé LaTeX PDF a tá ag déanamh an tiomsaithe.
Níl Déan thiomsú. Tá sé ag rith go díreach na n-orduithe sa seicheamh atá sonraithe agam.
Mar sin, ritheann sé PDF LaTeX, cóipeanna sé é chuig an eolaire mhaith liom é a chóipeáil,
sé cd chuig an eolaire agus a dhéanann rudaí eile,
ach aitheantas a thabhairt do gach a dhéanann sé nuair a athruithe ar comhad,
agus má athraíonn sé, ansin beidh sé ar siúl an orduithe go bhfuil sé ceaptha a bhainistiú
nuair a athraíonn an comhad. >> [Mac léinn] Maith go leor.
Níl a fhios agam áit a bhfuil na comhaid déanamh domhanda dom a sheiceáil amach.
Ceisteanna eile? Tráth na gceist Rud ar bith ó am atá caite? Aon rud pointeoir?
Tá rudaí subtle le leideanna mar -
Níl mé ag dul a bheith in ann a fháil ar cheist tráth na gceist ar sé -
ach díreach cosúil le an saghas rud.
Déan cinnte go dtuigeann tú go bhfuil nuair a rá liom o * x * y -
Ní hé seo go díreach rud ar bith anseo, buille faoi thuairim mé.
Ach cosúil le * x * y, iad siúd atá 2 athróg atá ar an chairn.
Nuair a rá liom x = malloc (deachúlach (o)), tá x fós athróg ar an chruach,
Is malloc roinnt bloc os a chionn sa gcarn, agus táimid ag a bhfuil x pointe ar an gcarn.
>> Mar sin, rud éigin ar na pointí Stack ar an gcarn.
Aon uair a malloc tú rud ar bith, agus tú ag a stóráil gan dabht, tá sé taobh istigh de pointeoir.
Mar sin, is é sin pointeoir ar an chruach, tá an bloc malloced ar an gcarn.
A lán daoine a fháil ar dhaoine eatarthu agus a rá o * x = malloc = x ar an gcarn.
Tá Uimh Cad iad na pointí x ar an gcarn.
x féin ar an chairn, mura rud é ar chúis ar bith bhfuil tú x a bheith ina athróg domhanda,
agus sa chás sin a tharlaíonn sé a bheith i réigiún eile de chuimhne.
Mar sin, súil a choinneáil, is iad na léaráidí bhosca agus arrow go leor coitianta don cheistiúchán.
Nó más rud é nach bhfuil sé ar tráth na gceist 0, beidh sé ar tráth na gceist 1.
Ba chóir duit a fhios ag gach ceann de na, na céimeanna a thiomsú
ós rud é go raibh tú ceisteanna a fhreagairt ar na. Tá.
[Mac léinn] Níorbh fhéidir linn dul thar na céimeanna - >> Cinnte.
Sula céimeanna agus a thiomsú ní mór dúinn preprocessing,
thiomsú, le chéile, agus nascadh.
Preprocessing. Cad a dhéanann a dhéanamh?
Is é an chéim is éasca i - go maith, ní cosúil le -
ní chiallaíonn ba chóir go mbeadh sé soiléir, ach tá sé an chéim is éasca.
D'fhéadfá guys i bhfeidhm é féin. Yeah.
[Mac léinn] Tóg an méid atá agat i do áireamh mar seo agus cóipeanna é agus ansin freisin sainmhíniú.
Breathnaíonn sé le haghaidh rudaí cosúil # áireamh agus # sainiú a dhéanamh,
agus sé ach cóipeanna agus leafaois cad iad siúd i gceist i ndáiríre.
Mar sin, nuair a deir tú # áireamh cs50.h, tá an réamhphróiseálaí chóipeáil agus a ghreamú cs50.h
isteach sa líne.
Nuair a rá leat # x shainiú a 4, téann an réamhphróiseálaí tríd an gclár ar fad
agus cuireann gach cás de x le 4.
Mar sin, glacann an réamhphróiseálaí comhad C bailí agus aschur bailí C comhad
i gcás rudaí a bhfuil a chóipeáil agus a ghreamú.
Mar sin, le chéile anois. Cad a dhéanann a dhéanamh?
[Mac léinn] Téann sé ó C go dénártha.
>> [Bowden] Ní chuireann sé an bealach ar fad dul go dtí an dénártha.
[Mac léinn] Chun cód meaisín ansin? >> Níl sé cód meaisín.
[Mac léinn] Tionól? >> Tionóil.
Téann sé chun an Tionóil sula dtéann sé go léir ar an mbealach chun cód C,
agus a dhéanann teangacha is mó a rud éigin mar seo.
Pioc aon teanga ardleibhéil, agus má tá tú ag dul a thiomsú dó,
is dócha a thiomsú i gcéimeanna.
An chéad dul ar é a Python thiomsú le C, ansin dul ar é a C thiomsú chun an Tionóil,
agus ansin tá Tionól ag dul a fháil aistrithe go dénártha.
Dá bhrí sin tá a thiomsú ag dul chun é a thabhairt ó C chun an Tionóil.
An focal le chéile de ghnáth ná í a thabhairt ó leibhéal níos airde
le teanga cláir níos ísle leibhéal.
Mar sin, is é seo an chéad chéim ach amháin i thiomsú ina dtosaíonn tú le teanga ardleibhéil
agus deireadh suas i dteanga íseal-leibhéal, agus sin an fáth a bhfuil an chéim ar a dtugtar le chéile.
[Mac léinn] Le linn a thiomsú, a ligean le rá go atá déanta agat # áireamh cs50.h.
An mbeidh an recompile Tiomsaitheoir an cs50.h, ar nós na feidhmeanna atá ann,
agus aistriú go isteach cód Tionól, chomh maith,
Beidh nó é a chóipeáil agus a ghreamú rud le bheith réamh-Tionól?
Beidh cs50.h riamh go leor i bhfad deireadh suas sa Tionól.
Rudaí mar fréamhshamhlacha fheidhm agus rudaí a bhfuil ach le haghaidh duit a bheith cúramach.
Ráthaíonn sé gur féidir leis an tiomsaitheoir rudaí a sheiceáil mar atá tú ag iarraidh feidhmeanna
leis na cineálacha ar ais ceart agus na hargóintí ceart agus rudaí.
>> Mar sin, beidh cs50.h a preprocessed isteach an comhad, agus ansin nuair atá sé ag thiomsú sé
tá sé thrown bunúsach bás tar éis a dhéanann sé cinnte go bhfuil gach rud bheith ar a dtugtar i gceart.
Ach na feidhmeanna a shainmhínítear sa leabharlann CS50, atá ar leithligh ó cs50.h,
ní bheidh na a chur le chéile ar leithligh.
Beidh an teacht i ndáiríre síos sa chéim ag nascadh, mar sin beidh orainn a fháil chun go sa dara.
Ach ar dtús, cad chéile?
[Mac léinn] Tionól dénártha? >> Yeah.
Chéile.
Ní chuirimid glaoch le chéile sé toisc go bhfuil Tionól go leor i bhfad aistriúchán íon de dénártha.
Tá loighic an-beag i dul ó Tionóil dénártha.
Tá sé díreach cosúil ag lorg suas i dtábla, ó, ní mór dúinn an teagasc;
a fhreagraíonn do dénártha 01,110.
Agus mar sin na comhaid go chéile go ginearálta aschur. Comhaid o.
Agus tá. Comhaid o cad a bhí á rá againn roimh,
conas nach bhfuil comhad gá go mbeadh feidhm mó.
Is féidir aon chomhad a thiomsú síos go dtí. Comhad o chomh fada agus tá sé ina bailí C comhaid.
Is féidir é a thiomsú síos go dtí. O.
Anois, tá a nascadh cad a thugann iarbhír a bunch. Comhaid o agus tugann le inrite.
Agus mar sin cad a dhéanann nascadh féidir leat smaoineamh ar an leabharlann CS50 mar chomhad. O.
Is comhad dénártha cheana le chéile.
Agus mar sin nuair a dhéanann tú a thiomsú do chomhad, do hello.c, a glaonna GetString,
hello.c Faigheann chéile síos go dtí hello.o,
hello.o anois i dénártha.
Úsáideann sé GetString, mar sin ní mór é a dul ar aghaidh go dtí cs50.o,
agus smooshes an nascóir le chéile iad agus cóipeanna GetString isteach sa chomhad
agus a thagann amach le inrite go bhfuil gach feidhm ag teastáil uaidh.
Mar sin, nach bhfuil cs50.o iarbhír comhad O, ach tá sé gar go leor nach bhfuil aon difríocht bhunúsach.
Mar sin, tugann nascadh go díreach a bunch de chomhaid le chéile
go bhfuil ar leithligh gach ceann de na feidhmeanna is gá dom a úsáid
agus cruthaíonn an inrite a reáchtáil i ndáiríre.
>> Agus mar sin tá go maith cad a bhí á rá againn roimh
áit ar féidir leat a bheith 1000. comhaid c, tú a thiomsú iad go léir a. comhaid o,
a bheidh ar dócha ar feadh tamaill, ansin athraíonn tú 1. c comhad.
Ní mór duit ach a recompile go 1. C comhad agus ansin relink gach rud eile,
nascadh le gach rud ar ais le chéile.
[Mac léinn] Nuair a bhíonn muid ag nascadh scríobh againn lcs50?
Yeah, mar sin-lcs50. Go comharthaí bratach leis an nascóir gur chóir duit a bheith ag nascadh sa leabharlann.
Ceisteanna?
Go bhfuil siad imithe muid thar dénártha seachas 5 soicind sa chéad léacht?
Ní dóigh liom é.
Ba cheart duit a fhios ag gach ceann de na Os mór go atá againn imithe os a chionn,
agus ba chóir duit a bheith in ann, má thug muid duit a chomhlíonadh,
ba cheart go mbeifeá in ann a rá go bhfuil sé mór O, garbh. Nó go maith, tá mór O garbh.
Mar sin, má fheiceann tú neadaithe do lúba looping thar an líon céanna de rudaí,
cosúil le slánuimhir i, i <n; int j, j > [mac léinn] n cearnógach. >> Bíonn sé a bheith n cearnógach.
Má tá tú neadaithe triple, bíonn sé a bheith n chiúbaithe.
Mar sin, gur saghas rud ba chóir duit a bheith in ann a chur in iúl láithreach.
Ní mór duit fios a bheith agat a shórtáil isteach agus sórtáil mboilgeog agus saghas agus gach ceann de na merge.
Tá sé níos éasca a thuiscint cén fáth go bhfuil siad siúd a n cearnógach agus n logáil n agus gach ceann de sin
mar Sílim go raibh tráth na gceist ar aon bhliain amháin nuair a thug muid go bunúsach agat
ar chur i bhfeidhm saghas mboilgeog agus dúirt sé, "Cad é an t-am ag rith an fheidhm seo?"
Mar sin, má aithníonn tú é mar saghas mboilgeog, ansin is féidir leat a rá láithreach n cearnógach.
Ach má fhéachann tú díreach ar sé, ní gá duit fiú a bhaint amach saghas mboilgeog sé;
féidir leat a rá ach tá sé seo é seo a dhéanamh agus tá sé seo. Tá sé seo n cearnógach.
[Mac léinn] An bhfuil aon samplaí diana is féidir leat teacht suas leis,
cosúil le smaoineamh céanna figuring amach?
>> Ní dóigh liom go ba mhaith linn a thabhairt duit aon samplaí diana.
Is é an rud saghas mboilgeog faoi diana mar go mbeadh muid ag dul,
agus fiú go bhfuil, chomh fada agus go dtuigeann tú go bhfuil tú ag iterating thar an eagar
do gach eilimint sa eagar, a bhfuil ag dul a bheith rud éigin go n s cearnógach.
Tá ceisteanna ginearálta, ar nós dheis anseo tá muid - Oh.
Díreach an lá eile, Doug éileamh, "Tá mé invented algartaim is féidir a shórtáil eagar
"Na n-uimhreacha n i O (log n) am!"
Mar sin cén chaoi a fhios againn go bhfuil sé dodhéanta?
[Fhreagra mac léinn inaudible] >> Yeah.
Ar a laghad, tá tú chun teagmháil a dhéanamh gach eilimint sa eagar,
mar sin tá sé dodhéanta a shórtáil le sraith de -
Má tá gach rud in ord neamhshórtáilte, ansin tá tú ag dul a bheith touching gach rud sa eagar,
mar sin tá sé dodhéanta é a dhéanamh i níos lú ná O n.
[Mac léinn] léirigh tú dúinn go bhfuil sampla de a bheith in ann é a dhéanamh i O n
má úsáideann tú a lán de na cuimhne. >> Yeah.
Agus that's - dearmad liom cad that's - An bhfuil comhaireamh sé saghas?
Hmm. Is é sin an algartam sórtáil slánuimhir.
Bhí mé ag lorg an t-ainm speisialta leis seo ná nach raibh mé in ann cuimhneamh ar an tseachtain seo caite.
Yeah. Is iad seo na cineálacha de shaghas gur féidir rudaí a chur i gcrích i mór O n.
Ach tá teorainneacha, mar is féidir leat é a úsáid ach amháin slánuimhreacha suas go dtí líon áirithe.
Plus má tá tú ag iarraidh a shórtáil that's rud éigin -
Má tá do sraith 012, -12, 151, 4 milliún,
ansin tá an eilimint amháin ag dul a ruin go hiomlán a shórtáil ar fad.
>> Ceisteanna?
[Mac léinn] Má tá feidhm athchúrsach agus a dhéanann sé ach na glaonna recursive
laistigh de tuairisceán ráiteas, go bhfuil eireaball athchúrsach,
agus ní bheadh ​​sin a úsáid go bhfuil cuimhne níos mó i rith runtime
nó go mbeadh sé ar a laghad a úsáid cuimhne inchomparáide mar atriallach réiteach?
[Bowden] Tá.
Bheadh ​​sé cosúil beagán níos moille, ach ní i ndáiríre.
Tá eireaball athchúrsach maith go leor.
Breathnú arís ar frámaí chairn, a rá a ligean ar tá príomh-
agus ní mór dúinn barra slánuimhir (slánuimhir x) nó rud éigin.
Ní hé seo an fheidhm foirfe recursive, ach barra ar ais (x - 1).
Mar sin, ar ndóigh, is é seo lochtach. Ní mór duit cásanna bonn agus rudaí.
Ach tá an smaoineamh anseo go bhfuil an eireaball athchúrsach,
rud a chiallaíonn nuair is mó glaonna bar sé ag dul a fháil ar a fráma Stack.
Sa fráma cruaiche tá ann dul chun bheith ina bloc beag de chuimhne
a fhreagraíonn dá x argóint.
Agus mar sin a ligean le rá is mó a tharlaíonn a ghlaoch barra (100);
Dá bhrí sin tá x ag dul chun tús a chur amach mar 100.
Má aithníonn an tiomsaitheoir go bhfuil an fheidhm eireaball recursive,
ansin nuair a dhéanann barra a ghlaoch athchúrsach chun barra,
seachas é a dhéanamh fráma Stack nua, a bhfuil áit a thosaíonn an chairn atá ag fás den chuid is mó,
deireadh thiar beidh sé ar siúl ar an gcarn agus ansin segfaults leat a fháil ar
mar a thosaíonn cuimhne colliding.
>> Mar sin, seachas é a dhéanamh a fráma cruaiche féin, is féidir é a bhaint amach,
hug riamh, tá mé gur gá teacht ar ais chuig an fráma cruaiche,
sin in ionad beidh mé in ionad díreach tar éis an argóint sin le 99 barra agus ansin tús a chur go léir os a chionn.
Agus ansin beidh sé a dhéanamh arís agus beidh teacht ar ais barra é (x - 1),
agus in ionad a dhéanamh fráma Stack nua, tiocfaidh sé in áit go díreach a argóint atá ann faoi láthair le 98
agus léim ansin ar ais go dtí tús an-bar.
Na hoibríochtaí sin, in ionad an luach 1 ar an chruach agus léim ar ais go dtí an tús,
bhfuil go leor éifeachtach.
Mar sin, nach bhfuil ach an úsáid chuimhne chéanna mar fheidhm ar leith a bhfuil atriallach
toisc go bhfuil tú ag baint úsáide as ach 1 fráma cruaiche, ach nach bhfuil tú ag fulaingt na míbhuntáistí
a bhfuil a feidhmeanna a ghlaoch.
Is féidir le feidhmeanna Ag glaoch ar a bheith beagán costasach toisc go bhfuil sé go léir a dhéanamh leis an thus
agus teardown agus go léir stuif seo.
Mar sin, tá an athchúrsáil eireaball maith.
[Mac léinn] Cén fáth nach é a chruthú céimeanna nua?
Toisc go dtuigeann sé nach gá é.
Tá an glaoch chun barra ar ais ach an glao athchúrsach.
Mar sin, nach gá aon rud a dhéanamh leis an luach ar ais.
Tá sé seo ag dul díreach a thabhairt ar ais láithreach é.
Mar sin, tá sé ag dul ach a chur in ionad a argóint féin agus tús a chur os a chionn.
Agus freisin, más rud é nach bhfuil tú ag an leagan eireaball recursive,
ansin tú a fháil ar fad na barraí ina bhfilleann nuair bheár seo
tá sé ar a luach ar ais chuig an gceann seo, ansin go bhfilleann an barra díreach
agus tuairisceáin sé a luach leis an gceann seo, ansin tá sé ag dul díreach a thabhairt ar ais láithreach
agus a luach ar ais go dtí an gceann seo.
Mar sin, tá tú ag coigilt seo popping gach ceann de na rudaí as an chairn
ós rud é go bhfuil an luach ar ais ag dul díreach a chur ar aghaidh ar an mbealach ar ais suas ar aon nós.
Ní sin an fáth a ionad ach ar ár argóint leis an argóint suas chun dáta agus tús a chur os cionn?
Mura bhfuil an fheidhm eireaball athchúrsach, má dhéanann tú rud éigin cosúil le -
[Mac léinn] má bar (x + 1). >> Yeah.
>> Mar sin, má chuir tú é i riocht, ansin tá tú ag déanamh rud éigin leis an luach ar ais.
Nó fiú má dhéanann tú díreach ar ais 2 * bar (x - 1).
Riachtanais - (1 x) a thabhairt ar ais d'fhonn é a ríomh 2 uair an luach, Mar sin, barra anois
mar sin anois gá é a fráma cruaiche féin ar leithligh,
agus anois, is cuma cé chomh deacair iarracht tú, agus tú ag dul go mór chun -
Ní hé seo an eireaball athchúrsach.
[Mac léinn] Ar mhaith liom iarracht a thabhairt athchúrsáil a d'aidhm le haghaidh athchúrsáil eireaball -
[Bowden] I saol idéalach, ach i CS50 ní gá duit a.
D'fhonn a fháil cuardach ar eireaball, go ginearálta, bhunaíonn tú argóint bhreise
áit a mbeidh barra a chur x int i y
, agus freagraíonn y an rud deiridh ba mhaith leat a thabhairt ar ais.
Mar sin, ansin é seo a bhíonn tú ag dul a bheith ag filleadh bar (x - 1), 2 * y.
Mar sin, go díreach ar ard-leibhéal conas a athrú rudaí a bheith eireaball athchúrsach.
Ach an argóint breise -
Agus ansin sa deireadh nuair a shroicheann tú do chás bonn, tá tú ar ais ach y
mar atá tú ag carnadh an t-am ar fad an luach ar ais gur mian leat.
Tá tú de chineál ar a bhí sé a dhéanamh ach úsáid a bhaint iteratively glaonna recursive.
Ceisteanna?
[Mac léinn] B'fhéidir faoi uimhríochtúil pointeoir, cosúil le teaghráin á úsáid. >> Cinnte.
Uimhríochtúil phointeora.
Nuair a bheidh ag baint úsáide as téada tá sé éasca mar go bhfuil teaghráin réaltaí Char,
carachtair go deo agus i gcónaí beart amháin,
agus mar sin uimhríochtúil pointeoir comhionann le uimhríocht rialta nuair a bhíonn tú ag déileáil le teaghráin.
Ligean le rá ach ruabhric * s = "hello".
Mar sin, ní mór dúinn a bloc i gcuimhne.
Riachtanais sé 6 bytes mar is gá duit i gcónaí ar an Críochnaitheoir null.
Agus is é ruabhric * s ag dul a chur in iúl go tús an eagar.
Mar sin, deir s ann.
Anois, tá sé seo go bunúsach conas a oibríonn aon eagar,
beag beann ar cibé an raibh sé ar ais le malloc nó cibé an bhfuil sé ar an chruach.
Tá aon sraith bunúsach pointeoir go dtí tús an eagar,
agus tá sé ansin aon oibríocht eagar, aon innéacsú, ag dul go díreach isteach sa sraith áirithe a fhritháireamh.
>> Mar sin, nuair a rá liom rud éigin cosúil le s [3]; tá sé seo ag dul go dtí s agus comhaireamh 3 chars isteach
Mar sin, s [3], ní mór dúinn 0, 1, 2, 3, agus mar sin s [3] ag dul a tharchur chuig an l.
[Mac léinn] Agus d'fhéadfadh muid a bheith ag an luach céanna ag déanamh s + 3 agus ansin lúibíní réalta?
Tá.
Is ionann sin * (s + 3);
agus is é sin go deo agus i gcónaí comhionann is cuma cad a dhéanann tú.
Tú riamh a bhaint as an chomhréir lúibín.
Is féidir leat úsáid i gcónaí * (s + 3) chomhréir.
Daoine claonadh a bhíonn le cosúil leis an error lúibín, cé.
[Mac léinn] Mar sin, tá gach arrays ndáiríre ach leideanna.
Tá idirdhealú beag nuair a rá liom slánuimhir x [4]; >> [mac léinn] An bhfuil a chruthú go bhfuil an chuimhne?
[Bowden] Is é sin an dul a chruthú 4 ints ar an chruach, mar sin 16 bytes iomlán.
Tá sé seo ag dul a chruthú 16 bytes ar an chruach.
Ní x stóráil in áit ar bith.
Tá sé ach siombail a thagraíonn do thús an rud.
Mar gheall ar dhearbhú tú an sraith taobh istigh na feidhme seo,
cad é an tiomsaitheoir ag dul a dhéanamh ná a athsholáthar ach gach cás de na x athróg
leis an áit a tharla sé a roghnú a chur ar na 16 beart.
Ní féidir é sin a dhéanamh le ruabhric * s toisc go bhfuil s pointeoir iarbhír.
Tá sé saor in aisce a chur in iúl ansin chun rudaí eile.
Is é x tairiseach. Ní féidir leat a bheith pointe sé le raon éagsúil. >> [Mac léinn] Maith go leor.
Ach tá an smaoineamh seo, an innéacsú, mar an gcéanna is cuma cé acu tá sé ina eagar traidisiúnta
nó má tá sé ina pointeoir chun rud éigin nó má tá sé ina pointeoir ar raon malloced.
Agus i ndáiríre, go bhfuil sé chomh coibhéiseach ar fáil go bhfuil freisin an rud céanna.
Sé i ndáiríre aistríonn go díreach cad atá taobh istigh de na lúibíní agus cad atá fágtha de na lúibíní,
Cuireann siad le chéile, agus dereferences.
Mar sin, tá sé seo ach bailí chomh * (s + 3) nó s [3].
[Mac léinn] An féidir leat a bheith leideanna dírithe ar 2-tríthoiseach arrays?
>> Tá sé níos deacra. Go traidisiúnta, uimh.
Tá sraith 2-tríthoiseach ach sraith 1-tríthoiseach le roinnt error áisiúil
mar nuair a rá liom slánuimhir x [3] [3], tá sé seo i ndáiríre ach 1 sraith le 9 luachanna.
Agus mar sin nuair a innéacs a fhios, an tiomsaitheoir cad is ciall agam.
Má rá liom x [1] [2], a fhios sé Ba mhaith liom dul go dtí an dara sraith, mar sin tá sé ag dul a skip an chéad 3,
agus ansin is mian leis an dara rud sa mhéid is go, mar sin tá sé ag dul a fháil ar an gceann seo.
Ach tá sé fós ach sraith amháin-tríthoiseach.
Agus mar sin má bhí mé le pointeoir a shannadh chuig an eagar,
Ba mhaith liom a rá o * p = x;
Is é an cineál x díreach -
Tá sé cineál rá garbh x ós rud é go bhfuil sé ach siombail agus nach bhfuil sé athróg iarbhír,
ach tá sé ach * slánuimhir.
x bhfuil ach pointeoir chuig an tús an. >> [Mac léinn] Maith go leor.
Agus mar sin ní bheidh mé in ann teacht [1] [2].
Sílim go bhfuil comhréir speisialta do dhearbhú pointeoir,
rud éigin cosúil le ridiculous slánuimhir (* p [-. rud éigin go hiomlán ridiculous Níl a fhios agam fiú.
Ach tá error do dhearbhú leideanna cosúil le lúibíní agus rudaí.
Ní fhéadfadh sé in iúl go fiú a dhéanann tú sin.
Raibh mé in ann breathnú siar ar rud éigin a bheadh ​​a insint dom an fhírinne.
Beidh mé ag lorg dó ina dhiaidh sin, má tá comhréir le haghaidh pointe. Ach ní bheidh tú é a fheiceáil.
Agus is fiú an chomhréir sin ársa go má úsáideann tú é, beidh daoine a baffled.
Tá arrays iltoiseacha deas annamh mar atá sé.
Tá tú go leor i bhfad -
Bhuel, má tá tú ag déanamh rudaí maitrís nach bhfuil sé ag dul a bheith gann,
ach i C bhfuil tú ag dul annamh a bheith ag baint úsáide as arrays iltoiseacha.
Yeah. >> [Mac léinn] Ligean le rá agat eagar i ndáiríre fada.
>> Mar sin, i gcuimhne fíorúil mbeadh sé dealraitheach a bheith ar gach as a chéile,
cosúil leis na heilimintí ceart aice le gach eile,
ach i gcuimhne fhisiceach a bheadh, go mbeadh sé indéanta chun a bheith roinnte suas? >> Tá.
Conas fíorúil Tá oibreacha cuimhne scarann ​​sé ach -
Is é an t-aonad leithdháileadh ar an leathanach, a bhfuil claonadh a 4 cilibheart,
agus mar sin nuair a deir próiseas, hug, ba mhaith liom seo a úsáid chuimhne,
Is é an córas oibriúcháin ag dul a leithdháileadh ann 4 cilibheart don bloc beag de chuimhne.
Fiú má úsáideann tú ach beart amháin beag sa bhloc iomlán na cuimhne,
Is é an córas oibriúcháin ag dul a thabhairt dó an 4 iomlán cilibheart.
Mar sin, cad é ciallaíonn sé seo go raibh mé in ann - ligean le rá é seo mo chairn.
D'fhéadfaí an chairn a bheith scartha. D'fhéadfadh a bheith Mo Stack meigibheart agus meigibheart.
D'fhéadfadh Mo chairn a bheith ollmhór.
Ach tá an chairn féin a dheighilt i leathanaigh aonair,
agus má táimid ag os cionn anseo ligean le rá é seo ár RAM,
má tá mé 2 ghigibheart de RAM, is é seo 0 seoladh iarbhír cosúil leis an beart 0 mo RAM,
agus tá sé seo 2 ghigibheart léir ar an mbealach síos anseo.
Mar sin, d'fhéadfadh an leathanach seo freagairt do bloc seo thar anseo.
D'fhéadfadh an leathanach seo freagairt do bloc seo thar anseo.
D'fhéadfadh sé seo ar cheann a fhreagraíonn leis an gceann seo thar anseo.
Mar sin, tá an córas oibriúcháin saor in aisce a shannadh cuimhne fhisiceach
d'aon leathanach ar leith treallach.
Agus ciallaíonn sé sin go má tharlaíonn sé seo teorainn a gabhalscartha eagar,
tharlaíonn le sraith a bheith fágtha ar an agus ceart chun an t-ordú de leathanach,
ansin go bhfuil eagar ag dul a bheith roinnte i gcuimhne fisiciúil.
Agus ansin nuair a scor tú an clár, nuair a thagann deireadh leis an bpróiseas,
a fháil ar na mapálacha scriosadh agus ansin tá sé saor in aisce chun úsáid na bloic beag le haghaidh rudaí eile.
Ceisteanna níos mó?
[Mac léinn] An uimhríochtúil pointeoir. >> Oh yeah.
Teaghrán bhí níos éasca, ach ag féachaint ar rud éigin cosúil le ints,
mar sin ar ais go dtí slánuimhir x [4];
Cibé tá sé seo le sraith nó bíodh sé ina pointeoir le sraith malloced de 4 slánuimhreacha,
tá sé ag dul a bheidh le háireamh ar an mbealach céanna.
[Mac léinn] Mar sin, tá arrays ar an gcarn?
Nach bhfuil [Bowden] eagair ar an gcarn. >> [Mac léinn] Oh.
>> [Bowden] Nós an cineál seo eagar a bheith ar an chruach
mura dhearbhú tú é ar - neamhaird athróg domhanda. Ná húsáid athróga domhanda.
Taobh istigh de feidhm a rá liom slánuimhir x [4];
Tá sé seo ag dul a chruthú bloc 4-slánuimhir ar an chruach le haghaidh an eagar.
Ach an malloc (4 * Is uimhir (o)); ag dul chun dul ar an gcarn.
Ach tar éis an bpointe seo is féidir liom a úsáid x agus p i go leor i bhfad ar na bealaí céanna,
seachas na heisceachtaí a dúirt mé cheana faoi is féidir leat a athshannadh lch.
Go teicniúil, go bhfuil a gcuid méideanna beagán éagsúil, ach sin go hiomlán nach mbaineann le hábhar.
Tú riamh a úsáid iarbhír a n-mhéideanna.
An p raibh mé in ann a rá p [3] = 2; nó x [3] = 2;
Is féidir leat iad a úsáid i díreach ar na bealaí céanna.
Uimhríochtúil pointeoir Mar sin, anois - Tá.
[Mac léinn] Ná bhfuil tú a dhéanamh p * má tá tú na lúibíní?
Is iad na lúibíní ar téigh i intuigthe. >> Maith go leor.
I ndáiríre, freisin, cad is féidir go bhfuil tú ag rá leis an leat a fháil arrays iltoiseacha
le leideanna, cad is féidir leat a dhéanamh rud éigin cosúil le, ligean le rá, o ** pp = malloc (Is uimhir (o *) * 5);
Scríobhfaidh mé díreach tar éis go léir amach ar dtús.
Ní raibh mé ag iarraidh go bhfuil ceann.
Maith go leor.
Cad a rinne mé anseo tá - Ba chóir go dtarlódh sé sin pp [i].
Dá bhrí sin tá pp a pointeoir le pointeoir.
Tá tú ag mallocing pp a chur in iúl le sraith de 5 réiltín slánuimhir.
Mar sin, i gcuimhne go bhfuil tú ar an lgh Stack
Tá sé seo ag dul a chur in iúl le sraith de 5 bloic a bhfuil gach féin leideanna.
Agus ansin nuair a malloc mé síos anseo, malloc go gach ceann de na leideanna aonair
Ba chóir go pointe bloc ar leith de 4 bytes ar an gcarn.
Mar sin, seo pointí 4 bytes.
Agus an ceann seo a pointí le 4 éagsúil beart.
>> Agus pointe ar fad iad a gcuid féin 4 bytes.
Tugann sé seo dom ar bhealach a dhéanamh rudaí iltoiseacha.
Raibh mé in ann a rá pp [3] [4], ach anois nach bhfuil sé seo an rud céanna mar arrays iltoiseacha
mar gheall ar arrays iltoiseacha aistrithe ann [3] [4] a iompú ina amháin a fhritháireamh i sraith x.
An p dereferences bhfuil teacht, an t-innéacs tríú, ansin dereferences go
agus rochtain - Bheadh ​​4 neamhbhailí - an t-innéacs dara.
De bharr an méid nuair a bhí againn o 'x [3] [4] roimh mar eagar iltoiseach
agus nuair a dhéanann tú dúbailte scriosaidh tá sé i ndáiríre ach téigh i amháin,
tú tar éis pointeoir amháin agus ansin fhritháireamh,
tá sé seo i ndáiríre tagairtí 2D.
Leanann tú 2 leideanna ar leith.
Mar sin, ceadaíonn sé seo freisin go teicniúil duit a bheith arrays iltoiseacha
nuair atá gach sraith aonair mhéideanna éagsúla.
Mar sin, I mo thuairimse, arrays iltoiseacha garbh cad tá sé ar a dtugtar
ós rud é gur féidir an chéad rud pointe rud éigin go bhfuil 10 eilimintí,
d'fhéadfadh an dara rud pointe rud éigin go bhfuil 100 heilimintí sin.
[Mac léinn] An bhfuil aon teorainn le líon na leideanna féidir leat a bheith
dírithe ar leideanna eile? >> Uimh
Is féidir leat slánuimhir ***** lch.
Ar ais go uimhríochtúil pointeoir - >> [mac léinn] Oh. >> Yeah.
[Mac léinn] Má tá mé o *** p agus ansin is féidir liom a dereferencing agus a rá liom go bhfuil p * comhionann leis an luach,
tá sé ag dul ach a dhéanamh 1 leibhéal dereferencing? >> Tá.
Mar sin, más mian liom rochtain a fháil ar an rud go bhfuil an pointeoir deireanach atá dírithe ar -
Ansin a dhéanann tú p ***. >> Maith go leor.
Mar sin, is é seo pointí p go dtí an 1 bloc, pointí eile bloc, pointí eile bloc.
Ansin, má dhéanann tú * p = rud éigin eile, ansin tá tú ag athrú seo a
a chur in iúl anois do bloc éagsúla. >> Maith go leor.
>> [Bowden] Agus má bhí malloced seo, ansin caithfidh tú leaked anois cuimhne
ach amháin má tharlaíonn tú go bhfuil tagairtí éagsúla de na
ós rud é nach féidir leat a fháil ar ais chuig na cinn a chaith tú díreach ar shiúl.
Uimhríochtúil phointeora.
slánuimhir x [4]; tá sé ag dul a leithdháileadh le sraith de 4 slánuimhreacha
áit a bhfuil x ag dul a chur in iúl go tús an eagar.
Mar sin, nuair a rá liom rud éigin cosúil le x [1]; Ba mhaith liom é a chiallaíonn dul go dtí an tslánuimhir is dara eagar,
bheadh ​​ina gceann seo.
Ach i ndáiríre, go bhfuil 4 bytes isteach sa réimse ó ghlacann an slánuimhir suas 4 bytes.
Mar sin, ciallaíonn fhritháireamh de 1 ndáiríre fhritháireamh de 1
huaire an méid de is cuma cad é an cineál an eagar.
Is é seo le sraith de slánuimhreacha, mar sin a fhios sé a dhéanamh 1 uair méid slánuimhir nuair is mian sé a fhritháireamh.
An error eile. Cuimhnigh go bhfuil sé seo comhionann le * (x + 1);
Nuair a rá liom pointeoir + 1, cad go tuairisceáin is é an seoladh go bhfuil an pointeoir a stóráil
móide 1 uair an méid de na cineál an pointeoir.
Mar sin, má x = ox100, ansin x + 1 = ox104.
Agus is féidir leat a mí-úsáid seo agus rud éigin a rá cosúil le ruabhric * c = (ruabhric *) x;
agus anois tá c dul go dtí an seoladh céanna x.
c ag dul a bheith cothrom le ox100,
ach c mar + 1 ag dul a bheith cothrom le ox101
ós rud é ag brath uimhríochtúil pointeoir ar an gcineál an pointeoir go bhfuil tú ag cur le.
Mar sin, c + 1, féachann sé ar c, tá sé ina pointeoir ruabhric, mar sin tá sé ag dul a chur 1 uair méid na ruabhric,
atá ag dul i gcónaí a bheith 1, sin a gheobhaidh tú 101,
ach má dhéanann mé x, a bhfuil freisin fós 100, tá x + 1 ag dul a bheith 104.
[Mac léinn] An féidir leat é a úsáid c + + d'fhonn a chur chun cinn do phointeoir faoin 1?
Sea, is féidir leat.
Ní féidir leat é sin a dhéanamh leis an x ​​toisc go bhfuil x ach siombail, tá sé i gcónaí; ní féidir leat athrú x.
>> Ach a tharlaíonn c chun a bheith díreach pointeoir, mar sin c + + Is breá bailí agus beidh sé bhreisiú faoi 1.
Má bhí c ach * slánuimhir, ansin c + + mbeadh a 104.
+ + Uimhríocht dhéanann pointeoir díreach mar a bheadh ​​c + 1 a bheith déanta uimhríochtúil pointeoir.
Tá sé seo i ndáiríre conas a lán de rudaí cosúil le sórtáil merge -
In ionad a chruthú cóipeanna de rudaí, is féidir leat pas a fháil in ionad -
Cosúil má bhí mé a pas a fháil seo leath den eagar - lig sé ag scriosadh cuid de seo.
Ligean le rá theastaigh uaim chun pas a fháil an taobh seo den sraith ina feidhm.
Cad mé pas leis an bhfeidhm?
Má éiríonn liom x, tá mé ag rith an seoladh seo.
Ach ba mhaith liom a pas a fháil an seoladh seo go háirithe. Mar sin, cad ba chóir dom pas a fháil?
[Mac léinn] phointeora + 2?
[Bowden] Mar sin x + 2. Tá.
Sin ag dul a bheith an seoladh seo.
Feicfidh tú freisin an-minic a fheiceáil mar x [2] agus ansin an seoladh sin.
Mar sin, is gá duit a chur ar an seoladh sé toisc go bhfuil na scriosaidh ar téigh i intuigthe.
x [2] Tagraíonn an luach atá sa bhosca seo, agus ansin ba mhaith leat an seoladh an bosca,
mar sin deir tú & x [2].
Mar sin, go conas rud éigin i saghas merge áit ar mhaith leat go dtí leath an liosta ar aghaidh chuig rud éigin
tú i ndáiríre pas díreach & x [2], agus anois chomh fada agus is é an glao athchúrsach lena mbaineann,
Tosaíonn mo sraith nua ann.
Ceisteanna nóiméad deireanach.
[Mac léinn] Más rud é nach bhfuil muid a chur ar COMHARTHA AGUIS nó - cad é sin ar a dtugtar? >> Star?
[Mac léinn] Star. >> Go teicniúil, oibreoir téigh, ach - >> [mac léinn] P leis na roghanna.
>> Más rud é nach bhfuil muid a chur ar réalta nó COMHARTHA AGUIS, cad a tharlaíonn má rá liom ach y = x x agus is pointeoir?
Cad é an cineál y? >> [Mac léinn] beidh mé a rá ach tá sé pointeoir 2.
Mar sin, má deir tú díreach y = x, x agus y anois pointe ar an rud céanna. >> [Mac léinn] Pointe ar an rud céanna.
Agus má tá x ina pointeoir o? >> Bheadh ​​sé gearán a dhéanamh toisc nach féidir leat leideanna a shannadh.
[Mac léinn] Maith go leor.
Cuimhnigh go bhfuil leideanna, cé linn a tharraingt orthu mar saighde,
i ndáiríre gach siopa siad - i ndáiríre tá gach x stóráil rud éigin cosúil le ox100, Pharlaim - * x
a tharlaíonn againn chun ionadaíocht a dhéanamh mar atá dírithe ar an mbloc stóráilte ag 100.
Mar sin, nuair a rá liom o * y = x; Tá mé ag cóipeáil ach ox100 isteach y,
a táimid ag dul díreach chun ionadaíocht a dhéanamh mar y, freisin, dírithe ar ox100.
Agus má rá liom slánuimhir i = (o) x; ansin ag dul i a stóráil cuma cad é an luach ox100
taobh istigh de sé, ach anois tá sé ag dul a léirmhíniú mar slánuimhir seachas pointeoir.
Ach is gá duit a caitheadh ​​nó eile beidh sé gearán a dhéanamh.
[Mac léinn] Mar sin atá i gceist agat a chaitheamh -
An bhfuil sé ag dul a bheith réitigh slánuimhir de slánuimhir x nó vóta réitigh y?
[Bowden] Cad é?
[Mac léinn] Maith go leor. Tar éis na lúibíní tá dul chun bheith ina x nó ay ann?
>> [Bowden] Ceachtar. x agus y coibhéiseach. >> [Mac léinn] Maith go leor.
Toisc go mbíonn siad an dá threo. >> Yeah.
[Mac léinn] Mar sin, bheadh ​​sé a stóráil an 100 heicsidheachúlach i bhfoirm slánuimhir? >> [Bowden] Yeah.
Ach nach bhfuil an luach is cuma cad pointí sé le.
[Bowden] Yeah. >> [Mac léinn] Mar sin, ach an seoladh i bhfoirm slánuimhir. Maith go leor.
[Bowden] Má bhí tú ar chúis éigin aisteach,
d'fhéadfaí tú déileáil go heisiach le leideanna agus ní déileáil le slánuimhreacha
agus a bheith díreach cosúil le slánuimhir * x = 0.
Ansin tá tú ag dul a fháil ar dhaoine eatarthu i ndáiríre nuair a thosaíonn uimhríochtúil pointeoir ag tarlú.
Mar sin, tá na huimhreacha go stórálann siad meaningless.
Tá sé díreach conas a deireadh tú suas a léirmhíniú orthu.
Mar sin, tá mé saor in aisce a chóipeáil ox100 ó * slánuimhir le slánuimhir,
agus tá mé saor in aisce a shannadh - you're is dócha ag dul a fháil yelled ag ar feadh tréimhse nach réitigh -
Tá mé saor in aisce rud éigin a shannadh cosúil le (o *) ox1234 isteach sa * slánuimhir treallach.
Dá bhrí sin tá ox123 díreach mar atá bailí le seoladh chuimhne mar & y.
& A tharlaíonn y thabhairt ar ais go bhfuil rud éigin go leor i bhfad ox123.
[Mac léinn] Ar mhaith a bheith go bhealach i ndáiríre cool chun dul ó heicsidheachúlach go foirm dheachúlach,
Is maith má tá tú pointeoir agus chaith tú é mar slánuimhir?
[Bowden] Is féidir leat i ndáiríre ach a phriontáil ag baint úsáide as cosúil le printf.
Ligean le rá go bhfuil mé slánuimhir y = 100.
Mar sin, printf (% d \ n - mar ba chóir a fhios agat cheana féin - chló sin mar slánuimhir x%,.
Beidh muid a phriontáil ach é mar heicsidheachúlach.
Mar sin, nach bhfuil pointeoir stóráil mar heicsidheachúlach,
agus nach slánuimhir a stóráil mar deachúlach.
Tá gach rud a stóráil mar dhénártha.
Tá sé sin go díreach claonadh a bhíonn againn chun a thaispeáint leideanna mar heicsidheachúlach
mar a cheapann muid na rudaí sna bloic 4-ú beart,
agus an claonadh a seoltaí cuimhne a bheith eolach ar.
Táimid cosúil le, má thosaíonn sé le BF, ansin a tharlaíonn sé a bheith ar an chairn.
Mar sin, tá sé ach ar ár léiriú leideanna mar heicsidheachúlach.
Maith go leor. Ceisteanna ar bith caite?
>> Beidh mé anseo le beagán tar éis má tá tú aon rud eile.
Agus sin deireadh na.
>> [Mac léinn] Yay! [Bualadh bos]
>> [CS50.TV]