>> [TEMA musika]
>> Tagapagsalita 1: Hi, lahat.
Maligayang pagbabalik sa seksyon.
Kaibig-ibig araw out-- siyang dahilan kung bakit, ako sigurado, may mga apat na lamang ng sa iyo dito
at hindi aming karaniwang pack.
Ako ay may sakit na ito pagtatapos ng linggo.
Kaya ako ay walang Starburst para sa iyo guys.
At maaari ba akong magsimula ubo katakut-takot sa buong ito.
Kaya makisama lamang sa akin.
Pupunta ako sa talagang subukan at makakuha ng unang sa pamamagitan ng ito,
bagaman, bago Mayroon akong ubo pag-atake.
Ngunit maging madali sa akin ang lang maliit na bit-- na ang lahat ng hinihiling ko.
>> Kaya aming mga agenda para sa today-- lamang reminder-- ang iyong pagsusulit ay sa susunod na linggo.
Sinabi ko mo ito noong nakaraang linggo kaya hindi mahuli-off mo ang bantay.
Kaya ako na nagpapaalala muli sa iyo.
Sa susunod na linggo ng iyong pagsusulit.
Sa bahaging iyon, sa susunod na linggo ni seksyon ay magiging mas
of-- magpapadala ako subukan at trabaho sa ilang pagsusuri.
Kaya kung guys ng dati tumulong sa akin sa pamamagitan ng pagpapadala sa akin
mga bagay na kayo ay kumportable sa, na ikaw ay nag-aalala tungkol sa,
mga paksa na nais mong para sa sa akin upang masakop, na nais maging mahusay.
Kaya ang maaari kong subukan at gumana sila sa aming seksyon sa susunod na linggo
o magpadala sa iyo ng dagdag na materyal o prep na maaaring hindi ka makakuha ng ibang lugar.
>> Oo!
Higit pang mga dumarating ang mga tao!
Akala ko, ginawa ko na hindi maayos na huling linggo, na gustong walang bumalik?
Ako ay natakot.
Kaya ang iba pang mga tatlong bagay na namin ang pagpunta sa pumunta sa paglipas ng
ang mga pag-redirect, file I / O, at pagkatapos payo at dynamic na memory.
Ako ba na ikaw ay ang lahat ng sobrang nasasabik tungkol sa pointers-- mga paboritong paksa ng lahat,
sobrang simple upang maunawaan.
Ako ba mo guys lahat nakuha na, i-right?
>> Kaya unang bagay na una, redirection-- ito ay isa lamang paraan
upang kontrolin kung paano mo pag-input bagay sa iyong programa,
kung paano mo ang output ng mga bagay mula sa iyong mga programa.
Ang pangunahing paraan na guys Na-nakikipag-ugnayan sa ito
ay sa pamamagitan lamang ng karaniwang out sa iyong screen sa pag-print dito.
Ngunit may mga paraan upang pipe-- tulad ng nakikita namin dito
ay isa sa aming mga words-- uri ng tubo na impormasyon
o na data sa isang file mula sa isang file.
Iba ito lamang ang paraan ng sa pagkuha ng mga bagay-bagay sa iyong programa
at out sa iyong programa, sa halip na lamang sa pag-print ang mga ito sa screen na ito
o inputting bagay mula sa command line.
>> Kaya una ay maliit mas malaki kaysa sa caret.
Kaya output-- mga print lang ito ang output sa isang file sa halip ng iyong screen.
Kaya kung mayroon kang isang bagay na naka-print "Kamusta, mundo!" sa screen,
kung inilagay mo ito sa halip sa output.text, na
Lumilikha ang file na ito na tinatawag na output.text.
At kapag binuksan mo ito, ipapakita ito sabihin ang "Kumusta, mundo!" doon.
Maaari itong maging kapaki-pakinabang super kung mayroon kang isang tonelada ng mga error
talaga, tulad ng nakikita natin sa isang ito.
Kung gagawin mo ang dalawang caret, ipapakita ito i-print ang mga mensahe ng error.
>> Kaya kung nagkakaroon ka ng problema sa kino-compile ang, ito ay may maraming mga error
at nagsisimula ka pa nabalaho sa putik sa pagsubok upang mag-scroll sa pamamagitan ng sa iyong command line
sa lahat ng mga ito, maaari mong i-print lamang ang mga ito sa isang file,
buksan up na file sa gayon ay Maaari mag-scroll sa kanila mas madali.
Ko talagang ginagamit na ng maraming kapag ako ay pag-debug
aking 181 psets para sa pagkatuto ng machine.
Sa gayon ay maging kapaki-pakinabang sobrang sa ibang pagkakataon.
Ito ay kapaki-pakinabang din kung mayroon kang programa na siguro ay bumubuo ng isang library
o pagbuo ng ilang mga hanay ng mga string, at
kailangan upang magawang makita na ito ay bumubuo ng maayos ang mga ito.
Ito ang paraan upang gawin iyon.
>> Kaya kung i-print mo ang mga ito sa isang file, mo Maaari nang mas madali suriin ang mga ito, i-right?
Kumpara sa sinusubukang i-scroll sa pamamagitan ng iyong linya ng command.
At pagkatapos ay isang bagay na dapat tandaan ay na may mas mataas lamang
sa caret, kung iyong isinusulat sa isang file na naka-exists--
kaya tulad ng kung pinatakbo namin ito ang unang oras, inilalagay namin ito sa output.text,
at pagkatapos ay nagkaroon kami ng pangalawang programa na naka-print na ito bilang dalawang programa
at ginawang isang mas malaki kaysa sa output.text, ito ay patungan that-- kaya
patungan kung ano ang kailanman sa file na iyon upang magsimula sa.
>> Kaya kung nais mong ikabit ang sa isang file, tulad ng nakikita namin dito,
gawin mo lamang ng dalawang mas malaki kaysa sa mga karatula.
At ito ay ikabit dito.
Hindi nito patungan ito.
Kaya kung kailangan mo upang patakbuhin ang maramihang programa at uri ng panatilihing
subaybayan kung ano ang lahat ng mga ito ay pagbalik sa iyo sa isang file,
iyon ay isang paraan upang gawin ito.
Kung hindi mo pakialam kung ano ang nasa iyong mga file at ito ay pinapayagan na ma-o-overwrite,
maaari mong gamitin lamang ang isang solong mas mataas kaysa sa.
Ay na magkaroon ng kahulugan sa lahat?
>> Madla: Tulad ng tuldok iwa kumusta mas malaki kaysa sa output tuldok teksto, tulad ng dalawang beses,
Makikita ito ipakita lamang lamang sa output tuldok teksto ng pangalawang time--
>> Tagapagsalita 1: I-right.
Kaya gagawin talaga ganap lamang patungan kung ano ang doon upang magsimula sa.
Kung ang file na ito dito, ang output.text na
Umiiral, isa lamang ang anumang tawagan ka na muli gamit ang isang solong mas malaki
kaysa sa maaari mong tingin lamang ng mga ito bilang tulad ng pinalitan nito ang file.
Tulad kapag naka-save ng Salita dokumento at mo i-save bilang,
at panatilihin kang katulad na pangalan, at ganap itong overwrites it--
ito ang parehong uri ng bagay.
Sinuman ay may anumang mga katanungan sa lamang outputting sa file?
Kahanga-hanga.
>> Kaya malinaw naman, kung baligtarin mo ang arrow ng direksyon, maaari itong gawin ng pag-input.
Kaya kapag nagkaroon guys tulad ng Caesar o Visioneer
at kailangan mong i-input ang isang bagay, kayo ay nagkaroon ng isang command line argument
na aktwal na pag-input na ito.
Ito ay isa pang paraan upang gawin iyon.
Kaya sa halip na naghihintay para sa isang command prompt,
tulad ng kapag hiniling mo para sa iyong mensahe sa Caesar o Visioneer,
kung mayroon kang isang file ng teksto na nagkaroon ng iyong mensahe,
Maaaring i-type lang mo ito sa iyon.
>> Kaya kung ito ay tulad ng tuldok iwa Caesar 3 mas mababa sa arrow sa pag-input ng teksto, na
ay ang iyong mensahe, na Gusto patakbuhin lamang ang multa.
Kapag ang iyong Caesar programa talaga tinanong para sa input mula sa user,
ito ay mayroon ka ito dahil iyong nai-type sa file na ito.
Iyon ay isa lamang paraan.
Isang reverse lang ng output-- -input lamang para sa iyong data.
>> At pagkatapos ay ang huli ay pipe.
Kaya medyo cool isa ito.
Dahil nagbibigay-daan ito sa iyo na gawin ang output ng isa
programa at ilagay ito bilang -input sa isa pang programa.
Hindi ko alam kung ang alinman sa iyo -play na may maintindihan
maaaring mayroon na CS50 nagbigay sa iyo, ngunit nais ito
-daan sa iyo upang tumagal ng ilang sample -file, i-type ito sa iyong pag-encrypt,
at pagkatapos ay mula doon nagta-type na sa iyong decryption
upang tiyakin na ito naka-out ang parehong.
Kaya ito ay uri ng tulad ng tatlong-way na loop.
Pumunta para dito.
>> Madla: Kung ang isang programa ay may maramihang mga input,
ay Mayroon bang paraan upang sabihin dito kung aling pag-input na gamitin ang text file o mga output para sa?
>> Tagapagsalita 1: Mayroon itong maramihang mga input.
Anuman ang mag-file ng iyong input-- kapag humihingi ng pag-input na unang pagkakataon,
pagpunta sa ipinapalagay, sa palagay ko, ito ay pagpunta sa pipe sa buong file.
Kaya kung mayroon kang maramihang mga input, ikaw ay pagpunta na mga tubo sa maramihang mga file.
Kaya kung hinihingi para sa mga mensahe tatlong beses sa iyong code,
na iyong pupuntahan ay ang paglalagay ng sa tatlong iba't ibang mga file.
At nakatutuwang ito ay nakakakuha.
At hindi mo kailangang mag mag-alala tungkol sa na ngayon.
Ngunit iyon ang ideya.
>> Kaya oo, pipe ay output lamang ng isa programa ay gumagamit ng pag-input sa isa.
Ang bawat tao'y may magandang?
Ayos.
OK.
Hindi mo marahil ay magkakaroon ng gawin masyadong maraming dito.
Ngunit dapat mong maunawaan paraan na maaari mong gamitin ito.
At mayroong ilang mga kaso na baka gusto mong gamitin ito.
>> Kaya mag-file / O-- alam ko ko kung ano ang iyong saying-- namin ginagamit upang magbasa mula sa
at pagsulat sa aming mga screen doon, na kung saan ay karaniwang in at karaniwang out.
At iyon ang kung ano ang iyong guys ay paggawa ng simula ng klase dito.
Ngunit maaari mo ring basahin at isulat ang mga file, na ang lahat ng mga file ko / O-- upang maghain input,
output ay ang lahat ng ito ay kumakatawan sa.
Kaya nangangahulugan ito na isa lamang na Maaari kang mag-imbak na ngayon ang iyong data.
>> Kapag nag-print ka lamang ito sa screen, talaga ito ay wala na, i-right?
Sa lalong madaling gumawa ka ng "Hello mundo "at run" Hello mundo "
ito ng mga Kopya "Hello mundo" sa screen.
Ngunit hindi ka maaaring talagang gawin anumang bagay na may ito mula doon.
Kung mag-imbak mo sa isang text file, pagkatapos ay biglang
mayroon kang data na ito na pinapayagan ka upang manipulahin o ilagay ito sa isang file,
o ilagay ito sa isang programa sa ibang pagkakataon.
Isa sa mga dahilan kung bakit ginagawa namin ito lamang
bilang isang paraan upang mag-imbak ng data para sa paggamit sa ibang pagkakataon.
>> Mayroon akong ilang mga hakbang dito lamang sa paglalakad sa pamamagitan ng standard
I / O. Sa hakbang isa, mo Kailangan mong lumikha ng isang reference
sa file na kasama ang lahat cap file star file.
Nang sa gayon ay lumilikha ng isang pointer sa isang file.
Kaya pagkatapos na gusto mong buksan ito.
At sinabi mo, literal, ay katumbas ng file lamang fopen.
At ito ay pagpunta upang magbalik ng pointer sa file na binuksan mo lamang.
Nakita ko ng dalawang mo guys sa oras ng opisina.
>> Ngunit ang isa sa mga bagay ay remember-- mga payo
Maaari ilang mga address o null, tama?
Kung sakaling mayroon kaming isang kaso kung saan isang bagay na maaaring magbalik null,
ano ang dapat nating gawin bago namin kailanman gamitin ito?
Kailangan namin upang suriin kung ito ay walang bisa o hindi, tama?
Dahil ang ilan sa inyo ay maaaring nagkaroon ang isyu kung saan ang anumang bagay na
ay ini-ibinalik sa breakout ay walang bisa.
Sinubukan mong upang magsagawa ng ang ilang mga function na ito.
At site sa iyong computer faulted.
Mag-right?
Taya ko ng dalawang mo Maaaring nagkaroon na isyu.
>> Kaya sa fopen, ay fopen alinman sa magbalik ng pointer sa file,
o kung ang isang bagay napupunta mali, ito ang nangyayari upang bumalik null.
Kaya palagi mong kailangan upang suriin na ito ay hindi nagbalik null
bago mo subukang gumawa ng kahit ano pa man.
Ito ay tulad ng isang karaniwang tularan na kayo ay pagpunta sa kailangan dito.
Kung mayroong kailanman ng isang pagkakataon na isang bagay na maaaring bumalik null,
suriin upang tiyakin na ito Hindi bago ka magpatuloy.
Kung hindi man, na iyong pupuntahan upang makakuha ng magagandang mga pagkakamali site.
At walang sinuman ang may gusto upang harapin ang mga iyon.
>> Kaya bilang makita namin dito, ang unang argumento lamang ang landas sa file.
Kung file na hindi umiiral, ito ang nangyayari upang lumikha ng file na iyon.
At ito ay magiging blangko.
At pagkatapos ay ang pangalawang argumento ay ang mode na gusto mo.
Nais namin na magbasa mula sa file na ito?
Gusto mo bang magsulat mula dito?
Gusto mo upang isama?
Kaya ang tunay said-- ko lang kung ang file ay hindi umiiral
at sinusubukan mong basahin mula sa ito, ito ay pagpunta sa magtapon ng isang error.
Kung ang file name-- nais kung file.text Hindi pa umiiral
at nais mong sumulat dito, ito ay lumikha
isang blangkong file na tinatawag na file.text para sa iyo.
At kung gusto mong isama, dapat mong gawin ang parehong bagay.
Ay na magkaroon ng kahulugan?
Kung sinusubukan na magbasa mula sa isang file na hindi pa umiiral,
Makikita ito magtapon ng isang error.
Kung hindi man, ito ay lumikha ng mga file para gawin mo kung ano ang gusto mo dito.
Ayos.
Ngayon ay maaari naming basahin mula sa file.
At ito lamang ang uri ng pagpunta sa pamamagitan ng iba't ibang mga pag-andar
na mayroon kami para sa file I / O. Ang kaloobang ito'y kailangan sa pset na ito linggo,
kung natatandaan ko nang tama.
Oo, talagang magiging kinakailangan sa pset na ito linggong ito.
Kaya fgetc nagbabalik sa susunod na character.
fgets nagbabalik lamang isang linya ng teksto.
Ito ay nagbalik ng anuman hanggang sa ng isang bagong linya, at ito ay masira.
Kaya fread bumabasa ng isang tiyak bilang ng mga byte at lugar ang mga ito
sa isang array, na ay isang bagay na maaari mong
nais gawin sa muling size-- Maaaring maging kapaki-pakinabang.
>> Gaano karaming tao ang nabasa ang pset spec, sa pamamagitan ng ang paraan?
OK.
[Hindi marinig]
>> Tagapagsalita 1: OK.
Lahat ng karapatan.
Talagang basahin that-- ito ay isang masaya pset.
Makakakuha ka ng upang mabawi ang isang tinanggal na memory card-- talagang kapana-panabik na kapag ito gumagana.
Ngunit siguradong, simulang basahin iyon.
Halika at mag-usap sa akin kung Mayroon pang mga tanong tungkol dito.
>> OK, kaya bilang sinasabi ko, fread bumabasa ng isang tiyak na bilang ng mga byte.
Iyon ang ilang mga arbitrary na numero na iyong pupuntahan upang i-set.
At pagkatapos ay fseek lamang gumagalaw sa isang tiyak na posisyon.
Kaya marahil hindi mo na mahalaga tungkol sa susunod na 10 bytes.
Gusto mo lamang lumaktaw.
Hindi mo na nagmamalasakit sa mga iyon.
Gusto mong basahin simula sa byte na 11.
Binibigyang-daan ka fseek ka upang gawin iyon.
Kaya ito ay nagbibigay-daan sa iyo upang maging pumipili tungkol sa kung ano ang iyong binabasa.
Dahil fgetc, fgets, at fread nabasa na mula sa isang tiyak na lugar sa file.
>> Ang isang paraan upang isipin ang tungkol na ito ay kung ito ay ang aming file, noong una buksan mo ito,
mayroon kang posisyon na ito sa file na magsisimula sa umpisa.
Sa tuwing tawagan ka fgetc, fgetf, o fread,
ito ay pagpunta sa simulan mula sa ang posisyon ng marker.
Ipagpalagay natin na nais mo lamang na basahin ito tipak ng memory sa paglipas dito.
Hindi ka maaaring tumawag lamang.
Mayroon kang humanap paglipas dito at pagkatapos ay basahin mula doon
o basahin, makakakuha, o getc, depende sa kung anong gusto mo.
Kaya humingi nagbibigay-daan lamang sa iyo upang laktawan bahagi ng memorya.
At iyon ang lang paraan maaari mong laktawan bagay
nang hindi sila binabasa sa iyong buffer.
Ay na magkaroon ng kahulugan sa lahat?
>> Malinaw, mayroong isang maraming mga parallel here--
ang aming output, o pag-input na pag-redirect, nabasa at magsulat.
Kaya fputc nagsusulat lamang na character sa file.
nagsusulat fputs isang linya.
Fprintf ng mga Kopya ng format na output.
Kaya kung mayroon kang mga tab, o espasyo, o watnat.
At pagkatapos ay nagsusulat fwrite ilang array ng mga byte na sa isang file.
Kaya ito ay ang parehong paraan fwrite at fread ay kahalintulad
opposites-- fgets, fputs, at pagkatapos ay fputc at fgetc-- ng maraming
ng nakatutuwang, mabilis na mga bagay.
>> Lamang uri ng panatilihin ito handy-- magkakaroon ka ng iba't ibang oras
kung saan marahil gusto mo lamang isang character sa isang pagkakataon.
Siguro gusto mo ng buong linya.
Gamit ang iyong pset-- diksyunaryo na kung saan ay sa loob ng dalawang psets,
Naniniwala ako, bigyan ka namin ng isang buong diksyunaryo sa format na teksto
na may bawat salita pinaghihiwalay ng isang linya.
Kaya kung nais mong basahin ang sa isang salita sa isang pagkakataon,
kung ano ang maaari mong gamitin kung binabasa mo at sila ang lahat ng mga naka-separated sa mga bagong linya,
at gusto mo lamang ng isang salita sa isang pagkakataon?
>> Madla: Fgets
>> Tagapagsalita 1: I-right.
Fgets-- dahil na nagbabalik anumang ay nasa isang linya.
At kung ang bawat salita ay nito sariling linya, maaari naming gamitin fgets.
Ayos.
Ay na magkaroon ng kahulugan, sa lahat?
Cool?
Oo, kami ay pagpunta upang makapunta sa ang masayang bahagi na may mga payo
sa lalong madaling panahon, kung saan mo makakuha ng mga na gawin ang ilang mga matematika.
At makikita itong maging mahusay.
>> Huling step-- isara ang iyong file.
Sa gayon maraming bagay dito, isa sa aming mga paradigms
ay kung maaari itong bumalik null, lagyan ng check para sa null.
Kung binuksan mo ang isang bagay, gusto mo ng mas mahusay na isara ito.
OK, kaya hindi tapos ka na hanggang sa ikaw ay tapos maliban na iyong isinara ito.
Uri ng tulad ng hindi higit sa hanggang sa taba ginang ng bansa SINGS.
Iyon ay tulad ng pagsasara ng iyong file.
Tulad ng sinasabi nito dito, lang upang mag-ulit, palaging
buksan ang iyong file bago ka pagbabasa o magsulat dito.
At palagi itong isara kung iyong binuksan ito.
Ang lahat ng mga karapatan?
Ayos.
>> Kaya narito ang isang halimbawa.
Kaya tiny-- Hindi ko alam kung ang maaaring makakita ng guys na nang mahusay.
Kung lamang namin maaaring taasan ang liwanag kahit papaano.
Hayaan akong aktwal na gawin ito kung maaari ko.
OK, mo guys maaari hindi talaga makita na sa lahat, maaari mong?
OK, kami ay pagpunta sa gawin ito, pagkatapos ay i-.
[Hindi marinig]
>> Ipinapalagay ko ito ang mas mahusay na makita.
Maaari sinuman makita kung saan ang aking nagpunta mouse ay ang tanong?
Ah, may ito is-- kung ano ang pakikibaka!
>> OK.
Talaga, ka guys ay dapat magkaroon ng uri ng isang ideya ng kung ano ito ay ginagawa.
Ito ay hindi perpekto.
Ngunit Mas gugustuhin kong ipaliwanag ito sa paggastos mas maraming oras sinusubukang i-format ito nang maayos.
Talaga, tulad ng nakikita mo rito, simulan namin sa file na nakabukas.
At mayroon kaming ilang mga database file na tayo
pagbubukas na nagsasabing ito ay ang aming mga mag-aaral.
At kami ay pagpunta sa magsulat dito.
Kaya siyempre, bumalik null.
Kaya mayroon kaming upang tingnan ang mga null.
At pagkatapos ay kung hindi null, pumunta namin sa pamamagitan ng.
At tulad ng nakikita mo, kami ay looping sa pamamagitan dito.
May mga mag-aaral.
Mga mag-aaral ay hash tinukoy bilang tatlong.
At kung ano ang aming ginagawa ay hindi namin pag-print sa file, i-right?
Kaya kung ano ang pag-print out namin sa aming mga file?
>> Madla: Ang mga iskor na sa array?
>> Tagapagsalita 1: Oo.
Ang mga marka na nasa eksaktong array--.
Kaya binubuksan namin ito database file, na
Ako ay ipinapalagay ay isang uri ng mga grado database.
At lamang kami sa pag-print out ang marka ng bawat mag-aaral sa file na iyon.
Cool?
Mahusay.
Kahanga-hanga.
OK.
Sabihin makabalik to--
>> Madla: Mayroon akong isang mabilis na tanong.
Ay ang printf wala sa para sa loop?
Iyon lang sa kung loop?
Tagapagsalita 1: Hindi, sa para sa loop.
Hindi ko makita ang aking mouse napaka na rin dito.
Kaya ako struggling sa format na maayos.
Dapat ay mawawala bracket na ito.
Dapat ito ay down na dito.
Ito ay kung ano ang nasa iyong para sa loop.
Mayroon.
Ngayon ay medyo.
Kaya na kung paano ito dapat be-- maliban para sa huling bracket na ako sa trabaho.
OK.
Ay na magkaroon ng kahulugan sa lahat?
OK.
Kami ay pagpunta sa ilipat sa sa susunod na bagay then--
na kung saan, talagang, na iyong pupuntahan sa kailangan upang makita ang code.
Kaya ako lamang ang pagpunta sa kopyahin na sa ngayon.
OK.
Kaya ako pupunta upang ipakita sa iyo guys ang code na ito.
At gusto ko sa iyo upang subukan at figure out kung ano ang dapat gawin.
>> Kaya ibinigay that-- tumagal ng isang minuto o kaya.
Subukan at malaman kung ano ang nangyayari sa dito.
>> Ang anumang mga ideya?
>> Alam namin na mayroon kaming hindi bababa sa dalawang argumento sa command line, i-right?
Ipinapalagay ko ang isa sa kung saan ay magiging na [hindi marinig] ng aming programa ay
at pagkatapos ay sa ibang bagay.
Dahil kung [hindi marinig] ay mas sa dalawang, sumigaw kami sa kanila.
Mag-right?
At mula sa paggamit, mukhang ito ay magiging isang uri ng file.
Namin ang lahat ng sumang-ayon sa na?
Kaya ngayon, kung ano ang mga loop ginagawa?
Ano ang ito sa pamamagitan ng pagpunta?
>> Madla: Lahat ng mga file.
Tagapagsalita 1: Eksaktong.
Ito ay nangyayari sa lahat ng mga mga file na hindi namin input doon.
Kaya para sa bawat file, ito ay pagbubukas ng ilang string doon.
Ang ipapalabas up ito file na iyon.
Mag-right?
At ito ay ang pagbabasa mula dito.
Siyempre, pagsusuri kung ito ay walang bisa.
At pagkatapos ay ito sa pag-print.
Kung ito ay walang bisa, lamang ito ng pagsasabi sa amin na hindi iyon ang isang file na umiiral na.
Dahil tandaan, may basahin ang aming mga file ay na umiiral.
Mag-right?
Sa pagpapawalang at ikabit, maaari mong makalusot.
Ngunit sa nabasa, ang aming mga file ay na umiiral.
>> At pagkatapos ay kung ito ay umiiral, kung ano ang ginagawa namin dito?
Magsimula tayo lang dito Hayaan.
Ano ito do-- ito unang character.
Ano ang ibig ito gawin?
Siya ay makakakuha ng isang character, i-right?
Kaya kung ano ang ginagawa ay?
Nagiging ang unang character.
Sinuman alam EOF?
>> Madla: Pagtatapos ng file?
>> Tagapagsalita 1: Katapusan ng file-- eksakto.
Kaya ito ay pagpunta sa pumunta sa pamamagitan ng ang buong file, i-right?
At pagkatapos ay ito ay pagpunta upang i-update sa pamamagitan ng pagkuha ng bawat kasunod na character.
Mag-right?
At kung ano ang ginagawa nito?
Madla: paglalagay na in--
>> Tagapagsalita 1: Putchar print sa iyong screensaver.
[Hindi marinig] ang character.
At pagkatapos ay kapag ito [hindi marinig] ito ay isara ang file.
>> Madla: Huwag mo kailangan ng isang [? tao? ?]
>> Tagapagsalita 1: Hindi kinakailangan.
Ibig kong sabihin, uri ng ito ay ipinahiwatig sa ito.
Dahil ito ay nagbabalik, bagaman, hangga't bilang na ito ay hindi mahuli ito, ikaw ay multa.
Ibig kong sabihin ito ay marahil magandang pagsasanay na gawin ng isang tao.
Ngunit ang isang tao ay hindi laging kinakailangan lalo na
kung mayroon kang isang bagay tulad ng isang balik, na
Nangangahulugan ito na sa kasong ito kung catches ito ito, ang iyong programa pupuntahan magtapos
at hindi ito kailanman makikita makakuha upang ito.
Ito ay higit pa para sa mga kaso kung saan ikaw ay hindi naman bumabalik ang isang bagay.
Dahil kung hindi ito ay pagbabalik ng anumang bagay,
ito ay nangangahulugan na kung ito ay totoo, ang natitirang bahagi ng ito ay tumakbo pa rin.
At sa kasong iyon, mo gusto ng mali.
Kung ito ay bumabalik, at Pagtatapos ng iyong programa,
isang tao ay hindi kinakailangang lahat ang oras, depende sa konteksto.
Jacob, ay may tanong ka?
Madla: Oo.
Kaya ang ginagawa fgetc makuha ang susunod na character?
Paano gumagana taasan ang character?
Tagapagsalita 1: Oo.
Kaya fgetc nakakakuha ng susunod na character.
Maaari mong isipin na ito tulad ng C ++ sa isang katuturan.
>> Madla: Kaya kung ano ang EOF?
>> Tagapagsalita 1: EOF ay pagtatapos ng file.
Ito ay lamang ng isang marker na nagbibigay-daan sa alam mo na ikaw ay nasa dulo ng iyong file.
Kaya ito ay pagpunta sa i-print sa iyong pamantayan out.
At pagkatapos ay ito ay pagpunta upang isara ang file kapag tapos na ito.
At pagkatapos ay sabihin pumunta sa sa susunod na file, i-right?
Kaya sa pangkalahatan, kung ano ang ginagawa sa programang ito?
>> [Hindi marinig]
>> Tagapagsalita 1: Oo.
Pini-print ito lamang ang lahat doon.
Kaya kung guys nag-ginamit CAT at pagkatapos ay ang pangalan ng ilang file--
Hindi ko alam kung ang alinman sa kang magkaroon ng kailanman nagawa iyon sa iyong terminal.
Ngunit kung sakaling gamitin mo ang utos CAT-- C-A-T--
at pagkatapos ay anumang file mayroon kang there-- ito
Pini-print out ito sa iyong terminal, na ay maaaring maging napaka-madaling gamitin para sa ilang mga bagay.
Gamitin ko ito ng maraming.
Ay na magkaroon ng kahulugan sa lahat?
Cool?
>> OK upang ang iyong mga gawain now-- alinman sa pamamagitan ng sa iyong sarili o sa mga tao sa buong you--
ay upang magsulat lamang ng simpleng programa na lamang isulat ang "Kumusta, mundo!"
out sa isang file.
>> [Hindi marinig]
>> Tagapagsalita 1: ako ay tulad, ginawa Gagawin ko na di-wastong na noong nakaraang linggo?
Hindi ko naisip ito ay na masama.
Nagagalak akong ikaw ay ang lahat dito.
Ito ay talagang gumagawa ako masaya.
Isa akong batang babae ng Simple Pleasures.
Kong lamang kapag dumadalo ang aking seksyon.
Kaya ako lang ang pagkakaroon ng ganitong pagsisimula para sa mga ka guys upang maaari naming code nang magkasama.
Hindi ko gusto ng paglalagay ng sinuman sa ang lugar maliban kung nais mong maging.
>> Madla: Para sa pagsusulit, gawin mayroon kaming magsulat ng isang programa?
>> Tagapagsalita 1: Maaaring hilingin sa iyo upang isulat ang mga simpleng mga programa sa pamamagitan ng kamay.
Yup.
>> Madla: pagsusulit ay sa susunod na linggo, i-right?
>> Tagapagsalita 1: pagsusulit ay sa susunod na Miyerkules.
Nangangahulugan iyon na may magagandang [? CSE?] grading partido pagkatapos, na
ay nangangahulugan makakakuha ka ng iyong mga marka pabalik na night-- sa kung anong oras?
Sino ang nakakaalam?
Ngunit ito ay magiging gabi na.
>> Lahat ng karapatan.
Paano gusto naming simulan ito?
Bibigyan kita ng isang hint-- mga pagsisimula na may ito.
>> Madla: Mayroon kang upang buksan ang isang file.
>> Tagapagsalita 1: Oo.
Kaya kung ano ang gusto mong itawag sa?
Gusto mo lamang na tumawag ito "file"?
Ay gawing madali Hayaan.
Kaya fopen-- kung ano ang aming output pagsubok ng pagpunta sa maging?
Tumawag ito "Hello."
At kung ano ang aming mga mode?
Ano ang ginagawa namin sa file na ito?
>> Madla: Basahin.
Nagsusulat.
Tagapagsalita 1: Sumusulat kami dito.
Kaibig-ibig.
OK, kaya kami ay ang file na ito ngayon.
Ano ang kailangan naming gawin?
Madla: Tingnan kung ito ay walang bisa.
Tagapagsalita 1: I-check kung ito ay null-- eksakto.
Iyon ang dahilan kung ano ang gusto kong marinig.
Iyon ay dapat na awtomatikong, lalo na halos mula sa punto sa.
Kung sinimulan mo ang segfaulting, malamang na Hindi suriin para sa null sa isang lugar.
Siyam na beses sa labas ng sampung, na pagpunta sa iyong magiging error.
Kaya kung maaari mo lamang makuha sa ugali, laging suriin kung ito ay walang bisa,
iyong buhay ay magiging maganda at easy-- o mas madali.
>> Kaya suriin upang makita kung ito ay walang bisa.
Kaya kung ito ay hindi null, na ay kung ano ang katumbas ng putok
Hindi means-- null-- ito ay wasto.
Ano ang gusto naming gawin?
Gusto lang namin na mag-print sa file na iyon, tama?
Kaya kung ano ang gagamitin namin?
>> Madla: Fprintf
>> Tagapagsalita 1: Fprintf-- kaibig-ibig.
At fprintf tumatagal ng dalawang arguments-- kung saan ito ang nangyayari at kung ano ang gusto namin naka-print na.
Kaya kung ano ang ang una?
Saan ito pagpunta ay?
>> Madla: File.
>> Tagapagsalita 1: Ito ang nangyayari sa file na.
At ano ang gusto naming naka-print?
"Kamusta, mundo!"
Lahat ng karapatan.
Mayroon kaming isang huling thing-- isa pang malaking tularan dito.
Madla: ang Isara.
Tagapagsalita 1: ang Isara.
Mayroon kang pumunta.
>> Madla: ba ito nangyayari kung ang file ay walang bisa?
Tagapagsalita 1: Hindi, ito ay kung hindi null.
Madla: Oh, kung ito ay not-- OK.
Para sa fopen at pagkatapos ay ang dalawang mga argument na pumunta sa loob,
kung ano ang ibig sabihin muli ang unang argumento?
>> Tagapagsalita 1: argument ay tulad lamang ang pangalan ng file
na nais mong pumunta sa.
Kaya pagkatapos na ito ay nagpapatakbo, gagawin mo May ilang mga file na tinatawag na "hello"
na may "Kamusta, mundo" sa loob nito.
Iyon lang.
Lamang ang pangalan.
>> Madla: At dahil ito ay sumusulat, ang file ay hindi kailangang mag-umiiral na.
Iyan ba kung ano ang sinabi mo?
>> Tagapagsalita 1: I-right.
Mismong.
Kung "Kamusta" bilang isang file Hindi pa umiiral, ito ay
pagpunta upang lumikha ng isang file na tinatawag na Kamusta "at isulat dito para sa iyo.
>> Madla: Kapag sinasabi mo ang programa sa nagsulat sa file,
bakit "file" sa halip na huwag mong isulat ang pangalan ng file at fprintf--
>> Tagapagsalita 1: Dahil sa kasong ito, mayroon kaming na malaking FILE-- lahat sa caps-- bituin,
-file.
Kaya ito ay isang pointer sa file na pinag-uusapan tungkol sa.
Ito ang paraan na sumangguni lamang namin dito.
Kaya sa kasong ito, mo Maaari isipin file-- aha,
maaari naming gamitin this-- file dito ay tumutukoy sa pagbubukas ng "Hello"
at pagpapaalam nito magsulat.
>> Madla: Puwede naming ilagay ang isang "Hello" sa halip [? ng lang?] f file?
Tagapagsalita 1: Hindi, dahil ang "Kumusta" Kailangang maging bukas at writeable.
Maghain dito ay tulad ng isang designator na nagsasabing OK, namin
Mayroon na ito file-- hello-- na kaming naghahanap sa.
Ito ay binuksan.
At kami ay pagpunta sa magsulat dito.
Kung gumagamit ka lang "Hello", na encapsulated sa loob nito.
Kaya ito ang nangyayari sa taong kakatuwa out.
Ibig kong sabihin, maaari mo pa na may pangalang ito.
Maaaring nagawa mo na ang file, bituin, "Hello", ay katumbas iyon.
Ngunit ang buong punto ay na Kailangan ng file star pointer sa pagkakasunud-sunod
upang magawang gamitin ang mga function.
Madla: Maaari mo bang gawin file, bituin, file, "Kamusta"
o huwag kang magkaroon ng upang ilagay maghain ng bituin, file sa pamamagitan ng ito?
Tagapagsalita 1: maaari mong gawin file, bituin, "Hello."
Maaari mong baguhin ito sa anumang pangalan na nais mo.
Ito ay lubos na di-makatwirang kung ano na ang pangalan ay.
Maaari mong pangalanan ito kahit ano.
Pangalanan ito na lumilipad spaghetti, kung nais mo.
>> Madla: Ano ang "w" sa mga panipi para sa?
>> Tagapagsalita 1: Ang "w" lamang ang mode ng.
Kaya kami ay sumusulat upang ang file na ito.
Ang bawat tao'y magandang?
I-clear?
Oo.
>> Madla: Kaya kapag nagsusulat ito sa ganitong -file, na kung saan ay pagkatapos ay nakita namin ang file na iyon?
>> Tagapagsalita 1: Ito nasa parehong directory na iyon na kasalukuyang.
Kung ikaw ay nasa pset tatlong at patakbuhin mo ito, sa loob ng iyong pset
tatlong folder ay magiging ang file na ito na tinatawag na "Hello."
Cool?
Ang bawat tao'y magandang?
Nararamdaman kong ikaw ay ang lahat ng nakakakuha ito, na kung saan ay mahusay.
OK.
Kaya pabalik sa aking mga slide show-- Gustung-gusto ko kapag bagay gumagana.
OK, pointers-- Sigurado ka guys ay nasasabik?
Pointer ay mahusay.
Nagsasagawa sila ng kaunting sa wrap ang iyong ulo sa paligid.
Ito ang aking pangalawang taon payo pagtuturo.
At sa tingin ko sa wakas ay nakuha ko ito.
Kaya kung nagpupumilit sa iyo, OK.
Tulad ng sinabi ko bago, gumuhit ng mga larawan Tinutulungan ng maraming mga bagay sa CS,
hangga't sa tingin ko ang mga tao ay may posibilidad mag-isip oh, hindi namin sa isang computer.
Dapat naming code lamang.
No-- mga larawan pagguhit ay talagang makakatulong sa iyo.
At talagang ko hinihikayat ka upang mag-tap sa iyong kindergartner gilid
at dalhin ang crayons o mga marker at ayon sa mabubunot.
Dahil makakatulong ito sa iyo.
At kung makakita ka sa akin sa oras ng opisina, ako ay nagdadala sa paligid ng mga stack ng papel
may Panulat pagguhit ng mga bagay out.
>> Kaya lalo na sa pointers-- gumuhit ng mga larawan.
At ako bang talaga kami ng pagpunta sa maging pagguhit ng ilang mga larawan dito masyadong.
>> Kaya lahat Nakakuha ka guys upang makita Binky, ang cool na bagay claymation.
At sa tingin namin na ikaw talaga nakakatawa kapag siya explodes sa isang bungkos ng mga piraso.
Ito ang ilang comic lunas para sa klase.
C [hindi marinig] ang mahusay na kakayahan upang magagawang kontrolin ang memory.
At ito ay isa sa mga bagay na talagang Ginagawang tulad ng isang malakas na wika.
Ngunit may dakilang kapangyarihan ay mahusay na responsibilidad.
At nakatutuwang bagay ang maaaring mangyari kung ikaw ay hindi maingat.
Kaya kapag gumagamit ka ng mga payo, nais mong gumawa ng
sigurado ba talagang nauunawaan mo nang eksakto kung ano ang iyong ginagawa.
Sana sa susunod kaunting oras ay tutulong sa talagang nauunawaan mo
mga payo, kung paano gamitin ang mga ito, at kung paano upang manipulahin ang mga ito.
>> Kaya memory-- Ako ba na hindi namin Nakita diagram na ito dati.
Kaya ito ay lamang ng isang simpleng diagram ng kung paano ang mga bagay ay maaaring naka-imbak sa memorya.
Kaya ikaw ay may isa lamang ang mga malaking array ng mga bloke ng isang byte
ay kung ano ang mayroon kaming here-- bahagyang mga palugit sa pamamagitan ng isa sa bawat oras.
Ito ay sa hex [hindi marinig] kaya walong-bit na mga bloke.
At ang bawat bloke ay nauugnay na may ilang hexadecimal address.
Kaya kung sakaling makita mo ang 0x, na lamang notating
na ito ay isang hexadecimal address.
Maaari mong angkinin ang ibig sabihin nito ang ilang mga address sa memorya.
Kami ay pakikipag-usap tungkol sa memory address sa tuwing nakikita mo sa hexadecimal.
>> Mayroon kaming ints mga variable, sa kamay ay mga variable na nag-iimbak.
Kaya ints store ints.
Sa kamay ng tindahan sa kamay.
Kaya mayroon rin kaming mga payo na nag-iimbak ng memory address.
Iyon ay isang uri ng pagma-map.
Pointer ay eksklusibo para sa memory address.
Kaya na tulad ng iyong uri doon.
Ang iyong appliance ay 32-bit, na nangangahulugan na ang iyong memorya address ay apat na bytes.
Kaya ang anumang pointer na mayroon ka Mawawala din na maging apat na bytes.
O kaya kung ito ay apat na bytes, memorya ay apat na bytes.
Mga Pointer tindahan ng memory.
Samakatuwid, ang mga ito ay apat na bytes.
Gusto lang Cool-- para mapalakas iyon.
>> Dapat mong makuha ang comic ngayon.
Hindi ko alam kung paano marami sa inyo ay xkcd tagahanga, ngunit mahal ko xkcd.
Ito ay mahusay na.
>> Lahat ng karapatan.
Kaya paglikha pointers-- ng sinabi ko ito, halos gusto lamang ng ano pa man.
Mayroon kang isang uri.
Mayroon kang isang pangalan.
Mag-right?
Iyon ay kung ano ang mayroon kami doon. [? Hex?] Bituin ay nangangahulugan na ito ay isang pointer,
at pagkatapos ay anumang nais mong tawagan ito.
Kaya ay kumakatawan sa uri ano ang maaari mong mag-imbak.
Ang lahat ng mga karapatan?
Sa parehong paraan na kung gagawin namin ints, alam namin kami nag-iimbak ng isang int doon.
Sa isang pointer, ito Taglay ng memory address.
Ngunit ano ang ibig sabihin nito ay that-- narito ang kung saan isang guhit ay pagpunta sa darating sa madaling-gamiting.
Kaya sa kasong ito, mayroon kaming ilang value-- ipaalam sabihin ng apat.
Apat ay sa address na isa.
OK?
>> Ang unang isa dito ay nangangahulugang na ito ay isang pointer 2x.
Mag-right?
Ito ay ilang mga pointer x.
x ay maaaring maging isang bagay, kahit ano.
Anuman x is-- sabihin x ay apat.
Ito ay pagpunta upang mag-imbak ang memory address dito.
Kaya int, bituin, x-- ito ilang iba pang mga puwang sa memory--
na nakakaalam kung ano ito ay.
Ngunit ito ay pagpunta upang mag-imbak ng address dito.
Kaya ito ay magiging like-- sa kasong ito, Anuman,
ay naka-imbak sa 0x1-- anumang ay naka-imbak sa address na hold ang aming pointer,
May upang tumugma sa up gamit kung ano ang itinalagang namin.
Kaya sa 0x1, sa kasong ito, ito ay x.
Ito ay maaari lamang kailanman maging isang int habang ginagamit namin ito.
>> Katulad nito, kung kami ay isa pang 1t, kahit ano
address na ito ay naka-imbak sa isang y ay maging isang char-- parehong bagay sa z.
Sa katulad na paraan, sa tuwing nag subukan at gawin intx katumbas ng 0.4,
ito ay pagpunta sa sumigaw sa iyo at maging tulad ng hindi, sinabi mo na gusto mo sa isang int.
Ito ay dapat na maging isang int.
Ihinto ang sinusubukan upang gawin itong isang float.
>> Kaya ipaalam sa mga bagay na maging kung ano ang gusto nilang maging.
Hayaan ang mga bagay na kanilang sarili.
Kaya sisikat lamang kahit anong uri ng pointer
ito ay, na ang tanging bagay na maaari mong iimbak doon.
OK?
Sa pagsasagawa, tulad ng sa noong nakaraang linggo, lahat
Mukhang talagang uri ng abstract.
Kami ay pagpunta sa gawin ang ilang mga kasanayan.
Dapat itong gawing mas kahulugan.
>> Kaya tumutukoy at dereferencing-- ito talagang mahalaga upang makuha ang mga matuwid.
Mayroon akong pa upang i-refresh bawat ngayon at pagkatapos.
At ako tulad ng paghihintay, kung alin ang ko nais?
Kaya ang ampersand ang talagang bigyan ang reference o address ng.
Kaya nagbalik ito ang address sa memorya ng na variable ay naka-imbak.
Kaya ito ay pagpunta sa aktwal na bumalik sa iyo ng hexadecimal, samantalang dereferencing ito
ay talagang pagpunta sa magbibigay sa iyo ng ang data na nakaimbak doon.
OK?
Kaya kami ay pagpunta sa tumingin sa isang halimbawa Talagang mabilis, o talagang hanggang sa susunod.
>> OK.
Kaya mayroon kaming mag-isip talaga mabuti ang tungkol na ito.
Kaya dito mayroon kaming ilang mga integer x.
Pupunta ako sa subukan at gumuhit ito out sa abot ng aking kakayahan.
Kaya kami ay pagpunta sa may ito slot x.
At ito ay ang pag-iimbak ng limang.
Nito address ay 0x4.
Cool?
Ang lahat ng mabuti.
>> Kaya ngayon ay mayroon kaming na ito pointer.
Ito ay higit sa dito.
At ang mga ampersand ay nagbibigay sa amin ang address ng isang bagay.
Kaya, sa kasong ito, ang address ng x.
Ano ang address ng x?
04-- at ang pointer ay nasa 0x08.
Cool?
Kaya maaari mong isipin ang tungkol na ito pointer, 04, tumuturo ng higit lamang sa dito.
At sila ay tinatawag na mga payo dahil bilang makakakuha tayo ng higit pa sa na ito,
na iyong pupuntahan upang makita na tumuturo sa mga bagay.
At isang bloke na tumuturo sa isa pang bloke ay gumawa ng maraming higit pang mga kahulugan.
Kaya narito ang dalawang.
At pagkatapos ay mayroon kaming ilang mga kopya, na kung saan ay what-- 0x0c.
At ito pagpunta sa dereference aming pointer.
>> Kaya kung ano ang sinasabi ay OK, narito ang aming pointer.
Ang halaga nito ay nag-iimbak ng 0x04, At kung ano ang ito sinasabi ay pupunta sa address na ito
at sabihin sa akin kung ano ang sa dito.
Kaya na epektibong kung ano ang arrow ay ginagawa.
Maaari mong isipin na ito tulad ng iyong mga bituin.
Kaya OK, kapag ginagawa namin star, nangangahulugan itong sundin.
Pumunta sa address na ito.
At iyon ang isa lamang sumusunod na lamang ang arrow sa memory tipak.
At bigyan kami kung ano ang nasa loob nito, na kung saan ay 5.
Ito ang dahilan kung bakit ang aming mga kopya ay katumbas ng 5.
Ay na magkaroon ng kahulugan?
Kailangan ba ako upang pumunta sa pamamagitan ng na muli, o mas mabagal?
Gusto mo sa akin upang pumunta sa pamamagitan nito nang isa pang beses?
OK.
Kami ay pagpunta sa redraw itong muli.
Kapag sinimulan namin, namin ang lahat ng sumang-ayon kami ay ilang tipak ng memorya na ang isang variable
x na itinakda namin katumbas ng 5.
Hindi namin kontrolin kung saan ito ay nasa memory.
Kaya ito lugar lamang nagkataon itinalaga.
Magandang doon?
OK.
Pagkatapos initialize kami ng pointer sa isang int.
Iyon ang dahilan kung bakit ito pinapayagan upang tumuro sa x dahil mayroon kaming isang int in dito.
Mayroon kaming isa pang tipak ng memory dahil ang pointer
ay isang variable na tulad ng ano pa man.
Nagkataon Ito ay nakatalaga ilang espasyo sa memory.
At kung ano ito ay nag-iimbak ang address ng x.
Ampersand nangangahulugan address ng x.
Kaya kung ano ay ang address ng x?
>> Madla: Ito ay zero--
Tagapagsalita 1: 0x04.
Kaya then-- huli.
Mayroon kaming muli ng ilang copy-- isa lamang variable.
Kaya ni magtalaga ng ilang di-makatwirang lugar ipaalam.
At namin dereference aming pointer.
Star Ang ibig sabihin pumunta sa address na naka-imbak sa aking pointer.
Sabihin mo sa akin kung ano ang doon.
Kaya sa address na naka-imbak sa aming pointer ay 0x04.
Kaya pumunta kami sa address na iyon.
Ito ay tumuturo sa address na iyon.
Ano ang nasa loob sa block na ito memory?
Ito ay isang limang.
Kaya na kung ano ang namin magtalaga ng aming mga kopya.
Ang bawat tao'y magandang?
Ayos.
Again-- mga larawan.
>> Kaya sa pagsubaybay sa mga halaga here-- ako pagpunta sa ipaalam sa iyo guys isipin ang tungkol na ito.
Maaari naming gumuhit ng isa pang larawan.
Ngunit nais ko sa iyo upang subukan at dahilan sa pamamagitan ng sa iyong sariling para sa isang minuto.
>> Dahil hindi sila nag bigyan amin ang isang halimbawa address,
Lamang ako ng pagpunta sa gawin ampersand x-- na kung saan ay dapat makatulong sa humimok ito sa bahay.
Ampersand nangangahulugan address.
>> Kaya sa unang isa, lahat ng tao pumunta sa unang linya.
Ang ilang mga x hanay ng five-- ilang random na puwang sa memorya.
Int star pointer ay katumbas sa address ng x, tama?
Int star pointer ay lumilikha sa block na ito, tawag ito pointer,
at nagtatalaga ito sa address ng x.
Ako ay kahila-hilakbot sa mga ampersand.
>> Ngayon kung ano ang aming ginagawa ay sabihin namin OK, dereference aming pointer.
Kaya pumunta kami OK, kung ano ang sa aming pointer?
Ito ay ampersand x.
Pumunta sa ampersand x at reassign ito.
>> Kaya ngayon, ampersand x ay magiging 35.
Kaya talaga, kapag handa ka dereferencing, pumunta ka sa OK.
Na iyong pupuntahan ay pagguhit mga larawan na tulad nito.
Na iyong pupuntahan ay pagguhit ang iyong mga arrow sa kung saan ito ay.
Kaya pumunta sa ang puwang sa memorya at alinman sa bigyan ako ng halagang iyon pabalik, o baguhin ito.
Sa kasong ito, dahil kami sa ito halaga, kami ay nagtatalaga ito upang maging 35.
Sapagkat sa huling isa, kung napansin mo, kami
ay nagtatalaga kung ano ang in dito sa ibang bagay.
>> Kaya ang mga ito ay kahanga-hangang talahanayan na ito.
Hindi na masama.
Ikaw guys gumana ito.
Pupunta ako sa maglabas ito sa board.
Kami ay pagpunta sa itong punan magkasama, OK?
Kaya grab ang ilang mga papel, mang-agaw isang kasosyo, magsisimulang gumana.
Pupunta ako upang makakuha ng isang mas malaking piraso ng tisa.
Dahil ito ay magiging ng maraming.
OK.
Propesor: OK.
Magsimula tayo sa unang hilera Hayaan.
Sisimulan naming doon, pagkatapos mo guys Maaari siguro gumagana sa pamamagitan ng ilang higit pa.
OK.
isang katumbas ng beses b c kaya kung ano ang isang?
Ito ay hindi isang kahanga-hangang gawa tanong, nangangako ako.
>> MAG-AARAL: 4 na beses 5.
>> Propesor: 4 na beses 5.
20.
Kaya kung ano ang b?
MAG-AARAL: 4.
>> Propesor: At c?
MAG-AARAL: 5.
Propesor: 5.
At pagkatapos na ito ay pupunta lamang sa ay isang ampersand, ampersand b,
ampersand c, tama?
Hindi masama.
Ito ay simple sapat.
OK.
Kaya sa susunod na isa.
Ang katumbas ng isang beses c, sa kasong sinuman ay pamilyar sa mga iyon.
Ay lahat pamilyar may mga oras ay katumbas?
OK, lahat ng ito means-- ito shorthand para sa isang katumbas ng isang beses c.
Maaari mo rin itong gawin sa dibisyong ito, sa karagdagan, may mga pagbabawas.
Maaari mong gawin ang isang equals, o ng plus ay katumbas ng c ay nangangahulugang isang katumbas ng plus c, ng minus katumbas
c ay magiging isang katumbas ng minus c.
Ito ay lang sintaktik asukal.
>> Kaya, sa kasong ito, ang isang ay katumbas ng isang beses c ay magbibigay sa amin kung ano?
Muli, hindi isang kahanga-hangang gawa tanong.
>> MAG-AARAL: 100.
>> Propesor: 100.
Anumang bagay Mababago ba?
Hindi.
Siguro ako ay sa wakas makakuha ng mas mahusay sa aking mga ampersand.
>> MAG-AARAL: OK, paumanhin, kung paano nag ka kumuha ng 100?
Propesor: OK.
Kaya ng ay katumbas sa isang c beses, kaya isang beses c.
MAG-AARAL: Oh, gumagamit ka ng ng para sa previous--
Propesor: Oo.
Kaya ito ay ang aming pinaka-kamakailang mga halaga.
Ang mga ito ay kung ano ang dapat mong maging paggamit bilang ilipat namin pababa, OK.
Kaya, b ay ang tanging pagbabago bagay, tama?
Kaya ipaalam punan sa lahat ng iba pa.
B. Ano ang pagpunta b upang maging?
Upang maging o hindi maging.
Kaya kung ano ang ginagawa ay?
Ano ang bituin pa ginagawa?
>> MAG-AARAL: Kodigo sa lokasyon ng pa.
>> MAG-AARAL: Hindi, hindi pa.
Kaya ito ay isang d sanggunian.
>> MAG-AARAL: Kaya b ay kamay halaga ng pa.
>> Propesor: Oo, kaya pa ay ang address ng isang, i-right?
Kaya ito ay nagsasabi pumunta sa kung saan ang ay naka-imbak at bigyan ito ng halaga na iyon.
Kaya kung ano ay b?
MAG-AARAL: 100.
Propesor: 100.
Perpekto.
OK, kaya pc ay kung ano ang pagbabago.
Lahat ng iba pa ay mananatiling pareho.
Ano ang pagpunta pc upang maging?
Simple pagtatalaga.
Pc ay katumbas pa, at ano ang pa?
>> MAG-AARAL: ampersand ng.
Propesor: Perpekto.
Ngayon kami ay nakakakuha ng mga kawili-wiling.
OK, masira ng isang ito down na ipaalam.
Una, kung ano ang mga oras b c, dahil iyon ang madaling bahagi ng isang ito, i-right?
Beses B c is--
>> MAG-AARAL: 500.
>> Propesor: Oo, kaya kung ano ang isang ito ay ang paggawa,
kung ito ay bituin PB, ano ang pagbabago?
>> MAG-AARAL: Ano sa the--
Propesor: Ano ang nasa b?
MAG-AARAL: Ano sa puwang na PB ay tumuturo sa.
Propesor: At PB nakaturo to--
MAG-AARAL: B.
Propesor: B. Kaya ang tanging bagay na pagbabago ay b, i-right.
Kaya b ulit c, 500.
Kaya iyon ang mga pagbabago ngayon.
Ayos.
Kaibig-ibig.
Ikaw guys ang ginagawa ng mahusay.
Ang lahat ng mga karapatan, breaking ang isang ito pababa.
C ay nagbabago, tama?
Kaya maaari naming punan ang lahat ng iba pa.
Tingnan natin Hayaan.
OK.
Alam namin na ang c ay magiging sa produkto ng dalawang numero, i-right?
Ano ang dalawang numero, bagaman?
>> MAG-AARAL: Ang isang at c?
>> Propesor: Kaya isang ay karapatan para sa unang isa.
Kaya kami d na tumutukoy p ng, tama?
P ng isang punto sa isang, upang malaman namin na ito ay magiging 100 beses kung ano?
Times kung ano ang ginagawa pc punto upang?
Mga puntos sa isang.
Kaya 100 beses 100 ay 10,000.
Sinusuportahan ba na saysay?
Ayos.
Home kahabaan, guys, huling hilera.
OK.
Ano ang pagbabago dito?
>> MAG-AARAL: A.
Propesor: A. Perpekto, kaya lahat ng iba pa ay maaaring mananatiling pareho.
OK.
At kung ano ay isang?
Kaya ito ay isang beses ano?
Ito ay bituin PB.
Kaya star PB nangangahulugan narito PB, PB punto upang b.
>> MAG-AARAL: 500.
>> Propesor: 500.
Kaya mayroon kaming 500 beses 100.
Iyon ang 50,000.
Whew!
Tumingin sa iyon.
>> MAG-AARAL: Bakit kailangan namin ang & c para sa last--
Propesor: Paumanhin.
MAG-AARAL: Oh, OK.
Propesor: Aking masama.
Maraming pagsusulat.
Ang bawat tao'y magandang?
Hindi masyadong masama, tama?
Tumatagal lamang ng kaunti habang upang gumana sa pamamagitan ng.
Kung masira ito pababa, maunawaan kung ano ang bawat bahagi
ay nagre-refer na to-- bilang ang lahat ng ito,
yes-- masira ito pababa sa maliit na mga problema at pagkatapos ay muling isama,
at maaari kang gumawa ng ilang mga kahanga-hangang mga bagay-bagay.
May mga sagot, ngunit ginawa namin na.
Palatuusan ng pointer.
Ah.
Aking mga kamay ay lahat may tsok.
Kaya ang pagdaragdag o pagbabawas int inaayos ng pointer
sa pamamagitan ng ang laki ng mga uri ng pointer.
Natatandaan kung paano bawat uri ng May iba't ibang laki?
Kaya tulad ng isang double o ng mahabang mahaba ay kung walo at int ay apat ngunit pansamantalang trabaho ay isa.
>> Kaya kung ano ang gusto mong gawin is-- isang bagay na dapat tandaan
ay na lamang kung magkano ang iyong aktwal na mga pagbabago halaga pointer
ay nakasalalay sa mga uri ng pointer ito.
Ang bawat tao'y may mahusay na ito?
Maaari ko bang burahin ito?
Humihingi kami ng magandang?
Kahanga-hanga.
>> Kaya kung mayroon kaming ilang mga pointer that-- ito ay pagpunta sa be-- ako
pagpunta sa gawin itong isang int pointer.
Nag-iimbak nito ito.
Kung kayo ay sasabihin pointer plus one, kung ano ang pagpunta sa gawin
ay ito ay pagpunta sa i-update ito sa pamamagitan ng ang laki ng isang int
dahil iyon ang uri ng pointer ito.
>> Sa C, lahat ng bagay ay napaka mahigpit at regulated.
Ang int pointer ay pagpunta upang i-update sa pamamagitan ng ang dami ng espasyo sa isang int nais gawin.
Isang int ay apat na bytes.
>> Kaya kung ano ang maging ito?
Lamang nagdadagdag ka ng apat papunta ito.
Ngayon ang iyong mga pointer ay be-- OK.
>> Kaya kung ito ay isang pansamantalang trabaho at ginawa namin ang pointer plus one, ano ang magiging ngayon?
Kung started-- ito ng pagpapanggap namin started-- ngayon ito 0x08.
Sabihin ngayon sabihin na ito ay isang pansamantalang trabaho pointer, at idinagdag namin ng isa.
Ano ang gusto itong baguhin sa?
Gaano karaming mga byte ay isang pansamantalang trabaho?
>> Madla: Isa.
>> Tagapagsalita 1: Isang.
Madla: Kaya 0x09.
Tagapagsalita 1: Kaya magiging siyam.
Kaya isang bagay lang matandaan.
Kapag lamang magdagdag ka ng isa, hindi pagdaragdag ng isa maliban kung ito ay isang pansamantalang trabaho.
Ito ay pagdaragdag ng kung gaano karaming bytes ang uri na ito ay,
na ang dahilan kung bakit mayroon kaming ang equation dito.
Kaya int beses ang laki ng uri ng pointer.
>> Kaya mayroon kaming mga halimbawa dito.
y itinalaga sa halagang iyon, 0x4, kapag ginawa namin y plus ay katumbas ng isa.
Ano ang nasa loob nito, kung ano ang sa x, ay hindi nagbabago.
Ano ang pagbabago ay kung ano ang sa y.
-Update ang address na naka-imbak sa y sa pamamagitan ng apat na dahil mayroong apat na bytes sa isang int
at ito ay isang int pointer.
>> Lahat ng karapatan.
Kaya ngayon kami ay may isa pang ehersisyo.
Kaya ang tanong ay kung ano ang i-print.
Ang anumang mga ideya?
>> Madla: Ang bilang ng mga character sa masaya pusa?
Tagapagsalita 1: Eksaktong.
Kaya gusto gamit ang iyong string.
Lahat ng tao makakuha ba iyon?
Gusto naming maglakad sa pamamagitan nito?
>> Oo, OK.
Kaya kung ano ang mayroon kaming here-- ko ganito kaya marami pang iba.
Hindi ko na kailangang [Hindi marinig] ridiculously.
>> Kaya mayroon kaming string dito, masaya pusa.
Kaibig-ibig.
Mayroon kaming ilang mga sagot na Pinananatili namin ang track ng.
Kaya mayroon kaming ilang mga pansamantalang trabaho * pointer na lamang ay naka-set katumbas ng STR.
Ano ang ginagawa ay ito nagtatalaga ng ilang pointer
sa simula ng iyong string.
Dahil hindi ako sigurado, pati na ito Nabanggit sa panayam,
binigyan ka namin ng guys na ito uri ng data na tinatawag na string.
>> Ngunit talagang string lamang isang array of-- tulad ng pansamantalang trabaho *.
Ito ay isang pointer sa isang bungkos ng mga character na magkadikit sa memory.
Kaya ito lamang Nagtatakda ito katumbas ng anumang string ay
makikilala sa pamamagitan ng kung saan ang unang character ay.
Kaya ito ay pagtatakda lamang ng ilang mga punto katumbas ng simula ng string.
Ang bawat tao'y may magandang?
Ayos.
>> Kaya ito ay dereferencing aming pointer.
Kaya ito ay aktwal na pagpunta sa bigyan kami ng ilang mga halaga sa dito,
sa aming string na pinag-uusapan natin ang tungkol.
At kami ay nagsasabi hangga't hindi null Terminator.
Kaya panatilihin ang pagpunta hanggang sa makuha mo sa dulo ng string.
I-update ang iyong pointer sa pamamagitan ng isa.
Kaya r, ito ay aktwal na-update sa pamamagitan ng isang sa bawat oras na ito dahil ito ay isang pansamantalang trabaho,
ang pansamantalang trabaho *.
>> Kaya ito ay pagpunta sa pumunta sa pamamagitan ng.
Ito ay pagpunta upang i-update.
Kaya sa unang pagkakataon ay tumatakbo na ito, ito ay magiging dito sa h.
Ito ay pagpunta upang i-update.
>> Ito ay isang a.
Makikita ito ay isang p, y, at iba pa at iba pa.
Ia-update namin ang counter.
Kapag umabot sa dulo, ito Pini-print lamang kung gaano kalayo ito ay nakuha.
Oo.
>> Madla: Kaya binibilang ito ang puwang bilang isa, i-right?
OK.
>> Tagapagsalita 1: Mag-isip kaya.
Iyan ba ay question--
>> Madla: [hindi marinig].
>> Tagapagsalita 1: Huwag mag-alala.
Gagawin ko ito na.
Ang lahat ng mga karapatan, kaya isa ako bagay Nauunawaan ay may isang array,
maaari mo ring ituring ito bilang isang pointer dahil array lamang
tuloy-tuloy na mga spot ng memorya.
>> Kaya maaari mong ituring ito sa parehong paraan.
Maaari mong manipulahin ang mga ito may mga payo, masyadong.
Kaya sa halip ng paggawa, sa kaso, ang mga kahalintulad na bagay
magiging array 0 ay katumbas ng 1.
>> Ngunit sa parehong paraan na isang string ay natutukoy
sa pamamagitan ng simula ng kung saan ang unang character ay,
isang array ay natutukoy sa pamamagitan ng kung saan unang elemento nito ay.
Dahil alam namin, hindi namin katiyakan, na ang mga
ay magiging tuluy-tuloy na bloke ng memorya.
Iyon ay kung ano ang nagbibigay-daan sa amin upang gawin ito.
Alam namin na ang mga ito ay tuloy-tuloy na bloke ng memorya.
>> Kaya sa kasong ito, sa pamamagitan ng dereferencing lamang array, na nagsasabi sa amin,
OK, pumunta sa simula ng ang iyong array, na kung saan ay dito.
Kaya maaari mo itong itakda katumbas ng isa.
At sa kasong ito, ang anumang iyong array uri ay, kapag nag-update mo ito sa pamamagitan ng isa,
na tulad ng pag-update ito sa susunod na index.
Maaari mong gawin iyon dahil ikaw malaman kung ano ang nasa iyong mga array.
Kaya alam nito kung gaano kalaki ang -update ang iyong pointer sa pamamagitan ng,
kung ano ang address upang i-update ito sa gayon na ikaw ay nasa susunod na slot.
>> Kaya ito ay lamang ng ibang paraan ng pagsusulat ng mga array ay katumbas ng 0 1,
array 1 ay katumbas ng 2, array bracket 2 ay katumbas ng 3.
Ito ay isa lamang paraan upang isipin ang tungkol dito.
Dahil ang mga ito ay tuloy-tuloy na bloke sa memorya,
Maaari kang sumangguni sa mga ito ang alinman sa sa pamamagitan ng array notation--
na ako ang personal na hanapin easier-- ngunit marahil
kailangan mo na manipulahin ito mahigpit na sa pamamagitan ng memory address.
At ito ay ang paraan na gusto mong gawin iyon.
Uri ng higit pa sa tulad ng isang cool na bagay na maaari mong gawin
kumpara siguro hindi isang bagay na ikaw ay talagang pagpunta na ipapatupad.
>> Gamitin ko ito sa 61.
Ikaw guys malamang na hindi na kailangan mag-alala tungkol dito masyadong maraming.
Ngunit kung ikaw ay interesado, tumagal ng 61 sa susunod na taon.
Humihingi kami sa bahay kahabaan guys.
Alam ko, ito ay ang haba.
Dynamic na Memory Allocation-- upang malaman namin ang isa na
ng mga bagay kapag usapan natin ang panahon ang aming unang seksyon nang sama-sama,
tumingin kami sa isang magpalitan function na kung saan ito ay
sa labas ng saklaw ng aming mga pangunahing pag-andar.
At kami ay pagpasa sa mga halagang ito na naging epektibo ang mga kopya.
>> At sa sandaling tapos swap -e-execute, pakaliwa lang ito ng stack.
Tandaan, mayroon kaming isang stack frame para sa swap.
Nag-iiwan ito at ang mga -iwan ng mga halaga sa mga ito.
At sila ay nawala.
Hindi namin ma-gumawa ng anumang bagay sa kanila at kami ay malungkot
dahil hindi namin maaaring magpalit ng aming mga halaga.
>> Ngunit sa C, tulad ng nabanggit ko, mo magkaroon ng maraming kapangyarihan sa memory.
Kaya ano ang maaari mong gawin ay maaari ka maglaan ng mga bagay sa kimpal dito
na mananatili doon hanggang sabihin mo ang mga ito kung hindi man.
>> Ang mga ito ay tulad ng mahusay na mga bata.
Manatili ang mga ito doon.
Hindi sila umalis.
Makikita nila manatili doon hanggang ikaw ay tulad ng, OK, maaari kang pumunta ang layo.
>> Sapagkat ang mga bagay sa stack, who-- ang mga ito ay tulad ng malikot na bata.
Makikita lang nila tumakas kung kailan mo nais upang maging doon at pagkatapos ay sila ay nawala.
Hindi ka maaaring makakuha ng mga ito pabalik.
>> Kaya ang kimpal is-- kami ng pagpunta sa makipag-usap tungkol sa malloc at libreng, na
Ako ba mo guys naririnig ang tungkol sa aralin.
At iyon ang isa lamang paraan upang magkaroon ng paulit-ulit na data.
Kaya maaari mong itago ang data sa paligid hangga't gusto mo.
Mhm.
>> Madla: Maaari mong tukuyin ang kimpal at stack?
Sigurado gusto nila mga lugar upang ilagay ang mga bagay?
>> Tagapagsalita 1: Kaya ang mga ito ay talaga just-- ang mga ito
ang paraan sumangguni namin lamang sa memorya.
Kaya kimpal ay naglalagay lamang kung saan memorya ay dynamic na inilalaan,
samantalang ang stack ay tumutukoy higit pa sa stack frame
na mas gitnang sa mga function na ay aktwal na tumatakbo.
Wala ka talagang may kontrol.
>> Ang malaking pagkakaiba, may kontrol ka sa ibabaw ng kimpal kung nais mong.
Ikaw ay may mas kontrol sa mga stack.
Ang stack ay depende sa mga function na ay tumatakbo,
at ang pagkakasunud-sunod kung saan ang mga ito ay tumakbo, at kung paano mga bagay ay ibinalik.
Sapagkat may kimpal, pati na ipapakita namin makita, maaari mong sabihin,
OK, gusto kong ang halagang ito upang maging sa paligid hanggang Sinasabi ko sa iyo kung hindi man.
Hindi ka pinapayagang upang mapupuksa ito.
Hindi ka pinapayagang i-override ito.
Ka ng pagpunta sa panatilihin ito sa paligid para sa hangga't Sinasabi ko sa iyo.
Makakakuha ka ng upang maging boss sa kimpal, habang ang mga stack-- siguro kung
tulad ng dayain ang iyong mga paraan maaaring ikaw ang boss.
Ngunit hindi pa.
At ito ay tunay na memorya lamang.
Ito ay iba't ibang mga paraan lamang ng nagre-refer sa memorya.
>> Ayos.
Kaya sa na, kung paano kontrolin ang iyong memory.
Ito ay may malloc, na na iyong pupuntahan upang makakuha ng gamitin.
Kaya maikli lamang para sa paglalaan ng memory.
Iyon ang lahat ng ito ay.
Mayroong isang bungkos ng iba pang mga cool na mga function na may alloc sa dulo,
at tumayo sila para sa iba't ibang mga bagay.
>> Kaya kapag kailangan mo imbakan na kailangan upang daigin sa tagal ng iyong kasalukuyang pag-andar nang sa gayon
na kapag ang iyong kasalukuyang Nagpapatakbo ang layo ng pag-andar,
Mayroon ka pa rin ang data na Nakakuha mula dito, nais mong gamitin ang malloc.
Na makikita initialize ito sa kimpal.
At tulad ng sinabi ko at panatilihing na nagsasabi, makikita mo itong panatilihin doon
hanggang sa sabihin sa iyo nito kung hindi man, kung saan ay ang mahalagang bagay dito.
>> Kaya isang bagay upang mapansin, at na karaniwang talagang mahalaga,
ay na ito sizeof ay sobrang kapaki-pakinabang na gamitin ang
dahil depende sa uri ng machine na pinapatakbo mo,
maaari itong magkaroon ng iba't ibang mga halaga ng memory na tumatagal.
Kaya gusto mong palaging gamitin ang laki ng kaya na hindi ka machine umaasa,
upang ang iyong code habilin tumakbo sa anumang computer.
>> At na bahagi lamang ng pagsusulat ng mga mahusay na code.
Kung ito ay gumagana sa isang computer, subalit hindi alinman sa mga iba,
kung paano kapaki-pakinabang ay ang iyong programa?
Kaya palagi nais mong tiyakin at gamitin ang sizeof.
>> Madla: Kaya ay ang tulad ng laki ng 10 pulgada [hindi marinig]?
>> Tagapagsalita 1: Ito ay ang laki ng 10 ints.
oo.
Kaya laki ng ints ay magbabalik kung magkano ay isang int gawin.
O laki ng pansamantalang trabaho, paano magkano ang isang pansamantalang trabaho gawin.
At pagkatapos ay kung gaano karaming mga bloke ng na gusto mo?
>> Kaya sa kasong ito, gusto naming ng isang bagay maaari naming mag-imbak ng 10 ints sa.
At ito gagana nang walang kinalaman ng machine, na kung saan ay cool.
Kaya kung gaano karaming mga byte habilin na aktwal na magbibigay sa iyo?
Mabilis na matematika.
>> Madla: 40.
Tagapagsalita 1: 40.
Mismong.
Kaya isa pang sisikat.
Pointer o malloc makakabalik null.
>> Kaya ulit, palaging suriin upang makita kung ibinalik ito null
bago mo subukan at gumawa ng anumang bagay na may ito.
Kung sinubukan mong at dereference ang pointer ngayon,
lamang ito ng pagpunta sa segfault dahil ka nagpunta at sinubukan
pindutin null kapag hindi mo kailangang.
Kaya laging suriin para sa null.
Muli, maaari lahat ng mong gawin.
>> Maaaring bumalik null.
Ito bumalik null kung ikaw ay alinman sa na ng puwang, o para sa anumang dahilan
ito ang bumangga sa ilang mga memory bug.
Nag-minsan lang nagbabalik null.
Kaya ikaw ay upang tingnan ang mga ito.
Iyon lang ang slide na ito ay sinasabi.
At pagkatapos ay kung ano ang mayroon kami dito ay isang tawag upang magbakante.
Kaya sa parehong paraan na kung iyong buksan ang isang file na kailangan mong isara ang isang file,
kung malloc memorya, mo dapat kang magbakante na memory.
At ka guys ay makakakuha gawin talagang cool na bagay.
>> At mayroong isang programa na maaari mong patakbuhin sa makita kung sakaling ka pagtulo ng memory.
Ngunit hindi mo nais na tumagas memory.
Ito ay ganap na hindi maayos.
Nagkamali bagay lamang.
>> Ito'y hindi magandang gawin tulad ng programming matalino para sa kahusayan disenyo.
Ngunit ito ay din uri lamang ng masamang para sa iyong computer.
Kaya lamang libreng mga bagay kapag malloc mo ang mga ito.
>> Ikaw guys makita ang symmetries dito.
Super simple.
Libreng lamang at pagkatapos ay kahit ano ang iyong pointer,
anuman ang pangalan ng ang iyong pointer ay, at ito
ay alagaan pagbabakante ito para sa iyo.
Ayos.
>> Pagkatapos ay mayroon ito namin.
Kaya namin lamang ng pagpunta sa maglakad sa pamamagitan ng programang ito.
At pagkatapos ay sa iyo guys tapos ka na.
>> Kaya lamang pangunahing [hindi marinig].
Kaya mayroon kaming ilang mga int * pointer.
Kaya mayroon kaming isang pointer na pupuntahan matagal ints.
At kung gaano karaming mga ints ay ito pagpunta sa hawakan?
Isa lang.
Laki ng isang int.
>> Nagsusuri kami upang makita kung pointer ay null sapagkat ito
ay, gusto naming sabihin huwag gumawa ng kahit ano.
Ito ay masama.
Kaya i-print namin ang ilang mga error sa labas ng memorya, pinakamadalas na bumalik 1,
bilang ka guys ay ginagamit upang.
>> At pagkatapos ay mayroon kaming dito, namin dereference aming pointer.
Kaya nangangahulugan na kami ay pagpunta upang mag-imbak isang bagay sa lokasyon na ibinigay sa atin.
Int * pointer, o malloc, nagbabalik ang address ng kung saan ito ilaan ito
memory para sa iyo.
Kaya ito ay isa lamang pagbibigay like-- sa iyo kung
isipin ang tungkol sa isang bungkos ng bahay sa isang kapitbahayan
na nais mong ilagay ang iyong mga kasangkapan sa, malloc
ay tulad ng OK, makakakuha ka ng upang pumunta upang paglagyan ng tatlo.
At binibigyan ka nito ng address ng bahay tatlo.
>> Kaya ito sa ngayon, ito Nag-iimbak ang pointer ng isang address,
nag-iimbak ang address ng iyong bahay.
* Ptr paraan, OK, ako sa aking bahay.
Ayos.
Kailangan kong makakuha ng ilang integer.
>> Kaya ka nagtatanong para sa isang tao upang bigyan ka ng mga kasangkapan sa bahay ngayon.
Kaya kang makakuha ng ilang int.
At ito ay naglalagay ito sa iyong pointer kung saan ito na tumuturo sa.
>> At pagkatapos lamang ng mga kopya nito out, ipinasok saan ka man.
At muli, ang reference.
Kaya ito ay tulad ng sa iyo napunta sa mga ito tugunan at nakita mo kung ano ang doon.
Cool?
>> At pagkatapos ng kurso magbakante namin ang aming pointer.
Huwag kalimutan upang magbakante ang pointer.
Huwag kalimutang i-check para sa null.
Huwag kalimutan upang magbakante ang pointer.
Mayroon kang dalawang mga bagay na iyong naaalala mula sa na ito, o na dapat mong tandaan.
Oo.
Madla: [hindi marinig] bagay-bagay tulad ng iyon, ang pansamantalang trabaho * s.
Paano bakit hindi naming magbakante ng mga?
>> Tagapagsalita 1: Hm?
>> Madla: Sigurado mga tulad ng mga string?
Sinabi mo string ay tulad ng pansamantalang trabaho * s, tama?
Kaya bakit hindi namin magbakante ng string?
>> Tagapagsalita 1: mo lamang na libreng kung naka-mallocing.
Madla: Oh, kung naka-mallocing.
Tagapagsalita 1: Kaya malloc at libre ang dalawang bagay
na dapat ay palagi kang magkaroon ng sama-sama.
f bukas, f malapit, ang dalawang bagay Dapat mayroon kang sama-sama.
Sa parehong mga kaso, suriin para sa null.
Oo.
>> Madla: Kaya libreng lamang nagbibigay-daan sa ibang bagay
na nakaimbak doon pagkatapos ang program na ito ay ginamit ito?
>> Tagapagsalita 1: ang sinasabi lang ito, OK, ako ko tapos na may ito.
Hindi mo na kailangan upang mapanatili itong paligid.
Kung hindi man ang iyong computer habilin lamang gustong subukan at panatilihin ito doon.
At pagkatapos ay can't-- mo ito ay nagpapatakbo sa mga isyu sa memory sa ibang pagkakataon.
Gusto mong palaging upang magbakante ito dahil Sinasabi nito sa iyong computer, OK, ako
tapos na may ganitong lugar ng memorya.
Maaari kang magkaroon ng pabalik ito para sa akin upang gamitin sa ibang pagkakataon.
Cool?
Oo.
>> Madla: Kaya ginamit namin ang% d lamang dahil double na bumabalik,
o kung bakit is-- [hindi marinig].
>> Madla: Maaari mong gamitin% i?
>> Speaker 1: Maaari mong gamitin% i.
Ang anumang huling minutong katanungan?
Sige.
Madla: Mayroon akong lamang ng isang mabilis na tanong.
Kaya ang ptr variable, that's-- , na ang int * ptr = malloc,
na lamang sinasabi ito nagtuturo sa isang lugar sa memory--
Tagapagsalita 1: Gusto mo [hindi marinig]?
Madla: --that ang laki of-- hindi, ito ay OK.
Ngunit lamang ito ay nagtuturo sa isang lugar sa memory na tulad ng apat na bytes.
Tagapagsalita 1: I-right.
Kaya malloc laki ng int nagsasabing, OK, pupunta ako upang pumunta tumakas,
maghanap ng apat na bytes ng memory para sa iyo.
Kapag nakita nito na ang apat na byte ng memorya, ito
nagbibigay sa iyo-back address ng kung saan nagsisimula ito,
at iyon ang naka-imbak na sa pointer, o ptr.
Mahusay.
Ikaw guys tumingin mas nalilito kaysa sa pinaka mga tao kapag makipag-usap ko tungkol sa pointer,
kaya pakiramdam ako mahusay sa ngayon.
>> Lahat ng karapatan.
Tulad ng nakasanayan, mo guys ay dapat magkaroon ng lahat nakuha ang iyong mga grado pset2 sa ngayon.
Alam ko nagkaroon ng ilang mga wonky mga bagay kung saan sinasabi nito, formula hindi wasto
o isang bagay.
Kung nakukuha mo na, ang lahat ng ang iyong mga marka ay wasto sa aking tagiliran.
Kaya ang maaari kong magpadala sa iyo ng screenshot ng iyong mga grado.
Ipaalam lamang sa akin kung pati na rin kung ikaw ay Nawawala ang anumang mga marka o isang bagay
Hindi mukhang may kabuluhan.
Halika sa akin.
>> Napuntahan ko sobrang maipagmamalaki ng sa iyo guys na, kaya panatilihin up ito.
At may isang mahusay na natitira sa iyong linggo.
Ako ba na kukunin ko na makita ang ilang mga ng sa iyo sa oras ng opisina.