>> [Тхеме Мусиц]
>> СПЕАКЕР 1: Здраво свима.
Добро дошли назад у одељак.
Ловели даи оут-- због тога, ја сам Наравно, само четири од вас има овде
а не наша уобичајено паковање.
Ја сам био болестан овог викенда.
Тако да немам прасак за вас.
И ја могу почети кашаљ страшно кроз ово.
Дакле, имајте са мном.
Ја ћу да заиста и да кроз ово прво,
Ипак, пре него што имам кашаљ напад.
Али само бити лако на мене а Мало бит-- то је све што тражим.
>> Дакле, наша агенда за данас-- само реминдер-- квизу је следеће недеље.
Рекао сам вам ове недеље, тако да би Не би те ухватити неспремне.
Дакле, те подсетио поново.
Следеће недеље је твој квиз.
У том смислу, следеће недеље је Секција ће бити много
од-- Покушаћу и раде у неким преглед.
Дакле, ако сте могли помози ми што ме слањем
ствари које сте удобно са, да си забринута,
Теме које бих да да покрије, то би било сјајно.
Тако да можете покушати и да их раде у нашој секцији следеће недеље
или послати вам додатни материјал или преп да не би се на другом месту.
>> Да!
Више људи долазе!
Мислио сам, да ли ја то лоше прошле недеље, да нико не жели да се врати?
Плашим се.
Дакле, остала три ствари да ћемо ићи преко
су Редирецтион, Филе И / О, и онда показивачи и динамичке меморије.
Сигуран сам да сте сви узбуђени због Супер поинтерс-- свачија омиљена тема,
тако једноставно да разумемо.
Сигуран сам да момци схватио, зар не?
>> Дакле, прве ствари прво, редирецтион-- Ово је у суштини само начин
да контролишете како унесете ствари у свој програм,
Како да пишете ствари из вашег програма.
Главни путеви да ви су у интеракцији са њом
је само преко стандардног Оут са Принт сцреен овде.
Али постоје начини да пипе-- као што овде видимо
је једна од наших вордс-- врсте од цеви које информације
или да су подаци у датотеку из датотеке.
То је само различите начине узимајући ствари у свој програм
и из свог програма, уместо само их штампање на овом екрану
или уноса ствари из командне линије.
>> Дакле, прво један је мали већи од Царет.
Дакле оутпут-- само штампа излаз у датотеку уместо екрана.
Дакле, ако сте имали нешто што штампани "Здраво, свете!" на екран,
ако га ставите умјесто то оутпут.тект, тај
ствара ову датотеку под називом оутпут.тект.
И када га отворите, то ће кажу "Здраво, свете!" тамо.
Ово може да буде корисно Супер Ако имате гомилу грешака
заправо, као што видимо у овоме.
Уколико два царет, то ће принт поруке о грешкама.
>> Дакле, ако имате проблем са састављање, има доста грешака
а ти се заглибљујући у покушају да се крећете кроз командну линију
кроз све њих, можете само их одштампали у датотеку,
отвори тај фајл тако да се крећете кроз њих лакше.
Ја заправо користи да много када сам био дебуггинг
Моји 181 псетс за машинског учења.
Тако да може да буде супер корисно касније.
Такође је корисно ако имате програм да можда се генерише библиотеку
или генерисање неки сет жица, а ви
треба да буду у стању да види да да их генерише исправно.
То је начин да то урадите.
>> Дакле, ако сте их одштампали у датотеку, могу лакше да их испита, зар не?
Версус покушава да померите кроз командну линију.
И онда једна ствар на уму је да само са веће
него Царет, ако пишете у фајл који већ екистс--
па као да смо трчали ово прва време, ми га ставити на оутпут.тект,
а онда смо имали други програм штампати ово као програм два
и учинио већи него оутпут.тект, ће преписати то-- тако
преписати оно што је икад у тај фајл за почетак.
>> Дакле, ако желите да приложи у датотеку, као што видимо овде,
само урадите двоје веће од знакова.
И то ће додати на то.
То неће преписати.
Дакле, ако желите да покренете више програми и некако задржати
Трацк шта све њих повратак вама у датотеци,
То је начин да се то уради.
Ако не занима шта је у вашој датотеци и то дозвољено да се преписани,
само да користите један већи од.
Да ли то има смисла за све?
>> ПУБЛИКА: Као тачка сласх Хелло већи од производње дот текста, као и два пута,
то ће само показати тек на излазу дот текст другог времена-- готово
>> СПЕАКЕР 1: Добро.
Тако да у суштини би једноставно потпуно преписати оно што је било у почетку.
Уколико овај фајл овде, оутпут.тект Већ
постоји, у основи год ви зовете то поново са једним Греатер
него само да мислите о томе јер као што је заменио фајл.
Као кад сте чувања Ворд документ и ти сачувати као,
и задржати исто име, и потпуно то-- преписује
Ово је иста врста ствари.
Свако има било каквих питања у вези Само излаза у датотеку?
Страва.
>> Очигледно, ако се уназад арров правац, она може да уради улаз.
Дакле, када сте имали као Цезара или Висионеер
и требало је да улазни нешто, сте имали командну линију аргумент
да заправо улаз.
Ово је још један начин да се то.
Дакле, уместо да чека за командној линији,
као кад сте тражили ваше порука у Цезара или Висионеер,
Ако сте имали текстуалне датотеке који је имао своју поруку,
само да га укуцајте у то.
>> Дакле, ако је ово као ДОТ сласх Цаесар 3 мање од стрелицом унос текста, који
је твоја порука, да ће ићи добро.
Када ваш Цезар програма заправо тражио улаз од корисника,
већ би га због тога сте уписали у овом фајлу.
То је само још један начин.
Само супротно оутпут-- само улаз за ваше податке.
>> А онда последњи је цев.
Дакле, ова је прилично кул.
Зато што вам омогућава да узети излаз једног
програм и ставио га као улаз у други програм.
Не знам да ли је неко од вас играо са Деципхер
да можда има ЦС50 доделио, али би
омогућавају да узмете неки узорак филе, откуцајте га у шифровање,
а одатле типе да у свој дешифровања
да се уверите испоставило исти.
Дакле, то је нешто као три-ваи петље.
Иди за то.
>> ПУБЛИКА: Ако програм има више улаза,
постоји начин да га коју улаз реци да користи текстуалну датотеку или излаз за?
>> СПЕАКЕР 1: Има више улаза.
Шта год поднети инпут-- када је тражећи улаз који први пут, то је
ће претпоставити, мислим, да је то ће цев у целој фајлу.
Дакле, ако имате више улаза, ти си Биће цевовода у више датотека.
Дакле, ако питате за поруке три пута у вашем коду,
ћеш бити стављање у три различита фајловима.
И постаје лудо.
А ви не би требало да бринути о томе сада.
Али то је идеја.
>> Тако да, цев је само излаз једног програм користи допринос други.
Сви добро тамо?
Цоол.
У реду.
Ви вероватно неће имати да превише везе са њим.
Али треба разумети начина на које можете користити.
А постоје неки случајеви који можда ћете желети да га користите.
>> Тако да сам филе / о-- знам шта си кажем-- смо навикли да читају из
и писање на нашем екрану тамо, која је стандард у и стандардни напоље.
И то је оно што сте ви били раде од почетка класе овде.
Али такође можете читати и писати фајлове, која је све Филе И / о-- тако фајл улаз,
излаз је све што стоји у.
Дакле, ово у суштини значи да можете сада складиштење података.
>> Када се само принт то екрана, то је у основи нема, зар не?
Чим би "Поздрав свет "и покрените" Хелло ворлд "
она штампа "Хелло Ворлд" на екрану.
Али ви не можете учинити ништа са тим одатле.
Ако чувате у тексту Филе, а затим изненада
имате ове податке које је дозвољено да манипулише или да их у фајл,
или да га у програм касније.
Један од разлога Зашто радимо ово само
као начин да се сачува податке за каснију употребу.
>> Имам пар корака овде Само шетњу кроз стандардна
И / О. У кораку једном, ти Треба да направите референцу
у фајл са свим капе фајла Стар датотеку.
Тако да креира показивач на фајл.
Дакле, онда желите да га отворите.
А ви кажете, буквално, Само фајл једнако фопен.
И то ће да се врати показивач на датотеку коју сте управо отворили.
Видео сам пар вас момци из радног времена.
>> Али једна од ствари је запамти показивачи
може бити нека адреса или нула, зар не?
Ако се икада имамо случај у коме нешто може да се врати нулл,
шта морамо да урадимо пре него што смо икада користити?
Морамо да проверимо да ли то нула или не, зар не?
Јер су неки од вас можда имао питање где год објекат
Била сам враћен у пробој је нулл.
Покушали сте да извршите неку функцију на њему.
И ваш рачунар сајт окривио.
Зар не?
Кладим се пар вас можда су имали тај проблем.
>> Тако је и са фопен, фопен или ће вратити показивач на фајл,
или ако нешто крене наопако, да ће да се врати нулл.
Тако да увек треба да проверите да није вратила нулл
пре него што покушате да урадите било шта друго.
То је као стандардне парадигме да ћеш требати овде.
Ако икада постоји шанса да нешто могао да се врати нулл,
проверите да ли је не пре него што наставите.
У супротном, идеш да грешке лепе сајт.
А нико не воли да се бави онима.
>> Дакле, као што видимо овде, први аргумент је само пут до датотеке.
Ако тај фајл не постоји, то ће створити тај фајл.
И само ће бити празан.
А онда други аргумент је режим који желите.
Да ли желе да читају са овом фајлу?
Да ли желите да пишете из ње?
Да ли желите да додати?
Дакле, у ствари оно што сам рекао-- Ако датотека не постоји
а ви покушавате да чита то, то ће бацити грешку.
Ако датотека име-- волео да филе.тект још увек не постоји
и желите да пишете њему, ће створити
Бланк Филе позвао филе.тект за вас.
А ако желите да се додаје, треба да урадите исто.
Да ли то има смисла?
Ако покушавате да чита датотека која још увек не постоји,
то ће бацити грешку.
У супротном, то ће створити датотеку за вас оно што желите да га.
Цоол.
Сада можемо читати из датотеке.
А ово је само мало иде кроз различите функције
да имамо за Филе И / О. Ово ће бити неопходно у овонедељном псет,
ако се добро сећам.
Да, апсолутно ће бити неопходно у овонедељном псет.
Дакле фгетц враћа следећи карактер.
фгетс само враћа линију текста.
Он ће се вратити све до нова линија, а то ће сломити.
Дакле фреад чита одређени број бајтова и ставља их
у низу, који је нешто што би
Желим да радим са поновним сизе-- може бити корисно.
>> Колико људи су прочитали псет Спец, успут?
У реду.
[Неразумљиво]
>> СПЕАКЕР 1: Добро.
У реду.
Дефинитивно реад то-- је забавно псет.
Можеш да се опорави избрисане меморије цард-- заиста узбудљиво када се ради.
Али дефинитивно, почети читање то.
Дођи да разговарамо, ако вам имате питања о томе.
>> У реду, тако да сам рекао, фреад чита одређени број бајтова.
То је неки произвољан број да идеш да подесите.
И онда само фсеек потезе до одређене позиције.
Па можда не занима О наредних 10 бајтова.
Само желите да прескочите напред.
Ви не занима то.
Желите да прочитате, са почетком у 11 бајту.
фсеек вам омогућава да урадите то.
Тако да вам омогућава да буде селективно шта читаш.
Јер фгетц, фгетс и фреад Реад са одређеном месту у датотеци.
>> Начин размишљања о томе је ли ово је наш датотеке, када први пут отворите,
имате ову позицију у датотеци који почиње на почетку.
Кад год ви зовете фгетц, фгетф или фреад,
да ће почети од Овај положај маркера.
Рецимо само желите да прочитате Овај комад меморије овде.
Ви не можете да позовем.
Морате да траже овде а затим прочитајте одатле
или прочитали, добија, или гетц, у зависности од тога шта желите.
Дакле, траже само вам омогућава да прескочите делове меморије.
И то је једини начин можете прескочити ствари
без читања их у свој бафер.
Да ли то има смисла за све?
>> Очигледно, ту је Много паралелног овдје--
наш излаз, или улаз преусмеравање, Ви сте читати и писати.
Дакле, само пише фпутц карактер у фајл.
фпутс пише линију.
Фпринтф штампа форматиран излаз.
Дакле, ако имате картице, или простор, или шта све не.
И онда нека пише фврите низ бајтова у фајл.
Дакле, ово је исти начин фврите и фреад су аналогни
оппоситес-- фгетс, фпутс, и затим фпутц и фгетц-- много
лудо, брзе ствари.
>> Некако да овај ханди-- имаћете различита времена
где можда желите само један лик у једном тренутку.
Можда желите целу линију.
Уз свој речник псет-- који је у две псетс,
Верујем, да вам целину Речник у текстуалном формату
који има сваку реч раздвојене линије.
Дакле, ако сте желели да прочитате једном речју истовремено,
Шта би сте користили ако читате а сви су одвојили на новим линијама,
а ви само желите једну реч по реч?
>> Публика: фгетс
>> СПЕАКЕР 1: Добро.
Фгетс-- јер враћа све што је на једној линији.
А ако свака реч је његова властита линија, можемо да користимо фгетс.
Цоол.
Да ли то има смисла, све?
Цоол?
Да, идемо да се забавни део са показивачима
врло брзо, где си да да мало математику.
И то ће бити сјајно.
>> Последња степ-- затворите датотеку.
Са тако много ствари овде, један од наших парадигми
је ако се може вратити нулл, проверите нулл.
Ако сте нешто отворити, боље да га затворите.
Ок, тако да ниси урадио док си урађено осим ако сте га затворили.
Некако као да није готово док дебела дама пева.
То је као затварање датотеку.
Како овде, пише само да поновимо, увек
отворите датотеку пре него што си читање или писање на њега.
И увек затворите ако сте га отворили.
У реду?
Цоол.
>> Па, ево примера.
Дакле тини-- Не знам да ли си момци видим добро.
Ако бисмо само могли да повећају осветљеност некако.
Пусти ме заиста учинити ако будем могао.
У реду, ви стварно не могу видимо да уопште, зар не?
У реду, ми ћемо то учинити, онда.
[Неразумљиво]
>> Претпостављам да је ово много боље да види.
Може ли неко види где ми је миш је је питање?
Ах, ево га је- шта бори!
>> У реду.
У суштини, ви треба да имате вид идеје о чему се ради.
То није савршен.
Али радије бих да објасним него потрошити више времена покушавајући да га форматирате правилно.
У основи, као што видите овде, почнемо са Филе Опен.
И ми имамо неке датотеке са да смо
отварањем, које каже да је наши студенти.
И ми ћемо писати у њој.
Дакле, наравно, вратити нулл.
Дакле, морамо да проверите нулл.
А онда, ако то није нулл, идемо кроз.
И као што видите, ми смо петље овуда.
Тхере аре студенти.
Студентима је хасх дефинише као три.
А шта ми радимо је да смо штампање у фајл, зар не?
Па шта ћемо одштампа нашем датотеку?
>> ПУБЛИКА: резултат које су у низу?
>> СПЕАКЕР 1: Да.
Резултат које су у арраи-- тачно.
Тако да се отвара ово Датабасе Филе, који
Претпостављам је неки оцјена базе података.
А ми смо штампања резултати сваког студента тог фајла.
Цоол?
Добро.
Страва.
У реду.
Вратимо да--
>> ПУБЛИКА: Имам кратко питање.
Да ли иф не за петљу?
То је само у петљи ако?
СПЕАКЕР 1: Не, то је у за петљу.
Не могу да видим свој миш добро овде.
Дакле, ја борим се формат који правилно.
Овај носач треба да нестане.
Требало би да буде овде.
То је оно што је у вашем за петљу.
Тамо.
Сада је лепо.
Дакле, то је како треба, осим бити-- за тај задњи држач који сам отпуштен.
У реду.
Да ли то има смисла за све?
У реду.
Ми ћемо прећи на на следећу ствар онда--
који, у ствари, идеш да треба да видимо код.
Тако да сам само ћу Примљено преко одмах.
У реду.
Дакле, ја ћу да вам покажем ово код.
И желим ти да покушате и фигура шта би требало да уради.
>> Дакле, с обзиром да-- потрајати минут или тако.
Пробајте и схватити шта се овде дешава.
>> Било који идеја?
>> Ми знамо да имамо најмање два аргументе у командној линији, зар не?
Претпостављам од којих ће бити да [неразумљиво] нашег програма је
и онда нешто друго.
Јер ако [неразумљиво] је мање од два, вичемо на њих.
Зар не?
И из употребе, изгледа да то ће бити нека врста датотеке.
Сви се слажемо да то?
Дакле, сада, шта је петља ради?
Шта иде кроз?
>> ПУБЛИКА: Сви фајлови.
СПЕАКЕР 1: Тачно.
Иде кроз све датотеке које смо тамо улаз.
Дакле, за сваки фајл, то је отварање неку жицу тамо.
То је отварајући тај фајл.
Зар не?
И то је читање из ње.
Наравно, ако је провера нулл.
А онда је штампање.
Ако је нула, то је само да нам кажете да то није датотека која постоји.
Зато што се сећате, са прочитајте наш фајл мора да постоји.
Зар не?
Са пишу и додати, можете извући са тим.
Али са прочитано, наша датотека мора да постоји.
>> А онда, ако то не постоји, Шта радимо овде?
Хајде да почнемо овде.
Шта је ово урадиш-- ово први карактер.
Шта он ради?
Он добија један лик, зар не?
Дакле, шта се ово ради?
Постаје први карактер.
Да ли неко зна ЕОФ?
>> ПУБЛИКА: Енд оф филе?
>> СПЕАКЕР 1: Крај филе-- тачно.
Дакле, то ће проћи цео фајл, зар не?
А онда ће се ажурирати од геттинг сваки следећи карактер.
Зар не?
А шта то ради?
ПУБЛИКА: Путтинг то у--
>> СПЕАКЕР 1: путцхар Принтс на ваш сцреенсавер.
[Неразумљиво] знак.
А онда, када је [неразумљиво] Ово ће затворити датотеку.
>> ПУБЛИКА: Зар не треба [? друго? ?]
>> СПЕАКЕР 1: Не мора да значи.
Мислим, то је некако подразумевало у овоме.
Јер ово враћа, иако, док јер то не ухвати ово, ти си у реду.
Мислим да је то вероватно добро пракса да ураде друго.
Али друго није увек потребно посебно
ако имате нешто као повратак, који
значи да у овом случају да хвата то, ваш програм ће се завршити
и никад се на то.
То је више за случај где сте не нужно враћа нешто.
Јер ако ово није повратак ништа,
то би значило да ако је ово истина, остатак би и даље ради.
И у том случају, би хтео лажна.
Ако је то враћа, и Прекид програма,
друго није потребно све време, у зависности од контекста.
Јацоб, да ли имате питање?
ПУБЛИКА: Да.
Дакле, да ли фгетц добили следећи карактер?
Како повећати лик?
СПЕАКЕР 1: Да.
Дакле фгетц добија следећи карактер.
Можете мислити о томе као Ц ++ у смислу.
>> ПУБЛИКА: Дакле, шта је ЕОФ?
>> СПЕАКЕР 1: ЕОФ је крај датотеке.
То је само знак који вам омогућава да знате да сте на крају вашег фајла.
Дакле, ово ће штампати на ваш стандард оут.
А онда ће се затворити Филе кад буде готово.
А онда идемо у следећи фајл, зар не?
Дакле све у свему, шта овај програм уради?
>> [Неразумљиво]
>> СПЕАКЕР 1: Да.
То само исписује све тамо.
Дакле, ако сте икада користи ЦАТ а затим име неког филе--
Не знам да ли неко од вас има није урадио то на терминалу.
Али ако сте икада користили команда ЦАТ-- Ц-Т--
а онда шта год Филе имате тамо-- ит
исписује га на ваш терминала, који може бити супер згодно за неке ствари.
Ја то много користи.
Да ли то има смисла за све?
Цоол?
>> ОК, ваш задатак сада-- било сами или са људима око тебе--
је само написати једноставан програм да ће само написати "Хелло, ворлд!"
се у датотеку.
>> [Неразумљиво]
>> СПЕАКЕР 1: Био сам као, да ли Ја то лоше прошле недеље?
Нисам мислио да је то лоше.
Драго ми је да сте сви овде.
Стварно ме чини срећном.
Ја сам девојка једноставних задовољстава.
Само волим кад ми је секција похађа.
Тако да сам само добијам ово почело за момци, тако да можемо да кодирања заједно.
Ја не волим никога стављање на Спот уколико не желите да буде.
>> ПУБЛИКА: За квиза, урадите морамо написати програм?
>> СПЕАКЕР 1: Можда ћете бити упитани да напише једноставне програме ручно.
Аха.
>> ПУБЛИКА: квиз је следеће недеље, зар не?
>> СПЕАКЕР 1: квиз је следеће среде.
То значи да је дивно [? ЦСЕ?] оцењивање странку после, који
значи да ћете добити своје резултате Бацк то нигхт-- у ком тренутку?
Ко зна?
Али то ће бити те вечери.
>> У реду.
Како желимо да покренемо ово?
Ја ћу ти дати хинт-- почиње са овом.
>> ПУБЛИКА: Морате да отворите датотеку.
>> СПЕАКЕР 1: Да.
Дакле, шта желиш да зовете?
Да ли само желите да га назовете "Филе"?
Хајде да га једноставно.
Дакле, шта је наш фопен-- излаз Тест ће бити?
Назовите то "Здраво."
А шта је наш режим?
Шта радимо на овом фајлу?
>> ПУБЛИКА: Прочитајте.
Писање.
СПЕАКЕР 1: Пишемо томе.
Ловели.
Ок, тако да сада имамо ову слику.
Шта треба да урадимо?
ПУБЛИКА: Проверите да ли је нулл.
СПЕАКЕР 1: Проверите да ли је то тачно нулл--.
То је оно што волим да чујем.
То би требало да буде аутоматски, посебно прилично од овог тренутка.
Ако почнете сегфаултинг, вероватно нису проверили нулл негде.
Девет пута од десет, то је ће бити твој грешка.
Дакле, ако бисте могли да у навика, увек проверите да ли је то нулл,
Твој живот ће бити Нице и лако, или лакше.
>> Тако да проверите да ли је то нулл.
Дакле, ако то није нулл, који је оно једнако Банг
меанс-- није нулл-- је важећа.
Шта желимо да урадимо?
Ми само желимо да штампате на тај фајл, зар не?
Па шта ћемо да користимо?
>> ПУБЛИКА: фпринтф
>> СПЕАКЕР 1: Фпринтф-- дивно.
И фпринтф узима два аргументс-- где је иде и шта желимо штампати.
Дакле, шта је први?
Где иде?
>> ПУБЛИКА: Филе.
>> СПЕАКЕР 1: То ће да поднесу.
А шта желимо штампати?
"Здраво, свете!"
У реду.
Ми имамо једну ствар-- Још једна велика парадигма овде.
ПУБЛИКА: Затвори.
СПЕАКЕР 1: Затвори.
Изволи.
>> ПУБЛИКА: Да ли је ово дешава Ако је фајл нулл?
СПЕАКЕР 1: Не, ово је ако није нулл.
ПУБЛИКА: О, ако је то у реду није--.
За фопен а затим два аргумента да унутра,
Шта значи први аргумент поново?
>> СПЕАКЕР 1: аргумент баш као и име фајла
да желите да идете у.
Дакле, после тога иде, ти би има неки фајл под називом "Хелло"
који су имали "Хелло, Ворлд" у њој.
То је све.
Само име.
>> ПУБЛИКА: А пошто је то писање, Филе не мора да већ постоји.
Да ли је то оно што сте рекли?
>> СПЕАКЕР 1: Добро.
Екацтли.
Ако је "Здраво", као датотеку још увек не постоји, то је
ће креирати фајл под називом Здраво "и писати за тебе.
>> ПУБЛИКА: Када говорите програм писао у фајл,
зашто пишеш "Филе" уместо име фајла и фпринтф--
>> СПЕАКЕР 1: Зато што у овом случају, имамо да је велики ФИЛЕ-- све у цапс-- звезда,
филе.
Тако да је показивач на фајл да говорите.
То је начин на који Ми само односи на њега.
Дакле, у овом случају, могу да се сетим филе-- аха,
можемо користити ово-- фајл овде односи се на отварању "Здраво"
и пустити га пишем.
>> ПУБЛИКА: Да ли смо ставили "Здраво" уместо тога [? за само?] Ф Филе?
СПЕАКЕР 1: Не, јер је "Хелло" треба да буде отворен и за писање.
Филе Овде је као ознака која каже ОК,
хаве тхис филе-- хелло-- да гледамо.
Она је отворена.
И ми ћемо писати у њој.
Ако користите само "Здраво", која је инкапсулиран у њему.
Тако да ће полудети.
Мислим, могао си да га зове.
Могао си да уради слику, звезда, "Здраво", једнако то.
Али поента је да ти треба фајла Стар показивач како би
да бисте могли да користите ове функције.
ПУБЛИКА: Можете ли да урадите Филе, звезда, Филе, "Хелло"
или имате да ставите филе звезду, датотеку њиме?
СПЕАКЕР 1: Могао би урадите датотеке, звезда, "Здраво."
Можете променити ово год име хоћеш.
Потпуно је произвољна како то име се.
Можете реци ништа.
Наме ит Флиинг Спагхетти, ако желиш.
>> ПУБЛИКА: Шта је "В" у наводницима за?
>> СПЕАКЕР 1: "В" је само режим.
Дакле, пишемо на ову датотеку.
Сви добро?
Јасно?
Да.
>> ПУБЛИКА: Дакле, када се пише ово филе, где ћемо онда наћи тај фајл?
>> СПЕАКЕР 1: То ће бити у истом директоријум који сте тренутно у си.
Ако сте у псет три и наиђете ово, у вашој псет
три фасцикла ће бити овај фајл под називом "Здраво."
Цоол?
Сви добро?
Осећам се као да сте сви узимајући га, што је одлично.
У реду.
Вратимо се Слиде схов-- Волим када се ствари раде.
У реду, поинтерс-- Јесте ли узбуђени?
Показивачи су супер.
Они узимају мало да ће завршити своју главу около.
Ово је моја друга година настава показивача.
И мислим да сам коначно добила.
Дакле, ако се борите, то је у реду.
Као што сам раније рекао, цртање доста помаже са стварима у ЦС,
колико ја мислим да људи имају тенденцију мислити Ох, ми смо на компјутеру.
Ми треба само код.
Не-- цртање Заиста ће вам помоћи.
И стварно вам и да кликните на своју страну киндергартнер
и извући бојице или маркери и реми.
Јер ће вам помоћи.
И ако ме видиш у радног времена, ја носиће око гомиле папира
са оловке цртање ствари.
>> Тако посебно са поинтерс-- цртају слике.
И ја сам сигуран да ћемо заправо да бити цртеж неке слике овде.
>> Дакле, ви сте све ово да видите Бинки, Ово кул Цлаиматион ствар.
И ми мислимо да је то веома смешно када Он експлодира у гомилу комада.
То је нека Цомиц Релиеф за класу.
Ц [неразумљиво] овај велики способност бити у стању да контролише меморију.
И то је једна од ствари које заиста чини тако моћан језик.
Али са великим моћ долази велика одговорност.
А луде ствари може да се деси ако нисте пажљиви.
Дакле, када користите Поинтерс, желите да се
да ли заиста разумете тачно шта радите.
Надамо се да следећа мало Време ће вам помоћи да разумете заиста
показивачи, како да их користе, и како да их манипулишу.
>> Дакле мемори-- Сигуран сам да сам раније овај дијаграм.
Дакле, ово је само једноставан дијаграм Како би се ствари могу чувати сећање.
Тако да у основи имају ово велики низови од један бајт блокова
је оно што имамо овде- блага увећава се за по један сваки пут.
То је у Хек [неразумљиво] тако осам-битне блокове.
И сваки блок је повезан са неким хексадецималном адресу.
Дакле, ако сте икада видели 0к, то је само нотатинг
да је хексадецимална адреса.
Можете претпоставити ово значи нека адреса у меморији.
Говоримо о меморијске адресе кад год видиш хексадецималном.
>> Имамо интс смо варијабле, пловци су варијабле које чувају.
Дакле интс сторе интс.
Пловци Сторе плута.
Дакле, имамо и показиваче које чувају меморијске адресе.
То је врста мапирања.
Показивачи су искључиво за меморијске адресе.
Дакле, то је као ваш тип тамо.
Ваш апарат је 32-битни, што значи да ваша меморијска адреса је четири бајта.
Тако да било Поинтер да имате такође ће бити четири бајта.
Или ако је четири бајта, Меморија је четири бајта.
Показивачи Сторе меморије.
Дакле, они су четири бајтова.
Цоол-- само желим да појача тим.
>> Сада треба добити овај стрип.
Ја не знам колико вас су ккцд фанови, али ја волим ккцд.
То је сјајно.
>> У реду.
Дакле, стварање поинтерс-- као што сам рекао, то је прилично исто као било шта друго.
Имате тип.
Имаш име.
Зар не?
То је оно што смо тамо имамо. [? Хек?] Стар значи да је показивач,
и онда шта год желите да га зову.
Дакле, тип представља шта можете да сачувате.
У реду?
На исти начин на који радимо, ако интс, знамо да тамо чување инт.
Са показивачем, ит има меморијску адресу.
Али шта то значи је то-- ево где цртеж ће доћи.
Дакле, у овом случају, имамо неки валуе-- рецимо четири.
Четири је на адреси једном.
У реду?
>> Овај први овдје значи да је показивач 2к.
Зар не?
То је нека Поинтер х.
Кс може бити нешто, било шта.
Шта год к је-- рећи к је четири.
То ће за складиштење Меморија адресу овде.
Дакле инт, звезда, ово је к-- неки други слот мемори--
ко зна шта је то.
Али то ће се похранити адресу овде.
Дакле, то би било као-- у овом случају, год,
се складишти на 0к1-- год је сачувана на адресу коју је наш Поинтер држи,
мора да се поклапа са шта смо означен.
Дакле, у 0к1, у овом случају, то је х.
То може само икада бити инт док користите ово.
>> Слично томе, ако имамо други 1и, без обзира
адреса се чувају са И има да буде цхар-- Иста ствар са з.
На исти начин, те кад год покушати учинити ИНТКС износи 0,4,
то ће викати на тебе и бити као што не, рекао си да желиш инт.
То је требало да буде Инт.
Престани да га направи пловак.
>> Тако да ствари буду оно што желе да буду.
Пустите ствари сами бити.
Дакле, велика ствар је само без обзира на врсту показивача
је, то је једини ствар коју можете похранити тамо.
У реду?
Са праксом, као и са прошле недеље, све
Изгледа стварно некако апстрактно.
Ми ћемо да радимо мало вежбе.
То би требало да има више смисла.
>> Дакле, упућује и дереференцинг-- је веома важно да се ово право.
Још увек имам то рефресх сваки сада и онда.
И ја сам као чекања, који је један желим?
Дакле амперсендом ће заиста дати Ви референца или адреса.
Тако да враћа адресу у Меморија од којих променљива је сачувана.
Дакле, то ће заиста вратити вама хексадецимална, док је дереференцинг
заправо ће вам дати подаци који се чувају тамо.
У реду?
Тако да ћемо да погледамо пример веома брзо, или стварно се поред.
>> У реду.
Дакле, морамо да стварно мислите пажљиво о томе.
Дакле, овде имамо цјелину к.
Ја ћу покушати и нацртао како би најбоље моје способности.
Тако да ћемо имати тај слот к.
И то је чување пет.
Његова адреса је 0к4.
Цоол?
Све је добро.
>> Тако да сада имамо ову показивач.
Била је овде.
И амперсендом нам даје адреса нечега.
Дакле, у овом случају, то је адреса од к.
Која је адреса Кс?
04-- а овај показивач је на 0к08.
Цоол?
Тако да можете да мислите о томе Поинтер, 04, само указује овамо.
И они звали показиваче јер као што смо добили више у ово,
ћеш видети указује на ствари.
И један блок указује на другу блок ће много више смисла.
Дакле овде су два.
И онда имамо мало Цопи, која је шта-- 0к0Ц.
И то ће дереференце нашем показивача.
>> Дакле, шта је то говорио је У реду, овде је наша Поинтер.
Вредност чува је 0к04, а шта она каже се ићи на ову адресу
и реци ми шта је у њему.
Тако да је ефикасно Шта ова стрелица ради.
Можете мислити о овоме као твој звезда.
Дакле реду, кад радимо звезду, то значи прати.
Иди на ову адресу.
И то је у суштини само следи Ова стрелица на овај комад меморије.
И дај нам шта је у њему, што је 5.
Зато је наш примерак је једнака 5.
Да ли то има смисла?
Да ли ме неко треба да прође кроз поново, или спорије?
Хоћеш да идем кроз још једном?
У реду.
Ми ћемо опет да исцрта.
Када почнемо, сви се слажемо да имамо неки комад меморије то је променљива
к да смо поставили једнака 5.
Ми не контролишемо, где је у меморији.
Дакле, ово место је само произвољно додељен.
Добро тамо?
У реду.
Онда смо иницијализујемо показивач на инт.
То је разлог зашто је дозвољено да се укаже на к јер имамо инт овде.
Имамо још један комад Меморија јер ово Поинтер
је променљива као и било шта друго.
То је произвољно додељује неки простор у меморији.
А шта је то продавница је адреса к.
Амперсанд значи адресу к.
Дакле, шта је адреса Кс?
>> ПУБЛИКА: То је зеро--
СПЕАКЕР 1: 0к04.
Дакле онда-- последњи.
Поново смо се мало цопи-- само једна променљива.
Па хајде да додели неко произвољно место.
И ми дереференце наше показивача.
Звезда значи ићи у адреса чувају у мојој показивача.
Реци ми шта је тамо.
Дакле, адреса чува у нашој показивач 0к04.
Дакле, идемо на ту адресу.
То показује да се ту адресу.
Шта је унутра меморијском блоку?
То је пет.
Дакле, то је оно што смо доделили наш примерак.
Сви добро?
Цоол.
Поново: слике.
>> Дакле, праћење вредности овдје-- сам допустити ви мислите о томе.
Можемо извући још једну слику.
Али желим да покушате и разлог кроз ово сами на тренутак.
>> Пошто они нису дали САД пример адреса,
Само ћу да урадим амперсанд к-- који би требало да помогне возити га кући.
Амперсанд значи адресу.
>> Дакле, у првом, свима иди са прве линије.
Неки Кс сет је фиве-- мало Рандом слот у меморији.
Инт звезда Поинтер једнак на адресу Кс, зар не?
Инт звездице Поинтер ствара Овај блок, то назива поинтер,
и га додељује на адресу Кс.
Ја сам ужасно у амперсандс.
>> Сада оно што радимо је да кажемо У реду, дереференце нашем показивача.
Дакле, идемо у реду, шта је у нашем показивача?
То је Амперсанд х.
Иди на амперсанд Кс и пренесете га.
>> Тако да сада, Амперсанд х ће бити 35.
Дакле, у основи, када сте дереференцинг, иди у реду.
Идеш да цртеж фото лике тхис.
Идеш да цртеж стреле преко где је.
Дакле, идите на овај слот у меморији и било дај ми ту вредност назад, или изменити га.
У овом случају, јер смо у томе вредност, ми га додели да буде 35.
Док је у последњи један, ако приметите, ми
су оно што је додела овде на нешто друго.
>> Дакле, они имају овај страшан табелу.
То није тако лоше.
Ви радите на томе.
Ја ћу да га извуче на табли.
Идемо да га попуните заједно, у реду?
Дакле, зграби неки папир, зграби партнер, почети са радом.
Идем да већи комад креде.
Зато што ће бити много.
У реду.
ПРОФЕСОР: У реду.
Почнимо са првом реду.
Ми ћемо тамо почети, онда момци Можда могу да раде кроз још.
У реду.
једнако б пута Ц па шта је?
То није трик питање, обећавам.
>> СТУДЕНТ: 4 пута 5.
>> ПРОФЕСОР: 4 пута 5.
20.
Дакле, шта је Б?
СТУДЕНТ: 4.
>> ПРОФЕСОР: А Ц?
СТУДЕНТ: 5.
ПРОФЕСОР: 5.
А онда је само да се амперсанд а, Амперсанд б,
Амперсанд Ц, зар не?
Није лоше.
Довољно је једноставно.
У реду.
Дакле, следећи.
Једнако пута Ц, у случају ко је био упознат са тим.
Да ли су сви упознати са временом једнако?
Ок, све то меанс-- ово скраћеница за једнако пута ц.
Такође можете да урадите са поделом, уз додатак, са одузимањем.
Можете обавити једнака или плус једнако Ц значи једнако плус Ц, минус једнак
Ц би једнако минус Ц.
То је само синтаксичких шећер.
>> Дакле, у овом случају, једнак А раз Ц би нам шта дао?
Опет, није трик питање.
>> СТУДЕНТ: 100.
>> ПРОФЕСОР: 100.
Да ли нешто друго мења?
Не.
Можда ћу коначно добити бољи у моје амперсандс.
>> СТУДЕНТ: Ок, извини, како си 100?
ПРОФЕСОР: У реду.
Дакле, једнак пута Ц, тако да Ц пута.
СТУДЕНТ: О, ви користите за превиоус--
ПРОФЕСОР: Да.
Дакле, то су наши најновији вредности.
То су оно што би требало да буде користећи као крећемо се, ОК.
Дакле, б је једина ствар промена, зар не?
Па хајде да попуните у свему осталом.
Б. Шта је Б ће бити?
Бити или не бити.
Дакле, шта се ово ради?
Шта је звезда ПА ради?
>> СТУДЕНТ: Код за локације на годишњем нивоу.
>> СТУДЕНТ: Не, не сасвим.
Дакле, ово је ум референца.
>> СТУДЕНТ: Дакле, б је руком вредност на годишњем нивоу.
>> ПРОФЕСОР: Да, тако је ПА адреса, зар не?
Тако да каже појдите к е складишти и дати му ту вредност.
Дакле, шта је Б?
СТУДЕНТ: 100.
ПРОФЕСОР: 100.
Савршено.
У реду, тако да је оно што је ПЦ мења.
Све остало остаје исто.
Шта је ПЦ ће бити?
Једноставан задатак.
ПЦ је једнак ПА, а шта је тата?
>> СТУДЕНТ: амперсанд.
ПРОФЕСОР: Савршено.
Сада смо постаје интересантно.
У реду, хајде да разбије ову доле.
Прво, шта је Б пута ц, јер је то једноставно део овога, зар не?
Б пута Ц је--
>> СТУДЕНТ: 500.
>> ПРОФЕСОР: Да, па Шта је ово једно ради,
Ако је стар ПБ, шта мења?
>> СТУДЕНТ: Шта је у до--
ПРОФЕСОР: Шта је у Б?
СТУДЕНТ: Шта је у простору да ПБ указује на.
ПРОФЕСОР: А ПБ указује да--
СТУДЕНТ: Б.
ПРОФЕСОР: Б. Дакле једини ствар је мењање Б, у праву.
Дакле, Б, Ц, 500 пута.
Дакле, то је оно што се сада мења.
Цоол.
Ловели.
Ви се иде.
У реду, разбијање ову једну доле.
Ц се мења, зар не?
Тако да може да попуни у свему осталом.
Хајде да видимо.
У реду.
Ми знамо да је Ц ће бити производ два броја, зар не?
Шта два броја, иако?
>> СТУДЕНТ: и Ц?
>> ПРОФЕСОР: Па је право на првом.
Дакле, ми д упућује п о, зар не?
П од само указује на, тако да знамо да је Ово ће бити 100 пута Шта?
Посетилаца Какве пц тачку на?
Указује на.
Дакле, 100 пута 100 је 10.000.
Да ли то има смисла?
Цоол.
Хоме стретцх, момци, последњи ред.
У реду.
Шта се мења овде?
>> СТУДЕНТ: А.
ПРОФЕСОР: А. Савршено, тако Све остало може да остане исти.
У реду.
А шта је?
Тако да је оно пута?
То је звезда ПБ.
Дакле, са ПБ значи ево ПБ, ПБ поена на б.
>> СТУДЕНТ: 500.
>> ПРОФЕСОР: 500.
Дакле, имамо 500 пута 100.
То је 50.000.
Ух!
Погледајте то.
>> СТУДЕНТ: Зашто имамо & Ц за ласт--
ПРОФЕСОР: Извини.
СТУДЕНТ: О, у реду.
ПРОФЕСОР: Моја грешка.
Много писања.
Сви добро?
Није лоше, зар не?
Само треба мало док на посао преко.
Ако га разбити, разумеју шта Сваки део
говори као да-- са свиме што је,
Да-- га разбити на мало Проблеми и онда рекомбинују,
и можете да урадите неке ствари страва.
Постоје одговори, али смо то урадили.
Поинтер аритметика.
Ах.
Моје руке су све кредаст.
Дакле, додајући или одузимајући Инт подешава показивача
по величини врсте показивача.
Сећаш се како сваки тип има другачију величину?
Дакле, као двострука или дуго дуго траје осам и Инт је четири, али Чар је један.
>> Дакле, оно што желите да урадите је-- једну ствар за памћење
је само да се колико твој Поинтер вредност заправо мења
ће зависити од тип поинтера је.
Свако добро са овим?
Могу ли га избрисати?
Ми смо добри?
Страва.
>> Дакле, ако имамо неке Поинтер да-- ће ово бити-- сам
ће то Инт Поинтер направи.
Она чува ово.
Ако сте били да кажете показивач плус један, шта ће да уради
се да ће ажурирати га по величини инт
јер је то тип поинтера је.
>> Са Ц, све је врло строга и уређена.
Инт показивач ће Упдате би количина простора Инт ће узети.
Инт је четири бајта.
>> Дакле, шта би то претворити у?
Ти само додао четири на ову.
Сада показивач ће бити-- реду.
>> Дакле, ако је Чар и јесмо поинтер плус један, шта би то сад било?
Ако се претварамо да стартед-- стартед-- сада је 0к08.
Хајде сада кажу да је то био цхар показивач, и ми смо додали.
Шта би то променити?
Колико бајтова је Чар?
>> ПУБЛИКА: Један.
>> СПЕАКЕР 1: Један.
ПУБЛИКА: Тако 0к09.
СПЕАКЕР 1: Па било би девет.
Дакле, само нешто да се сетим.
Само када додате један, то није додавањем једног осим ако је цхар.
То је додајући колико бајтова тип који је то,
због чега имамо Ова једначина овде.
Тако да је инт пута величина од врсте показивача.
>> Дакле, имамо овде пример.
година је добио ту вредност, 0к4, Када смо пре, плус један једнако.
Шта је у њој, шта је у Кс, не мења.
Оно што се мења је оно што је у и.
Адреса чувају у лет ажурирање четири јер постоје четири бајта у инт
и то је Инт Поинтер.
>> У реду.
Тако да сада имамо још једну вежбу.
Дакле, питање је шта ће се штампати.
Било који идеја?
>> ПУБЛИКА: број ликови у Хаппи Цат?
СПЕАКЕР 1: Тачно.
Дакле, са твојом стринг.
Да ли сви то?
Да ли желимо да прође кроз њу?
>> Да, у реду.
Дакле, оно што имамо и овдје-- овако много више.
Ја не морам да [Неразумљиво] смешно.
>> Дакле, имамо стринг, Хаппи Цат.
Ловели.
Ми имамо неке цоунтер то смо праћење.
Дакле, имамо неку цхар * поинтер да само се поставља једнака Стр.
Шта ово ради је да је додела мало показивач
на почетку низа.
Јер сам сигуран, јер помиње у предавању,
ми смо вам дали момци ово тип података звао низ.
>> Али стварно жице су само Арраи од-- као цхар *.
То је показивач на гомили ликова који су суседни у меморији.
Дакле, ово само сетс једнак сваком стринг је
препознаје се по где њен први знак је.
Дакле, ово је само постављање неку тачку једнак почетку низа.
Сви добро тамо?
Цоол.
>> Дакле, ово је наш дереференцинг показивач.
Тако да је у ствари иде у дај нам неку вредност овде,
у нашем низу да говоримо о.
И ми кажеш колико није нулл терминатор.
Тако настави док се не до краја стринга.
Ажурирајте показивач за један.
Дакле Р, заправо ће ажурирати по један Сваки пут јер је ово знак,
цхар *.
>> Дакле, то ће проћи.
То ће се ажурирати.
Дакле, први пут ове води, то ће бити овде у х.
То ће се ажурирати.
>> То ће бити.
То ће бити п, И, и тако даље и тако даље.
Ми ћемо ажурирати цоунтер.
Када стигне на крају, Само исписује колико то стечен.
Да.
>> ПУБЛИКА: Дакле Броји простор као један, зар не?
У реду.
>> СПЕАКЕР 1: Мислим да јесам.
Да ли је то куестион--
>> ПУБЛИКА: [неразумљиво].
>> СПЕАКЕР 1: Без бриге.
То сам урадио.
У реду, тако да се сам ствар разуме се да са низа,
можете третирати као Поинтер јер низови су само
континуиране мрље меморије.
>> Тако да може да се користи на исти начин.
Можете их манипулисати са показивачима, такође.
Дакле, уместо да ради, у овом Цасе, аналогна ствар
би Арраи 0 једнако 1.
>> Али исти начин на који стринг се утврђује
до почетка, где њен први знак је,
низ је одређена где је први елемент је.
Јер знамо, да смо загарантована, да су
ће бити континуирано блокови меморије.
То је оно што нам омогућава да урадимо ово.
Ми знамо да су континуирано блокови меморије.
>> Дакле, у овом случају, дереференцинг Само Арраи, то нам говори,
У реду, иди на почетак Ваша низ, који је овде.
Тако да можете подесити да једнако један.
И у овом случају, шта год ти Арраи тип је, када га ажурирате по један,
то је исто као ажурирање га на следеци индекс.
То можете да урадите јер сте Знам шта је у вашем низу.
Тако да не зна колико се ажурирате свој показивач,
Коју адресу да га да то упдате да сте на следећем слот.
>> Дакле, ово је само другачији начин писања Арраи 0 једнако 1,
Арраи 1 једнако 2, арраи носач 2 једнако 3.
То је само још један начин да се размисли о томе.
Зато што су континуирано блокови у меморији,
можете упутити на њих ни од низа нотатион--
које сам лично финд еасиер-- али можда
морате да га манипулишу строго по меморијским адресама.
И то је начин на који би то урадила.
Некако више као добра ствар можете да урадите
Можда не у односу на нешто што си заправо ће имплементирати.
>> Ја га користим у 61.
Ви вероватно не треба да брине о томе превише.
Али ако сте заинтересовани, узети 61 наредне године.
Ми смо у кући стреч момцима.
Знам, то је дуга.
Динамичка меморија од Аллоцатион-- тако да знамо да један
ствари када смо разговарали током наша прва секција заједно,
смо гледали свап Функција где је
изван оквира нашег главног функције.
И смо пролазили у тим вредностима које су биле ефективно копије.
>> И када свап завршен извршавање, само оставила гомилу.
Запамтите, имамо стацк оквир за свап.
Она оставља и оних Вредности оставити са њим.
И они су отишли.
Нисмо могли ништа са њима и ми били тужни
јер не могу заменити наше вредности.
>> Али са Ц, као што сам поменуо, те имају доста моћи над меморије.
Дакле, шта можете да урадите је да ли додели ствари на гомилу овде
да ће тамо остати до реци им другачије.
>> Они су као добра деца.
Они су тамо остали.
Они не остављају.
Они ће остати тамо док си као, у реду, можеш отићи.
>> Док ствари на стек, ко-- они су као деца несташним.
Само ће побегнемо када желите да се тамо и онда су нестали.
Ви не можете да их вратимо.
>> Тако да гомила је-- ћемо говорити о маллоц и фрее, који
Сигуран сам да момци чуо у предавању.
И то је у суштини начин да имају веома упорни подацима.
Тако да можете држати податке око колико желите.
Мхм.
>> ПУБЛИКА: Можете ли дефинисати гомилу и стацк?
Да ли они воле места да ставимо ствари?
>> СПЕАКЕР 1: Па они су у основи су само--
начин на који смо се односе само на меморију.
Дакле, гомила је само места где Меморија је динамички додељује,
док Стацк односи више стацк оквире
да су од централног значаја за функције које су заправо ради.
Ти стварно немам контролу.
>> Велика разлика, имате контролу преко гомиле ако желите.
Имате мање контролу над стека.
Стацк зависи функције које се ради,
и редослед којим су рун, а како се ствари вратио.
Док са гомиле, као ћемо видети, можете рећи,
У реду, желим ова вредност буде около док ти не кажем другачије.
Нисте дозвољено да се ослободи тога.
Ви не смете да га замените.
Ти ћеш да га задржим око док сам ти рекао.
Можеш да се газда у гомили, док стацк-- Можда ако
Као издејствовати свој пут можете бити шеф.
Али не сасвим.
И то је заиста само сећање.
То је само на различите начине упућивања у меморију.
>> Цоол.
Дакле са тим, како да контролишете своју меморију.
То је са маллоц, који ћеш добити за коришћење.
Дакле, то је само кратко за додјелу меморије.
То је све што је.
Постоји гомила друге кул Функције које имају аллоц на крају,
и они стоје за различите ствари.
>> Дакле, када вам је потребна за складиштење који треба да наџиви тако тренутну функцију
да кад ваш тренутни функција бежи,
и даље имате податке који вас добили од њега, желите да користите маллоц.
То ће га иницијализујете на гомиле.
И као што рекох и задржати говорећи ћете га задржати тамо
док га на нешто, што је важна ствар овде.
>> Дакле, једна ствар приметити, и То је типично заиста важно,
је да је овај сизеоф је супер корисно користити
јер зависно од типа машине да трчиш,
она може имати различите количине меморије која је потребно.
Тако да увек желите да користите величину тако да ниси машина зависи,
тако да је ваш код ће ради на свакој машини.
>> И то је само део писања доброг кода.
Ако се ради о једној машини, али не било од других,
Како корисно је ваш програм?
Тако да увек желе да уверите се и користе сизеоф.
>> ПУБЛИКА: Да ли је то као величина 10 инча [неразумљиво]?
>> СПЕАКЕР 1: Ово је величине 10 интс.
Да.
Дакле, величина интс ће се вратити колико неко узме Инт.
Или величина цхар, како кошта један цхар Таке.
И онда колико блокови то хоћеш?
>> Дакле, у овом случају, желимо нешто да може да ускладишти 10 интс то.
И то ће радити независно машине, која је кул.
Колико ће бајтова да заправо ти дам?
Брзо математике.
>> ПУБЛИКА: 40.
СПЕАКЕР 1: 40.
Екацтли.
Дакле, још једна велика ствар.
Поинтер или маллоц могу вратити нулл.
>> Дакле, опет, увек проверите да видите да ли нулл враћен
пре него што покушате да урадите нешто са њим.
Ако покушате и дереференце Ово Поинтер сада,
Управо ће Сегфаулт јер сте отишли ​​и покушали
на додир нулл када не би требало да имате.
Дакле, увек проверите нулл.
Опет, све можете да урадите.
>> Можда ће се вратити нулл.
То ће се вратити нулл ако или си из простора, или из било ког разлога
то налетео неки буг меморије.
Понекад се само враћа нулл.
Дакле, потребно је само да проверим за то.
То је све ово слајд говори.
А онда оно што имамо Овде је позив да се ослободи.
Дакле, на исти начин да, ако отворите датотеку морате затворити датотеку,
Ако вам маллоц меморије, ви морате ослободити ту меморију.
И ви ћете добити да радим стварно кул ствари.
>> И ту је програм који може покренути у видите да ли икада цури меморију.
Али ви не желите да цури меморију.
То је стварно лоше.
Само неред ствари.
>> То је лоше да урадите као програмирање мудри за ефикасност дизајна.
Али то је такође некако Бад рачунара.
Па само фрее ствари када их маллоц.
>> Ви видите овде симетрије.
Супер једноставно.
Само слободни и онда год показивач,
год име показивач је, и то
ће се побринути за то ослободи за вас.
Цоол.
>> Онда имамо ово.
Дакле, ми ћемо само да се проћи кроз овај програм.
И онда ви се уради.
>> Дакле, [неразумљиво] само главни.
Дакле, имамо неку инт * поинтер.
Дакле, имамо показивач који ће држати Интс.
И колико интс иде да одржи?
Само један.
Величина инт.
>> Ми проверите да ли показивач нулл због тога
је, желимо да кажемо не ради ништа.
То је лоше.
Тако да штампамо неку грешку оут оф Меморија, најчешће врате 1,
Као што сте ви навикли.
>> И онда имамо овде, ми дереференце нашем показивача.
То значи да ћемо за складиштење нешто на датој локацији за нас.
Инт * поинтер, или маллоц, враћа адреса где је издвојила ово
Меморија за вас.
Дакле, то је у основи дајући вам као-- ако вас
размислите о гомили кућа у комшилуку
да желите да ставите Ваш намештај у, маллоц
је као у реду, ти да иду у куће три.
И то вам је даје адреса куће три.
>> Тако да сада, ово Показивач продавнице адреса,
складишти адресу ваше куће.
* птр значи, у реду, ја сам у мојој кући.
Цоол.
Морам да цјелину.
>> Дакле, ви питате некога да вам дам намештај сада.
Тако да мало инт.
И то га ставља на показивач где је указујући на.
>> И онда је она Принтс напоље, ушао си где год.
И опет, референца.
Дакле, ово је као да је у ово адреса и видели шта је тамо.
Цоол?
>> И онда наравно да ослободимо наше показивач.
Не заборавите да ослободи показивач.
Не заборавите да проверите нулл.
Не заборавите да ослободи показивач.
Имате две ствари те се из Ово, или да треба имати у виду.
Да.
ПУБЛИКА: [неразумљиво] ствари тако, цхар * с.
Како то да никада ослободити оне?
>> СПЕАКЕР 1: Хм?
>> ПУБЛИКА: Да ли су они попут жица?
Рекли сте жице су као цхар * с, зар не?
Па зашто не бисмо ослободили жице?
>> СПЕАКЕР 1: само вама слободан ако маллоцинг.
ПУБЛИКА: О, ако маллоцинг.
СПЕАКЕР 1: Па маллоц и бесплатно су две ствари
да увек треба да заједно.
Ф Отворите, м близу, две ствари Ви треба да заједно.
У оба тим случајевима, проверите нулл.
Да.
>> ПУБЛИКА: Дакле, слободан је само дозвољавајући нешто друго
да се тамо чува после Овај програм је користи?
>> СПЕАКЕР 1: То је само рекао: Ок, ја сам завршио са овим.
Ви не треба да га задржи око.
У супротном ваш рачунар ће Баш као покушајте да га тамо.
А онда га води могу-- у питањима касније меморијске.
Сте одувек желели да га ослободи, јер то говори рачунар, у реду, ја сам
завршио са том месту меморије.
Можете га добити назад за мене да користе касније.
Цоол?
Да.
>> ПУБЛИКА: Тако смо користили само% д јер који је двоструко враћа,
или зашто је-- [неразумљиво].
>> ПУБЛИКА: Да ли користите% и?
>> СПЕАКЕР 1: Можете да користим%.
Ани ласт минуте питања?
Само напред.
ПУБЛИКА: Имам само једно кратко питање.
Дакле, ПТР променљива, то је-- као, са инт * птр = маллоц,
то је само кажем да је указујући на место у мемори--
СПЕАКЕР 1: Да ли желите [неразумљиво]?
ПУБЛИКА: --тхат је величина од-- не, то је у реду.
Али то је само указује на место у меморија која је као четири бајта.
СПЕАКЕР 1: Добро.
Дакле маллоц величину Инт каже, У реду, ја ћу да идем побегао,
наћи четири бајта меморије за вас.
Када утврди да је четири бајтова меморије је,
ти врати адресу где почиње,
и то је оно што чува у Поинтер, или ПТР.
Добро.
Ви изгледа мање збуњено него већина Људи кад говорим о поинтер,
тако да се осећам прилично добро сада.
>> У реду.
Као и увек, ви треба да имају све стечен своје псет2 оцене сада.
Знам да је било неких Несигуран ствари где се каже, формула није важећа
или нешто.
Ако добијате то, сви Ваши оцене важе на мојој страни.
Тако да могу да те послати Сцреенсхотс ваших разреда.
Само да ми, као да си недостаје све оцене или нешто
не изгледа да има смисла.
Дођи код мене.
>> Ја сам супер поносан на тебе момци већ тако наставимо тако.
И имају добар остатак недеље.
Сигуран сам да ћу видети неке од вас у радног времена.