[MUSIC TEMA] SPEAKER 1: Hi, kulħadd. Merħba lura għat-taqsima. Jum sabiħ out-- u huwa għalhekk li, jien żgur, hemm biss erba minnkom hawn u mhux tas-soltu pakkett tagħna. I ġew morda dan il-weekend. So I ma jkollhom starburst għalik guys. And I tista 'tibda sogħla terriblement matul dan. Hekk biss jkollhom miegħi. Jien ser verament jippruvaw u jiksbu permezz dan l-ewwel, għalkemm, qabel I jkollhom attakk sogħla. Iżda biss jkun faċli fuqi a ftit bit-- li kollox nistaqsi. Allura aġenda tagħna għal today-- biss reminder-- kwizz tiegħek huwa ġimgħa d-dieħla. I qallek dan ġimgħa li għaddiet hekk ma qabda inti off guard. Hekk jien fakkruha you again. Ġimgħa d-dieħla kwizz tiegħek. Biex dak il-għan, ġimgħa d-dieħla it-taqsima se jkun ferm aktar of-- I ser jippruvaw u jaħdmu f'xi reviżjoni. Hekk jekk inti guys tista għinni out mill jibghatni affarijiet li int komdu ma ', li int inkwetat dwar, suġġetti li inti tixtieq għall- me biex tkopri, li d jkun kbir. So I tista 'tipprova u jaħdmu magħhom fis-sezzjoni tagħna ġimgħa d-dieħla jew inti tibgħat materjal żejjed jew prep li inti ma tista 'tikseb xi mkien ieħor. Yeah! Aktar nies huma ġejjin! Ħsibt, ma nagħmel dan ħażin aħħar ġimgħa, li l-ebda wieħed irid li jiġu lura? Jien jibża. Allura t-tliet affarijiet oħra li aħna qed tmur biex jmorru fuq huma ridirezzjoni, file I / O, u imbagħad pointers u l-memorja dinamika. Jien ċert int kollha super eċċitati dwar pointers-- suġġett favorit kulħadd, tant sempliċi biex jifhmu. Jien ċert li inti guys kollha ltqajna dan, id-dritt? Allura l-ewwel affarijiet ewwel, redirection-- dan huwa bażikament biss mod għall-kontroll kif inti input affarijiet fil-programm tiegħek, kif inti affarijiet output mill-programm tiegħek. Il-modi ewlenin li inti guys ġew interazzjoni magħha huwa biss permezz out standard bl-iskrin print tiegħek hawn. Iżda hemm modi biex pipe-- kif naraw hawn hija waħda tat-tip words-- tagħna ta 'pajp dik l-informazzjoni jew li d-data fis-fajl minn fajl. Huwa modi biss differenti ta ' jkollna affarijiet fil-programm tiegħek u barra mill-programm tiegħek, minflok biss tistamphom għal dan l-iskrin jew inputjar affarijiet mil-linja tal-kmand. Allura l-ewwel waħda hija ftit akbar minn caret. Allura output-- hija biss prints l-output għall-fajl minflok l-iskrin tiegħek. Hekk jekk kellek xi ħaġa li stampat "Hello, dinja!" għall-iskrin, jekk inti tpoġġi dan minflok li output.text, li toħloq dan il-fajl imsejħa output.text. U meta inti tiftaħ lilha, inneħħu jgħidu "Hello, dinja!" fil hemmhekk. Dan jista 'jkun super utli jekk għandek ton ta 'żbalji attwalment, kif naraw f'dan il-wieħed. Jekk inti tagħmel żewġ caret, inneħħu jistampaw il-messaġġi ta 'żball. Hekk jekk int li għandhom problema bl kompilazzjoni, li għandu ħafna ta 'żbalji u int jkollna bogged fil jippruvaw li tiskrollja permezz ta 'fil-kmand linja tiegħek permezz tagħhom kollha, inti tista ' biss tipprintjahom għall-fajl, jiftħu dan il-fajl sabiex inti tista iscroll permezz tagħhom aktar faċli. I attwalment użati li meta ħafna I kien debugging 181 psets tiegħi għat-tagħlim magna. Għalhekk jista 'jkun super utli aktar tard. Huwa wkoll utli jekk għandek program li forsi qed jiġġenera librerija jew jiġġeneraw xi sett ta 'kordi, u int jeħtieġ li tkun kapaċi li tara li huwa jiġġeneraw lilhom kif suppost. Dan huwa l-mod biex tagħmel dan. Mela jekk inti tipprintjahom għall-fajl, inti tista 'iktar faċilment jeżaminahom, id-dritt? Versus jippruvaw li tiskrollja permezz kmand linja tiegħek. U mbagħad ħaġa waħda li wieħed jinnota hija li biss mal-akbar milli caret, jekk inti qed tikteb għal fajl li diġà exists-- hekk simili jekk aħna dam dan l-ewwel żmien, aħna poġġih għall output.text, u mbagħad kellna t-tieni programm li stampat dan bħala programm tnejn u għamlet akbar milli output.text, se jissostitwixxu that-- hekk jissostitwixxu dak li kien qatt dan il-fajl biex tibda bil. Mela jekk inti tixtieq li tehmeż għal fajl, kif naraw hawn, inti biss tagħmel żewġ akbar minn sinjali. U se tehmez ma 'din. Dan mhux se jissostitwixxu dan. Mela jekk għandek bżonn biex imexxu multipli programmi u tip ta 'jżomm rekord ta 'dak kollha kemm huma jirritornaw lilek fil-fajl, li l-mod biex tagħmel dan. Jekk inti ma 'kura x'hemm fil-fajl tiegħek u huwa permess li jinkitbu fuqhom, inti tista 'biss użu akbar wieħed minn. Ma li jagħmel sens għal kulħadd? UDJENZA: Bħal dot mmejla bonjour akbar milli l-produzzjoni dot test, bħal darbtejn, inneħħu biss juru biss fuq il-produzzjoni dot test tieni time-- SPEAKER 1: Dritt. Għalhekk ikun bażikament biss kompletament jissostitwixxu dak li kien hemm biex tibda bil. Jekk dan il-fajl hawn, il- output.text diġà teżisti, bażikament tkun xi tkun inti sejħa li għal darb'oħra ma 'akbar waħda milli inti tista 'biss jaħsbu ta' dan kif bhalu sostitwit il-fajl. Bħal meta int iffrankar Word dokument u inti tiffranka bħala, u inti żżomm l-istess isem, u kompletament overwrites it-- dan huwa l-istess tip ta 'ħaġa. Kull min ikollu xi mistoqsijiet dwar biss outputting għall-fajl? Biża. Allura ovvjament, jekk inti reverse l- vleġġa direzzjoni, hija tista 'tagħmel kontribut. Allura meta inti guys kellhom bħal Caesar jew Visioneer u inti kellhom xi ħaġa input, kellek argument linja tal-kmand li attwalment input. Dan huwa mod ieħor biex tagħmel dan. Allura minflok ta 'stennija għal kmand pront, bħal meta inti tlabt għall tiegħek messaġġ fi Caesar jew Visioneer, jekk kellek fajl test li kellhom il-messaġġ tiegħek, inti tista 'biss tip li fil dak. Hekk jekk dan kien simili dot mmejla Caesar 3 anqas minn test input vleġġa, li huwa messaġġ tiegħek, li imur biss multa. Meta program Caesar tiegħek attwalment talab għal input mill-utent, ikun diġà għandhom dan għaliex inti stajt ittajpjat f'dan il-fajl. Li jinsab biss mod ieħor. Just a reverse ta output-- biss input għal data tiegħek. U allura l-aħħar wieħed huwa pajp. Hekk jibred pretty dan wieħed. Għaliex din tippermetti li inti jieħdu l-output ta 'wieħed programm u poġġih bħala input għal programm ieħor. I do not know jekk kwalunkwe inti lagħbu l jiddeċifraw li CS50 jista 'jkollhom tak, iżda jkun jippermettu li tieħu xi kampjun fajl, tip li fil encryption tiegħek, u mbagħad minn hemm tip li fis decryption tiegħek tagħmel żgur li rriżulta l-istess. Allura huwa tip simili three-way loop. Mur għaliha. UDJENZA: Jekk programm għandha inputs multipli, hemm mod li tgħid dan li input li tuża l-fajl test jew l-output għall? SPEAKER 1: Hija għandha inputs multipli. Tkun xi tkun fajl input-- tiegħek meta huwa titlob għall-input li l-ewwel darba, huwa ser jassumi, naħseb, huwa ser pajp fil-fajl kollu. Mela jekk għandek inputs multipli, int ser ikunu pajpijiet fil-fajls multipli. Mela jekk inti qed tistaqsi għall-messaġġi tliet darbiet fil-kodiċi tiegħek, int ser tkun tqegħid fi tliet fajls differenti. U jiġrilha crazy. U inti ma għandu jkollhom joqogħdu jinkwetaw dwar dak id-dritt issa. Iżda li l-idea. Allura yeah, pajp ikun output biss ta 'wieħed programm juża input fil--oħra. Kulħadd tajba hemmhekk? Kessaħ. OK. Inti probabilment mhux se jkollhom li tagħmel wisq magħha. Imma għandek tifhem modi kif inti tista 'tuża dan. U hemm xi każijiet li inti tista 'tixtieq li tagħmel użu minnha. So fajl I / O-- Naf dak li qed saying-- aħna qed jintużaw biex taqra minn u l-kitba għall-iskrin tagħna hemm, liema tkun standard u standard out. U dan huwa dak li inti guys kienu tagħmel mill-bidu tal-klassi hawn. Iżda int tista 'wkoll jaqraw u jiktbu fajls, li hija kollha fajl I / O-- hekk input fajl, output hija kollha li stands għall. Allura dan bażikament ifisser li inti jista 'jaħżen data tiegħek issa. Meta inti biss jistampaw il- iskrin, huwa bażikament marret, id-dritt? Hekk kif inti tagħmel "Hello dinja "u run" Hello dinja " prints "Hello dinja" għall-iskrin. Imma inti ma tistax verament tagħmel xejn magħha minn hemm. Jekk int taħżen f'test fajl, imbagħad f'daqqa waħda inti għandek din id-data li int permess li jimmanipulaw jew it-tqegħid fis-fajl, jew poġġih fi programm aktar tard. Waħda mir-raġunijiet għaliex aħna nagħmlu dan huwa biss bħala mod biex jaħżen id-data għal użu aktar tard. I jkollhom koppja ta 'passi hawn ftit mixi permezz standard I / O. Fi stadju wieħed, inti bżonn li jinħoloq referenza għall-fajl ma ' tappijiet Fajl stilla. Allura li toħloq pointer għall-fajl. Mela allura inti tixtieq li tiftħu. U inti tgħidli, litteralment, biss fajl ugwali fopen. U dan se jirritornaw pointer li l-fajl inti biss miftuħa. Rajt koppja tal inti guys fil-ħinijiet uffiċċju. Iżda waħda mill-affarijiet huwa pointers remember-- jistgħu jkunu xi wħud indirizz jew null, id-dritt? Jekk aħna qatt każ fejn xi ħaġa tista 'tmur lura null, dak li għandna nagħmlu qabel we qatt tużah? Għandna bżonn li jiċċekkja jekk huwa null jew le, id-dritt? Minħabba li xi wħud jista 'jkollok kellhom il-kwistjoni fejn kwalunkwe oġġett kien qed lura fl-tbegħid kien null. Inti ppruvaw biex iwettqu xi funzjoni fuqha. U s-sit tal-kompjuter tiegħek akkużati. Dritt? I bet koppja tal inti seta 'kellu din il-kwistjoni. Allura ma fopen, fopen se la ritorn pointer għall-fajl, jew jekk xi ħaġa tmur ħażin, li għaddej biex jirritorna null. Allura inti dejjem bżonn li jiċċekkja li ma rritornax null qabel ma int tipprova li tagħmel xi ħaġa oħra. Dan huwa simili paradigma standard li int ser bżonn hawn. Jekk qatt hemm ċans li xi ħaġa jista 'ritorn null, jivverifika sabiex ikun żgur li ma qabel inti tipproċedi. Inkella, int ser biex tikseb difetti sit sabiħ. U l-ebda wieħed jħobb biex jittrattaw ma 'dawk. Allura kif naraw hawn, l-ewwel argument huwa biss il-passaġġ għall-fajl. Jekk dan il-fajl ma teżistix, li għaddej biex joħolqu dan il-fajl. U huwa biss se tkun vojta. U allura l-tieni argument huwa l-mod li tixtieq. Do irridu li jinqara mill dan il-fajl? Do inti tixtieq li tikteb minnha? Do inti tixtieq li tehmeż? Allura fil-fatt dak I biss said-- jekk il-fajl ma teżistix u int tipprova li jaqra minn dan, huwa għaddej biex tarmi żball. Jekk il-fajl name-- simili jekk file.text s'issa ma jeżistix u inti tixtieq li jiktbu lilha, dan se joħloq fajl vojt imsejjaħ file.text għalik. U jekk inti tixtieq li tehmeż, inti għandek tagħmel l-istess ħaġa. Ma li jagħmel sens? Jekk inti qed tipprova li jaqra minn fajl li s'issa ma jeżistix, dan ser tarmi żball. Inkella, dan se joħloq il-fajl għal inti tagħmel dak li trid għaliha. Kessaħ. Issa nistgħu jinqara mill-fajl. U dan huwa biss tip ta 'għaddej permezz tal-funzjonijiet differenti li għandna għall-fajl I / O. Dan se jkun meħtieġ pset din il-ġimgħa, jekk niftakar sewwa. Iva, assolutament se jkun meħtieġ pset din il-ġimgħa. Allura fgetc jirritorna l-karattru li jmiss. fgets jirritorna linja ta 'test. Huwa ser jerġa xejn sa linja ġdida, u se break. Allura fread jaqra ċertu numru ta 'bytes u tpoġġihom fi array, li hija xi ħaġa inti tista ' trid tagħmel il-size-- ri jista 'jkun utli. Kif ħafna nies qrajt l-spec pset, mill-mod? OK. [Inaudible] SPEAKER 1: OK. Kull dritt. Żgur taqra that-- huwa pset gost. Ikollok biex tirkupra mħassra memorja card-- verament eċċitanti meta taħdem. Iżda ċert, tibda qari dan. Come tkellem lili jekk inti xi mistoqsijiet dwar dan. OK, hekk kif kien qal, fread jaqra ċertu numru ta 'bytes. C'est xi numru arbitrarju li int ser jistabbilixxu. U mbagħad fseek biss jiċċaqlaq għal ċerta pożizzjoni. Allura forsi inti ma 'kura dwar l-10 bytes li jmiss. Inti biss jixtiequ li skip quddiem. Inti ma jimpurtahom dwar dawk. Inti tixtieq li taqra jibda byte 11. fseek tippermetti li tagħmel dan. Għalhekk tippermetti li inti tkun selettiva dwar dak li int qari. Minħabba fgetc, fgets, u aqra fread minn ċertu post fil-fajl. A mod biex jaħsbu dwar dan hija jekk din huwa fajl tagħna, meta inti l-ewwel tiftħu, inti għandek din il-pożizzjoni fil-fajl li jibda fil-bidu. Kull meta inti sejħa fgetc, fgetf, jew fread, li għaddej biex tibda minn dan il-markatur pożizzjoni. Ejja ngħidu li inti biss trid taqra din blokki ta 'memorja hawn fuq. Inti ma tistax biss sejħa. Int għandek tfittex hawn fuq u mbagħad jaqra minn hemm jew taqra, gets, jew getc, jiddependi fuq dak li trid. Allura tfittex biss tippermetti li inti skip porzjonijiet ta 'memorja. U li l-uniku mod inti tista 'skip-affarijiet mingħajr qari tagħhom fiċ buffer tiegħek. Ma li jagħmel sens għal kulħadd? Ovvjament, hemm lott ta 'here-- parallel ridirezzjoni output, jew input tagħna, inti qrajt u jiktbu. Allura fputc biss jikteb karattru fil-fajl. fputs jikteb linja. Fprintf prints output ifformattjat. Mela jekk għandek tabs, jew spazju, jew whatnot. U mbagħad fwrite jikteb xi firxa ta 'bytes għal fajl. Allura dan huwa l-istess mod fwrite u fread huma analogi fgets opposites--, fputs, u imbagħad lottijiet fputc u fgetc-- ta 'crazy, affarijiet malajr. Biss tip ta 'jżomm dan handy-- inti ser ikollok żminijiet differenti fejn forsi inti biss trid karattru wieħed kull darba. Forsi inti tixtieq linja kollha. Bil pset-- dizzjunarju tiegħek li huwa f'żewġ psets, Nemmen, aħna nagħtuk kollu dizzjunarju f'format test li għandha kull kelma separati minn linja. Hekk jekk int riedu li taqra f'kelma waħda fi żmien, dak li jista inti tuża jekk inti qed taqra u dawn qed kollha separata fuq linji ġodda, u inti biss tixtieq kelma waħda fi żmien? Udjenza: Fgets SPEAKER 1: Dritt. Fgets-- minħabba li jirritorna dak kollu li huwa fuq linja waħda. U jekk kull kelma hija tagħha linja stess, nistgħu nużaw fgets. Kessaħ. Ma li jagħmel sens, kulħadd? Kessaħ? Yeah, aħna qed tmur biex jiksbu l-parti gost ma pointers malajr ħafna, fejn inti nikseb biex jagħmlu xi matematika. U dan ser ikun kbir. Aħħar step-- qrib fajl tiegħek. Bil-ħafna affarijiet hawn, wieħed ta 'mudelli tagħna huwa jekk jista 'ritorn null, iċċekkja għall null. Jekk inti tiftaħ xi ħaġa, youd aħjar tagħlaqha. OK, hekk int ma jsirx sakemm int isir sakemm inti ħadthom magħluqa din. Tip simili mhuwiex aktar sakemm il-mara xaħam sings. C'est simili għeluq fajl tiegħek. Kif jgħid hawnhekk, biss itenni, dejjem tiftaħ fajl tiegħek qabel int qari jew kitba lilha. U dejjem qrib dan jekk inti stajt fetħuh. Kull dritt? Kessaħ. Allura hawnhekk eżempju. So tiny-- I do not know jekk inti guys jista 'jara li tajjeb ħafna. Jekk biss nistgħu tiżdied l-luminożità b'xi. Let me attwalment tagħmel dan jekk nista '. OK, inti guys ma tistax verament tara li fil-livelli kollha, inti tista? OK, aħna qed tmur biex tagħmel dan, imbagħad. [Inaudible] I jassumi li dan huwa ħafna aħjar biex tara. Jista 'xi ħadd tara fejn tiegħi ġurdien marru hija l-kwistjoni? Ah, hemm it is-- dak ġlidiet! OK. Bażikament, inti guys għandu jkollhom tip ta 'idea ta' dak li dan qed tagħmel. Huwa mhux perfett. Imma I d pjuttost jispjegaw dan milli jonfqu aktar ħin jippruvaw format kif suppost. Bażikament, kif tara hawn, nibdew il-fajl miftuħ. U aħna għandna xi fajl database li aħna ftuħ li jgħid li l-istudenti tagħna. U aħna qed tmur biex jiktbu lilha. Allura naturalment, ritorn null. Allura aħna għandna biex jiċċekkjaw għall null. U allura jekk mhuwiex null, aħna jgħaddu. U kif tara, aħna qed looping permezz ta 'hawn. Hemm studenti. -Istudenti huwa hash definit bħala tlieta. U dak li aħna qed tagħmel hija aħna istampar għall-fajl, id-dritt? Allura dak li aħna istampar għall-fajl tagħna? UDJENZA: Il-punteġġi li huma fil-firxa? SPEAKER 1: Yeah. Il-punteġġi li huma l array-- eżattament. Allura aħna ftuħ dan fajl database, li I jassumi huwa xi tip ta 'database gradi. U aħna qed biss istampar l- punteġġi ta 'kull student biex dan il-fajl. Kessaħ? Tajba. Biża. OK. Ejja nneħħu lura to-- UDJENZA: Għandi mistoqsija ta 'malajr. Huwa l-printf mhux fil-għall-loop? Li jinsab biss fil-jekk loop? SPEAKER 1: Le, huwa fil-għal loop. Ma nistax nara ġurdien tiegħi tajjeb ħafna up here. Hekk jien qed jitħabtu biex format li suppost. Dan bracket għandu tkun marret. Għandu jkun stabbiliti hawn. Dan huwa x'hemm fil tiegħek għal loop. Hemmhekk. Issa huwa pjuttost. Allura li l-mod kif għandu be-- ħlief għal din l-aħħar kategorija li I miċħud. OK. Ma li jagħmel sens għal kulħadd? OK. Aħna qed tmur biex jimxu fuq għall-ħaġa li jmiss then-- li, fil-fatt, int ser biex bżonn biex tara l-kodiċi. Hekk jien biss se kopja li aktar dritt issa. OK. Hekk jien ser nuruk guys dan il-kodiċi. U nixtieq li inti tipprova u figura barra dak li suppost tagħmel. Hekk meta wieħed iqis that-- tieħu minuta jew hekk. Ipprova u ċifra barra dak li għaddej hawn. Xi ideat? Aħna nafu li aħna jkollu almenu tnejn argumenti kmand tal-linja, id-dritt? I jassumi li waħda minnhom se tkun li [inaudible] tal-programm tagħna huwa u mbagħad xi ħaġa oħra. Għaliex jekk [inaudible] huwa inqas minn tnejn, aħna Yell fil minnhom. Dritt? U mill-użu, jidher qisu li għaddej biex tkun xi tip ta 'fajl. Aħna kollha jaqblu ma 'dik? Allura issa, x'inhu l-linja tagħmel? X'hemm dan għaddejjin? UDJENZA: Il-fajls kollha. SPEAKER 1: Eżattament. Li għaddej kollha permezz tal- fajls li Imxejna input hemmhekk. Allura għal kull fajl, huwa ftuħ xi sekwenza hemmhekk. Huwa ftuħ dan il-fajl. Dritt? U huwa qari minnha. Of course, iċċekkjar jekk huwa null. U allura huwa istampar. Jekk huwa null, huwa biss tgħidilna li li mhux fajl li teżisti. Minħabba ftakar, ma aqra fajl tagħna għandu jeżisti. Dritt? Bil jiktbu u tehmeż, inti tista 'tikseb bogħod magħha. Iżda ma jaqra, fajl tagħna għandu jeżisti. U mbagħad jekk ma jeżistix, dak li aħna tagħmel hawn? Ejja biss tibda hawn. X'hemm dan do-- din l-ewwel karattru. X'tikkontrolla do? He gets karattru wieħed, id-dritt? Allura dak li huwa dan isir? Huwa jkollna l-ewwel karattru. Xi ħadd jaf EOF? UDJENZA: Tmiem tal-fajl? SPEAKER 1: Tmiem ta file-- eżattament. Allura li għaddej biex jgħaddu il-fajl kollu, id-dritt? U allura li għaddej biex taġġorna minn jkollna kull karattru sussegwenti. Dritt? U x'hemm dan isir? UDJENZA: Inpoġġu li in-- SPEAKER 1: Putchar prints li Screensaver tiegħek. [Inaudible]-karattru. U mbagħad meta [inaudible] dan se tagħlaq il-fajl. UDJENZA: Inti ma bżonn ta '[? ieħor? ?] SPEAKER 1: Mhux bilfors. I mean, huwa tip ta 'implikat f'dan. Minħabba dan prospetti, għalkemm, sakemm dan ma qabda dan, int multa. I jfissirx li huwa probabbilment tajjeb prattika li tagħmel ħaġa oħra. Iżda inkella mhux dejjem meħtieġ speċjalment jekk għandek xi ħaġa bħal ritorn, li ifisser li f'dan il-każ jekk il-qabdiet dan, program tiegħek ser jispiċċaw u qatt ser tikseb dan. Huwa aktar għall-każ fejn int mhux neċessarjament jirritornaw xi ħaġa. Għaliex jekk dan ma kienx jirritornaw xejn, dan ikun ifisser li jekk dan kien minnu, il-bqija ta 'dan xorta run. U f'dak il-każ, inti tkunx tixtieq falza. Jekk huwa jirritorna, u tmiem il-programm tiegħek, l inkella mhux meħtieġ kollu il-ħin, jiddependi fuq il-kuntest. Jacob, ma għandek xi mistoqsija? UDJENZA: Yeah. Allura ma fgetc jiksbu l-karattru li jmiss? Kif ma jżid il-karattru? SPEAKER 1: Yeah. Allura fgetc gets-karattru li jmiss. Inti tista 'taħseb hija simili C ++ f'sens. UDJENZA: Allura dak li kien EOF? SPEAKER 1: EOF hi l-aħħar tal-fajl. Huwa biss markatur li ihallik taf li int fl-aħħar tal-fajl tiegħek. Allura dan se jistampaw biex tiegħek standard out. U allura li għaddej biex tagħlaq il-fajl meta dan isir. U mbagħad ejja mur il-fajl li jmiss, id-dritt? Allura ġenerali, dak ma dan il-programm do? [Inaudible] SPEAKER 1: Yeah. Hija biss prints out kollox hemm. Mela CAT jekk inti guys qatt jintużaw u mbagħad l-isem ta 'xi file-- I do not know jekk kwalunkwe inti għandek qatt sar li fuq tagħmir terminali tiegħek. Imma jekk inti qatt tuża l- kmand CAT-- C-A-T-- u mbagħad ikun x'ikun fajl ikollok there-- dan prints out għal terminali tiegħek, li jista 'jkun super handy għal xi affarijiet. I użu ħafna. Ma li jagħmel sens għal kulħadd? Kessaħ? OK hekk kompitu tiegħek now-- jew billi lilek innifsek jew mal-poplu madwar you-- huwa biss jiktbu program sempliċi li se biss jiktbu "Hello, dinja!" out għal fajl. [Inaudible] [Inaudible] SPEAKER 1: I kien simili, ma I do dan ħażin ġimgħa li għaddiet? Jien ma naħsibx li kien dik ħażina. Ninsab kuntenta li inti qed kollha hawn. Huwa verament jagħmel me happy. I'ma girl pjaċiri sempliċi. I biss nixtieq meta sezzjoni tiegħi jattendi. Hekk jien biss jkollna dan beda għall inti guys sabiex inkunu nistgħu kodiċi flimkien. I ma simili tqegħid xi ħadd fuq il-post jekk inti tixtieq li tkun. UDJENZA: Għall-kwizz, tagħmel għandna jiktbu program? SPEAKER 1: Inti tista 'tintalab biex jiktbu programmi sempliċi bl-idejn. Yup. UDJENZA: Il-kwiżż huwa ġimgħa d-dieħla, id-dritt? SPEAKER 1: Il-kwiżż huwa l-Erbgħa li jmiss. Dan ifisser hemm [sabiħ? CSE?] gradazzjoni partit wara, li ifisser li inti ser tingħata punteġġi tiegħek lura li night-- f'liema ħin? Min jaf? Iżda se jkun li bil-lejl. Kull dritt. Kif irridu li tibda dan? I ser jagħtuk jibda hint-- ma 'dan. UDJENZA: Inti għandek biex tiftaħ fajl. SPEAKER 1: Yeah. Allura dak li tridu li jsejħu dan? Do inti biss tixtieq li hija sejħa "fajl"? Ejjew nagħmluha faċli. Allura fopen-- x'hemm tagħna test output se tkun? Sejħa hija "Hello." U dak li huwa mod tagħna? Liema huma aħna nagħmlu dan il-fajl? UDJENZA: Aqra. Kitba. SPEAKER 1: Aħna qed miktub lilha. Sabiħ. OK, hekk aħna dan il-fajl issa. What do we bżonn tagħmel? UDJENZA: Iċċekkja jekk huwa null. SPEAKER 1: Iċċekkja jekk huwa null-- eżattament. Dan huwa dak I simili biex tisma. Li għandu jkun awtomatiku, speċjalment pretty ħafna minn dan il-punt fuq. Jekk tibda segfaulting, inti probabilment ma jikkontrolla għal null x'imkien. Disa 'darbiet minn għaxar, li l- se tkun żball tiegħek. Hekk jekk inti tista 'biss tikseb fil- vizzju, dejjem iċċekkja jekk huwa null, ħajja tiegħek li għaddej biex tkun sbieħ u easy-- jew aktar faċli. Allura tikkontrolla biex tara jekk huwa null. Mela jekk mhuwiex null, li huwa dak li l-bang ugwali means-- ma null-- huwa validu. What do rridu nagħmlu? Aħna biss tixtieq li jistampaw għal dan il-fajl, id-dritt? Allura dak li aħna ser tuża? UDJENZA: Fprintf SPEAKER 1: Fprintf-- sabiħ. U fprintf jieħu żewġ arguments-- fejn li għaddej u dak li rridu stampati. Allura x'inhu l-ewwel wieħed? Fejn huwa se? UDJENZA: File. SPEAKER 1: Huwa ser fajl. U dak li rridu stampati? "Hello, dinja!" Kull dritt. Aħna għandna l-aħħar thing-- wieħed ieħor paradigma kbira hawn. UDJENZA: Agħlaq. SPEAKER 1: Agħlaq. Hemm inti tmur. UDJENZA: Huwa dan jiġri jekk il-fajl huwa null? SPEAKER 1: Le, dan huwa jekk mhuwiex null. UDJENZA: Oh, jekk huwa not-- OK. Għall-fopen u allura l- żewġ argumenti li jmorru ġewwa, dak ma l-ewwel argument ifisser mill-ġdid? SPEAKER 1: L-argument huwa bħall-isem tal-fajl li inti tixtieq li tmur. Hekk wara dan imur, inti jkollhom xi fajl imsejħa "bonjour" li kienet "Hello, dinja" fi ħdanu. Li kollox. Biss l-isem. UDJENZA: U peress li huwa miktub, il- fajl ma jkollhom diġà jeżistu. Hija li dak li qal? SPEAKER 1: Dritt. Eżattament. Jekk "Hello" bħala fajl s'issa ma jeżistix, huwa se toħloq fajl msejħa Hello "u jikteb lill dan għalik. UDJENZA: Meta inti qed javżak il-programm li kiteb għall-fajl, għaliex tikteb "fajl" minflok l-isem tal-fajl u fprintf-- SPEAKER 1: Minħabba f'dan il-każ, għandna li FILE-- kbar kollha star caps--, fajl. Allura huwa pointer għall-fajl li qed jitkellem dwar. Dan huwa l-mod li aħna biss jirreferu għaliha. Allura f'dan il-każ, inti jistgħu jaħsbu Ah file--, nistgħu nużaw this-- fajl hawn jirreferi għall-ftuħ ta '"Hello" u kiri li jiktbu. UDJENZA: Jista npoġġux "Hello" minflok [? ta 'ftit?] f file? SPEAKER 1: Le, għaliex "Hello" jeħtieġ li jkun miftuħ u writeable. File hawnhekk huwa bħal designator li tgħid OK, aħna jkollhom din hello-- file-- li aħna qed tħares lejn. Hija tkun infetħet. U aħna qed tmur biex jiktbu lilha. Jekk inti biss użu "Hello", li huwa inkapsulati fl dan. Allura li għaddej biex skerz. I mean, inti jista 'jkun jismu dan. Li seta 'jsir il-fajl, star, "Hello", huwa egwali għal dak. Imma l-punt kollu huwa li inti bżonn pointer fajl stilla sabiex li tkun tista 'tuża dawn il-funzjonijiet. UDJENZA: Tista 'tagħmel fajl, star, fajl, "Hello" jew għandek tpoġġi fajl star, fajl minnha? SPEAKER 1: Inti tista ' do fajl, star, "Hello." Tista 'tbiddel dan kwalunkwe isem li trid. Huwa kompletament arbitrarju dak li l-isem huwa. Tista 'isem li bih xejn. Isem li bih jtajru spagetti, jekk int riedu. UDJENZA: X'inhi l- "w" fil-kwotazzjonijiet għall? SPEAKER 1: Il- "w" huwa biss il-mod. Allura aħna qed miktub lill dan il-fajl. Kulħadd tajba? Ċara? Iva. UDJENZA: Allura meta jikteb dan fajl, fejn do we mbagħad isibu dan il-fajl? SPEAKER 1: Huwa ser jiġi fl-istess direttorju li int bħalissa. Jekk int fil pset tlieta u inti tmexxi dan, fi ħdan pset tiegħek tliet folder se tkun dan il-fajl imsejħa "Hello." Kessaħ? Kulħadd tajba? Inħoss bħal int kollha jkollna, li hija kbira. OK. Allura lura għall show-- slide tiegħi I love meta jaħdmu l-affarijiet. OK, pointers-- Are You guys eċċitati? Pointers huma kbar. Huma jieħdu ftit biex nagħlaq ras tiegħek madwar. Dan huwa t-tieni sena tiegħi tagħlim pointers. U naħseb I finalment ltqajna. Mela jekk inti ibatu, huwa OK. Kif għidt qabel, tpinġija stampi jgħin ħafna ma 'affarijiet fil-CS, kemm I think nies għandhom tendenza biex jaħsbu oh, aħna qed fuq kompjuter. Għandna biss kodiċi. No-- stampi tpinġija se verament tgħinek. And I really ninkoraġġukom biex vit fis-ġenb kindergartner tiegħek u jġibu l krejons jew markers u tiġbed. Minħabba li se jgħinek. U jekk inti tara lili fil-ħinijiet tal-uffiċċju, I se jkunu qed iġorru madwar munzelli tal-karta bil pinen tpinġija affarijiet out. Allura speċjalment ma pointers-- tiġbed ritratti. U jien ċert li aħna qed attwalment għaddejjin biex jkun tpinġija xi ritratti hawnhekk ukoll. Allura inti guys kollha ltqajna biex tara Binky, dan il-ħaġa claymation jibred. U naħsbu huwa verament umoristiċi meta hu tisplodi fi mazz ta 'biċċiet. Huwa xi eżenzjoni komiks għall-klassi. C [inaudible] din il-ħila kbira li tkun kapaċi biex jikkontrollaw memorja. U hija waħda mill-affarijiet li verament li jagħmilha tali lingwa qawwija. Imma bil-qawwa kbira tiġi responsabbiltà kbira. U l-affarijiet crazy jista 'jiġri jekk int ma attenta. Allura meta inti qed tuża pointers, inti tixtieq li tagħmel żgur li int verament jifhem eżattament dak li qed tagħmel. Nisperaw li l-ftit li jmiss ta ' żmien se jgħinek verament jifhem pointers, kif jużawhom, u kif jimmanipula lilhom. So memory-- Jien ċert konna rajt dan dijagramma qabel. Allura din hija biss dijagramma sempliċi ta ' kif l-affarijiet jista 'jkun maħżun memorja. Allura inti bażikament jkollhom dawn arrays enormi ta 'blokki byte wieħed huwa dak li għandna here-- żgħir inkrementi minn wieħed kull darba. Dan huwa fil-hex [inaudible] hekk blokki tmien bit. U kull blokk huwa assoċjat ma 'xi indirizz hexadeċimali. Mela jekk inti qatt tara l- 0x, li jinsab biss notating li huwa indirizz hexadeċimali. Inti tista 'tassumi dan ifisser xi indirizz fil-memorja. Aħna qed jitkellem dwar l-indirizzi tal-memorja kull meta inti tara hexadeċimali. Għandna ints huma varjabbli, sufruni huma varjabbli li jaħżnu. Allura ints ints maħżen. Maħżen sufruni sufruni. Allura irridu wkoll pointers li tindirizza taħżen memorja. C'est tip ta 'mapping. Pointers huma esklussivament għall-indirizzi memorja. Allura dak simili tip tiegħek hemmhekk. Appliance tiegħek huwa 32-bit, li jfisser li l-indirizz tal-memorja tiegħek huwa erba 'bytes. Sabiex kwalunkwe pointer li għandek huwa wkoll se jkun ta 'erba bytes. Jew inkella jekk huwa l-erba 'bytes, memorja huwa erba 'bytes. Memorja maħżen pointers. Għalhekk, dawn qed erba 'bytes. Cool-- biss trid tissaħħaħ dik. Inti għandek tikseb dan komiks issa. I do not know kif ħafna minnkom huma fannijiet XKCD, imma I love XKCD. Huwa kbir. Kull dritt. Allura ħolqien pointers-- kif għidt, huwa pretty ħafna biss bħal kull ħaġ'oħra. Għandek tip. Inti jkollha isem. Dritt? Dak hu li għandna hemmhekk. [? Hex?] Star ifisser li huwa pointer, u mbagħad tkun xi tkun tixtieq li hija sejħa. Allura l-tip jirrappreżenta dak li inti jista 'jaħżen. Kull dritt? Bl-istess mod li jekk nagħmlu ints, nafu aħna qed ħażna ta int hemmhekk. Bil-pointer, hija jkollha indirizz tal-memorja. Imma dak li jfisser hu that-- hawn fejn tpinġija se jidħlu fil handy. Allura f'dan il-każ, għandna xi value-- ejja ngħidu erbgħa. Erba huwa fl-indirizz wieħed. OK? Dan l-ewwel waħda hawnhekk tfisser li huwa 2x pointer. Dritt? Huwa xi pointer x. x tistax tkun xi ħaġa, tkun xi tkun. Tkun xi tkun x is-- jgħidu x huwa erbgħa. Li għaddej biex jaħżnu l- indirizz tal-memorja hawn. Allura int, star, x-- dan huwa xi slot oħra memory-- li jaf dak li din hija. Iżda li għaddej biex taħżen l-indirizz hawn. Għalhekk dan ikun like-- f'dan il-każ, Tkun xi tkun, hija maħżuna fil 0x1-- kollu li huwa maħżun fl-indirizz li pointer tagħna jkollha, irid ikun kompatibbli ma dak li konna nominati. Allura fil 0x1, f'dan il-każ, dan huwa x. Dan jista 'biss qatt tkun int filwaqt li aħna qed jużaw dan. Bl-istess mod, jekk ikollna 1y ieħor, ikun x'ikun indirizz hija maħżuna ma 'y għandu li tkun istess ħaġa char-- ma z. Bl-istess mod, kull meta inti tipprova tagħmel intx ugwali 0.4, li għaddej biex Yell fi inti u tkun ebda simili, inti qal inti riedu int. Dan huwa suppost li tkun int. Tieqaf jippruvaw li jagħmilha float. So let affarijiet jkun dak li tixtieq li tkun. Ħalli affarijiet jkun infushom. Allura ħaġa kbira hija biss kwalunkwe tip ta 'pointer huwa, dak l-unika ħaġa li tista 'taħżen hemmhekk. OK? Bil-prattika, kif ma ' aħħar ġimgħa, kollox jidher verament tip ta 'astratt. Aħna qed tmur biex tagħmel xi prattika. Hija għandha tagħmel aktar sens. Allura referenzjar u dereferencing-- huwa verament importanti li tikseb dawn dritta. I xorta jkollhom jġedded u mbagħad kull issa. U jien bħal stenna, liema waħda irrid? Allura l-ampersand fatt se tagħti inti ir-referenza jew l-indirizz ta '. Allura dan jirritorna l-indirizz fil- memorja ta 'liema varjabbli huwa maħżun. Allura li għaddej biex attwalment jirritornaw lilek a hexadecimal, billi dereferencing dan huwa attwalment ser jagħtuk id-data li hija maħżuna hemmhekk. OK? Allura aħna qed tmur biex tħares lejn eżempju verament mgħaġġel, jew attwalment up li jmiss. OK. Allura aħna għandna biex jaħsbu verament sew dwar dan. Allura hawnhekk għandna xi integer x. Jien ser jippruvaw u tiġbed dan l-aħjar tal-kapaċitajiet tiegħi. Allura aħna qed tmur li jkollhom din slot x. U huwa ħażna ħamsa. Indirizz tagħha huwa 0x4. Kessaħ? Kollha tajba. Allura issa għandna dan il-werrej. Kien minn hawn. U l-ampersand tagħtina l-indirizz ta 'xi ħaġa. Allura, f'dan il-każ, huwa l-indirizz ta 'x. X'inhu l-indirizz ta 'x? 04-- u dan pointer huwa fil 0x08. Kessaħ? Allura inti tista 'taħseb dwar dan pointer, 04, ftit punti hawn fuq. U dawn qed jissejjaħ pointers għaliex kif aħna nikseb aktar fis dan, int ser tara li tipponta lejn l-affarijiet. U blokka waħda tipponta għall-ieħor blokk se tagħmel ħafna aktar sens. Allura hawnhekk huma tnejn. U allura aħna għandna xi kopja, li huwa 0x0c what--. U li għaddej biex dereference pointer tagħna. Allura dak li kien qal huwa OK, hawnhekk pointer tagħna. Il-valur huwa jaħżen huwa 0x04, U liema huwa qal hu li tmur f'dan l-indirizz u tell me x'hemm fiha. Allura dak effettivament dak li dan vleġġa qed tagħmel. Inti tista 'taħseb dan bħal stilla tiegħek. Allura OK, meta nagħmlu star, dan ifisser isegwu. Mur dan l-indirizz. U dan huwa bażikament biss wara Din il-vleġġa għal din chunk memorja. U tagħtina x'hemm fiha, li hija ta '5. Huwa għalhekk li kopja tagħna huwa ugwali għal 5. Ma li jagħmel sens? Ħadd ma bżonn lili biex jgħaddu li għal darb'oħra, jew aktar bil-mod? Inti trid lili biex tmur permezz ta 'dan wieħed aktar ħin? OK. Aħna qed tmur biex tiġbed mill-ġdid. Meta nibdew, aħna kollha jaqblu li għandna xi blokki ta 'memorja li l-varjabbli x li waqqafna ugwali għal 5. Li aħna ma nikkontrollawhomx fejn huwa fl-memorja. Allura dan il-post huwa biss assenjat arbitrarjament. Tajba hemmhekk? OK. Imbagħad aħna initialize pointer għal int. C'est pourquoi huwa permess li jippuntaw lejn x għaliex għandna int fil hawn. Għandna blokki oħra ta ' memorja għaliex dan il-werrej hija varjabbli bħad kull ħaġ'oħra. Huwa assenjat arbitrarjament xi spazju fil-memorja. U dak huwa jaħżen huwa l-indirizz ta 'x. Ampersand ifisser indirizz ta 'x. Allura x'inhi l-indirizz ta 'x? UDJENZA: Huwa zero-- SPEAKER 1: 0x04. Allura then-- aħħar wieħed. Għandna xi copy-- darb'oħra biss ieħor varjabbli. Mela ejja tassenja xi post arbitrarja. U aħna dereference pointer tagħna. L-istilla ifisser jmorru għall- indirizz maħżuna fil pointer tiegħi. Tell me x'hemm hemmhekk. Allura l-indirizz maħżuna fil pointer tagħna huwa 0x04. Allura aħna tmur f'dak l-indirizz. Huwa tipponta lejn dak l-indirizz. X'hemm ġewwa din il-blokka tal-memorja? Huwa ħamsa. Allura dak hu li aħna tassenja kopja tagħna. Kulħadd tajba? Kessaħ. Stampi Again--. Allura tracking l-valuri here-- jien ser let inti guys jaħsbu dwar dan. Nistgħu nużaw ieħor stampa. Imma nixtieq li inti tipprova u r-raġuni permezz ta 'dan fuq tiegħek għal minuta. Billi dawn ma kinux jagħtu us indirizz eżempju, Jien biss se jagħmlu x-- ampersand li għandu jgħin issuq dar. Ampersand ifisser indirizz. Hekk fl-ewwel waħda, kulħadd jmorru ma 'l-ewwel linja. Xi x sett ta five-- xi slot każwali fil-memorja. Int pointer star hija ugwali fl-indirizz ta 'x, id-dritt? Int pointer star joħloq dan il-blokk, jitlob dan pointer, u tassenja lill-indirizz ta 'x. Jien terribbli fil ampersands. Issa dak li aħna qed tagħmel hija aħna ngħidu OK, dereference pointer tagħna. Allura immorru OK, x'hemm pointer tagħna? Huwa ampersand x. Mur ampersand x u jassenja mill-ġdid. Allura issa, ampersand x se tkun 35. Allura bażikament, meta int dereferencing, inti tmur OK. Int ser tkun tpinġija stampi bħal dan. Int ser tkun tpinġija vleġeġ tiegħek aktar minn fejn hu. Allura jmorru għal din slot fil-memorja u jew tagħti me dak il-valur lura, jew jibdlu dan. F'dan il-każ, għaliex aħna qed f'dan valur, aħna qed assenjazzjoni li jkun 35. Billi fl-aħħar wieħed, jekk tinnota, aħna kienu tassenja dak li kien fil hawn għal xi ħaġa oħra. Allura dawn ikollhom din it-tabella tal-biża. Huwa mhux ħażin. Inti guys jaħdmu fuqha. Jien ser tiġbed out fuq il-bord. Aħna qed tmur biex jimlew it out flimkien, OK? Allura grab xi karta, grab sieħeb, tibda taħdem. Jien ser tikseb biċċa akbar ta 'ġibs. Minħabba li għaddej biex tkun ħafna. OK. PROFESSOR: OK. Nibdew bl-ewwel ringiela. Aħna ser tibda hemmhekk, allura inti guys jistgħu forsi jaħdmu permezz ftit aktar. OK. a ugwali darbiet b c iva, liema huwa? Mhuwiex mistoqsija trick, I wegħda. STUDENT: 4 darbiet 5. PROFESSOR: 4 darbiet 5. 20. Allura x'hemm b? STUDENT: 4. PROFESSOR: U ċ? STUDENT: 5. PROFESSOR: 5. U allura dan huwa biss se jiġu ampersand a, ampersand b, ampersand c, id-dritt? Mhux ħażin. Huwa sempliċi biżżejjed. OK. Allura dak li jmiss. A huwa ugwali għal darbiet c, fil-każ ħadd kienet familjari ma 'dak. Huwa kulħadd familjari maż-żminijiet ugwali? OK, dan kollu means-- dan huwa shorthand għal huwa ugwali għal darbiet c. Inti tista 'ukoll tagħmel dan ma diviżjoni, bil Barra minn hekk, ma tnaqqis. Inti tista 'tagħmel ugwali, jew plus ugwali c tfisser ugwali plus c, nieqes ugwali c tkun ugwali għal minus c. Huwa biss zokkor sintattika. Allura, f'dan il-każ, li huwa ugwali għal drabi c tagħtina dak? Għal darb'oħra, mhix kwistjoni trick. STUDENT: 100. PROFESSOR: 100. Ma xi ħaġa oħra bidla? No Forsi I se finalment nikseb aħjar fil ampersands tiegħi. STUDENT: OK, sorry, kif ma ikollok 100? PROFESSOR: OK. Allura huwa ugwali għal darbiet c, hekk darbiet c. STUDENT: Oh, inti qed tuża a għall-previous-- PROFESSOR: Iva. Allura dawn huma l-valuri l-aktar reċenti tagħna. Dawn huma dak li għandek tkun użu kif nimxu isfel, OK. Allura, b hija l-bdil ħaġa unika, id-dritt? Mela ejja jimlew kollox. B. X'inhu b se tkun? Li tkun jew ma tkunx. Allura dak li huwa dan isir? X'inhu l-istilla pa tagħmel? STUDENT: Kodiċi għall-post ta 'pa. STUDENT: Le, mhux pjuttost. Allura dan huwa referenza d. STUDENT: Allura b hija valur ekwa ta pa. PROFESSOR: Yeah, hekk pa huwa l-indirizz ta ', id-dritt? Allura huwa qal mur fejn a hija maħżuna u tagħtiha dak il-valur. Allura x'inhi b? STUDENT: 100. PROFESSOR: 100. Perfect. OK, hekk pc huwa x'hemm tinbidel. Kollox jibqa l-istess. X'inhu pc se tkun? Assenjazzjoni sempliċi. Pc hija ugwali għal pa, u dak li huwa pa? STUDENT: ampersand a. PROFESSOR: Perfect. Issa aħna qed jkollna interessanti. OK, ejja break dan wieħed isfel. Ewwel, x'hemm darbiet B Ċ, għaliex thats l-parti faċli ta 'dan wieħed, id-dritt? Ħinijiet B c is-- STUDENT: 500. PROFESSOR: Yeah, hekk dak li huwa dan wieħed tagħmel, Jekk huwa star pb, x'hemm qed jinbidlu? STUDENT: X'hemm fil the-- PROFESSOR: X'hemm fil b? STUDENT: X'hemm fl-ispazju li pb hija li tipponta lejn. PROFESSOR: u Pb hija li tipponta to-- STUDENT: B. PROFESSOR: B. Allura l-unika jinbidlu ħaġa hija b, id-dritt. Allura b darbiet c, 500. Allura dak hu li bidliet issa. Kessaħ. Sabiħ. Inti guys qed jagħmlu kbira. Kull dritt, tkissir dan isfel wieħed. C qed tinbidel, id-dritt? Allura nistgħu timla kollox. Ejja naraw. OK. Aħna nafu li ċ se tkun l- prodott ta 'żewġ numri, id-dritt? Liema tnejn numri, għalkemm? STUDENT: A u ċ? PROFESSOR: Allura huwa dritt għall-ewwel waħda. Allura aħna qed D referenzar p ta ', id-dritt? P ta 'punti għal, hekk aħna nafu li dan se jkun 100 darba liema? Times What Does punt pc biex? Jindika. Allura 100 darba 100 huwa 10,000. Does li jagħmel sens? Kessaħ. Dar stretch, guys, l-aħħar ringiela. OK. X'hemm jinbidlu hawn? STUDENT: A. PROFESSOR: A. Perfect, hekk kollox jistgħu jibqgħu l-istess. OK. U dak huwa? Allura huwa drabi liema? Dan huwa pb stilla. Allura pb star ifisser hawn pb, punti PB biex b. STUDENT: 500. PROFESSOR: 500. Allura aħna għandna 500 darba 100. C'est 50,000. Whew! Ħares lejn dak. STUDENT: Għaliex għandna l-& c għall-last-- PROFESSOR: Jiddispjacini. STUDENT: Oh, OK. PROFESSOR: bad tiegħi. Lottijiet ta 'kitba. Kulħadd tajba? Mhux wisq ħażina, right? Just tieħu ftit filwaqt li taħdem permezz. Jekk inti din tinqasam, jifhmu dak li kull parti qed tirreferi to-- bħala ma 'kollox huwa, yes-- din tinqasam għall-ftit problemi u mbagħad Begonia, u inti tista 'tagħmel xi għalf tal-biża. Hemm huma l-tweġibiet, iżda aħna ma li. Aritmetika pointer. Ah. Idejn tiegħi huma kollha ġibsi. Allura żżid jew tnaqqas int taġġusta l-pointer mid-daqs tat-tip ta 'pointer. Ftakar kif kull tip għandu daqs differenti? Allura bħal doppja jew twil twil jiġifieri tmienja u int huwa erbgħa iżda char huwa wieħed. Allura dak li inti trid tagħmel is-- ħaġa waħda li tiftakar huwa biss li kemm tiegħek valur pointer attwalment bidliet se jiddependi fuq l- tip ta 'pointer huwa. Kulħadd tajba ma dan? Nista iħassarha? Aħna tajba? Biża. Hekk jekk ikollna xi pointer that-- dan se be-- jien se jagħmilha pointer int. Taħżen dan. Jekk ġejt biex ngħid pointer plus wieħed, dak li għaddej biex tagħmel huwa li għaddej biex taġġorna lilha mill-daqs ta 'int għaliex dak l- tip ta 'pointer huwa. Bil C, kollox huwa stretta ħafna u regolat. Il-pointer int se taġġorna minn l-ammont ta 'spazju li int se tieħu. An int huwa erba 'bytes. Allura dak li dan idur f'korp? Int biss li żżid erba fuq dan. Issa pointer tiegħek se be-- OK. Mela jekk kien char u għamilna pointer plus wieħed, dak li jkun issa? Jekk started-- feint aħna started-- dritt issa huwa 0x08. Ejja issa ngħid li dan kien char pointer, u aħna miżjud wieħed. Liema ser tinbidel għal? Kemm bytes huwa char? UDJENZA: One. SPEAKER 1: Wieħed. UDJENZA: Allura 0x09. SPEAKER 1: Għalhekk ikun disa. Hekk biss xi ħaġa li wieħed jiftakru. Just meta inti żid waħda, mhuwiex żżid waħda sakemm huwa char. Huwa jżid kemm bytes-tip li huwa, huwa għalhekk li għandna din l-ekwazzjoni up here. Allura huwa drabi INT-daqs tat-tip ta 'pointer. Allura aħna għandna l-eżempju hawn. y ġie assenjat dak il-valur, 0x4, meta għamilna y plus ugwali wieħed. X'hemm fiha, x'hemm fil x, ma tinbidilx. X'tagħmel il-bidla hija x'hemm y. L-indirizz maħżuna fil y aġġornata minn erba ' għaliex hemm erba 'bytes fi int u huwa ta 'pointer int. Kull dritt. Allura issa għandna ieħor eżerċizzju. Għalhekk il-kwistjoni huwa dak li se print. Xi ideat? UDJENZA: In-numru ta ' karattri fit qattus kuntenti? SPEAKER 1: Eżattament. Allura simili ma string tiegħek. Does kulħadd nikseb dan? Do irridu li jimxu permezz ta 'dan? Iva, OK. Allura dak li għandna here-- I bħal dan hekk ħafna aktar. I ma jkollhom [Inaudible] ridiculously. Allura aħna għandna string tagħna hawn, qattus kuntenti. Sabiħ. Għandna xi kontro li aħna qed iżżomm rekord ta '. Allura aħna għandna xi char * pointer li ftit huwa stabbilit ugwali għal str. X'inhu dan qed tagħmel huwa huwa tassenja xi pointer għall-bidu ta 'spag tiegħek. Għaliex jien ċert, kif kien imsemmi fil lecture, konna tak guys dan tip ta 'data msejħa string. Imma verament kordi huma biss firxa of-- bħal char *. Huwa pointer għal mazz ta 'karattri li huma kontigwi fil-memorja. Allura dan biss jistabbilixxi dan ugwali għal kwalunkwe string hija identifikati minn fejn ewwel karattru tagħha huwa. Allura dan huwa biss iffissar f'xi punt ugwali għall-bidu tas-sekwenza. Kulħadd tajba hemmhekk? Kessaħ. Allura dan huwa dereferencing pointer tagħna. Allura huwa attwalment għaddejjin biex tagħtina xi valur fil hawn, fil string tagħna li aħna qed jitkellem dwar. U aħna qed tgħid sakemm mhuwiex terminatur null. Allura iżommu għaddejjin sakemm ikollok sa l-aħħar tas-sekwenza. Taġġorna pointer tiegħek minn waħda. Allura r, huwa fil-fatt se taġġorna minn wieħed kull darba minħabba li din hija char, l char *. Allura li għaddej biex jgħaddu. Li għaddej biex taġġorna. Allura l-ewwel darba din runs, li għaddej biex jkun hawn fil h. Li għaddej biex taġġorna. Hija ser tkun a. Hija ser tkun p, y, u hekk u ibqa 'sejjer hekk. Aħna ser taġġorna counter. Meta jilħaq il-għan, huwa biss prints kemm huwa gotten. Iva. UDJENZA: Allura Huwa jgħodd l-ispazju bħala waħda, id-dritt? OK. SPEAKER 1: Aħseb hekk. Huwa li question-- UDJENZA: [inaudible]. SPEAKER 1: Nru inkwiet. Dan I tagħmel dan. Kull dritt, hekk ħaġa waħda I jifhem li ma 'firxa, inti tista 'wkoll titratta dan bħala pointer minħabba arrays huma biss spots kontinwu ta 'memorja. Allura inti tista 'titratta dan l-istess mod. Inti tista 'timmanipola lilhom ma pointers, wisq. Allura minflok tagħmel, f'dan il- każ, il-ħaġa analoga Ikun firxa 0 ugwali 1. Iżda fl-istess mod li string huwa determinat mill-bidu ta 'fejn ewwel karattru tagħha hija, firxa huwa determinat mill fejn l-ewwel element tagħha huwa. Għaliex nafu, aħna qed garantit, li dawn ser ikunu kontinwa blokki ta 'memorja. Dak hu li jippermetti li jagħmlu dan. Nafu li qed kontinwa blokki ta 'memorja. Allura f'dan il-każ, billi dereferencing biss firxa, li tgħidilna, OK, mur l-bidu ta ' array tiegħek, li huwa hawnhekk. Allura inti tista 'tistabbilixxi lilha ugwali għal wieħed. U f'dan il-każ, ikun x'ikun firxa tiegħek tip huwa, meta inti jaġġornah minn wieħed, li jinsab biss bħall-aġġornament lill-indiċi li jmiss. Tista 'tagħmel dan għaliex inti jafu x'hemm fil-firxa tiegħek. Għalhekk jaf kemm biex taġġorna pointer tiegħek billi, dak l-indirizz li jaġġornah biex hekk li int fil-slot li jmiss. Allura dan huwa biss mod differenti tal-kitba firxa 0 ugwali 1, array 1 huwa ugwali għal 2, array bracket 2 ugwali 3. Huwa biss mod ieħor biex jaħsbu dwar dan. Minħabba li huma kontinwi blokki fil-memorja, inti tista 'tirreferi għalihom jew mill-firxa notation-- li jien personalment isibu easier-- imma forsi għandek bżonn biex jimmanipulaw b'mod strett mill-indirizzi memorja. U dan huwa l-mod inti tagħmel dan. Tip ta 'aktar simili ta' jibred ħaġa inti tista 'tagħmel versus forsi mhux xi ħaġa int attwalment għaddejjin biex jimplimentaw. I użu fil 61. Inti guys probabbilment ma bżonn għalfejn tinkwieta dwar dan wisq. Imma jekk int interessat, jieħu 61 sena d-dieħla. Aħna fil-guys stretch dar. Naf, huwa twil. Dynamic Memorja Allocation-- hekk aħna nafu li wieħed ta 'affarijiet meta tkellimna matul ewwel taqsima tagħna flimkien, ħarisna lejn swap funzjoni fejn kien barra mill-ambitu tal-funzjoni prinċipali tagħna. U konna tgħaddi dawn il-valuri li kienu effettivament kopji. U ladarba swap lest eżekuzzjoni, hija biss ħalla munzell. Ftakar, aħna għandna munzell qafas għall swap. Tħalli u dawk Valuri jitilqu miegħu. U kienu marru. Aħna ma setgħux jagħmlu xejn magħhom u konna imdejjaq għaliex aħna ma tistax tpartit valuri tagħna. Iżda ma Ċ, kif semmejt, inti għandhom ħafna ta 'setgħa fuq memorja. Allura dak li inti tista 'tagħmel huwa inti tista' talloka l-affarijiet fuq il-borġ hawn li se jibqgħu hemm sakemm inti jgħidulhom mod ieħor. Huma qed simili tfal tajba. Huma jibqgħu hemm. Huma ma jħallu. Dawn ser jibqgħu hemm sakemm int simili, OK, inti tista 'tmur bogħod. Billi affarijiet fuq il-munzell, who-- dawn qed bħat-tfal imqareb. Huma ser biss run bogħod meta inti tixtieq li jkun hemm u allura dawn qed marret. Inti ma tistax tikseb minnhom lura. Allura l-borġ is-- aħna qed tmur biex jitkellmu dwar malloc u ħielsa, li Jien ċert li inti guys jinstemgħu dwar fil lecture. U li bażikament mezz li jkollhom data persistenti ħafna. Sabiex inti tista 'żżomm l-informazzjoni madwar sakemm inti tixtieq. MHM. UDJENZA: Inti tista 'tiddefinixxi borġ u munzell? Dawn huma simili postijiet biex l-affarijiet? SPEAKER 1: Allura dawn qed bażikament just-- dawn qed il-mod aħna jirreferu biss għall-memorja. Allura borġ huwa biss postijiet fejn memorja hija allokata dinamikament, billi munzell jirreferi aktar biex jistivaw frames li huma aktar ċentrali għall- funzjonijiet li huma attwalment running. Inti ma verament ikollhom kontroll. Id-differenza kbira, inti għandek kontroll fuq il-borġ jekk inti tixtieq li. Għandek inqas kontroll fuq il-munzell. Il-munzell tiddependi fuq il- funzjonijiet li huma running, u l-ordni li fiha huma run, u kif l-affarijiet huma ritornati. Billi bil-borġ, kif Ser naraw, inti tista 'tgħid, OK, Irrid dan il-valur li jkun madwar sakemm I jgħidlek mod ieħor. M'intix permess biex jeħles minnu. Int mhux permess li jiskarta dan. Inti qed tmur biex jżommha madwar sakemm I jgħidlek. Ikollok biex tkun il-boxxla fil-borġ, billi l-stack-- forsi jekk inti bħall finagle tiegħek mod inti tista 'tkun il-boxxla. Iżda pjuttost mhux. U huwa verament ftit memorja. Huwa modi biss differenti tirreferi għall-memorja. Kessaħ. Allura ma 'dan, kif kontroll memorja tiegħek. Huwa ma malloc, li int ser jiksbu l-użu. Allura huwa biss qasir għall-allokazzjoni memorja. Li kollox huwa. Hemm mazz ta 'jibred oħra funzjonijiet li jkollhom ALLOC fl-aħħar, u inhuma għall-affarijiet differenti. Allura meta għandek bżonn ħażna li teħtieġ outlast funzjoni attwali tiegħek sabiex li meta attwali tiegħek funzjoni runs bogħod, inti għad għandek l-informazzjoni li inti ltqajna minnha, inti tixtieq li tuża malloc. Li ser initialize fuq il-borġ. U bħal I said u jżomm qal, inti ser żommu hemm sakemm inti għid mod ieħor, li huwa l-ħaġa importanti hawnhekk. Allura ħaġa waħda li l-avviż, u li tipikament verament importanti, hija li dan sizeof huwa super utli li tintuża għaliex skond it-tip ta 'magna int taħdem, jista 'jkollhom ammonti varjabbli ta 'memorja li jieħu. Allura inti dejjem tixtieq li tuża daqs ta 'hekk li int mhux magna dipendenti, hekk li kodiċi tiegħek se jimxu fuq kull magna. U dan huwa biss parti tal-kitba kodiċi tajba. Jekk din taħdem fuq magna waħda, iżda mhux kwalunkwe mill-oħrajn, kif utli kien program tiegħek? Allura inti dejjem tixtieq li kun żgur u l-użu sizeof. UDJENZA: Allura huwa li bħall- daqs ta '10 pulzier [inaudible]? SPEAKER 1: Dan huwa d-daqs ta '10 ints. yeah. Allura daqs tal ints se terġa 'lura kemm ma int wieħed jieħu. Jew id-daqs ta 'char, kif Ħafna Does wieħed char jieħdu. U allura kif ħafna blokki ta 'dak tridu? Allura f'dan il-każ, irridu xi ħaġa li nistgħu jaħżen 10 ints sa. U se taħdem indipendentement ta 'magna, li huwa jibred. Allura kif ħafna bytes se li attwalment jagħtuk? Quick matematika. UDJENZA: 40. SPEAKER 1: 40. Eżattament. Allura ieħor ħaġa kbira. Pointer jew malloc jistgħu jirritornaw null. Għalhekk għal darb'oħra, dejjem tikkontrolla biex ara jekk ritornat null qabel ma inti tipprova tagħmel xejn magħha. Jekk inti tipprova u dereference dan il-werrej issa, huwa biss se segfault għaliex inti marru u ppruvaw tmissx null meta m'għandekx ikollok. Allura dejjem jiċċekkja għal null. Għal darb'oħra, inti kollha tista 'tagħmel. Jista ritorn null. Hija ser jirritorna null jekk int jew ta 'spazju, jew għal kwalunkwe raġuni dan dam fis xi bug memorja. Hija xi kultant jirritorna null. Allura inti biss għandek biex jiċċekkjaw għaliha. C'est dan kollu slide huwa qal. U allura dak li għandna hawnhekk huwa sejħa għal free. Allura bl-istess mod li jekk inti jiftaħ fajl inti trid tagħlaq fajl, jekk inti memorja malloc, inti għandu inti liberu li l-memorja. U inti guys se tikseb tagħmel Jittieħed verament jibred. U hemm program inti tista 'taħdem biex ara jekk int qatt jnixxu memorja. Imma inti ma tridx li jnixxi memorja. Huwa tassew ħżiena. Mess up biss affarijiet. Huwa ħażin li tagħmel bħad-ipprogrammar għaqli għall-effiċjenza tad-disinn. Imma hija wkoll biss tip ta ħażin għall-kompjuter tiegħek. Affarijiet hekk biss ħielsa meta inti malloc lilhom. You guys tara l-symmetries hawn. Super sempliċi. Just libera u imbagħad ikun x'ikun pointer tiegħek, ikun x'ikun l-isem ta ' pointer tiegħek huwa, u se jieħdu ħsieb ta jinħeles dan għalik. Kessaħ. Allura għandna dan. Allura aħna qed biss jmorru jimxu permezz ta 'dan il-programm. U allura inti guys qed isir. Allura [inaudible] biss prinċipali. Allura aħna għandna xi int * pointer. Allura aħna għandna pointer li għaddej biex iżommu ints. U kemm ints huwa se żżomm? Just wieħed. Daqs ta 'int. Aħna tikkontrolla biex tara jekk pointer huwa null għaliex huwa, irridu ngħidu ma tagħmel xejn. Huwa ħażin. Allura aħna jistampaw xi żball barra mill memorja, ħafna drabi ritorn 1, Kif inti guys huma użati biex. U allura għandna hawnhekk, aħna dereference pointer tagħna. Allura dan ifisser li aħna qed tmur biex jaħżnu xi ħaġa fil-post mogħti lilna. Int * pointer, jew malloc, jirritorna l- indirizz ta 'fejn titwarrab din memorja għalik. Allura huwa bażikament giving you like-- jekk inti jaħsbu dwar mazz ta ' djar fil-lokal li inti tixtieq li tqiegħed tiegħek fl-għamara, malloc huwa simili OK, ikollok biex tmur għall-dar tlieta. U jagħtik l- indirizz tad-dar tlieta. Allura dan id-dritt issa, dan ħwienet pointer indirizz, Taħżen-indirizz tad-dar tiegħek. * mezzi PTR, OK, jien fil-dar tiegħi. Kessaħ. Għandi bżonn nikseb xi numru sħiħ. Allura inti qed tistaqsi għal xi ħadd li jtik l-għamara issa. Allura ikollok xi int. U tpoġġiha hija fil pointer tiegħek fejn huwa tipponta lejn. U allura biss prints out, inti daħal kulfejn. U għal darb'oħra, ir-referenza. Allura dan huwa simili inti marru għal dan jindirizzaw u inti raw dak li kien hemm. Kessaħ? U allura naturalment aħna ħielsa pointer tagħna. Tinsiex biex ħielsa pointer tiegħek. Tinsiex sabiex jikkontrolla għal null. Tinsiex biex ħielsa pointer tiegħek. Għandek żewġ affarijiet li għandek tiftakar minn dan, jew li għandek tiftakar. Iva. UDJENZA: Jittieħed [inaudible] bħal dik, l-char * i. Kif come aħna qatt ħielsa dawk? SPEAKER 1: Hm? UDJENZA: Huma dawk bħal kordi? You qal kordi huma bħad char * i, id-dritt? Allura għaliex ma we ħielsa kordi? SPEAKER 1: Inti biss biex ħielsa jekk int mallocing. UDJENZA: Oh, jekk int mallocing. SPEAKER 1: Allura malloc u ħielsa huma żewġ affarijiet li għandek dejjem ikollhom flimkien. f miftuħa, qrib f, żewġ affarijiet għandu jkollok flimkien. F'dawk il-każijiet iż-żewġ, iċċekkja għall null. Iva. UDJENZA: Allura ħielsa hija biss tippermetti xi ħaġa oħra li jiġu maħżuna hemmhekk wara dan il-programm ikun uża dan? SPEAKER 1: Huwa biss qal, OK, jien jsir ma 'dan. Inti ma għandekx bżonn li jżommha madwar. Inkella kompjuter tiegħek se Eżatt bħal jippruvaw u żommu hemmhekk. U allura inti can't-- din tmur dwar kwistjonijiet memorja aktar tard. Int dejjem tixtieq li ħielsa għaliex jgħidlek kompjuter tiegħek, OK, jien isir ma 'dan il-post ta' memorja. Inti jista 'jkollhom lura biex nagħmel użu aktar tard. Kessaħ? Iva. UDJENZA: Allura aħna użati l-% d eżatt minħabba doppja thats ġejjin lura, jew għaliex is-- [inaudible]. UDJENZA: Tista 'tuża i%? SPEAKER 1: Tista 'tuża% i. Kwalunkwe mistoqsijiet aħħar minuta? Jimxi 'l quddiem. UDJENZA: I biss mistoqsija ta 'malajr. Allura l-varjabbli PTR, that's-- simili, bl-PTR int * = malloc, thats biss qal huwa tipponta lejn post fil memory-- SPEAKER 1: Tixtieq [inaudible]? UDJENZA: --that hija l- daqs of-- ebda, huwa OK. Iżda huwa biss li tipponta lejn post fl memorja li jinsab biss bħall-erba 'bytes. SPEAKER 1: Dritt. Allura malloc-daqs ta 'int jgħid, OK, jien ser jmorru run off, isibu erba bytes ta 'memorja għalik. Meta ssib li erbgħa bytes ta 'memorja, dan jagħtik lura l-indirizz ta 'fejn tibda, u dan huwa dak maħżuna fil pointer, jew PTR. Tajba. Inti guys tfittex inqas konfuż minn ħafna nies meta I jitkellmu dwar pointer, hekk jien tħossok pjuttost tajba dritt issa. Kull dritt. Bħal dejjem, inti guys għandek kollha gotten gradi pset2 tiegħek minn issa. Naf kien hemm xi wonky affarijiet fejn jgħid, formula mhix valida jew xi ħaġa. Jekk int jkollna dak, kollha ta ' gradi tiegħek huma validi fuq in-naħa tiegħi. So I tista 'tibgħat inti screenshots ta 'gradi tiegħek. Just let me know kif ukoll jekk int nieqsa xi gradi jew xi ħaġa ma jidhirx li jagħmel sens. Come lili. Stajt ġiet super kburi int guys diġà, hekk jżomm dan aġġornat. U jkollhom mistrieħ tajba tal-ġimgħa tiegħek. Jien ċert I ser tara xi tal inti fil ħinijiet tal-uffiċċju.