DAVID Malan: Hello, u merħba lura għall CS50. Allura dan huwa l-aħħar ta 'erba' ġimgħat. Just tħabbira wieħed ewwel. Allura l-hekk imsejjaħ ħames Tnejn tkun ġejjin up dan it-tnejn li ġejjin. Din hija l-opportunità għall-bidla minn Sib / insodisfaċenti għal grad ittra, jew minn grad ittra SAT / insodisfaċenti. Annoyingly, dan il-proċess ma jeħtieġu firma, għaliex inti għandek timla out waħda ta 'dawk roża żid / qatra forom. Minħabba teknikament, l-SAT / insodisfaċenti Verżjoni u l-verżjoni grad ittra jkollhom in-numri katalgu distinti. Imma l-ebda big deal. Just toħroġ lili jew lil Rob jew Lauren fi kwalunkwe punt. Jew email us jekk inti ma jkollhom it-tip ta 'burokrazija li għandek bżonn illum, u aħna se jkun żgur biex jgħinuk tieħu ħsieb ta 'dak qabel it-Tnejn. Kull dritt, hekk illum - attwalment, hemm daqsxejn ta 'eku. Nistgħu tone me isfel daqsxejn? OK. Allura llum, aħna jintroduċu suġġett magħrufa bħala pointers. U jien ser jammettu li dan huwa wieħed mill- suġġetti aktar kumplessi li għandna t-tendenza li ikopru f'dan il-klassi, jew verament xi kors ta 'introduzzjoni li juża C. Iżda tieħu kelma tiegħi għaliha, partikolarment jekk moħħok iħoss bent ftit aktar llum u fil-ġimgħat li ġejjin. Mhuwiex rappreżentant ta 'inti jkollok kwalunkwe agħar f'dan ifisser biss li huwa suġġett partikolarment sofistikat li I wegħda, ftit ġimgħat għalhekk, se jidhru wisq impressjonanti sempliċi retrospettivament. I still remember din il-ġurnata. I kien seduta fil Elliott Dining Hall, seduta li jmiss TF Nishat tiegħi Mehta, li kien residenti ta 'Elliott dar. U għal xi raġuni, dan suġġett biss klikks. Li huwa li jgħidu li jien wisq tħabtu miegħu għal xi ammont ta 'żmien, iżda I se nagħmlu l-almu tiegħi biex jgħinu biex jiġu evitati kwalunkwe tali ġlieda ma 'tema li finalment huwa pjuttost qawwija. Fil-fatt, waħda mit-temi aħna ser jiddiskutu fil-ġimgħat li ġejjin huwa li ta 'sigurtà, u kif inti tista' fil-fatt jisfruttaw magni b'modi li ma kinux intiżi. U dawk isfruttamenti huma tipikament ir-riżultat ta 'bugs, żbalji li aħna nies jagħmlu billi ma fehim xi tal-implimentazzjoni sottostanti Dettalji via liema programmi huma magħmula. Issa jagħmlu din jidhru l-aktar utenti friendly, ħsibt I d jkollhom 10 tieni preview ta 'claymation ftit figura jismu Binky li ġie ppreżentat ħajja minn ħabib ta 'tagħna fil Stanford, professur Nick Parlante. Allura ippermettuli li jtik din teaser ta 'Binky hawn. [Daqq video] -Ħej, Binky. Wake up. Wasal iż-żmien għall-gost pointer. -X'hemm li? Tgħallem dwar pointers? Oh, goodie. [Daqq video END] DAVID Malan: Dan huwa Stanford xjenza tal-kompjuter. Allura aktar fuq li li ġejjin. [Applause] DAVID Malan: Jiddispjacini, Nick. Allura ifakkar li l-aħħar darba aħna spiċċajna fuq dan cliffhanger verament eċċitanti fejn din il-funzjoni biss ma ħadmux. Mill-inqas intuwittivament, li ħass bħal din għandha taħdem. Simply iskambji il-valuri ta 'żewġ numri interi. Iżda tfakkar li meta aħna stampata tal- Valuri oriġinali prinċipali, waħda u tnejn, kienu għadhom wieħed u tnejn u mhux tnejn u wieħed. So let me attwalment jaqilbu fuq l-appliance. U I kiteb up a bit tal-kodiċi skeletali fil javvanzaw hawn, fejn I jsostnu li x se tkun l-1, y se jkun 2. I imbagħad jistampa tnejn tagħhom Valuri li jistampa f. I imbagħad titlob stabbiliti hawn li aħna qed tmur biex tpartit lilhom. I ħalla post vojt hawn għalina biex timla llum ftit mument. Imbagħad, jien ser jsostnu li l- żewġ varjabbli ġew skambjati. Imbagħad jien ser jistampaw minnhom mill-ġdid. U għalhekk wieħed jittama, I għandha tara 1, 2. 2, 1. Dik hija l-sempliċi super għan dritt issa. Allura kif do we go dwar iskambji żewġ varjabbli? Ukoll jekk nipproponi hawnhekk li dawn tazzi jafu jirrappreżentaw memorja fil-kompjuter. Dan huwa ftit gdim, dan hija ieħor ftit gdim. Jista għandna voluntier come fuq u ' ħallat us xi xarbiet, jekk familjari? Come fuq up. X'hemm isem tiegħek? JESS: Jess. DAVID Malan: Jess? Come on up, Jess. Jekk inti ma mind, għandna biex tpoġġi l- Google ħġieġ fuq inti sabiex inkunu nistgħu immortalize dan. OK, ħġieġ. Jirreġistra video. U OK, aħna tajba li jmorru ma Jess hawn. Kull dritt. Nizza li jissodisfaw inti. Allura dak li nixtieq li inti tagħmel hawn - jekk inti tista ', pjuttost malajr - biss pours us nofs tazza larinġ meraq u nofs tazza tal-ħalib, jirrappreżentaw b'mod effettiv in-numri 1 fl tazza waħda u 2 fit-tazza oħra. Din se tkun footage tajba. JESS: Jiddispjacini. DAVID Malan: No, no. Huwa OK. Nizza. Kull dritt, hekk għandna erba 'bytes valur ta 'meraq tal-larinġ. Aħna ser imsejħa l-valur 1. Issa erba 'bytes ieħor li jiswew ta' ħalib. Se sejħa hija valur 2. Allura x u y, rispettivament. Kull dritt, hekk issa jekk il-ħidma fuq naħa - għalik, Jess, quddiem ta 'kulħadd ta 'klassi tiegħek - huwa li tpartit l-valuri ta 'xuy bħal li aħna rridu l-meraq tal-larinġ fil- tazza oħra u l-ħalib f'dan tazza, kif jista inti - qabel ma attwalment tagħmel dan - tmur dwar kif isir dan? OK, għaqli deċiżjoni. Għalhekk ikollok bżonn ftit aktar memorja. Mela ejja jallokaw temporanju tazza, jekk inti se. U issa tipproċedi biex tpartit xuy. Eċċellenti. Allura ħafna isir ukoll. Grazzi tant, Jess. Hawnhekk inti. A souvenir ftit. OK, hekk ovvjament, idea sempliċi super. Kompletament intuwittivi li għandna bżonn daqsxejn aktar spazju għall-ħażna - f'din il-forma, tazza - jekk aħna fil-fatt tixtieq li tpartit dawn iż-żewġ varjabbli. Mela ejja jagħmlu eżattament dan. Up hawn fl bejn fejn nitlob jien se tkun qed twettaq xi iskambji, I ser imorru quddiem u tiddikjara temperatura. U jien ser twaqqaf it ugwali għal, per eżempju, x. Imbagħad jien ser jibdlu l-valur tal- x bħad Jess ma hawn ma ' ħalib u meraq tal-larinġ li jkun ugwali għal y. U jien se jibdlu y li jkun ugwali li ma x, għaliex issa aħna se jkunu staġnati f'ċirku, iżda pjuttost TEMP. Fejn I temporanjament - jew fejn Jess temporanjament tpoġġi l-meraq tal-larinġ qabel clobbering li tazza mal-ħalib. So let me aqbad issa u jagħmlu dan. Huwa sejjaħ noswap.c. U issa let me run ebda swap. U fil-fatt nara, jekk I jespandu l- tieqa ftit, li x hija l-1, y huwa 2. U allura x hija 2, y hija l-1. Iżda tfakkar li nhar it-Tnejn għamilna affarijiet ftit differenti fejn I minflok implimentati funzjoni helper, jekk inti se, li kien attwalment null. I sejħitilha tpartit. I tatha żewġ parametri, u I imsejħa minnhom u I imsejħa minnhom b. Franchement, I jistgħu jsejħulhom xuy. M'hemm xejn waqfien me milli jagħmlu dan. Iżda nixtieq jargumentaw li huwa mbagħad ftit ambigwa. Minħabba jfakkru għal It-tnejn li aħna sostna li dawn il-parametri kienu kopji tal-valuri għaddew pulzieri Allura hija biss messijiet mal tiegħek mind, I think, jekk tuża eżattament l-istess varjabbli. So I ser minflok jsejħulhom a u b, biss għaċ-ċarezza. Iżda nistgħu jsejħulhom aktar xejn irridu. U jien ser kopja u paste effettivament dan il-kodiċi mill-up hemm isfel fil hawn. Minħabba I biss raw li taħdem. Allura dak fil-forma pjuttost tajba. U jien ser jibdlu x tiegħi għal, x tiegħi għal, y tiegħi biex b uy tiegħi biex b. Allura fi kliem ieħor, l-istess loġika eżatt. L-istess ħaġa eżatt li Jess għamlet. U allura l-ħaġa waħda I għandek tagħmel up hawn, naturalment, huwa issa jinvokaw din funzjoni, jew sejħa din il-funzjoni. So I se sejħa din il-funzjoni ma 'żewġ inputs, u x y, u hit Save. Kull dritt, hekk fundamentalment l-istess ħaġa. Fil-fatt, stajt probabbilment għamel il-programm kumplessi bla bżonn billi kitba ta 'funzjoni li jinsab biss tieħu xi sitt linji ta 'kodiċi billi I qabel kienu implimentaw dan biss tlieta. So let me aqbad issa u remake dan, jagħmlu l-ebda swap. Kull dritt, I invitat up here. Dan għandu jkun żball li inti tista ' tara aktar komunement bħala tiegħek programmi nikseb aktar kumplessi. Iżda hemm jiffissaw faċli. Let me iscroll back up here. U x'inhu l-ewwel żball jien jaraw? Dikjarazzjoni impliċita. Xi jfisser li tipikament jindika? Oh, I nesa l-prototip. I nesa li jgħallmu l-kompilatur li tpartit se jibqgħu jeżistu anke jekk huwa ma teżistix fil-bidu nett tal-programm. Hekk jien biss se ngħid null, tpartit, int, a b int, b'waqfa u virgola. Hekk jien mhux ser reimplement dan. Imma issa jaqbel x'hemm stabbiliti hawn. U avviż, in-nuqqas ta 'punt u virgola hawnhekk, li ma tkunx meħtieġa meta implimentazzjoni. So let me remake dan, jagħmlu l-ebda swap. Forma ferm aħjar. Mexxi l-ebda swap. U kkritikat dan. Issa aħna qed lura fejn konna nhar it-Tnejn, meta l-ħaġa ma tpartit. U x'inhu l-ispjegazzjoni intuwittivi għal għaliex dan huwa l-każ? Yeah? STUDENT: [inaudible]. DAVID Malan: Eżattament. Allura aub huma kopji ta 'xuy. U fil-fatt, kull darba li inti kont qed sejħa funzjoni s'issa li tgħaddi varjabbli bħall ints - daqstant swap qed tistenna hawn - inti guys kienu qed jittrasferixxu fl kopji. Issa li ifisser li jieħu xi ftit ta 'żmien, qasma tat-tieni, għall- kompjuter li kopja tal-bits minn wieħed varjabbli fl-bits ta 'ieħor. Iżda li mhux tali big deal. Iżda dawn qed madankollu kopja. U hekk issa, fil-kuntest ta 'tpartit, I am fil-fatt b'suċċess tibdil ta 'u b. Fil-fatt, ejja do a quick sanità check. Stampa f a huwa% i, linja ġdida. U plug ejja fil. Issa ejja jagħmlu l-istess ħaġa ma 'b. U ejja jagħmlu l-istess ħaġa hawn. U issa, let me kopja dawk l-istess linji mill-ġdid fil-qiegħ tal-funzjoni wara tliet linji tiegħi ta 'interessanti seta eżegwit, u tipprintja u b darb'oħra. Allura issa ejja jagħmlu dan, jagħmlu l-ebda swap. Let me jagħmlu l-tieqa terminal a bit taller, sabiex inkunu jista 'jara aktar minnu f'daqqa. U run ebda swap. x hija l-1, y huwa 2. a huwa 1, b huwa 2. U mbagħad, a hija 2, b hija l-1. Għalhekk qed taħdem, bħad Jess ma hawn ġewwa ta 'swap. Iżda naturalment, huwa li l-ebda effett fuq l-varjabbli fil prinċipali. Allura rajna trick li biha aħna jista jiffissaw dan, id-dritt? Meta inti qed iħabbtu wiċċhom ma 'dan scoping kwistjoni, inti tista 'biss Punt u jagħmlu x uy liema tip ta 'varjabbli minflok? Inti jista 'jagħmilhom globali. Tpoġġihom fuq nett tal-fajl kif għamilna, anki fil-logħba tal-15. Aħna nużaw varjabbli globali. Iżda fil-kuntest tal-logħba ta '15, huwa raġonevoli li jkollhom globali varjabbli li jirrappreżenta l-bord, minħabba l-intier ta '15.c hija kollha dwar implimentazzjoni din il-logħba. Dak hu l-fajl jeżisti tagħmel. Iżda f'dan il-każ hawnhekk, jien sejħa swap funzjoni. Irrid li tpartit żewġ varjabbli. U għandu tibda tħossok ftit sloppy jekk is-soluzzjoni kollha ta 'tagħna problemi meta aħna run fis ambitu kwistjonijiet huwa jagħmilha globali. Minħabba malajr ħafna programm tagħna huwa se ssir pjuttost mess. U aħna ma li kemxejn ħafna bħala riżultat 15.c. Iżda jirriżulta hemm mod aħjar għal kollox. Let me fatt imorru lura u tħassar il- jistampa l-f, biss biex jissimplifikaw dan il-kodiċi. U let me jipproponu li dan, fil-fatt, huwa ħażin. Imma jekk jien minflok iżidu f'xi asterisks u stilel, I jista 'minflok jibdlu din funzjoni fis waħda li attwalment operattiv. So let me jmorru lura hawn u jammettu qal asteriski hija dejjem diffiċli, so I ser jgħidu istilel. I ser biss fess sa li wieħed. Kull dritt. U issa, dak li jien ser biex tagħmel minflok? Allura l-ewwel nett, jien ser tispeċifika li minflok jgħaddu minn int fis il-funzjoni tpartit, jien minflok ta 'se ngħid star int. Issa, dak ma l-istilla jindika? Dan huwa dan il-kunċett ta 'pointer li Binky, il-karattru claymation, kien jirreferu għall mument ilu. Allura jekk ngħidu star int, it-tifsira ta ' dan issa huwa li mhux se jkun għaddiet fl-valur tagħha. Huwa mhux se jiġu kkupjati pulzieri Pjuttost, l-indirizz ta 'huwa se tiġi mgħoddija pulzieri Allura ifakkar li ġewwa tal-kompjuter tiegħek huwa mazz sħiħ ta 'memorja, inkella magħrufa bħala RAM. U li RAM huwa biss mazz sħiħ ta 'bytes. Hekk jekk Mac tiegħek jew PC tiegħek żewġ gigabytes, inti għandek 2 biljun bytes ta 'memorja. Issa ejja biss jissoponi li biss biex żżomm affarijiet sbieħ u ordnat, aħna tassenja indirizz - numru - għal kull byte ta 'RAM fil-kompjuter tiegħek. L-ewwel byte ta 'dawk 2 biljun huwa billi numru żero. Il-wieħed li jmiss huwa numru byte wieħed, in-numru tnejn, it-triq kollha fuq up, dot dot dot, għal madwar 2 biljuni. Allura inti tista 'numru ta' bytes tal-memorja fil-kompjuter tiegħek. Mela ejja nassumu li dak hu rridu nfissru minn indirizz. Allura meta nara int star a, x'inhu għaddej għandhom jiġu mgħoddija fil swap issa huwa l- indirizz ta '. Mhux valur tagħha, iżda tkun xi tkun postali tagħha indirizz huwa, biex ngħidu hekk - post tagħha fil RAM. U l-istess għall-b, jien ser jiġifieri l-istess ħaġa. Int, star, b. Bħala twarrib, teknikament l-istilla tista 'tmur f'postijiet oħra. Iżda aħna ser standardizzati fuq l-istilla qed dritt li jmiss għall-tip data. Allura tpartit firma issa jfisser, agħti lili l-indirizz ta 'int, u sejħa dak l-indirizz a. U jagħtu me indirizz ieħor ta ' int u sejħa li jindirizzaw b. Imma issa kodiċi tiegħi hawn għall-bidla. Għaliex jekk Niddikjara temperatura int - li għadu ta int tip - iżda I taħżen fiha ta ', liema tip ta 'valur? Biex ikunu ċari, jien tqegħid ta 'a ma' il-kodiċi kif miktub dritt issa? Jien tqegħid tal-post fil-. Imma jien ma jimpurtahom dwar il- post issa, id-dritt? Temp jeżisti biss Jess "tielet tazza jeżistu, għal liema skop? Li jaħżen valur. Ħalib jew meraq tal-larinġ. Mhux li attwalment jaħżnu l-indirizz ta ' waħda minn dawk l-affarijiet, li jħoss ftit tagħmel sens f'dan reali kuntest dinji xorta waħda. Allura verament, dak li nixtieq li jitqiegħdu fil temperatura mhuwiex l-indirizz ta ', iżda l- kontenut ta '. Mela jekk huwa numru bħal 123, dan huwa l-byte 123 ta 'memorja li biss jiġri li jkun jokkupaw, li l-valur fil-jiġri li jkun jokkupaw. Jekk Irrid immur għal dak l-indirizz, I bżonn biex ngħid star a. Bl-istess mod, jekk I kellhom jibdlu x'hemm fl-indirizz a, nibdel dan biex jibdew. Jekk irrid li jaħżen fil x'hemm fil- post ta 'ma' dak l fil-post fil b, star b star. Għalhekk fil-qosor, anke jekk dan ikun pjuttost mhux għarqa fil s'issa - u I ma jistennewx li dan iwassal tant mgħaġġel - tirrealizza li kollha qed nagħmel huwa prefiss dawn il stilla għall-varjabbli tiegħi, qal ma grab il-valuri. Tbiddilx l-valuri. Iżda, mur dawk l-indirizzi u jiksbu l-valur. Mur f'dak l-indirizz u l-bidla il-valur hemmhekk. Allura issa let me iscroll lura sal-quċċata, biss biex jiffissaw din il-linja hawn, biex jibdlu l-prototip biex jaqblu. Imma I issa jeħtieġ li jagħmlu ħaġa waħda oħra. Intuwittivament, jekk stajt mibdula-tipi ta 'argumenti li l-iskambju qed tistenna, x'iktar għandi bżonn biex bidla fil-kodiċi tiegħi? Meta I call swap. Minħabba dritt issa, dak am I tgħaddi li tpartit xorta? Il-valur x u l-valur ta 'y, jew il-ħalib u l-meraq tal-larinġ. Imma jien ma trid tagħmel dan. I minflok jridu jgħaddu dak? Il-post ta 'x u il-post ta 'y. X'inhuma indirizzi postali tagħhom, biex ngħidu hekk. Allura biex tagħmel dan, hemm xi ampersand. Ampersand tip ta 'ħsejjes bħal indirizz. hekk n, ampersand, l-indirizz ta 'x, u l-indirizz ta' y. Allura huwa intenzjonat li nużaw ampersands meta ssejjaħ il-funzjoni, u stilel meta tiddikjara u meta implimentazzjoni tal-funzjoni. U jaħsbu biss tal ampersand bħala l- indirizz tal-operatur, u stilel kif l- jmorru hemm operatur - jew, b'mod aktar xieraq, l- operatur dereference. Allura li l-lott kollu ta 'kliem biss biex jgħidu li issa, wieħed jittama, swap va biex tkun korretta. Let me imorru quddiem u jagħmlu - ejja fil-fatt tibdel isem il-fajl, lest dan il-programm għadu jissejjaħ ebda swap. I jsostnu li aħna ser sejħa hija swap.c issa. Sabiex tagħmel, tpartit. Dot, slash, tpartit. U issa fil-fatt, huwa x 1, y huwa 2. U mbagħad, x hija 2, y hija waħda. Well ejja ara jekk aħna ma tistax tagħmel dan a ftit differenti dwar x'hemm jiġri hawn fuq. L-ewwel, let me zoom fl fuq tagħna tpinġija iskrin hawn. U let me tipproponi għal mument - u kulmeta I tfassal hawnhekk se jkunu riflessi up issa hemm - let me jipproponi li hawn mazz sħiħ ta 'memorja, jew RAM, ġewwa tal-kompjuter tiegħi. U dan ikun in-numru gidma, ejja ngħidu, 1. Dan se jkun bytes numru 2. U jien ser tagħmel mazz sħiħ aktar, u allura mazz ta 'dot dot tikek li jindikaw li hemm 2 biljun fis- ta 'dawn l-affarijiet. 4, 5, u oħrajn. Allura hemm l-ewwel ħames bytes ta 'memorja tal-kompjuter tiegħi. Kull dritt? Ftit minn 2 biljuni. Imma issa jien ser tipproponi dan li ġej. Jien ser nipproponi li x ser jaħżnu in-numru 1, uy va li jaħżen in-numru 2. U let me imorru quddiem issa u jirrappreżenta dawn il-valuri kif ġej. Ejja nagħmlu dan kif ġej. Agħti me wieħed biss sekonda. Tieni waħda. OK. Irrid nagħmel dan ftit - ejja tagħmel dan mill-ġdid. Inkella jien ser u bl-użu istess numri, mhux intenzjonalment, minn darba. Hekk biss hekk aħna numri differenti biex jitkellmu dwar, ejja sejħa dan byte numru 123, 124, 125, 126, u dot dot dot. U let me jsostnu issa li jien ser tpoġġi l-valur 1 hawn, u l-valur 2 hawn, magħrufa wkoll bħala xuy. Allura hija biss hekk jiġri li dan huwa x, dan huwa y. U biss minn xi ċans każwali, l- kompjuter, is-sistema operattiva, ġara li tpoġġi x fil-lokalità numru 123. U y spiċċaw fil-lokalità 124 - kkritikat dan. I kellha tiffissa dan. Oh bniedem, għandi verament jixtiequ jagħmlu dan? Iva, nixtieq li jiffissaw dan u b xierqa dwar dan illum. Jiddispjacini, ġodda fuq dan. 127, 131, u jien ma riedx li jkun dan kumplessi, iżda għaliex ma I jibdlu l- numri hemmhekk? Għaliex nixtieq l ints li fil-fatt tkun erba bytes. Mela ejja tkun anali super dwar dan. B'tali mod li jekk jiġri li 1 jiġu indirizzati 123, l-2 se tkun fl-indirizz 127 għaliex dan huwa biss 4 byes bogħod. Li kollox. U aħna ser tinsa dwar kollha ta 'l- indirizzi l-oħra fid-dinja. Allura x hija fil lokazzjoni 123, y hija fil post 127. U issa, liema do I attwalment trid tagħmel? Meta I call swap issa, x'hemm attwalment għaddejjin? Well, meta I sejħa swap, jien tgħaddi fis l-indirizz tal xu l-indirizz ta 'y. Għalhekk per eżempju, jekk dawn iż-żewġ biċċiet tal-karta issa jirrappreżentaw it-tnejn argumenti au b li tpartit, dak am I ser jikteb fuq l-ewwel ta 'dawn, li jien ser sejħa jirreferu għalih bħala? Eżattament, 123. Allura dan nitlob huwa. Dan huwa l-parametru a. Jien tqegħid-indirizz ta 'x fil hemmhekk. X'hemm li? X'hemm li? No, no. Li OK. Still tajba, għadu tajjeb. Allura dan huwa. U issa fit-tieni biċċa karta, din se tkun b, u dak am I se jkun miktub fuq din il-biċċa ta 'karta? 127. Allura l-unika ħaġa li biddel peress javżak preċedenti tagħna ta 'din l-istorja hija, minflok litteralment 1 u 2, jien ser jgħaddu 123 u 127. U jien issa se timplimenta dawn ġewwa ta 'din il-kaxxa, id-dritt? Allura li kaxxa s-sewda issa jirrappreżenta il-funzjoni tpartit. Sadanittant, ejja issa jkollhom xi ħadd jimplimentaw il-funzjoni tpartit. Would xi ħadd up here tixtieq voluntier? Come fuq up. X'hemm isem tiegħek? Charlie. Kull dritt, Charlie. Come fuq up. Allura Charlie huwa se jkollu ir-rwol ta 'kaxxa s-sewda tagħna. U Charlie, dak I tixtieq li tagħmel issa qed timplimenta tpartit b'tali mod li, minħabba dawn iż-żewġ indirizzi, inti kienu attwalment għaddejjin li jibdlu l-valuri. U jien ser whisper fil-widnejn tiegħek kif jitmexxa l-TV hawn. Allura aqbad, u int l-kaxxa s-sewda. Reach fil hemmhekk. What valuri tara għal, u dak valuri tara għal b? CHARLIE: a huwa 123 u b huwa 127. DAVID Malan: OK, eżattament. Issa nieqaf hemm għal ftit mument. L-ewwel ħaġa int ser tagħmel issa, skont il-kodiċi - li I issa ser pull up fuq l-iskrin - se tkun li talloka ftit daqsxejn ta 'memorja imsejħa temperatura. Hekk jien ser jimxi 'l quddiem u jtik li memorja. Allura dan se tkun terz varjabbli li inti għandek aċċessibbli għal ċempilt temperatura. U liema huma inti ser jikteb fuq il-biċċa temperatura tal-karta? CHARLIE: Pointers, right? DAVID Malan: OK, ukoll mhux neċessarjament pointers. Allura l-linja tal-kodiċi li stajt enfasizzata fuq il-lemin, ejja tibda hemmhekk. Hija tgħid star a. Allura bħalissa ħażna in-numru 123. U biss intuwittivament, liema ma star 123 jfisser? Iżda speċifikament, jekk ikun 123, star mezz liema? Il-valur ta '. Jew aktar każwali, jmorru hemm. So let me jipproponi li, li jkollu l-kontribut in naħa tiegħek, aqbad u jittrattaw dak bħallikieku huwa mappa. U jimxu lilek innifsek fuq il-kompjuter tal- memorja, u ssib us dak li huwa fil-post 123. Eżattament. Allura naraw fil-lokalità 123 huwa dak, ovvjament? OK, iva, liema valur issa huma inti ser jitqiegħdu fis temperatura? Eżattament. Allura aqbad u tagħmel dan. U jiktbu n-numru 1 fuq il-biċċa ta ' karta thats bħalissa titolat temp. U issa l-pass li jmiss li int ser jimplimentaw se tkun dak. Ukoll, fuq il-lemin tal- linja li jmiss tal-kodiċi hija stilla b. b, tal Naturalment, ħwienet indirizz. Li tindirizza 127. Star b ifisser dak, każwali jitkellem? Mur f'dak il-post. Allura aqbad u ssib us x'hemm fil-post 127. OK. Of course, fil-post 127, għadu l-valur 2. Allura dak li huma inti tmur issa store fi x'ikun l fil-post fil-? Allura star mezz tmur għall-post ta '. X'inhu l-post ta '? Eżattament. Allura issa, jekk inti tixtieq li tibdel x'hemm f'dak il-post - I ser imorru quddiem u run l-eraser huma hawnhekk. U issa poġġih lura fuq il-brush. Dak in-numru huma inti ser jikteb f'dik il-kaxxa vojta issa? Eżattament. Allura din il-linja tal-kodiċi, li jkun ċar - let me nieqaf dak Charlie qed jagħmel u jfakkru, dak hu biss isir huwa jikteb fil-kaxxa fil-lokalità 123 il-valur li kien preċedentement fil b. U hekk aħna issa stajt implimentati tabilħaqq din it-tieni linja tal-kodiċi. Issa sfortunatament, hemm xorta linja waħda fadal. Issa dak li huwa fil temperatura, litteralment? Huwa ovvjament in-numru wieħed. Li mhux l-indirizz. Huwa biss numru, tip ta ' varjabbli minn ġimgħa. U issa meta inti tgħidli star b, dan ifisser mur l-indirizz b, li huwa ta ' kors hawn. Allura ladarba inti naslu s'hemm - I ser imorru quddiem u tħassar x'hemm attwalment hemm - u liema huma inti ser jikteb issa fil 127 post? CHARLIE: Temp, li hija waħda. DAVID Malan: Temp, li hija waħda. U dak li jiġri għall temperatura fl-aħħar? Well, aħna ma verament jafu. Aħna ma verament kura. Kwalunkwe ħin konna implimentati funzjoni s'issa, kwalunkwe varjabbli lokali għandek huma tabilħaqq lokali. U huma biss jisparixxu. Huma qed reklamata mill-operattiva sistema eventwalment. Allura l-fatt li Temperatura għad għandha l- valur 1 huwa tip ta fundamentalment uninteresting lilna. Kull dritt, hekk rawnd ta 'applause jekk nistgħu għal Charlie. Ħafna isir ukoll. Kull dritt, iva, liema aktar ma Dan ifisser li nistgħu nagħmlu? Għalhekk jirriżulta li aħna kont qed javżak tinsab abjad ftit għal żmien pjuttost twil. Tabilħaqq, jirriżulta li string, kollha ta 'dan iż-żmien huwa, mhuwiex verament sekwenza ta 'karattri per se. Huwa tip ta 'hija li intuwittivament. Iżda teknikament speaking, string hija tip ta 'data li aħna iddikjarat ġewwa tal il-librerija CS50 biex jissimplifikaw id-dinja għall-ewwel ftit ġimgħat ta 'klassi. What a string huwa verament huwa l-indirizz ta 'karattru x'imkien RAM. A string huwa verament numru, bħal 123 jew 127, li jiġri jiddemarkaw fejn string jibda memorja tal-kompjuter tiegħek. Iżda dan ma jirrappreżentax il- spag, per se, hija stess. U nistgħu naraw dan kif ġej. Let me imorru quddiem u tiftaħ xi kodiċi thats fost Eżempji source code tal-lum. U jien ser imorru quddiem u tiftaħ up, ejja ngħidu, iqabblu 0.c. Dan huwa programm Buggy li ser li għandhom jiġu implimentati kif ġej. Ewwel. Jien se ngħid xi ħaġa. Imbagħad jien ser jimxi 'l quddiem u tikseb string mill-utent f'dik il-linja li jmiss. Imbagħad jien se ngħid mill-ġdid. Imbagħad jien ser tikseb ieħor string mill-utent. U avviż, jien li juri waħda mill- irbit varjabbli msejħa s, u ieħor ta 'dawn kordi fil-varjabbli imsejjaħ t. U issa jien ser jitolbu, ħafna raġonevolment, li jekk s ugwali ugwali t, il-kordi huma l-istess. Inti tip l-istess ħaġa. Else, il-kordi huma mhux l-istess ħaġa. Wara kollox, jekk aħna input żewġ ints, żewġ Chars, żewġ sufruni, żewġ jirdoppja, kwalunkwe ta ' tip ta 'data konna tkellem dwar s'issa biex iqabblu lilhom - recall għamilna ċara ħafna filwaqt li ilu li inti ma tagħmel dan, għaliex sinjal ugwali uniku huwa ta 'kors l-operatur assenjazzjoni. Allura li tkun bug. Aħna nużaw is-sinjal ugwali ugwali, li tabilħaqq tqabbel affarijiet għall-ugwaljanza vera. Imma I titlob dan huwa Buggy. Jekk I jimxi 'l quddiem u jagħmlu jqabblu żero, u allura ma dot mmejla jqabblu żero. U jien tip, ejja ngħidu, bonjour. U mbagħad ejja jgħidu bonjour mill-ġdid. Litteralment l-istess ħaġa, il-kompjuter pretensjonijiet I ittajpjat affarijiet differenti. Issa forsi I biss mistyped xi ħaġa. I ser tip isem tiegħi dan iż-żmien. I mean, bonjour. Hello. Huwa differenti kull wieħed ħin. Well, għaliex huwa li? X'qed verament għaddejjin taħt il-barnuża? Ukoll, dak li verament għaddejjin taħt il-barnuża huwa l-sekwenza imbagħad I ittajpjat f'dan l-ewwel darba, pereżempju hija l-kelma hello, tal-kors. Imma jekk aħna nirrappreżentaw dan taħt il-barnuża, ifakkar li sekwenza huwa fil-firxa. U konna qal kemm fil-passat. Hekk jekk I tfassal dak firxa bħal dan, jien ser jirrappreżentaw xi ħaġa pjuttost simili għal dak li għamilna mument ilu. U hemm attwalment xi ħaġa partikolari hawn, wisq. What did aħna jiddeterminaw kienet fi l-aħħar ta 'kull string? Yeah, dan żero backslash, li hija biss il-mod li jirrappreżentaw, litteralment, 00000000. Tmien 0 bits fil-filliera. I do not know, franchement, x'hemm wara dan. Li jinsab biss mazz aktar RAM ġewwa tal-kompjuter tiegħi. Iżda dan huwa firxa. Tkellimna dwar arrays qabel. U aħna tipikament nitkellmu dwar arrays bħala post żero, allura wieħed, imbagħad tnejn. Iżda li biss għall-konvenjenza. U li kollox relattiv. Meta int attwalment jkollna memorja minn il-kompjuter, huwa naturalment kwalunkwe 2000000000 bytes xi fard, potenzjalment. Allura verament taħt il-barnuża, dan il-ħin, iva. Dan jista 'jkun tajjeb ħafna bracket żero. Imma jekk inti ħaffer aktar fil-fond taħt il-barnuża, li tassew jindirizzaw numru 123. Dan huwa l-indirizz 124. Dan huwa l-indirizz 125. U jien ma screw up dan iż-żmien. Dawn issa huma wieħed bytes apparti għal liema raġuni? Kif big huwa char? A char huwa biss wieħed byte. An int huwa tipikament erba bytes. Allura hu għalhekk li I magħmula 123, 127, 131 u oħrajn. Now I tista 'żżomm l-matematika sempliċi u biss tagħmel plus 1. U issa din x'inhu verament għaddej huwa fuq taħt il-barnuża. Allura meta inti tiddikjara xi ħaġa bħal din, string s, dan huwa attwalment - jirriżulta - star char. Star, naturalment, ifisser indirizz, pointer aka. Allura huwa l-indirizz ta 'xi ħaġa. X'inhu l-indirizz ta '? Well - Jien l-unika waħda li tista 'tara l-ħafna Punt importanti jien jagħmlu, jew taħseb Jien jagħmlu. Allura string - il-ħaġa diqa hija I jkollhom monitor hemm dritt fejn I seta 'jara li. Kull dritt, hekk string s huwa dak I kienet iddikjarat qabel. Iżda jirriżulta, grazzi għal ftit magic fil-librerija CS50, dan kollu string ħin għandha litteralment Kien star char. L-istilla darb'oħra ifisser pointer jew l-indirizz. Il-fatt li huwa akkumpanjament il- kelma char ifisser li huwa l- indirizz ta 'karattru. Mela jekk tikseb string huwa msejjaħ, u tip I fl H-E-L-L-O, tipproponi issa dak li tikseb string litteralment ġew jirritornaw kollha ta ' dan iż-żmien, anke jekk aħna ħadthom pjuttost eżaġerat id-dinja? Xi jfisser nikseb string attwalment ritorn bħala valur tar-ritorn tagħha? 123 F'dan il-każ, per eżempju. Imxejna diġà qal li tikseb string sempliċiment jirritorna string, sekwenza ta ' karattri. Iżda li l-daqsxejn ta 'gidba abjad. Il-mod tikseb string tassew jaħdem taħt il-barnuża huwa jiġrilha string mill-utent. Hija plops-karattri li hu jew hi tipi fil-memorja. Huwa jpoġġi żero backslash fl-aħħar ta 'dawk sekwenza ta' karattri. Iżda mbagħad dak ma nikseb string litteralment ritorn? Huwa letteralment jirritorna l-indirizz tal- ħafna ewwel bytes fil-RAM li hija użat għal dik il-qawwa. U jirriżulta li biss billi jirritorna indirizz wieħed ta 'l- ewwel karattru fis-sekwenza, jiġifieri suffiċjenti għall-konstatazzjoni tal intier ta ' l-sekwenza. Fi kliem ieħor, jiksbu string ma jkollux li jirritornaw 123 u 124 u 125. Huwa ma jkollu li tagħti me twil lista ta 'kollha tal-bytes li string tiegħi qed tuża. Għaliex wieħed, dawn qed kollha lura lura. U tnejn, ibbażata fuq l-ewwel indirizz, I tista figura fejn il-sekwenza jispiċċa. Kif? Il-karattru null speċjali, il- backslash żero fl-aħħar. Allura fi kliem ieħor, jekk inti tgħaddi madwar - ġewwa ta 'varjabbli - l-indirizz ta 'char, u għandek tassumi li fl-aħħar ta 'kull spag, kwalunkwe sekwenza ta 'karattri kif aħna bnedmin think ta 'spag, jekk għandek tassumi li fl-aħħar ta 'kull sekwenza bħal hemm żero backslash, int tad-deheb. Għaliex inti tista 'dejjem issib l-aħħar ta 'sekwenza. Issa x'inhu verament għaddej mbagħad fuq f'dan il-programm? Għaliex dan il-programm, iqabblu 0.c, Buggy? Dak li huwa attwalment qed jiġu mqabbla? Yeah? STUDENT: [inaudible]. DAVID Malan: Eżattament. Huwa jitqabblu l-postijiet tal-kordi. Mela jekk l-utent ikun ittajpjat fil bonjour darba, kif għamilt, il-memorja tista 'tispiċċa tfittex bħal dan. Jekk l-utent imbagħad tipi fil bonjour mill-ġdid, iżda billi ċċempel tikseb string darb'oħra, c huwa mhux partikolarment għaqlija sakemm inti jgħallmu li tkun għaqlija minn kodiċi miktub. C - u kompjuters aktar ġenerali - jekk inti tip fil-kelma Hello għal darb'oħra, inti taf dak li int ser tikseb. Int biss ser tikseb tieni firxa ta 'memorja li, iva, jiġri jkun ħażna H-E-L-L-O u oħrajn. Huwa ser tħares l-istess għall- us bnedmin, iżda dan l-indirizz jista 'ma jkunx 123. Jista 'hekk jiġri biss li l- sistema operattiva għandha xi disponibbli ispazju per eżempju fil-post - ejja ngħidu xi ħaġa arbitrarja, bħal dan huwa post 200. U dan huwa post 201. U dan huwa post 202. Għandna l-ebda idea fejn dan huwa ser ikunu fil-memorja. Imma dak li dan ifisser huwa li dak li huwa ser jiġi maħżun finalment i? In-numru 123. X'hemm ser jiġi maħżun fil-t, f'dan l-eżempju arbitrarja? In-numru 200. U dak kollu li jfisser allura hija ovvjament, 123 ma tkunx daqs 200. U hekk dan jekk il-kundizzjoni qatt jevalwa l veru. Minħabba string get qed tuża differenti biċċiet ta 'memorja kull darba. Issa nistgħu naraw dan jerġa fl-eżempju ieħor. Let me imorru quddiem u tiftaħ kopja 0.c. I jsostnu li dan l-eżempju se ipprova - iżda jonqsu - li tikkopja żewġ kordi kif ġej. Jien se ngħid xi ħaġa għall-utent. Jien imbagħad ser tikseb spag u sejħa hija s. U issa, jien tagħmel dan il-kontroll hawnhekk. Aħna msemmija f'dan filwaqt li lura. Imma meta tista 'tikseb null ritorn string, karattru ieħor speċjali, jew speċjali simbolu Ejja ngħidu. Jekk huwa tal-memorja. Per eżempju, jekk l-utent huwa verament diffiċli, u t-tipi ta 'atroċi numru ta 'karattri fil- tastiera u hits Ikteb. Jekk dak in-numru ta 'karattri biss ma tistax tiffittja RAM għal kwalunkwe crazy raġuni, ukoll nikseb string jista tajjeb ħafna ritorn null. Jew jekk program tiegħek stess qed tagħmel ħafna ta 'affarijiet oħra u hemm biss mhux memorja biżżejjed għall string get biex jirnexxu, Huwa jista 'jispiċċa up jirritornaw null. Imma ejja tkun aktar preċiża dwar liema dan huwa. X'inhu tip ta 'data i tal tassew? Star Char. Għalhekk jirriżulta li issa nistgħu qoxra lura l-saff ta 'nulla. Jirriżulta, null hija - iva, ovvjament simbolu speċjali. Imma dak huwa tassew? Really, null hija biss simbolu li aħna bnedmin tuża biex jirrappreżentaw żero ukoll. Allura l-awturi ta 'C, u kompjuters b'mod aktar ġenerali, iddeċieda snin ilu dan, inti taf liema. Għaliex ma we jiżguraw li l-ebda utent data hija qatt, qatt, qatt maħżuna fil bye żero? Fil-fatt, anki fl-eżempju arbitrarja tiegħi qabel, I ma tibda numerazzjoni l- bytes f'żero. I bdiet fil waħda. Għaliex kont naf li n-nies fid-dinja jiddeċiedi li jirriżerva l-żero byte fl RAM ħadd bħala xi ħaġa speċjali. Ir-raġuni li, ghaċ tixtieq sinjal li xi ħaġa marret ħażin fir-rigward indirizzi, inti lura null - inkella magħruf bħala zero - u għaliex inti taf li hemm l-ebda leġittimu data fl-indirizz żero, b'mod ċar dan ifisser żball. U huwa għalhekk li għandna, b'konvenzjoni, check għall null u r-ritorn xi ħaġa bħal wieħed f'dawk il-każijiet. Allura jekk aħna iscroll issa, dan huwa biss mbagħad ftit verifika żball, biss fil-każ xi ħaġa li marret ħażin ma [? bail?] kollox u nieqaf-programm billi jirritorna kmieni. Din il-linja issa jistgħu jiġu miktuba mill-ġdid kif dan, li jfisser liema? Min-naħa tax-xellug, tagħti me ieħor pointer għal karattru, u sejħa hija t. What am I ħażna ġewwa ta 't, ibbażata fuq din il-linja waħda tal-kodiċi? Jien jaħżen post. Speċifikament il-post li kien i. Mela jekk l-utent ikun ittajpjat fil hello, u li l-ewwel bonjour jiġri li jispiċċaw hawn, allura l-123 numru huwa ser jiġu lura minn tikseb string u jiġu maħżuna - kif għidna qabel - fl-i. Meta I issa niddikjara pointer ieħor biex a t char u sejħa hija, dak in-numru huwa litteralment ser jispiċċaw fl f't skont l-istorja? Allura 123. Allura teknikament issa kemm iu t huma tipponta lejn il-eżatt istess biċċiet ta 'memorja. Allura avviż dak li jien ser tagħmel issa li jipprova li dan il-programm huwa Buggy. Ewwel Jien ser jitolbu, ma print f, kapitalizzazzjoni il-kopja tas-sekwenza. Imbagħad jien ser tagħmel ftit Kontroll Żball. Jien ser tagħmel ċert. Ejja kun żgur li l-sekwenza t huwa fil inqas ogħla minn żero fit-tul, hekk hemm xi karattru hemm li attwalment kapitalizzazzjoni. U allura inti tista 'recall dan minn eżempji preċedenti. 2 ta 'fuq - li huwa il-fajl ctype.h. T bracket żero me tagħti l-zero karattru tal-t sekwenza. U 2 ta 'fuq tal-istess valur, ta' Naturalment, tikkonverti li uppercase. Allura intuwittivament, din il-linja enfasizzat ta 'kodiċi hija kapitalizzazzjoni-ewwel ittra f't. Iżda mhuwiex kapitalizzazzjoni, intuwittivament, l-ewwel ittra fl-i. Imma jekk int taħseb quddiem, dak am I waslu biex tara meta I run dan il-programm u jistampa kemm l-oriġinali, i, u l-kopja hekk imsejħa, t? Huma qed fil-fatt se tkun l-istess. U għaliex dawn huma ser ikunu l-istess? Huma qed kemm tipponta lejn eżattament l-istess ħaġa. Mela ejja jagħmlu dan. Jagħmlu kopja żero. Tiġbor OK. Let me run kopja żero. Let me tip xi ħaġa bħal bonjour kollha lowercase mbagħad hit Ikteb. U hija ssostni li kemm il-s oriġinali u l-kopja huma tabilħaqq identiċi. Allura dak li verament ġara hawn? Let me tiġbed din l-istampa biss li tgħid l-istorja fil- b'mod kemmxejn differenti. X'qed verament għaddejjin minn taħt il- hood meta Niddikjara xi ħaġa simili char s bidu, jew spag s, I am jkollna pointer - li jiġri li jkun ta 'erba bytes fil-appliance CS50 u fil-lott ta 'kompjuters. U jien ser sejħa dan i. U dan bħalissa għandha xi valur mhux magħruf. Meta inti tiddikjara varjabbli, sakemm inti yourself nagħtu valur hemmhekk, li jaf x'hemm hemmhekk. Jista 'jkun hemm xi sekwenza każwali ta' bits mill-eżekuzzjoni ta 'qabel. Allura meta I, f'konformità tiegħi tal-kodiċi ma jiksbu spag, u mbagħad aħżen-ritorn valur s nikseb string b'xi mod - u aħna ser eventwalment qoxra lura kif tikseb xogħlijiet spag, b'xi jalloka array li probabbilment jistenna qisu dan. H-E-L-L-O, backslash żero. Ejja nassumu li din hija indirizz 123 biss l-ewwel konsistenza. Sabiex tikseb prospetti spag, fil- linja enfasizzat hemmhekk, dan jirritorna l- numru għidna, 123. Allura dak li verament tmur ġewwa ta 'i hawn? Ukoll, dak li verament tmur ġewwa ta 's huwa 123. Iżda franchement, jien jkollna ftit konfużi minn kulħadd ta 'dawn l-indirizzi, kollha ta 'dawn in-numri arbitrarji. 123, 124, 127. Mela ejja attwalment jissimplifikaw id-dinja ftit. Meta nitkellmu dwar pointers, franchement, li us bnedmin, li l-Heck cares fejn affarijiet huma fil-memorja? C'est kompletament arbitrarja. Huwa ser jiddependi fuq kif RAM ħafna l-utent għandu. Huwa ser jiddependu fuq meta fil-ġurnata inti tmexxi l-programm, forsi, u dak input-utent jagħtik. Aħna abitazzjoni fuq id-dettalji mhux importanti. Mela ejja astratt bogħod u jgħidu li, meta inti tmexxi linja tal-kodiċi bħal dan, char star s gets-ritorn valur ta 'spag get. Għaliex ma we minflok biss jiġbed dak li aħna iżommu ssejjaħ pointer bħallikieku huwa tipponta lejn xi ħaġa? So I jsostnu issa li s up hemm pointer - taħt il-barnuża huwa ta 'indirizz. Iżda huwa biss li tipponta lejn l-ewwel byte fil- string li kien lura. Jekk I issa lura għall-kodiċi hawn, x'inhu għaddej fil din il-linja? Ukoll, f'dan il-linja enfasizzat issa, Jien tiddikjara apparentement ieħor varjabbli imsejħa t. Imma hija wkoll pointer, hekk jien ser biex tiġbed bħala, fit-teorija, il-eżatt kaxxa istess daqs. U jien ser sejħa hija t. U issa jekk immorru lura għall-kodiċi mill-ġdid, meta I jaħżnu s ġewwa ta 't, dak am I teknikament tqegħid ġewwa ta 't? Well teknikament, dan kien il-123 numru. Sabiex verament I għandu jkun miktub l-123 numru hemmhekk. Imma ejja teħodha livell ogħla. t, jekk din hija biss pointer, intuwittivament, huwa biss li. Li kollox thats qed maħżuna hemmhekk. Allura issa fl-aħħar linji interessanti tal-kodiċi, meta I attwalment tmur dwar jikkapitalizza-karattru żero f't, dak li qed jiġri? Ukoll, t bracket żero issa tipponta għal dak karattru, preżumibbilment? Huwa tipponta lejn h. Minħabba t bracket zero - recall, dan huwa sintassi qodma. t bracket zero ifisser biss jekk t hija sekwenza, t bracket żero ifisser li jkollna l-zero karattru li l-qawwa. Allura dak li verament ifisser hu li tmur għal dan array - u iva, dan jista 'jkun 123, dan jista 'jkun 124. Imma dan kollu relattiva, ftakar. Kull meta jitkellem dwar firxa, għandna l-vantaġġ ta 'jitkellem dwar indiċijiet relattivi. U hekk issa nistgħu biss wieħed jassumi li t bracket żero huwa h. Mela jekk jien sejħa 2 massimu fuq dan, dak li l- verament tagħmel huwa kapitalizzazzjoni il-h zghar li uppercase H. Iżda naturalment, dak li huwa s? Huwa tipponta lejn l-istess sekwenza darn. Allura dan huwa dak kollu li kien qed jiġri f'dan kodiċi s'issa. Allura x'inhu l allura l-implikazzjoni? Kif nistgħu jiffissaw dawn iż-żewġ problemi? Kif nistgħu iqabblu kordi attwali? Ukoll intuwittivament, kif kieku inti tmur dwar tqabbel żewġ kordi għall-ugwaljanza vera? Xi jfisser jekk tnejn kordi huma ugwali? Ovvjament mhux li indirizzi huma ugwali fil-memorja, għaliex thats baxxa livell dettall implimentazzjoni. L-karattri huma l-istess. So let me tipproponi, u let me jintroduċu fil-verżjoni waħda ta compare.c hawn, hekk iqabblu 1.c. Let me tipproponi li aħna xorta jiksbu pointer imsejħa s, u maħżen fiha l- ritorn valur ta 'spag get. Ejja nagħmlu l-istess ħaġa ma 't. Allura l-ebda kodiċi hija differenti. Jien ser żid ftit aktar iċċekkjar għall-iżbalji issa. Allura issa li aħna qed tip ta 'tqaxxir lura dan saffi fil CS50 ta 'dak string fil-fatt hu, għandna bżonn li jkunu aktar anali dwar l-iżgurar aħna ma jabbużawx Valuri invalidi bħal null. Hekk jien biss jmorru biex jiċċekkjaw. Jekk i ma null ugwali u t ma null ugwali, li jfisser aħna qed OK. Get string ma screw up jkollna waħda minn dawk il-kordi. U inti tista 'forsi raden issa, dak li ma STR CMP preżumibbilment do? String jqabblu. Mela jekk inti stajt programm java qabel, dan huwa bħall-metodu ugwali fil- klassi string. Iżda għal dawk fostkom li għadhom ma programmati qabel, din hija biss funzjoni c. Dan jiġri li jaqgħu fil- inkartament imsejjaħ string.h. Li fejn huwa ddikjarat. U string tqabbel - I attwalment tinsa l-użu tagħha, iżda qatt f'moħħhom dik. Ifakkar li nistgħu nagħmlu bniedem, ħawwad jqabblu. U dan se iġibu l- Programmaturi Linux manwali. U huwa, franchement, ftit cryptic. Imma I jista 'jara hawnhekk li, yep. I għandhom jinkludu string.h. U jgħid hawn taħt deskrizzjoni, "il- Qabbel funzjoni string jikkompara iż-żewġ kordi S1 ​​u S2. "U S1 u S2 huma apparentament it-tnejn argumenti għadda pulzieri I ma verament tiftakar dak const hija, iżda issa avviż - u inti tista raw dan diġà meta inti stajt tuża l-paġni bniedem jekk inti jkollhom dan kollu - li star char huwa biss sinonimu ma string. Allura jikkompara iż-żewġ kordi, S1 u S2, u dan jirritorna integer inqas minn jew ugwali għal jew akbar minn żero jekk S1 jinstab, rispettivament, li jkun inqas minn, jew jaqblux, jew ikun akbar minn S2. Li jinsab biss mod kumpless ħafna ta 'tgħid li string jqabblu prospetti żero jekk żewġ kordi huma intuwittivament identiċi, karattru għal karattru għall-karattru. Dan jirritorna numru negattiv jekk i, alfabetikament, suppost biex jiġi qabel t. Jew prospetti numru pożittiv jekk i suppost li jiġu wara t alfabetikament. Allura ma din il-funzjoni sempliċi, jista inti, per eżempju, sort a mazz sħiħ ta 'kliem? Allura f'dan il-verżjoni l-ġdida, jien ser jimxi 'l quddiem u jagħmlu compare1. Dot slash jqabblu wieħed. I ser tip bonjour kollha żgħira. Jien ser tip fil bonjour fil kollha zghar mill-ġdid. U Thankfully issa jirrealizza I ttajpjati l-istess ħaġa. Sadanittant, jekk I tip bonjour t'isfel każ u HELLO fil-każ ta 'fuq u jqabbluhom, I ittajpjat affarijiet differenti. Minħabba li mhux biss huma l-indirizzi differenti, iżda aħna qed jitqabblu karattri differenti u għal darb'oħra. Well ejja go u tiffissa wieħed problema l-oħra issa. Let me jiftħu verżjoni waħda ta ' kopja, li issa jindirizza din il-kwistjoni kif ġej. U dan wieħed għaddej biex tfittex ftit aktar kumplessa. Imma jekk inti taħseb dwar liema problema aħna bżonn biex issolvi, wieħed jittama li dan se jkun ċar fil-ftit mument issa. Allura dan l-ewwel linja, char-bidu t, fil F'termini layman tista 'tipproponi xi ħadd dak il-linja hawnhekk tfisser? Star t Char, dak hu li tagħmel? Tajba. Oħloq pointer għal xi post fil-memorja. U let me tirfina ftit. Tiddikjara varjabbli li ser taħżen l- indirizz ta 'xi char fil-memorja, biss li jkun ftit aktar xierqa. OK, hekk issa fuq il-lemin, stajt qatt ma tidher waħda minn dawn il-funzjonijiet qabel, malloc. Imma dak li jista 'jfisser? Allokazzjoni ta 'memorja. Allokazzjoni memorja. Għalhekk jirriżulta li, sa issa, aħna ma verament kellu mod qawwi ta ' titlob lill-sistema operattiva, tagħti me xi memorja. Pjuttost, issa għandna funzjoni msejħa malloc li ma eżattament dan. Anke jekk dan huwa daqsxejn ta ' distrazzjoni dritt issa, avviż li bejn iż-żewġ parentesi hemm biss se jkun hemm numru. Fejn stajt ittajpjat fil-kwistjoni marki tista 'tkun numru. U dak in-numru jfisser, tagħti me 10 bytes. Agħti me 20 bytes. Agħti me 100 bytes. U malloc se tagħmel ħilitha biex titlob lill-sistema operattiva - Linux, f'dan il-każ - ħej, huma 100 bytes tagħhom ta 'RAM disponibbli? Jekk iva, jirritorna dawk bytes lili minn jirritorna l-indirizz ta 'liema ta' dawk bytes, forsi? L-ewwel waħda ħafna. Allura hawnhekk wisq - u dan huwa predominanti fis-C, kwalunkwe ħin int jittrattaw indirizzi? Inti kważi dejjem jittrattaw mal- ewwel indirizz bħal dak, l-ebda kwistjoni kemm hu kbir blokki ta 'memorja inti qed mogħtija lura, biex ngħidu hekk. Mela ejja adsa fil hawn. I am tipprova talloka kif ħafna bytes, eżattament? Well. Tul sensiela ta 's - ejja jagħmlu eżempju konkret. Jekk i huwa hello, H-E-L-L-O, x'inhu l- tul sensiela ta 'i, ovvjament? Allura huwa ħamsa. Imma jien tagħmel plus 1 fuq li, għaliex? Għaliex nixtieq sitt bytes minflok ħamsa? Il-karattru null. Ma rridx li jħallu off din karattru null speċjali. Għaliex jekk I jagħmel kopja ta 'Hello u biss tagħmel H-E-L-L-O, imma jien ma jitqiegħdu dan il-karattru speċjali, il-kompjuter jista 'ma jkollhomx, b'kumbinazzjoni, backslash żero hemm għalija. U hekk jekk jien jippruvaw biex insemmu l- tul tal-kopja, I jista 'jaħseb li huwa 20 karattri fit-tul, jew miljun karattri twil jekk I biss qatt jiġri hit żero backslash. Allura għandna bżonn sitt bytes li jaħżen H-E-L-L-O, backslash żero. U allura dan huwa biss li jkun anali super. Ejja ngħidu li ninsa dak id-daqs ta 'char huwa. Aħna nżommu qal huwa wieħed byte. U normalment huwa. Fit-teorija, jista 'jkun xi ħaġa differenti, fuq Mac differenti jew PC differenti. Għalhekk jirriżulta li hemm dan l-operatur imsejħa sizeof li jekk inti tgħaddi din l- isem ta 'tip ta' dejta - bħal char, jew int, jew float - se jgħidlek, dinamiku, kemm bytes a char jieħu fuq dan partikolari kompjuter. Allura dan huwa effettivament biss simili qal ħinijiet 1 jew żminijiet xejn. Imma jien tagħmel dan biss sabiex ikunu anali super, li biss fil-każ li char differenti fuq il-kompjuter tiegħek kontra mini, b'dan il-mod l-matematika huwa dejjem se check out. Fl-aħħar nett, stabbiliti hawn I jiċċekkja għal null, li huwa dejjem prattika tajba - għal darb'oħra, kwalunkwe ħin aħna qed jittrattaw pointers. Jekk malloc kienx kapaċi jagħtu me sitt byes - li huwa improbabbli, iżda biss fil-każ - ritorn wieħed immedjatament. U issa, imorru quddiem u kopja l-sekwenza kif ġej. U dan huwa sintassi familjari, għalkemm fi rwol differenti. Jien ser jimxi 'l quddiem u jiksbu l-sekwenza tul ta 'i u jaħżen fil n. Jien imbagħad ser jtenni mill-i huwa ugwali żero sa u inkluż n, ikbar minn jew ugwali għal. Allura li fuq kull iterazzjoni, nressaq il- karattru ith ta 'i fil-ith karattru ta 't. Allura x'inhu verament għaddej taħt il-barnuża hawn? Ukoll jekk dan, per eżempju, huwa s - u jien ittajpjat fil-kelma H-E-L-L-O u hemm żero backslash. U għal darb'oħra, dan huwa s tipponta hawn. U hawn huwa issa t. U dan hija li tipponta issa biex kopja ta 'memorja, id-dritt? Malloc tani kollu blokki ta 'memorja. I do not know inizjalment x'hemm fi kwalunkwe ta 'dawn il-lokalitajiet. Hekk jien ser taħseb dawn bħala mazz sħiħ ta 'trade marks in kwistjoni. Iżda hekk kif nibda looping minn żero fuq up permezz-tul ta 'i, t bracket żero u t bracket 1 - u jien ser tpoġġi dan issa fuq l-overhead - t bracket żero u s bracket żero jfisser li jien ser tkun ikkupjar iteratively h fil hawn, E-L-L-O. Plus, minħabba I ma l-plus 1, backslash żero. Allura issa fil-każ ta iqabblu 1.c, fl-aħħar, jekk I jistampa l- kapitalizzazzjoni ta 't, għandna tara li s ma jinbidilx. Let me imorru quddiem u tagħmel dan issa. Sabiex tagħmel copy1. Dot slash copy1. Jien ser tip fil hello, Ikteb. U issa avviż, biss il-kopja ġie kapitalizzat. Minħabba I verament għandhom żewġ biċċiet ta 'memorja. Sfortunatament, inti tista 'tagħmel xi pretty ħżiena u pretty perikolużi affarijiet hawn. Let me pull up eżempju hawn issa, li jagħtina eżempju ta 'ftit linji differenti. Hekk biss intuwittivament hawn, l-ewwel linja tal-kodiċi, x int stilla, hija tiddikjara varjabbli msejħa x. U x'inhu l-tip ta 'data ta 'dak il-varjabbli? X'hemm-tip ta 'data ta' dak il-varjabbli? Dan ma kienx il cliffhanger. It-tip tad-data hija stilla int. Allura dak ma jfisser? x se jaħżnu l-indirizz ta 'int. Sempliċi bħal dik. Y se jaħżnu l- indirizz ta 'int. X'inhu l-tielet linja tal-kodiċi tagħmel hemm? Huwa allokazzjoni kemm bytes, x'aktarx? Erbgħa. Minħabba d-daqs ta 'int huwa ġeneralment erba, malloc ta 'erba jagħti me back-indirizz ta 'blokki ta' memorja, l-ewwel ta 'bytes li huwa maħżuna issa x. Issa aħna qed jiċċaqilqu ftit malajr. Star x ifisser liema? Dan ifisser tmur f'dak indirizz u mqiegħda dak in-numru hemmhekk? Poġġi n-numru 42 hemmhekk. Star y ifisser mur x'hemm fil y u n-numru 13 hemmhekk. Imma stenna minuta. X'inhu y fil-mument? X'inhu l-indirizz huwa y ħażna? Ma nafux, right? Aħna qatt darba tuża l-assenjazzjoni operatur li jinvolvu y. Allura y kif dikjarata fit-tieni linja ta ' kodiċi huwa biss ftit valur żibel, big kwistjoni mark biex ngħidu hekk. Jista 'jiġi tipponta bl-addoċċ li xejn fil-memorja, li huwa ġeneralment ħażin. Allura hekk kif aħna hit dik il-linja hemm, star y ugwali 13, xi ħaġa ħażina, xi ħaġa ħażina ħafna huwa dwar li jiġri Binky. Mela ejja ara dak li għaddej biex jispiċċaw jiġri Binky hawn f'dan il minuta jew sabiex tfittex. [Daqq video] -Ħej, Binky. Wake up. Wasal iż-żmien għall-gost pointer. -X'hemm li? Tgħallem dwar pointers? Oh, goodie. Well, biex tibda, I raden aħna qed ser jeħtieġu pointers koppja. -OK. Dan il-kodiċi jalloka żewġ pointers li jista 'jiġbed l interi. OK, ukoll, I tara l-żewġ pointers. Iżda dawn ma jidhirx li tipponta lejn xejn. -Dak id-dritt. Inizjalment, pointers ma punt għal xejn. L-affarijiet li jindikaw huma msejħa pointees, u li jistabbilixxu lilhom up huwa pass separat. Oh, id-dritt, id-dritt. Jien kont naf li. Il pointees huma separati. Allura kif taħseb li jallokaw pointee? -OK. Ukoll, dan il-kodiċi jalloka interi ġodda pointee, u din il-parti tistabbilixxi x għall-punt lilha. -Ħej, li jistenna aħjar. Sabiex tagħmel dan jagħmlu xi ħaġa. -OK. I ser dereference l pointer x biex jaħżnu in-numru 42 fis pointee tagħha. Għal dan trick, I bzonn magic tiegħi wand ta dereferencing. Your-bastun maġiku ta dereferencing? Uh, li l-kbir. -Dan huwa dak l-kodiċi Dehra. I ser biss twaqqaf in-numru, u - -Ħej, ħarsa. Hemm tmur. Allura tagħmel dereference fuq x ġej il-vleġġa għall-aċċess pointee tagħha. F'dan il-każ, li jaħżen 42 fil hemmhekk. Ħej, ipprova uża dan biex jaħżnu l-għadd 13 permezz tal-pointer oħra, y. -OK. I ser biss jmorru fuq hawn biex yu nikseb in-numru 13 jitwaqqaf. U mbagħad ħu l-bastun tal- dereferencing u biss - Whoa! Oh, ħej. Li ma ħadmux. Say, Binky, ma naħsibx l- dereferencing y hija idea tajba, minħabba twaqqif tal-pointee huwa pass separat. U jien ma think we qatt ma kien. Hmm-. Punt tajjeb. Yeah-, aħna allokat il-y pointer. Imma aħna qatt tistabbilixxi li jippuntaw lejn pointee. Hmm-. Attent ħafna. -Ħej, qed tfittex tajba hemmhekk, Binky. Inti tista 'tiffissa lilha hekk li l-punti y għall-istess pointee bħala x? Sure-. I ser tuża bastun maġiku tiegħi ta ' assenjazzjoni pointer. -Hija li għaddej biex tkun problema bħal qabel? Nru-. Dan ma tmissx il-pointees. Hija biss bidliet wieħed pointer għall-punt għall-istess ħaġa bħat ieħor. Oh, nara. Issa punti y għall-istess post bħall x. Allura stenna. Issa y hija ffissata. Hija għandha pointee. Allura inti tista 'tipprova l-wand ta dereferencing darb'oħra li tibgħat il-13 fuq. -OK. Hawnhekk tmur. -Ħej, tħares lejn dak. Issa dereferencing xogħlijiet fuq y. U minħabba l-pointers huma qsim li pointee waħda, huma kemm tara l-13. Yeah-. Qsim. Tkun xi tkun. Allura aħna se postijiet swiċċ issa? Oh, tħares. Aħna qed barra ta 'żmien. Iżda-- Just remember-it-tliet regoli pointer. Numru wieħed, l-istruttura bażika huwa li inti għandek pointer. U hija tirreferi fuq għal pointee. Iżda l-pointer u pointee huma separati. U l-iżball komuni huwa li twaqqaf pointer, iżda li ninsewx li tingħata pointee. Numru tnejn, dereferencing pointer jibda fil-pointer u jsegwi tagħha vleġġa fuq l-aċċess pointee tagħha. Kif nafu lkoll, dan jaħdem biss jekk ikun hemm huwa pointee, li gets lura għall Regola numru wieħed. Numru tlieta, assenjazzjoni pointer jieħu wieħed pointer u bidliet li jindikaw l-istess pointee bħala pointer ieħor. Hekk wara l-assenjazzjoni, iż-żewġ pointers se punt li l-istess pointee. Kultant li sejjaħ qsim. U li kollox hemm għaliha, verament. Bye bye issa. [Daqq video END] DAVID Malan: Allura aktar fuq pointers, aktar fuq ġimgħa d-dieħla Binky. Aħna ser tara inti nhar it-Tnejn.