ROB BOWDEN: Hi, Im 'Rob Bowden, a gadewch i ni siarad am quiz0. Felly, cwestiwn cyntaf. Mae hyn yn y cwestiwn lle eich bod angen i cod rhif 127 yn y bylbiau deuaidd. Os ydych eisiau, gallech yn gwneud y trosiad yn rheolaidd o bi-- neu, o degol i'r deuaidd. Ond mae hynny'n fwy na thebyg yn mynd i gymryd llawer o amser. Yr wyf yn golygu, fe allech chi chyfrif i maes hwnnw, OK, mae 1 yn i mewn 'na, 2 yn i mewn' na, 4 yn cyd-yno, 8 yn i mewn 'na. Ffordd haws, 127 yw 128 llai un. Bod bwlb golau leftmost yw'r 128-bit. Felly 127 yn wirioneddol yn unig i gyd o'r bylbiau golau arall, ers hynny yw'r leftmost bwlb golau minws 1. Dyna ni am y cwestiwn hwnnw. Cwestiwn un. Felly, gyda 3 darnau gallwch cynrychioli 8 gwerthoedd gwahanol. Pam, felly, mae 7 y mwyaf heb fod yn negyddol cyfanrif degol gallwch gynrychioli? Wel, os gallwn unig cynrychioli 8 gwerthoedd pendant, Yna, yr hyn yr ydym yn mynd i fod cynrychioli yw 0 drwy 7. 0 yn cymryd i fyny un o'r gwerthoedd. Cwestiwn dau. Gyda darnau n, faint o wahanol Gall gwerthoedd rydych yn eu cynrychioli? Felly, gyda darnau n, mae gennych 2 gwerthoedd posibl ar gyfer pob darn. Felly mae gennym 2 werthoedd posibl ar gyfer y darn cyntaf, 2 werthoedd posibl ar gyfer yr ail, 2 posibl ar gyfer y drydedd. Ac felly dyna 2 waith 2 waith 2, ac yn y pen draw yr ateb yw 2 i'r n. Cwestiwn tri. Beth sydd 0x50 mewn deuaidd? Felly cofiwch fod hecsadegol Mae gan iawn trosi syml i deuaidd. Felly dyma, mae'n rhaid i ni edrych ar y 5 a'r 0 yn annibynnol. Felly, beth sydd 5 mewn deuaidd? 0101, dyna'r 1 bit a'r 4 bit. Beth sydd 0 yn deuaidd? Ddim yn anodd. 0000. Felly, dim ond eu rhoi at ei gilydd, ac dyna'r rhif llawn yn deuaidd. 01,010,000. Ac os ydych yn dymuno gallech cymryd oddi ar y sero leftmost. Mae'n amherthnasol. Am hynny fel arall, beth yw 0x50 yn y degol? Os ydych eisiau, rydych could-- os ydych chi'n yn fwy cyfforddus gyda'r binary, gallech gymryd yr ateb deuaidd ac i drosi hynny'n degol. Neu gallem dim ond cofiwch hynny hecsadegol. Fel bod 0 yn y 0-fed le, a y 5 yn y 16 i'r lle cyntaf. Felly dyma, mae gennym 5 gwaith 16 i'r yn gyntaf, yn ogystal â 0 gwaith 16 i'r sero, yw 80. Ac os ydych yn edrych ar y teitl i'r cwestiwn, yr oedd CS 80, a oedd yn fath o awgrym at yr ateb i'r broblem hon. Cwestiwn pump. Mae gennym y sgript Scratch, sef ailadrodd 4 gwaith menyn pysgnau jeli. Felly, sut yr ydym yn awr cod sy'n yn C? Wel, mae gennym Yma-- rhan mewn print trwm yw'r unig ran bu'n rhaid i chi weithredu. Felly mae gennym dolen 4 sy'n cael ei dolennu 4 adegau, printf-ing menyn pysgnau jeli, gyda llinell newydd gan fod y broblem yn gofyn am. Cwestiwn chwech, problem Scratch arall. Rydym yn gweld bod ein bod mewn cylch am byth. Rydym yn dweud y ff amrywiol ac yna'n cynyddu i erbyn 1. Nawr rydym yn awyddus i wneud hynny yn C. Mae ffyrdd lluosog gallem fod wedi gwneud hyn. Yma rydym yn digwydd i godio'r am byth dolen fel tra (yn wir). Felly, rydym yn datgan y newidyn i, jyst fel y cawsom i amrywiol mewn Scratch. Datgan y ff amrywiol, ac am byth tra (yn wir), rydym yn dweud y newidyn i. Felly printf% i-- neu gallech chi wedi defnyddio% d. Rydym yn dweud bod newidyn, a Yna cynyddiad iddo, i ++. Cwestiwn saith. Nawr rydym yn awyddus i wneud rhywbeth tebyg iawn i Mario dot c rhag problem sefydlu un. Rydym eisiau argraffu hashtags hyn, rydym am i argraffu bump gan dri petryal o hashes hyn. Felly, sut yr ydym yn mynd i wneud hynny? Wel, rydym yn rhoi i chi yn ei gyfanrwydd criw o cod, a 'ch jyst rhaid i lenwi'r grid swyddogaeth print. Felly beth mae PrintGrid edrych? Wel ydych chi heibio'r lled ac uchder. Felly, mae gennym allanol 4 dolen, mae hynny'n dolennu dros bob un o'r rhesi o hyn grid yr ydym am ei hargraffu. Yna mae gennym y rhyng-nythu 4 dolen, dyna argraffu dros bob colofn. Felly, ar gyfer pob rhes, rydym yn argraffu am pob colofn, un hash sengl. Yna ar ddiwedd y rhes rydym yn argraffu llinell newydd sengl i fynd i'r rhes nesaf. A dyna ni ar gyfer y grid cyfan. Cwestiwn wyth. Mae swyddogaeth fel PrintGrid dywedir ei yn cael sgîl-effaith, ond nid yn dychwelyd gwerth. Esboniwch y gwahaniaeth. Felly, mae hyn yn dibynnu ar i chi cofio yr hyn y sgîl-effaith yw. Wel, yn dychwelyd value-- rydym yn gwybod nad yw'n PrintGrid cael gwerth dychwelyd, gan fod dde yma mae'n dweud yn ddi-rym. Felly mae unrhyw beth sy'n dychwelyd yn ddi-rym nid yw'n wir yn dychwelyd unrhyw beth. Felly beth yw'r sgîl-effaith? Wel, sgîl-effaith yw unrhyw beth y math yna o yn parhau ar ôl y swyddogaeth ben nid oedd hynny'n newydd ddychwelyd, ac nid oedd yn unig oddi wrth y mewnbynnau. Felly, er enghraifft, gallem newid newidyn byd-eang. Byddai hynny yn sgîl-effaith. Yn yr achos penodol, a sgîl-effaith bwysig iawn yn argraffu ar y sgrin. Felly mae hynny yn sgîl-effaith hynny PrintGrid wedi. Rydym yn argraffu pethau hyn i'r sgrin. A allwch chi feddwl am hynny fel sgîl-effaith, gan fod hynny'n rhywbeth y parhau ar ôl y swyddogaeth hon yn dod i ben. Mae hynny'n rhywbeth y tu allan i gwmpas y swyddogaeth hon yn y pen draw yn cael ei newid, mae'r cynnwys y sgrin. Cwestiwn naw. Ystyried y rhaglen isod, y mae rhifau llinell wedi cael eu hychwanegu ar gyfer mwyn drafodaeth. Felly, yn y rhaglen hon rydym yn unig galw GetString, storio yn hyn o amrywiol s, ac yna argraffu newidyn hwnnw s. OK. Felly eglurwch pam mae un llinell yn bresennol. #include cs50 dot h. Pam mae angen i ni #include cs50 dot h? Wel rydym yn galw'r GetString swyddogaeth, a GetString ei ddiffinio yn y llyfrgell cs50. Felly os nad oedd gennym #include cs50 dot h, byddem yn cael y datganiad ymhlyg y gwall swyddogaeth GetString oddi wrth y compiler. Felly, mae angen i ni gynnwys y library-- mae angen i ni gynnwys y ffeil pennawd, neu ddim arall yw'r compiler bydd cydnabod bod GetString yn bodoli. Eglurwch pam llinell dau yn bresennol. Dot io mor safonol h. Mae'n union yr un fath fel y broblem blaenorol, ac eithrio yn hytrach na delio â GetString, rydym yn sôn am printf. Felly os nad ydym yn dweud ein bod angen i gynnwys safon io dot h, yna ni fyddem yn gallu i ddefnyddio'r swyddogaeth printf, oherwydd bod y compiler Ni fyddai yn gwybod am y peth. Why-- beth yw arwyddocâd o ddi-rym yn unol pedwar? Felly dyma ni wedi int brif (gwagle). Dyna dim ond dweud ein bod nad ydynt yn cael unrhyw llinell orchymyn dadleuon to main. Cofiwch y gallem ddweud int prif cromfachau argv llinyn argc int. Felly dyma ni jyst dweud ddi-rym i ddweud ein bod yn anwybyddu dadleuon llinell gorchymyn. Eglurwch, o ran cof, yn union pa GetString yn unol chwe ffurflenni. GetString yn dychwelyd bloc o cof, amrywiaeth o gymeriadau. Mae wir wedi dychwelyd pwyntydd i'r cymeriad cyntaf. Cofiwch fod llinyn yn seren torgoch. Felly s yn pwyntydd i'r cyntaf cymeriad ym mha bynnag y llinyn yn bod y defnyddiwr safodd o y bysellfwrdd. A bod y cof yn digwydd i gael ei malloced, fel y cof yn y domen. Cwestiwn 13. Ystyried y rhaglen isod. Felly yr holl y rhaglen hon yn ei wneud yn printf-ing 1 rannu gan 10. Felly, pan luniwyd ac ddienyddio, y rhaglen hon allbynnau 0.0, er bod 1 wedi'i rannu â 10 yw 0.1. Felly pam ei fod yn 0.0? Wel, mae hyn oherwydd o is-adran cyfanrif. Felly 1 yn gyfanrif, 10 yn gyfanrif. Felly 1 wedi'i rannu â 10, popeth yn cael ei drin fel cyfanrifau, ac yn C, pan fyddwn yn is-adran cyfanrif, inni gwtogi'r unrhyw bwynt degol. Felly 1 wedi'i rannu â 10 yn cael ei 0, ac yna rydym yn ceisio i argraffu hynny fel fflôt, felly sero hargraffu fel fflôt yw 0.0. A dyna pam ein bod yn cael 0.0. Ystyried y rhaglen isod. Nawr rydym yn argraffu 0.1. Felly dim is-adran cyfanrif, rydym yn unig argraffu 0.1, ond rydym yn argraffu ei i 28 lle degol. Ac rydym yn cael 0.1000 hyn, mae criw cyfan o zeros, 5 5 5, blah blah blah. Felly, y cwestiwn yma yw pam y mae'n ei argraffu, yn lle yn union 0.1? Felly, y rheswm yma yn awr fel y bo'r angen pwynt imprecision. Cofiwch mai fflôt dim ond 32 o ddarnau. Felly, ni allwn ond yn cynrychioli nifer gyfyngedig o fel y bo'r angen gwerthoedd pwynt gyda 32 y rhai darnau. Wel mae 'y pen draw ganmil llawer o werthoedd pwynt arnawf, ac mae nifer anfeidraidd fel y bo'r angen Gwerthoedd pwynt mewn rhwng 0 ac 1, ac rydym yn amlwg yn gallu cynrychioli gwerthoedd hyd yn oed mwy na hynny. Felly mae'n rhaid i aberthu i yn gallu cynrychioli rhan fwyaf o werthoedd. Felly mae gwerth fel 0.1, yn ôl pob golwg Ni allwn gynrychioli hynny yn union. Felly, yn lle gynrychioli 0.1 rydym yn ei wneud y orau y gallwn gynrychioli'r hyn 0.100000 5 5 5. A dyna eithaf agos, ond am lawer o geisiadau rhaid i chi boeni am fel y bo'r angen pwynt imprecision, oherwydd ein bod yn methu gynrychioli holl bwyntiau fel y bo'r angen yn union. Cwestiwn 15. Ystyriwch y cod isod. Rydym yn unig yn argraffu 1 ac 1. Felly nid oes unrhyw tric yma. 1 ac 1 yn gwerthuso i 2, ac Yna, rydym yn argraffu hynny. Mae hyn yn unig printiau 2. Cwestiwn 16. Nawr rydym yn argraffu cymeriad 1 yn ogystal â chymeriad 1. Felly pam mae hyn yn Nid yw argraffwch yr un peth? Wel cymeriad 1 yn ogystal â chymeriad 1, cymeriad 1 Mae gwerth ASCII 49. Felly, mae hyn yn wir yn dweud 49 yn ogystal â 49, a yn y pen draw mae hyn yn mynd i argraffu 98. Felly, nid yw hyn yn argraffu 2. Cwestiwn 17. Cwblhewch y gweithrediad o od isod yn y fath fodd bod y swyddogaeth yn dychwelyd wir os n yn od ac yn ffug os n yn oed. Mae hwn yn un o ddibenion mawr gyfer y gweithredwr mod. Felly, rydym yn cymryd ein dadl n, os yw n mod 2 yn dychwelyd 1, yn dda sy'n golygu bod rhannu'n n erbyn 2 oedd â gweddill. Os yw n wedi'i rannu â 2 roedd gweddill, bod n golygu bod yn od, felly rydym yn dychwelyd yn wir. Else yn dychwelyd ffug. Yr ydych hefyd gallai fod wedi gwneud n mod 2 gydradd sero, yn dychwelyd ffug, arall yn dychwelyd yn wir. Ystyriwch y swyddogaeth recursive isod. Felly os n yn llai na neu'n yn hafal i 1, yn dychwelyd 1, arall dychwelyd n amserau f o n minws 1. Felly beth yw swyddogaeth hon? Wel, mae hyn yn unig yw'r swyddogaeth ffactoraidd. Mae hyn yn cael ei gynrychioli 'n glws fel n ffactoraidd. Felly gwestiwn 19 awr, yr ydym yn awyddus i cymryd y swyddogaeth recursive. Rydym am ei gwneud yn ailadroddol. Felly sut ydym yn gwneud hynny? Dda ar gyfer y staff ateb, ac unwaith eto mae ffyrdd lluosog y gallech fod wedi gwneud hynny, rydym yn dechrau gyda'r cynnyrch hwn int yn hafal i 1. Ac drwy gydol y ar gyfer dolen, rydym yn mynd i gael ei lluosi cynnyrch i yn y pen draw darfod i fyny ag y ffactoraidd llawn. Felly, ar gyfer int ff hafal 2, fi yw yn llai na neu'n hafal i n, i yn ++. Efallai eich bod yn meddwl tybed pam fi yn hafal i 2. Wel, cofiwch fod yma mae'n rhaid i ni sicrhau bod ein achos sylfaenol yn gywir. Felly os n yn llai na neu'n hafal i 1, rydym yn unig yn dychwelyd 1. Felly dros yma, yr ydym yn dechrau am ff hafal i 2. Wel ai fi oedd 1, yna the-- neu pe n yn 1, yna bydd y am ddolen Ni fyddai'n gweithredu o gwbl. Ac felly byddem yn unig cynnyrch dychwelyd, sydd 1. Yn yr un modd, os n yn unrhyw beth yn llai na 1-- pe bai'n 0, negyddol 1, whatever-- byddem yn dal yn dychwelyd 1, sef yr union beth yw'r Fersiwn recursive yn ei wneud. Yn awr, os n yn fwy nag 1, yna rydym yn mynd i wneud o leiaf un ailadroddiad y ddolen hon. Felly, gadewch i ni ddweud yw n 5, yna rydym yn mynd i wneud amserau cynnyrch yn dychwelyd 2. Felly nawr cynnyrch yw 2. Nawr rydym yn mynd i wneud amserau cynnyrch yn dychwelyd 3. Nawr mae'n 6. Amserau Cynnyrch hafal 4, yn awr ei fod yn 24. Amserau Cynnyrch hafal 5, nawr mae'n 120. Felly, yna yn y pen draw, rydym yn dychwelyd 120, sydd yn gywir 5 ffactoraidd. Cwestiwn 20. Dyma'r un lle mae rhaid i chi lenwi yn y tabl hwn gydag unrhyw algorithm a roddir, unrhyw beth yr ydym wedi gweld, bod yn cyd-fynd y rhain rhedeg algorithmig amseroedd hyn amseroedd rhedeg asymptotic. Felly beth yw algorithm sy'n yw omega o 1, ond O mawr o n? Felly gallai fod anfeidrol llawer o atebion yma. Yr un yr ydym wedi gweld yn ôl pob tebyg y rhan fwyaf o yn aml yn chwilio llinellol yn unig. Felly, yn yr achos gorau senario, mae'r eitem rydym yn chwilio amdano yw ar y gan ddechrau o'r rhestr ac felly mewn omega o 1 cam, y peth cyntaf yr ydym yn gwirio, rydym yn unig yn syth yn dychwelyd ein bod yn dod o hyd i'r eitem. Yn y sefyllfa waethaf, mae'r eitem yn ar y diwedd, neu os nad yw'r eitem yn y rhestr o gwbl. Felly, mae'n rhaid i ni chwilio y rhestr gyfan, pob n elfennau, a dyna pam ei fod o o n. Felly, erbyn hyn mae'n rhywbeth sy'n ddau omega o n log n, ac O fawr o n log n. Wel y peth mwyaf perthnasol rydym wedi gweld yma yw cyfuno fath. Felly uno didoli, cofiwch, yn y pen draw Theta o n log n, lle theta diffinnir os yw'r ddau omega ac O fawr yr un fath. Mae'r ddau n log n. Beth sy'n rhywbeth sy'n omega o n, ac O y n sgwario? Wel, unwaith eto mae ' atebion lluosog posibl. Yma rydym yn digwydd i ddweud fath swigen. Byddai fath Mewnosod hefyd yn gweithio yma. Cofiwch fod swigen fath Mae optimeiddio, lle, os ydych yn gallu cael drwy'r rhestr gyfan heb fod angen i'w wneud unrhyw cyfnewidiadau, ac yna, yn dda, gallwn ddychwelyd hynny ar unwaith y rhestr ei ddatrys i ddechrau. Felly, yn y senario achos gorau, 'i' jyst omega o n. Os nad yw 'i' jyst 'n glws rhestr i ddechrau didoli, yna mae gennym O o n sgwâr cyfnewid. Ac yn olaf, rydym yn cael y math dethol i n sgwâr, yn omega ac O. mawr Cwestiwn 21. Beth sy'n gorlif cyfanrif? Wel unwaith eto, yn debyg i yn gynharach, mai dim ond finitely lawer o ddarnau i gynrychioli yn gyfanrif, felly efallai 32 o ddarnau. Gadewch i ni ddweud bod gennym cyfanrif wedi'i lofnodi. Yna yn y pen draw yr uchaf rhif positif gallwn gynrychioli yw 2 i 31 minws 1. Felly, beth sy'n digwydd os ydym yn ceisio Yna cynyddiad hynny cyfanrif? Wel, rydym yn mynd i fynd o 2 i'r 31 minws 1, yr holl ffordd i lawr i negyddol 2 at y 31. Felly mae hyn gorlif cyfanrif yw pan fyddwch yn cadw incrementing, ac yn y pen draw nad ydych yn gallu cael unrhyw uwch a 'i jyst lapio holl ffordd yn ôl gwmpas i gwerth negyddol. Beth am gorlif byffer? Felly byffer overflow-- gofio beth byffer yw. Dim ond darn o gof. Rhywbeth fel arae yn byffer. Felly mae gorlif byffer yw pan byddwch yn ceisio cael mynediad cof tu hwnt i ddiwedd y rhesi. Felly, os oes gennych amrywiaeth o faint 5 a chi ceisiwch gael mynediad braced array 5 neu fraced 6 neu fraced 7, neu unrhyw beth y tu hwnt i'r pen, neu hyd yn oed unrhyw beth braced array below-- negyddol 1-- pob un o'r rheiny yn gorlifo byffer. Rydych yn cyffwrdd cof mewn ffyrdd drwg. Cwestiwn 23. Felly, yn yr un yr ydych ei angen i weithredu strlen. Ac yr ydym yn dweud wrthych eich bod yn gallu cymryd yn ganiataol na fydd s yn null, felly nid oes rhaid i chi gwneud unrhyw siec am null. Ac mae ffyrdd lluosog gallech fod wedi gwneud hyn. Yma, rydym yn unig yn cymryd y syml. Rydym yn dechrau gyda cownter, n. n yn cyfrif faint o gymeriadau mae. Felly, rydym yn dechrau ar 0, ac yna rydym yn ailadrodd dros y rhestr gyfan. S A yw braced 0 hafal i'r cymeriad terminator null? Cofiwch ein bod yn chwilio am cymeriad terminator null i benderfynu pa mor hir y mae ein llinyn yw. Sy'n mynd i derfynu unrhyw llinyn perthnasol. Felly, mae s braced 0 gyfartal at y terminator null? Os nad yw'n, yna rydym yn mynd i edrych ar s braced 1, s braced 2. Rydym yn cadw mynd nes ein ddod o hyd i'r terminator null. Unwaith y byddwn wedi dod o hyd iddo, ac yna n cynnwys cyfanswm hyd y llinyn, a gallwn jyst ddychwelyd hynny. Cwestiwn 24. Felly, mae hyn yw'r un lle rydych yn rhaid i ni wneud y fasnach i ffwrdd. Felly, mae un peth yn dda mewn un ffordd, ond ym mha ffordd y mae'n ddrwg? Felly dyma, uno fath yn tueddu i fod yn gyflymach na'r fath swigen. Wedi dweud that-- yn dda, yno yn atebion lluosog yma. Ond y prif un yw y swigen fath yw omega o n am restr ddidoli. Cofiwch y tabl ni jyst yn gweld yn gynharach. Felly swigen yn didoli omega o n, y senario achos gorau yw ei fod yn gallu jyst yn mynd dros y rhestr unwaith, penderfynu hey beth mae hyn yn barod didoli, a dychwelyd. Cyfuno didoli, ni waeth beth yr ydych yn ei wneud, yn omega o n log n. Felly, ar gyfer y rhestr ddidoli, swigen didoli yn mynd i fod yn gyflymach. Nawr beth am restrau cysylltiedig? Felly gall rhestr cysylltiedig tyfu ac yn crebachu i gyd-fynd cymaint o elfennau yn ôl yr angen. Wedi dweud that-- felly Fel arfer, mae'r gymhariaeth uniongyrchol yn mynd i fod yn gysylltiedig rhestru gydag amrywiaeth. Felly hyd yn oed er y gall arrays yn hawdd tyfu ac yn crebachu i gyd-fynd cymaint o elfennau yn ôl yr angen, rhestr cysylltiedig o'i gymharu â â array-- amrywiaeth yn cael mynediad ar hap. Gallwn mynegai i mewn i unrhyw elfen benodol o'r rhesi. Felly, am restr cysylltiedig, ni allwn dim ond yn mynd i'r pumed elfen, mae'n rhaid i ni groesi o'r cychwyn nes i ni gyrraedd y bumed elfen. Ac mae hynny'n mynd i atal ni rhag gwneud rhywbeth fel chwiliad deuaidd. Wrth siarad am chwiliad deuaidd, chwiliad deuaidd tueddu i fod yn gyflymach na chwiliad llinol. Wedi dweud that-- felly, un peth y bo modd yw na allwch chi ei wneud deuaidd chwilio ar restrau cysylltiedig, gallwch ond ei wneud ar araeau. Ond yn fwy na thebyg yn bwysicach, nad ydych yn gallu gwneud chwiliad deuaidd ar amrywiaeth sydd heb ei datrys. Ymlaen llaw efallai y bydd angen i chi roi trefn yr amrywiaeth, a dim ond wedyn yn gallu ydych yn gwneud chwiliad deuaidd. Felly, os nad yw eich beth yw ddidoli i ddechrau, yna efallai y chwiliad llinol fod yn gyflymach. Cwestiwn 27. Felly ystyried y rhaglen isod, a fydd yn y sleid nesaf. A hon yw'r un lle rydym yn mynd i eisiau datgan yn glir y gwerthoedd ar gyfer gwahanol newidynnau. Felly gadewch i ni edrych ar hynny. Felly llinell un. Mae gennym int x yn hafal i 1. Dyna'r unig beth sydd wedi digwydd. Felly, yn y llinell un, rydym yn gweld yn ein tabl, hwnnw y, a, b, ac tmp i gyd duo. Felly beth yw x? Wel rydym yn unig yn gosod ei bod yn hafal i 1. Ac yna llinell dau, wel, gwelwn fod y ei osod i 2, ac mae'r tabl yn barod llenwi ar ein cyfer. Felly x yw 1 ac y yw 2. Yn awr, llinell tri, rydym yn awr yn y tu mewn i'r swyddogaeth cyfnewid. Beth wnaethon ni basio i gyfnewid? Rydym yn pasio ampersand x am a, ac ampersand y i b. Lle mae'r broblem yn gynharach datgan bod y cyfeiriad o x yw 0x10, a chyfeiriad y yw 0x14. Felly, a a b yn hafal i 0x10 a 0x14, yn y drefn honno. Nawr yn llinell tri, beth yw x ac y? Wel, nid oes dim wedi newid am x ac y yn y fan hon. Hyd yn oed er eu bod yn y tu mewn i brif ffrâm stac, maent yn dal i gael yr un gwerthoedd yr oeddent o'r blaen. Nid ydym wedi addasu unrhyw cof. Felly x yw 1, y yw 2. Mae pob hawl. Felly nawr dywedasom tmp int cyfartal i serennu a. Felly, ar linell pedwar, popeth yr un fath ac eithrio ar gyfer tmp. Nid ydym wedi newid unrhyw werthoedd o unrhyw beth ac eithrio ar gyfer tmp. Rydym yn gosod tmp gyfartal i serennu a. Beth yw seren a? Wel, mae pwyntiau i x, Felly seren a yn mynd i x cyfartal, sydd 1. Felly mae popeth yn cael ei gopïo lawr, ac tmp wedi ei osod i 1. Nawr bod y llinell nesaf. Seren a seren yn gyfartal b. Felly, gan y llinell five-- yn dda eto, mae popeth yr un fath ac eithrio beth bynnag seren a yw. Beth yw seren a? Wel, yr ydym newydd ei ddweud seren a yw x. Felly, rydym yn newid x i seren gyfartal b. Beth yw seren b? y. b yn cyfeirio at y. Felly seren b yn y. Felly, rydym yn gosod x yn hafal i y, a phopeth arall yr un fath. Felly rydym yn gweld yn y rhes nesaf bod x yn awr 2, ac mae'r gweddill yn cael eu dim ond copïo i lawr. Nawr yn y llinell nesaf, seren b hafal tmp. Wel, yr ydym newydd ei ddweud seren b yn y, felly rydym yn gosod y cyfartal i tmp. Mae popeth arall yr un fath, felly mae popeth yn cael ei gopïo i lawr. Rydym yn gosod y cyfartal i TMP, sef un, a phopeth arall yr un fath. Nawr yn olaf, llinell saith. Rydym yn ôl yn y brif swyddogaeth. Rydym yn chwilio am gyfnewid yn cael ei orffen. Yr ydym wedi colli a, b, ac tmp, ond yn y pen draw, rydym yn Nid yn newid unrhyw werthoedd o unrhyw beth yn y fan hon, ni jyst adysgrifia x ac y lawr. Ac rydym yn gweld bod x ac y yn erbyn hyn 2 a 1 yn lle 1 a 2. Mae'r cyfnewid wedi cyflawni yn llwyddiannus. Cwestiwn 28. Tybiwch eich bod yn dod ar draws y negeseuon gwall isod yn ystod oriau swyddfa y flwyddyn nesaf fel Awdurdod Cymwys neu TF. Cynghori sut i atgyweiria pob un o'r gwallau hyn. Cyfeirio Felly anniffiniedig at GetString. Pam y gallai byddwch yn gweld hyn? Wel, os bydd myfyriwr yn defnyddio GetString yn eu cod, maent wedi briodol hash cynnwys cs50 dot h i gynnwys y llyfrgell cs50. Wel, yr hyn y maent yn Mae angen at atgyweiria gwall hwn? Mae angen iddynt wneud lcs50 diferyn yn y llinell orchymyn pan fyddant yn llunio. Felly, os nad ydynt yn pasio lcs50 dash chlang, eu bod yn ddim yn mynd i gael y gwir cod sy'n gweithredu GetString. Cwestiwn 29. Ymhlyg datgan strlen swyddogaeth llyfrgell. Wel mae hyn yn awr, nid oes ganddynt gwneud y hash briodol cynnwys. Yn yr achos penodol, y ffeil pennawd mae angen iddynt gynnwys yn llinyn dot h, ac yn cynnwys llinyn dot h, yn awr y student-- awr y compiler yn cael mynediad at y datganiadau o strlen, ac mae'n gwybod bod eich cod strlen yn defnyddio yn gywir. Cwestiwn 30. Mwy o addasiadau y cant na dadleuon data. Felly beth yw hwn? Wel cofiwch fod y rhain y cant signs-- sut y maent yn berthnasol i printf. Felly, yn printf gallem percent-- efallai y byddwn yn argraffu rhywbeth fel y cant i slaes n. Neu efallai y byddwn yn argraffu yn hoffi i cant, gofod, fi cant, gofod, y cant i. Felly, ar gyfer pob un o'r rheini arwyddion y cant, mae angen i basio newidyn ar ddiwedd y printf. Felly os ydym yn dweud paren printf cant ff n slaes paren agos, wel, yr ydym yn dweud ein bod ni'n argraffu yn gyfanrif, ond yna nid ydym yn pasio printf cyfanrif i mewn gwirionedd yn argraffu. Felly dyma fwy o cant trawsnewidiadau na dadleuon data? Dyna ddweud bod gennym criw cyfan o percents, ac nid oes gennym ddigon o newidynnau i lenwi mewn gwirionedd yn y percents hynny. Ac yna yn bendant, ar gyfer cwestiwn 31, bendant yn colli 40 bytes mewn un bloc. Felly mae hwn yn gamgymeriad Valgrind. Mae hyn yn dweud bod rhywle yn eich cod, gennych dyraniad sy'n 40 bytes fawr er mwyn i chi malloced 40 bytes, ac yr ydych byth yn rhyddhau ei. Mae'r rhan fwyaf tebygol 'ch jyst angen i ddod o hyd i gollwng cof, a dod o hyd lle mae angen i chi ddim bloc yma o gof. A chwestiwn 32, ysgrifennu annilys o faint 4. Unwaith eto mae hyn yn wall Valgrind. Nid oes gan hyn i'w wneud gyda gollyngiadau cof yn awr. Mae hyn, mae'r rhan fwyaf likely-- wyf yn golygu, 'i' rhyw fath o hawliau cof annilys. Ac yn fwyaf tebygol mae hyn yn rhai math o gorlif byffer. Lle mae gennych amrywiaeth, efallai amrywiaeth cyfanrif, a gadewch i ni yn dweud ei fod o faint 5, ac rydych ceisio cyffwrdd amrywiaeth braced 5. Felly, os ydych yn ceisio ysgrifennu at hynny gwerth, nid yw hynny'n darn o gof eich bod mewn gwirionedd yn cael mynediad i, a felly rydych yn mynd i gael gwall hwn, gan ddweud ysgrifennu annilys o faint 4. Valgrind yn mynd i gydnabod eich bod yn ceisio cyffwrdd cof amhriodol. A dyna ni am quiz0. Rwy'n Rob Bowden, ac mae hyn yn CS50.