>> [Музыка, якая іграе]
>> DAVIN: Добра, хлопцы.
Так што гэта агляд у першы віктарыны.
Усе гатовыя да віктарына ў сераду?
Элісан: Woo!
СТУДЕНТ: Woo!
DAVIN: Так.
Элісан: Так!
DAVIN: Гэты хлопец гатовы.
Гэты хлопец, дзве рукі, прыемна.
Так віктарына агляд сёння, гэта будзе быць каля гадзіны-паўтара.
Мы збіраемся перайсці ўсе асноўныя Паняцці, вы павінны ведаць для віктарыны.
Мы збіраемся пайсці на працягу некаторага кадавання па прыклады рук, якія на кожным віктарыны.
І калі ў вас ёсць пытанні, не саромейцеся падняць руку і ўсё
як што.
Ну, лагістыка каля віктарына онлайн.
Такім чынам, мы збіраемся падзяліць людзей на розныя нумары.
Ён заснаваны на іх імя.
Так што калі ў вас ёсць якія-небудзь пытанні аб тым, дзе ісці ці пра тое, што матэрыял, як,
афіцыйнае слова на тым, што адбываецца каб быць на віктарыне, праверыць у Інтэрнэце.
І гэта ўсё ў курсе.
Так што, калі няма пытанняў да Пачнем з таго, што мы збіраемся пачаць.
І вось Элісан.
>> [Пляскае]
>> Элісан: ОК, дзякуй, Роб.
Шануеце гэта.
Дэвин павінен перавярнуўся на гэта.
Гэта не вычарпальны спіс Тэмы, як заўсёды, як Дэвин толькі што сказаў.
Звярніцеся да дакументацыі онлайн аб віктарыне нулявы.
Але гэта даволі much-- гэта на вучэбнай
гэта ўсё, што мы перайшлі да цяперашняга часу.
Усё тут сумленная гульня, а таксама што-небудзь яшчэ
што, магчыма, былі згаданыя ў дакладзе.
>> Мой раздзел, тут, з'яўляецца проста шмат агляду.
Ёсць пара практыкаванняў што вы, хлопцы, маглі б працаваць.
Але па большай частцы, мы сапраўды хачу, каб дабрацца да Дэвин з тых кода
ручнымі практыкаванняў.
>> Таму я збіраюся ляцець праз гэта.
Калі ў вас ёсць якія-небудзь пытанні, спыніць мяне.
Падніміце руку.
Я абяцаю, што я, верагодна, бачыць вас.
Калі не, то проста махнуць яго вакол.
Я буду казаць хутка.
Я спадзяюся, што ўсё ў парадку з гэтым.
>> ОК, спецыяльнае слова, Дэвин, відавочна, забыўся прагортваць гэтыя слайды.
[Смяецца] Ты ў бядзе, чалавек.
Так саветаў для віктарыны нулявы, практыцы кадавання на паперы.
Вы, хлопцы, збіраецеся атрымаць некаторыя практыкаваць с, што ў цяперашні час з Дэвин,
так што вы не будзеце цалкам самастойна.
Я думаю, што мы на самай справе адбываецца праз гэтых двух функцый.
Такім чынам, вы будзеце добра падрыхтаваны ёсць.
>> Азнаёміцца ​​са сваімі праблемнымі набораў.
Там былі пытанні на папярэдніх апытанняў
што будзе прасіць вас, напрыклад, для кадавання да чаго-то вельмі падобнае на Марыё.
Так быўшы добра знаёмы з Ваша праблема ўсталёўвае, а таксама
як пытанні, якія мы просім Вас у пачатку на форме
што вы запаўняеце, будзе служыць вам вельмі добра.
>> У папярэдняга віктарыну пад часовыя абмежаванні.
Гэтыя віктарыны доўгія.
Час ідзе вельмі хутка.
І часта, вы не разумееце, як хутка ён ідзе да вас на самай справе
паставіць сябе ў адпаведнасці з гэтымі абмежаваннямі.
Так што, калі вы можаце проста выразаць, вы ведаеце, 75 хвілін, альбо сёння ўвечары, або заўтра
ўзяць адзін з гэтых віктарынах пад што, вы будзеце ў значна лепшай форме.
>> А таксама, ствараючы свой апорны ліст.
Памятаеце, вы атрымліваеце адзін старонка спераду і ззаду
у якасці спасылкі для вашага віктарыны ў сераду.
Стварэнне, што гэта выдатны спосаб для вывучэння.
Усё, што ў вас узніклі праблемы з вы хочаце ўключыць там.
Усё, што вашы ТФ былі, як, гэта сапраўды важна.
Вы павінны гэта ведаць, з'яўляюцца можа быць, усё ў вас там
калі ў вас няма іх запомніў.
Нават калі вы ведаеце іх сапраўды добра, часам маючы яго на ёсць
гэта проста нейкая камфорту для вас, якія я ведаю, віктарыны выклікаюць стрэс.
Такім чынам, любы камфорт вы атрымаеце можа дапамагчы.
Добра, таксама, выспацца і ядуць і як нармальныя рэчы
што мы кажам вам, для віктарыны.
>> Так, пачынаючы з простага, тыпы дадзеных і памеры.
Як я ўжо сказаў, гэта проста будзе каб быць мне кідаць шмат матэрыялу
тут, што вы павінны ведаць.
Таму ў нас ёсць нашы сімвалы якія адзін байт, Інтс
што чатыры байта, доўга доўга, што восем байт.
У асноўным, гэта проста вы хачу трымаць вялікія цэлыя лікі.
Плыве, якія з'яўляюцца чатыры, падвойваецца, якія восем.
Зноў жа, проста дае вам больш прастору для вашых паплаўкоў.
І затым увядзіце зорку, так што любы паказальнік на 32-бітнай машыне,
які ўсё вы, хлопцы, павінны ведаць, на чатыры байта.
>> Такім чынам, усе рэчы, якія вы павінны ведаю, можа быць, рэчы
Вы хочаце, каб на Ваша спасылка ліст.
ОК, двайковы пераўтварэнні у двайковы, пераўтварэння
у шаснаццатковае, назад і наперад, усе рэчы, якія вы павінны ведаць.
Так з двайковай сістэмы злічэння ў дзесятковы.
Вы, хлопцы, жадаеце, каб узяць хуткі хвіліну і паспрабаваць высветліць, кожны з іх
а затым скажыце мне, што яны?
>> У мяне таксама ёсць цукеркі ў маёй сумцы, так што любы хто адказвае атрымлівае цукеркі, дарэчы.
І ў мяне ёсць многае з яго.
Дазвольце мне ўзяць гэта.
Я збіраюся даць гэта Гейб.
Такім чынам, вы можаце раздаваць цукеркі хто добра і кааператыў.
>> ОК, я ўбачыў руку там у спіну.
>> СТУДЕНТ: Так, першы з іх 42.
>> Элісан: Так, першы 42, правільна.
СТУДЕНТ: [неразборліва].
[Смех]
Элісан: другі, Ёсць яшчэ ў жоўты?
СТУДЕНТ: 110010.
Элісан: Правільна, і гэта Апошні, тут, на дне?
Акрамя таго, так, вы ведаеце, хочаце?
Проста выкінуць цукеркі.
Як наконт цукерак для ўсіх?
>> СТУДЕНТ: [неразборліва], калі мы скончым.
>> Элісан: Цыц.
І тады апошні.
Хто хоча адказаць?
Прама там.
>> СТУДЕНТ: 11100.
>> Элісан: 11100, паглядзіце на гэта.
Віншую, выдатная праца, усё.
ОК, усё накшталт разумею працэс для гэтага?
Вы, ідучы з двайковай сістэмы злічэння ў дзесятковую так я, як правіла, робяць гэта, як выпісваючы
паўнамоцтвы 2.
Таму я кажу, добра, 0 разы 2 у 0, так гэта 0, 1 раз 2 у першы,
2 збіраецца і далей такім чынам.
Хто-небудзь хоча, каб я відавочна Ці прайсці прыкладу двайковы?
Добра, прахалодна.
>> Дзесятковая двайковы вельмі падобны.
Я, як правіла, выпісваюць паўнамоцтвы 2.
Пачніце з таго, які з'яўляецца найвялікшым, але не прайсці дзесятковай
што вы шукаеце.
А потым накшталт працаваць ваш шлях назад дадаўшы рэчы па меры неабходнасці.
>> А затым з таго, што гэта гэтак жа, як звычайнай таго.
Калі вы калі-небудзь выпадак, калі вы знаходзіцеся дадаўшы два 1с, гэта, відавочна, становіцца 2.
2 у двайковай цяпер 1 0, так што вы павінны несці свой 1 у наступнай калонцы.
Прахладны.
>> Hexadecimal, гэта можа быць што-то што крыху менш знаёмыя.
Так як Роб быў проста кажа мне, загадзя, яго трук для гэтага
гэта проста падзяліць яго на чатыры байта кавалкі, ОК?
Біты, прабачце.
Бачыць?
Дзякуючы Роб.
Вось чаму вы тут. [Шумана] ОК, так што мы проста разбіць яго
на чатыры біта кавалкі.
Так з двайковых файлаў у шаснаццатковым, мы глядзім на першы 4,
які, калі ў нас ёсць чатыры 1с ў радок, што лік Ці гэта сімвалізуе?
>> СТУДЕНТ: Ф.
>> Элісан: Так што ў гэтым выпадку, што 11111111 или-- так?
СТУДЕНТ: FF.
Элісан: Выдатна, FF.
Так выдатна, цукеркі для вас.
Зараз, для таго, як шаснаццатковае ў двойкавую сістэму, мы проста думаць пра гэта збольшага ў зваротным кірунку.
Для кожнага нумара або літары гэтага у нас у шаснаццатковым,
проста пераўтварыць яго ў яго чатырох біт [Смяецца], каб яе чатыры бітнай пераўтварэнні.
Так 5, у дадзеным выпадку, што калі 5 мы прадстаўляе яго з чатырма бітамі?
>> СТУДЕНТ: 010?
Мм-хм.
А потым, што на самай справе 10, будзе?
1010.
Такім чынам, мы маем, што, тут.
Так канвертацыі паміж шаснаццатковай і бінарны самай справе не так ужо дрэнна.
Калі вы паглядзіце на яго ў чатыры біта кавалкі, будзе залаты.
Everyone-- так?
>> ROB: Гэта глупства, але я заўсёды памятаю,
, Так як мяркуецца, 10.
І бінарны проста Кастрычнік 10, so--
>> Элісан: А, вось мы ідзем.
>> ROB: Гэй.
>> Элісан: Гэй, цукеркі для Роба.
Існуе не-шакаладны матэрыял у там.
Такім чынам, вы можаце мець некаторыя.
Так ASCII матэматыцы.
Вядзіце сябе.
Так ASCII матэматыцы, як вы, хлопцы, верагодна, добра памятаю
р ўстаноўлена 2 з Visioneer і Цэзар, ты шмат гэта зрабіў.
Памятаеце, персанажы прынцыпова проста лічбы.
Такім чынам, мы можам зрабіць матэматыку з імі, гэтак жа, як мы робім матэматыку з цэлых лікаў.
>> Таму ў нас ёсць трохі простая рэч тут.
У нас ёсць некаторыя ў гэта ініцыялізацыі да 65.
І B роўна значэнню ASCII А плюс 1, сімвал C роўная D мінус 1,
і сімвал D роўны 68.
Такім чынам, мы збіраемся друку усе яны, як мы бачым тут.
І хто можа сказаць мне, што гэта будзе раздрукаваць?
СТУДЕНТ: [неразборліва].
Элісан: Роўна, так Адна справа заўважыць гэта
што мы раздрукоўкі персанажы кожны раз, тут.
Мы пазначае хоць А і В з'яўляюцца Інтс, калі мы абвясцілі іх вышэй.
Мы друку іх як герояў па адсоткаў C і наша Printf заяву,
такім чынам, яны будуць усё друкаваць, як герояў.
І, вядома, значэнне ASCII 65 Воля друкаваць як А. Значэнне ASCII з плюс 1
будзе 66, які будзе з гонарам В. Такім чынам, на самай справе, мы
атрымаць A B C D. Усё там добра?
Ёсць пытанні?
Дзіўны.
>> ОК, сфера.
Так сфера, відавочна, вельмі Важна разумець, тут.
Многія з вас, калі вы ёсць кампіляцыі памылкі,
і гэта кажа, што вы не павінны доступ да якой-небудзь зменнай,
гэта, верагодна, таму, што вы вызначаецца яго ў цыкле
а затым паспрабаваў атрымаць доступ да яго з яго, ці наадварот.
>> Так сфера па сваёй сутнасці, ён проста вызначае, дзе
мы кажам, пераменная існуе, дзе мы можаце яго змяніць, дзе мы можам атрымаць да яго доступ.
Гэта проста нейкая казаў гэта адзіныя месцы, дзе ў вас ёсць доступ
ў гэтай зменнай.
>> Так два абласцей, што мы гаворым пра падчас заняткаў з'яўляюцца глабальныя і лакальныя.
Так глабальныя зменныя мы гаворым пра калі вы вызначаеце іх вышэй асноўнай.
Гэта азначае, што ваш ўвесь Праграма мае доступ да яе,
і ён існуе да таго часу, як праграма працуе, добра?
Мясцовае азначае, што гэта больш абмежаваны вобласцю.
Таму, калі ў вас ёсць пэўныя функцыі як своп, мы заўсёды кажам пра.
Мы заўсёды кажам пра свопе з А і Б. А і У існуюць у гэтай функцыі.
Яны не існуюць нідзе.
>> Як добра, калі ў вас ёсць, калі заявы або для завес.
Кожны раз, калі мы маем, напрыклад, у цыкл у нас ёсць інтэрвал я роўная 0.
У нас ёсць некаторыя ўмовы, і мы абнаўляць яго.
Я існуе толькі ў падцяжкі, што для цыклу.
Пры спробе доступу да яго ў іншым месцы, кампілятар будзе крычаць на вас.
Гэта было б, як, што вы спрабуеце зрабіць?
Гэта не існуе.
Дык вось два розныя тыпы рамкі.
Ці мае гэта сэнс для ўсіх?
>> Так, напрыклад, тут, у гэтым гэта толькі некаторыя простыя праграмы.
Што вы, хлопцы, думаеце гэта адбудзецца ў кожным пункце
што мы стараемся друкаваць?
Так што гэта адзін тут, што адбудзецца?
СТУДЕНТ: Гэта будзе друкаваць тры.
АЛЛИСОН: справа.
Гэта будзе друкаваць тры.
Што тут?
СТУДЕНТ: Гэта не будзе працаваць.
Элісан: Гэта не будзе працаваць.
Ты з вобласці бачнасці, ці не так?
Лакальная пераменная не існуе па-за гэтымі дужак, усё ў парадку?
І тады тое, што тут?
>> СТУДЕНТ: [неразборліва].
>> Элісан: Што?
Роб, ідуць.
>> ROB: Я толькі што сказаў.
Глабальныя зменныя павінны быць Глабальная пераменная падкрэслення.
>> Элісан: Ах, так, прабачце.
Дзякуй, Роб.
Роб, як наш рэзідэнт кампілятара.
Ён проста крычаць на нас, калі мы гэта трэба. [Смяецца] Так,
павінна быць глабальная пераменная падкрэслення.
Так калі выказаць здагадку, што што быў глабальны падкрэслення
Зменная, што адбудзецца тут?
СТУДЕНТ: Гэта будзе працаваць.
АЛЛИСОН: Гэта будзе працаваць.
Так што будзем друкаваць, так што проста вельмі просты прыклад.
ОК, прататыпы.
Так, відавочна, мы сапраўды падкрэсліць для вас, хлопцы
зрабіць функцыі, калі ён сэнс у вашых праграмах.
Але, вядома, калі цябе зрабіць свае ўласныя функцыі,
як правіла, вы будзеце вызначаць іх пасля асноўнай.
І вы будзеце спрабаваць выклікаць іх у асноўны.
І калі вы не карыстаецеся прататып, кампілятар будзе крычаць на вас.
>> Прататып у асноўным проста кажу кампілятара
што ў мяне ёсць гэтая функцыя ніжэй асноўнай.
Я буду называць яго, перш чым я яго вызначэння.
Толькі трымайся.
Я абяцаю, што гэта вызначаецца, і вы будзе мець усё, што вам трэба.
>> Так як мы робім гэта толькі ваша вяртанне тып, імя функцыі, ваш ўваход
Спіс.
Гэта ў асноўным першая лінія Вашай аб'яве функцыі.
Гэта сапраўды ўсё гэта.
Але гэта ўсяго толькі Наогул-то фармат.
>> Такім чынам, у нашым прыкладзе, якія вы, хлопцы, павінны
бачылі ў раздзеле у нейкі момант, у нас ёсць
некаторыя INT куб, займае некаторы Int ўводу.
І ў нас ёсць наша галоўная Функцыя, якая называе куб.
І куб вызначаецца постфактум.
>> Так што, калі ў нас не было ўводу INT куба у верхняй частцы, калі мы патэлефанавалі куб
у галоўным, нашага кампілятара будзе злавацца на нас.
Гэта было б, як, што вы кажаце?
Куб не існуе.
Я не ведаю, што вы просіце.
І я проста хачу, стоп.
>> Але таму, што мы зрабілі наш прататып у верхняй частцы, мы ўжо казалі,
Вы ведаеце, калі вы бачыце куб, не хвалюйцеся пра гэта.
Я абяцаю, што гэта вызначана пазней.
І гэта дам вам рабіць тое, што вы хочаце.
Так што, калі вы калі-небудзь мець функцыю які абвешчаны пасля выкліку яго
ўпершыню, неабходна ёсць гэта прататып на самым версе.
>> Так?
>> ROB: Гэта квадрат, ня кубатуры.
>> Элісан: О, мой Бог.
Я не have-- Гейб, я думаў, Вы былі нашым карэктарам.
ОК, хлопцы, пацярпіце мяне, тут.
Я спадзяюся, што кожны атрымлівае ідэю.
ОК, так што гэта павінна быць быў квадрат, не ў кубе.
Але ідэя застаецца той жа.
Любая функцыя, якая мы называем пасля Тое, павінны мець прататып.
Усё добра з гэтым?
Любыя іншыя памылкі друку?
Добра.
Памылкі друку тут, перш чым пачаць, Роб?
[Смяецца] Такім чынам, структур.
У асноўным, структуры дазваляюць Вам стварыць свой уласны тып дадзеных.
Так як міжнар або гольца або Паплавок, гэта проста яшчэ адзін тып.
Мне падабаецца думаць пра яго, як, як, стварыць свой уласны тып дадзеных.
Так ён дазваляе гэта зрабіць.
І ён трымае розныя тыпы дадзеных.
>> Так што, калі вы памятаеце, у масіве, мы можа толькі трымаць рэчы падобнага тыпу.
Структуры дазваляюць нам трымаць кратнае рэчы з розных тыпаў.
Такім чынам, у гэтым выпадку тут мы ёсць-структуру пад назвай Student,
названыя тут у ніжняй часткі.
І ў нас ёсць некаторыя Int ідэнтыфікатар і некаторыя радок імя.
Так што гэта проста яшчэ адзін тып дадзеных.
Цяпер у нас ёсць тып дадзеных пад назвай Student.
>> Так што мы можам думаць аб гэта як яшчэ адзін тып дадзеных,
мы можам абвясціць зменныя як мы і любы іншы.
Такім чынам, замест таго, каб проста маючы, як, INT студэнт, у нас проста ёсць студэнт,
студэнт 1.
О, глядзіце.
Гэта Роб.
Дык вось мы аб'яўленні структуры або пераменная
называецца студэнт 1 тыпу студэнта.
Так што гэта будзе мець ідэнтыфікатар і імя, звязанае з ім.
>> І тое, як мы да іх доступ элементы ўнутры нашай структуры
З дапамогай аператара кропка, тут.
Такім чынам, у дадзеным выпадку, мы заявіў некаторы студэнт 1.
Мы прызначаны ідэнтыфікатар, каб быць 1.
І мы прысвоілі імя будзе Роб.
ОК, усё добра з гэтым?
Выкарыстоўвайце гэта проста like-- так?
>> СТУДЕНТ: Так, typedef-- калі мы павінны выкарыстоўваць ЬурейеЕ?
>> Элісан: Так ЬурейеЕ проста кажа that-- Роб, ты
можа выправіць мяне на гэта, калі я wrong-- але ЬурейеЕ проста на самай справе аб'яўленні
гэта як тыпу, якія можна выкарыстоўваць, ці не так?
>> ROB: Так, гэта ў асноўным, так што гэта проста стварэнне
псеўданім або мянушка тыпу.
Такім чынам, вы можаце ўвесці, што [неразборліва].
Так [неразборліва] існуе, і зараз мы проста павінны
[Неразборліва] сродкі роўна тое ж самае.
І вось, мы набралі, я думаю, некаторыя структура тыпу 2 [неразборліва].
Так што гэта проста псеўданім Для дадзенага тыпу.
>> СТУДЕНТ: String [неразборліва] бібліятэка набралася да як паўкокс зоркі.
>> Элісан: Для нашых мэтаў тут, калі вы абвяшчэнні-структуру,
проста зрабіць ЬурейеЕ-структуру.
Такім чынам, загадзя, гэта проста нармальны пераменная тут.
Мы да яго доступ з кропкі.
калі ў нас ёсць паказальнік на структура, мы можам на самай справе
выкарыстоўваць стралу, якая даволі халаднавата.
>> Такім чынам, у дадзеным выпадку, у нас ёсць паказальнік на студэнт 1, што мае тып студэнта.
Памятаеце, з вашай Будаўніцтва паказальнік,
Вы хочаце што б ні увядзіце паказальнік паказвае на быць у пачатку.
Такім чынам, мы маем некаторую студэнта 1, тут.
І з гэтага студэнта 1 зараз завостраны,
мы можам на самай справе ісці студэнцкі імя 1 стрэлкай замест кропкі, таму што гэта паказальнік,
і прызначыць Роба.
І зараз, калі мы хочам, каб змяніць Роб Дэвин,
гэта проста паказваючы вам, Іншы спосаб зрабіць гэта.
>> Такім чынам, замест таго, каб выкарыстоўваць стрэлку, вы можа also-- я скончу гэта, а затым
прыняць, што question-- вы маглі Таксама зрабіць апорную студэнт 1.
Гэта кажа, як перайсці да усё, што на студэнта 1,
будзе наш студэнт структура.
Доступ яе з кропкай і элементам што вы хочаце, а затым перадаць яго.
Было пытанне.
СТУДЕНТ: Так, так як жа ў вас ёсць выкарыстоўваць [неразборліва], калі ты
робіць студэнцкую зорку без [Неразборліва] студэнт?
Элісан: Таму што гэта стварае паказальнік.
ROB: Мы збіраемся казаць пра гэта.
Элісан: Мы збіраемся казаць аб тым, што ў канцы агляду.
Так што проста ўтрымаць гэтую думку.
Калі ён па-ранейшаму турбуе вас у канец, прыйшоў пагаварыць з адным з нас.
>> Такім чынам, гэтыя робяць роўна тое ж самае.
Мы проста паказваю вам два розныя спосабы, каб зрабіць гэта.
Студэнт 1 зараз паказальнік, так Вы можаце атрымаць доступ да імя элемента
ў структуры са стрэлкай.
Ці вы можаце разнаймення паказальніка, і звяртацца да яго, як звычайна.
Ці значыць гэта, мае сэнс кожнаму?
Калі цэлыя паказальнік рэчы трохі заблытанай, Гейб будзе казаць пра тое, што,
і тады, магчыма, гэта будзе мець больш сэнсу.
Так?
>> СТУДЕНТ: Так, так як гэта гэта адрозніваецца ад?
Элісан: папярэдні?
Так студэнт 1 у гэтым справа не паказальнік.
Гэта проста ваша бягучая структура.
>> СТУДЕНТ: ОК.
>> Элісан: У той час як гэты з'яўляецца паказальнікам на структуру.
>> СТУДЕНТ: ОК, але робіць гэта выгляд ў канчатковым выніку працуе адзін і той жа [неразборліва].
>> Элісан: Ён эфектыўна працуе так жа.
Ваш сінтаксіс проста розныя.
СТУДЕНТ: ОК.
>> Элісан: Так, яны фактычна тое ж самае.
Гэта проста ў залежнасці ад кантэксту, Вы можаце адзін над іншым.
Так?
>> СТУДЕНТ: Калі вы робіце спасылкі на 1--
Элісан: Мм-хм?
СТУДЕНТ: Чаму вас ёсць дужкі?
Элісан: Таму што студэнт 1 з'яўляецца паказальнікам.
Такім чынам, вы павінны пераканацца, што вы проста разнаймення паказальніка.
>> СТУДЕНТ: ОК.
>> Элісан: Так што ў гэтым выпадку тут, дужкі вакол яго
азначае, што вы разнаймення студэнт 1.
Такім чынам, вы будзеце дзе студэнт 1 балаў, што ваша структура.
Так што цяпер вы можаце думаць, пра яго, як гэтай структуры,
так што мы можам выкарыстоўваць наш нармальную працу кропка.
Яшчэ пытанні?
Прахладны, дзіўным.
>> Так апошняя рэч, я думаю, мой апошні слайд, Ву!
Такім чынам, з якая плавае кропкай недакладнасць.
Мы казалі коратка аб гэта на лекцыі.
У асноўным, мы маем бясконца шмат рэчыўных лікаў.
І калі які-небудзь з вас, хлопцы, люблю матэматыку, ёсць
ўсякія класныя рэчы з намі.
>> Але існуе бясконца многія сапраўдныя лікі.
Але яны толькі канчатковае шмат бітаў, якія ў нас ёсць.
Такім чынам, вы заўсёды будзеце ёсць недакладнасць, гэта ўсё.
І вось гэта проста нейкая як-то вы павінны ведаць.
Гэта як мы можам папрасіць вас чаму з якая плавае кропкай недакладнасць існуюць?
Так што тое, што вы павінны ведаць.
І з гэтым, я ператвараюся гэта да паказальнікаў.
>> Мяккія: Прывітанне, хлопцы.
Мяккія Мяне клічуць.
Я збіраюся пагаварыць пра паказальніках.
Так, так паказальнікі на самай справе мая любімая частка ў гэтым працэсе.
Так што проста зрабіць ясна, што Элісан быў гаворым тут, так па прычыне
why-- той толькі розніцай тут, Вялікая розніца быў шлях
мы заяўляем рэчы.
Так студэнт зорка азначае гэта з'яўляецца паказальнікам на студэнта.
У той час як на слайдзе да, студэнт Фактычная структура, як фактычны студэнта,
які змяшчае любы з гэтых рэчаў.
>> І прычына, чаму мы хачу to-- так, Дэвин?
>> DAVIN: Што гэта значыць стрэлка?
>> Мяккія: Сродкі стрэлкамі дакладна так жа, як гэта.
Такім чынам, вы сапраўды не трэба стрэлку.
Маўляў, калі вы толькі праграма у C, вы можаце проста выкарыстоўваць гэта.
На жаль, я не тое, што гэта такое.
Вы можаце проста выкарыстоўваць гэты сінтаксіс.
>> Але некаторыя людзі, калі яны распрацоўвалі C,
яны лічылі, што людзі выкарыстоўваць гэтую сінтаксіс столькі,
што яны будуць падабаецца толькі прыдумаць са структурай сінтаксісу для яго.
І гэта адбылося ў Форма гэтай стрэлкі.
І гэта вельмі прыемна, таму што яна сімвалізуе нешта
як мы на самай справе наступнае гэтая стрэлка, гэта паказальнік,
да нейкага месца ў памяці.
І калі мы будзем там, мы хочам, каб глядзець на імя гэтага студэнта,
калі гэта мае сэнс.
Добра?
>> Так што гэта сапраўды гэтак жа.
Гэта роўна тое ж самае, як гэта.
Яны кампілююцца сапраўды гэтак жа, ОК?
І прычына тут, чаму мы Malloc -тое, адбываецца таму, што ў дадзеным выпадку,
наша пераменная на самай справе проста пераменная паказальнік.
Так у нас ёсць толькі некаторы прастору ў памяці, што трымае паказальнік.
Мы на самай справе не маюць ніякага месца што трымае рэальную структуры.
>> Такім чынам, гэта павінна быць зроблена ў два этапы.
Мы павінны стварыць Памяць паставіць структуры ў.
І мы павінны стварыць Памяць паставіць паказальнік ст.
Так яны ў асноўным два розныя зменныя, тут.
Адзін з іх мае тып студэнта, акрамя яго на самай справе не мае імя.
А другі з'яўляецца тыпу студэнцкай зоркі.
А потым студэнцкія 1 кропак там, калі гэта сэнс.
Добра?
>> Так прычын, чаму мы выкарыстоўваем Ўказальнікі ў тым, што ўсе
ў кампутары, кожная пераменная ў кампутары ёсць дзве рэчы.
Гэта мае сваё значэнне.
І гэта мае свой адрас.
І гэта добры спосаб асэнсоўваць гэта ёсць
многія праблемы, калі вы паспрабуйце выкарыстоўваць функцыі.
І мы збіраемся, каб паспрабаваць шукаць у адным з тых.
А менавіта, ён збіраецца думаць аб памяці як скрынкі.
>> Вы заўсёды думалі аб зменных калі вы кажаце, па роўная 5.
Вы думаеце пра здачы 5 у скрынку.
Так што, калі вы хочаце перадаць што інтэрвал у функцыю?
Вы проста pass-- я не знаю-- х у функцыю.
Але тое, што адбываецца, Звычайна ў якасці чалавека, вы
было б думаць, што-тое, што я перадаючы скрынку з чалавекам.
І гэта на самай справе не адбыцца ў кампутарах.
Што адбываецца, з'яўляецца капіяванні значэнне з скрынкі ў скрынку чалавека.
>> Так што я спрабую сказаць, што калі ў вас ёсць function-- sorry-- тут,
калі ў нас ёсць функцыя, як у пяці уверх значыць, калі вы спрабуеце перадаць зменную,
гэта проста будзе капіяваць.
Калі ініцыялізацыі NX роўны 3, гэта будзе скапіяваць гэта значэнне да зменнай
там.
ОК, і гэта накшталт той прычыне, Таму мы хочам, каб выкарыстоўваць паказальнікі.
Таму што замест таго, даючы толькі значэнне,
замест проста праходзіў толькі значэнне ў функцыю,
мы хочам перадаць па спасылцы.
Тое, што мы называем праход па спасылцы добры даць скрынку з функцыяй,
так што функцыя можа таксама змяніць значэння ў гэтым полі.
>> ОК, так што проста некаторыя асноўныя паказальнік матэрыял для стварэння паказальнікаў,
Вы проста аб'явіць яго тып, і Вы пасадзіць зорку адразу пасля яго.
І толькі тып тое, што вы паказваючы на.
Так што, калі гэта інтэрвал зорка, Вы паказваеце на міжнар.
Калі гэта знак зоркі, Вы паказваеце на графік.
І калі гэта студэнт зорка, Вы паказваеце на студэнта.
Добра?
>> І яны доўга усе 4 байта.
Таму што гэтай зменнай гэта не на самай справе
трэба правесці сімвал, INT, або студэнт.
Гэта неабходна толькі правесці адрас.
Вось чаму яны ўсе 4 байта даўжынёй у нармальным 32-бітнай машыне.
Добра?
Дык вось, х з'яўляецца зменнай, якая паказвае да міжнар. у паказвае на гольца. Z пункту
з паплаўком.
Тут Ёсць пытанні?
Прахладны.
І ёсць два розныя сімвалы, якія яны маюць
каб мець на ўвазе пры прыходзіць да паказальніка.
Так спасылкі і разнаймення з'яўляюцца вялікія.
Так Ампэрсанд з Імя зменнай дае?
СТУДЕНТ: Адрас.
Мяккія: Адрас.
Так што, калі вы аб'яўляеце Int А роўны 5, то Ампэрсанд
з збіраецца даць вам адрас.
І вы можаце паспрабаваць друкаваць што і паглядзець,
які адрас у памяці пераменная мае.
А потым dereferencing-- так што было спасылацца,
атрыманне address-- разнаймення з'яўляецца поўнай супрацьлегласцю.
ОК, як раз з'яўляецца насупраць дывізіі,
зорка з'яўляецца супрацьлегласцю Ампэрсанд.
Так разнаймення сродкі ідуць туды.
Так што, калі вы даеце star-- I ня знаю-- 50, гэта
буду спрабаваць ісці па адрасе № 50 ўнутры вашага кампутара.
Добра, а чаму мы не бачым што яны з'яўляюцца супрацьлегласцямі?
Таму што тое, што адбываецца, калі вы робіце нешта накшталт зоркі Ампэрсанд?
Ну, Ампэрсанд дае адрас зменнай, адрас.
Але зорка азначае пайсці туды.
>> Што здарыцца, калі вас перайсці на адрас?
Вы проста дабрацца да, ці не так?
Так адбываецца па адрасе гэта тое ж самае, як.
Вось чаму яны, як правіла, называюць same-- гэта
і гэта называюць як супрацьлеглыя аператары.
Добра?
Так выдатна.
>> Пад вечкам, напрыклад, калі мы заяўляем INT х роўная 5,
у нас ёсць пераменная.
І памятайце, што я сказаў, што кожны переменная-- і гэта добра
захаваць у mind-- ён мае два розныя рэчы, звязаныя з.
Ён мае звярнуўся і значэнне.
Добра?
>> Такім чынам, значэнне ў гэтым выпадку роўна 5.
І адрас is-- скажам, я рабіць што-то up-- гэта 0x04.
І адзіная прычына, чаму мы, як правіла, ўяўляюць адрасы ў шаснаццатковым
з'яўляецца адным, таму што гэта як на карысць.
Добра спалучаецца з двайковай сістэме.
Гэта лёгка канвертаваць і з двайковага файла.
І гэта не становіцца занадта вялікі, калі ў вас ёсць вельмі вялікая колькасць.
Такім чынам, мы хацелі б выкарыстоўваць шаснаццатковы у адрасах друку.
Але я мог бы прадстаўляць Гэты выглядзе цэлага ліку.
Гэта выдатна.
>> І таму ён мае адрас 4 і 5 значэнне.
І тады я сказаў INT зорка паказальнік.
Так што гэта іншы тып, апавяшчэнне.
Int зорка паказальнік роўны адрас х.
Так што будзе значэнне PTR?
Гэта збіраецца быць адрас х, тут.
ОК, так што значэнне будзе быць такім жа, як адрас.
Гэта прызначэнне працаваць, што я раблю.
А потым PTR будзе мець яго ўласны адрас, які аказваецца,
у гэтым выпадку, 8, ОК?
>> А потым я ствараю новы цэлае копію.
І я кажу INT копія роўна ідуць туды.
Так што да таго, што PTR паказвае на.
Ну, што гэта PTR ёсць?
Ptr мае 0x04.
Што адбудзецца, калі я спрабую пайсці туды?
Я знайду хлопца, які мае Адрас х і які мае адрас 4.
І хто мае рашэння чатырох з'яўляецца х.
Ці мае гэта сэнс?
Так?
>> СТУДЕНТ: У гэтым выпадку, з'яўляецца паказальнік ў стэку?
>> Binky: У гэтым выпадку, it's-- добры пытанне.
Я сапраўды не думаю пра гэта пры складанні гэтых адрасоў.
Але калі гэта, як усе гэта лакальныя зменныя,
то х будзе жыць in-- ўсе будзе жыць у стэку.
Так што ўсё ідзе быць накіраваны ў стэк.
Вы можаце атрымаць толькі ў кучы калі гэта Вы пачынаеце выкарыстоўваць Таноса, ці не так?
>> Так што, калі вы памятаеце стэк кожны раз Вы выклікаеце функцыю ў вашай праграме,
як, напрыклад, асноўная, або любое Іншая функцыя, як Printf.
Усе лакальныя зменныя з'яўляюцца збіраецца атрымаць пакласці ў кадры стэка.
І яны збіраюцца, каб атрымаць як складаецца ў чарку.
Гэта тое, што называецца стэк.
І ўсе гэтыя лакальныя зменныя збіраюцца быць там.
І heap-- і мы збіраемся каб больш аб гэтым later-- казаць
Куча, дзе ўсё дынамічна размяркоўваецца жыццё памяці.
Прахладны?
>> Мы ідзем у гэты слайд.
Так?
>> СТУДЕНТ: Чаму не INT копія вяртання 0x04?
>> Мяккія: Чаму не INT копія вяртання 0x04?
>> СТУДЕНТ: Чаму не ў тым, што [неразборліва]?
>> Мяккія: Таму што гэта значэнне PTR?
>> СТУДЕНТ: 0x04.
>> Мяккія: 0x04.
Што адбудзецца, калі вы ідзяце ў 0x04?
Што вы атрымліваеце?
>> СТУДЕНТ: О, добра.
Мяккія: Вы бачыце?
СТУДЕНТ: Так.
Мяккія: Такім чынам, вы атрымліваеце 5.
Так копія будзе мець 5, калі гэта мае сэнс.
Так?
>> СТУДЕНТ: Не маглі б мы атрымалі 5 на тэкставым полі [неразборліва]
калі пакласці INT скапіяваць [неразборліва].
>> Мяккія: Int-- мы б, так.
Гэта было б зроблена ў значнай ступені тое ж самае.
Але гэты шлях, мы можам перайсці звярнуцца да функцый.
І гэта выдатна, што мы збіраемся зрабіць прама цяпер.
>> Таму такога роду практыкаванні заўсёды прыдумляе on-- вельмі звычайна прыходзіць на віктарынах.
Так што гэта сапраўды добра, каб паспрабаваць зрабіць такую ​​рэч самастойна.
Таму паспрабуйце, каб адсочваць, што адрас гэта і хачу значэння зменных
з'яўляюцца ў кожнай кропцы.
Так што гэта дакладна тое, што мы збіраемся зрабіць.
Тут мы маем крокі, адзін, два, тры, чатыры, пяць.
Адзін, два, тры, чатыры, пяць.
І мы збіраемся адсочваць ад значэнняў х і.
>> Так што гэта робіць, калі гэта памылка ў праграмным кодзе, мы спрабуем зрабіць да пяці.
Такім чынам, мы спрабуем атрымаць у Пераменная і зменіце яго значэнне на 5.
І памятайце маю аналогію маючы скрынка і уручаючы скрынку з кім-то?
Так галоўны мае гэтую опцыю пад назвай х.
І ён ўтрымлівае значэнне 3.
І я спрабую перадаць у гэтым полі, каб да пяці.
>> І я хачу, каб пяць змяніць значэнне гэтай рамкі да 5.
А потым я проста надрукаваць значэнне х.
Гэта тое, што мой function-- гэта тое, што я спрабую зрабіць.
Я проста спрабую абнавіць значэнне х да 5.
Зразумела, што функцыя робіць?
>> Такім чынам, што ж будзе значэння х і прама тут,
першая лінія, прама перад першым line-- я б say-- праграмы?
>> СТУДЕНТ: Напэўна смецця.
>> Мяккія: Проста смецце рэчы.
Так што я проста пакласці N / A. Так мы на самай справе не ведаю.
Маўляў, нават не ўсё ж існуюць, таму што мы не называецца да пяці.
Int не абвешчаная.
І х збіраецца існаваць тут, але ў нас ёсць не вельмі
прызначанае любы значэнне да яго, так добра?
>> І потым, што збіраюцца быць Значэння х і ў нумар два?
>> СТУДЕНТ: [неразборліва].
>> Мяккія: Так х будзе 3.
Гэта проста, таму што мы прысвойваем 3 да яго.
І яшчэ не існуе таму што проста жыве ў пяці.
Так што я буду мець 3 і нічога.
ці як смецце, тое, што, на самай справе не вызначаны.
І зараз, гэта важны кірунак.
Тут мы збіраемся на самай справе назваць да пяці.
І памятайце, што я сказаў.
Мы ніколі не праходзяць у скрынцы.
Мы проста скапіяваць значэнне скрынка ў іншую скрынку.
Вось і ўсе кампутары, капіяваць рэчы з аднаго месца ў іншае.
>> Так да пяці, што яна робіць гэта ён капіюе значэнне х ст.
Так што будзе тут?
Значэння х і.
3 і 3, мы проста скапіяваць гэта больш з х ст.
Прахладны.
>> Цяпер мы тут.
І зараз мы збіраемся абнавіць роўная 5.
Што здарыцца ў чацвёртай радку?
>> СТУДЕНТ: [неразборліва].
>> Мяккія: абнаўляецца, але х не абнаўляецца.
Паколькі х да гэтага часу жыве ў асноўным гэта цалкам адрозніваецца блок памяці.
Гэта іншая пераменная.
яшчэ адна пераменная.
Яны, аказваецца, ёсць тое ж значэнне, таму што I
капіююцца значэння х к.
Але цяпер, калі я раблю роўная 5, яго на самай справе не ўплывае х у любым выпадку.
Гэта складаней частку.
Ці мае сэнс для ўсіх?
Так?
СТУДЕНТ: І яшчэ адно пытанне, у вас ёсць 3.
Чаму already-- ой, не, гэта 3.
На жаль, не бярыце ў галаву.
Я чытаў 5.
>> Мяккія: Так, 3, 3.
>> СТУДЕНТ: [неразборліва], так.
Мяккія: А потым мы прызначаем 5 да , Але на самой справе не змяніць х.
Добра?
СТУДЕНТ: Так.
Мяккія: Да?
Ці можаце вы растлумачыць яшчэ раз, як капіюецца [неразборліва]?
>> Мяккія: ОК, так што, калі вы тэлефануеце ў пяці х, так што гэта радкі кода тут.
ў пяці з х, што х?
х знаходзіцца ўсяго ў 3 на дадзены момант, ці не так?
Такім чынам, вы маглі б проста думаць аб здачы 3 у тут і забываючы аб х.
Проста змесціце 3 тут.
Маўляў, мы збіраемся капіяваць значэнне х у Int А, гэта там.
Добра?
>> Такім чынам, значэнне х роўна 3.
Мы збіраемся капіяваць 3 к.
І ўсё гэта іншы блок памяці, гэта іншае зменнай
называецца прыйдзецца 3, а.
Ці мае гэта сэнс?
Так?
>> СТУДЕНТ: Калі вы даяце да пяці, як ёсць яна як цэлае х, а не,
б, што ўсё выправіць?
>> Мяккія: Калі гэта integer-- няма, што б не выправіць усе.
Так што гэта вельмі добры пытанне.
Гэта сапраўды не мае значэння, што Вы выклікаеце гэтыя зменныя.
Зноў жа, гэта будзе праблемай з вобласці бачнасці, таму што яны не тое ж самае х.
Яны цалкам розныя месцы ў памяці.
СТУДЕНТ: [неразборліва].
Мяккія: Дык гэта на самай справе не Усё роўна, што вы іх называеце.
Гэта не выправіць становішча, ОК?
Яшчэ пытанні?
Так?
>> СТУДЕНТ: Як гэта назад нумар пяць [неразборліва]?
Мяккія: ОК, мы не зрабілі, што яшчэ.
Пойдзем у нумар пяць, затым.
>> СТУДЕНТ: [неразборліва]?
>> Мяккія: Што?
>> СТУДЕНТ: У вас ёсць вяртанне наогул?
Мяккія: Мы не маем вяртанне ня галоўная.
Але галоўныя вяртае 0 аўтаматычна калі вы нічога не вярнуць.
Так?
>> СТУДЕНТ: Не маглі б вы зрабіць main-- або не маглі б вы зрабіць да пяці вяртаць?
>> Мяккія: Мы маглі б да пяці вярнуцца, так.
Але тады мы павінны былі б прызначыць х роўная вяртаецца значэння да пяці,
які быў бы трохі іншая праграма.
Яна будзе працаваць.
Але тое, што мы хочам зрабіць, гэта тое, што з'яўляецца называецца нешта змяніць на месцы.
Таму мы хочам, каб на самой справе змяніць гэтую скрынку і не турбавацца
аб тым, каб вярнуцца значэння ці што-небудзь.
Добра?
>> Гэта так жа, як функцыі падпампоўкі Дэвід паказаў у лекцыі, акрамя мяне
справу толькі з адной зменнай.
І ён выкарыстаў два, так інтэрвал і б і то часовая пераменная і яшчэ шмат чаго.
Добра?
Так што ў апошняй радку?
Пасля пяці дэкларацый, гэта проста збіраецца сыходзіць.
У нас не будзе больш, і толькі х-ранейшаму будзе жыць.
>> І што вы думаеце? х не мяняе свайго значэння,
у рэшце рэшт, таму што мы толькі змяніўшы значэнне.
Вось чаму х было 3 ва ўсім.
Добра?
Добра.
Так што гэта праграма не дамагчыся таго, што мы хацелі.
Зараз давайце выправім гэта.
>> І праграма выпраўленне з дапамогай паказальнікаў.
Тое, што мы робім, мы павінны тры Лініі, якія адрозніваюцца.
Першыя ў мы не праходзячы х.
Мы перадаючы адрас х.
Такім чынам, замест капіявання больш значэнне з скрынкі,
Я ўсё яшчэ збіраюся капіяваць нешта.
Але я капіяванні над адрас скрынкі.
>> Так што, калі я перадаць адрас скрынка з пяці, затым да пяці
змогуць знайсці, што ў Памяць і зменіце яго значэнне.
>> Так і там, у мяне ёсць што ня INT больш.
з'яўляецца інтэрвал зорка.
Гэта паказальнік на цэлае.
А потым, таму што я перадаю звярнуцца сюды, а потым, што я раблю
ня роўны 5, таму праводзіць адрас.
Так што я хачу зрабіць, гэта пайсці туды і абнавіць змесціва гэтага адрасу
з 5.
>> Такім чынам, давайце пройдзем усе лініі адзін за адным.
Так што, калі я пачынаю тут, я да гэтага часу N / A, N / A, N / A
за ўсё ў першы лінія, таму што ў мяне не вельмі
заявіў матэрыял яшчэ.
А потым другой лініі, у мяне ёсць х роўны 3.
INT зорка не існуе, Тое ж самае, як і раней.
>> Цяпер пачынаецца самае цікавае.
Так што я збіраюся прайсці.
І давайце выкажам здагадку, што па адрасе х 12 у шаснаццатковым выглядзе.
Давайце проста выкажам здагадку гэта.
Я зрабіў гэта.
Так, што я праходзячы тут да пяці.
Я перадаю 12.
>> Так што значэнне не маюць?
>> СТУДЕНТ: [неразборліва].
>> Мяккія: Выбачайце?
>> СТУДЕНТ: [неразборліва].
Мяккія: Так, як, да давайце Выкажам здагадку, што мы тут, цяпер.
Я пытаюся.
>> СТУДЕНТ: [неразборліва].
>> Мяккія: Была ўзбуджаная.
>> СТУДЕНТ: [неразборліва].
Мяккія: Таму што мы прайшлі што-то функцыі.
Так?
>> СТУДЕНТ: Адрас х.
Мяккія: Гэта збіраецца ёсць адрас х.
А таксама адрас х 12, добра.
Так х будзе 3, таму што мы на самай справе не змянілася х яшчэ.
А потым будзе 0x12, так адрас х, таму што гэта
тое, што мы прайшлі, каб да пяці.
>> І тады тое, што адбываецца калі мы спрабуем пайсці туды?
Што мы збіраемся знайсці?
Так што, калі вы паспрабуеце раздрукаваць зорка, мы збіраемся прытрымлівацца гэты адрас
і атрымаць значэнне ўнутры.
І гэта значэнне проста тое ж значэнне, што х
мае, таму што гэта адрас х, якія будуць 3.
Няўжо мы добра?
>> ОК, а затым у цяперашні час, мы на самай справе ісці туды.
І мы абнаўляем ўсё у гэтым адрасе 12.
Мы робім гэта 5.
Так што цяпер абедзве х і зорка знаходзяцца 5.
>> Чаму гэта?
Паколькі адрас х 12.
І ёсць таксама 12 у якасці свайго значэння.
Так што, калі мы будзем прытрымлівацца 12, мы проста хачу, каб знайсці х.
Так, што мы робім з зорка адбудзецца
х, таму што змяшчае адрас х.
Добра?
>> І гэта, як у сутнасць выпраўлення.
Так што цяпер мы можам, ад да пяці, на самай справе
доступ да памяці, што жылі ў асноўны.
Так гэтая памяць не жыве ў з пяць, як раней, гэта адрас 12.
І мы змаглі пайсці туды і зменіце яго значэнне на 5.
>> А потым, калі мы вернемся, мы забываемся пра.
Мы забываемся пра зорку.
І х яшчэ пяць.
Так што, калі вы хочаце, каб рэалізаваць функцыю падпампоўкі,
Вы б проста зрабіць тую ж самую рэч, акрамя вам трэба INT зоркі тут,
і гэтак далей і да таго падобнае.
Добра?
Няўжо мы добра?
Прахладны.
>> Так паказальнік арыфметыка.
Гэта крыху складана тэма.
Вось і атрымліваецца, што Паказальнікі усяго ліку.
Вы можаце думаць пра іх як цэлыя лікі.
Таму што ў памяці, у вас ёсць як Памяць адрас нуль, адзін, два, тры,
чатыры, пяць.
Такім чынам, мы можам падвесці адрасы памяці.
>> І гэта, як правіла, тое, што вы робіце, калі Вы знаходзіцеся ў і масіва, напрыклад.
Масіў проста падабаецца сумежнымі блок памяці, з вялікай колькасці знакаў,
напрыклад, шмат цэлых лікаў.
Так што калі вы хочаце пайсці ў Другі інтэрвал або да трэцяга міжнар,
Вы можаце проста падвесці сёе-тое, каб першы адрас, і вы збіраецеся патрапіць.
Так што гэта сапраўды карысна для гэтага.
>> І справа мець на ўвазе, аднак, з'яўляецца
што гэта не проста падабаецца нармальная арыфметыка ў тым сэнсе,
што калі вы маеце справу з, скажам, INT зорка, і вы дадаеце да яго 1,
то вы не збіраецеся дадаць 1 па адрасе,
Вы збіраецеся дадаць 4 па адрасе.
Паколькі інтэрвал складае 4 байта.
>> Так што гэта, як хадзіць на масіве.
Калі ў нас ёсць масіў вялікай колькасцю цэлых лікаў і Затым мы спрабуем пайсці на другі,
гэта ў асноўным проста падводзячы адрас першага адзін плюс адзін.
Але гэта не будзе be-- проста скажам што адрас першага з'яўляецца 4.
Тут, у гэтым выпадку.
І калі сумаваць, так гэта гэта тое, што адбываецца.
У нас ёсць Int.
Int х роўная 5.
Х мае значэнне 5.
І мы ініцыялізаваць гэты паказальнік, INT у INT зорка ў роўная адрас х.
>> Давайце выкажам здагадку, адрас х 4.
Што здарыцца Цяпер, калі я сума дадаць 1 да у?
Гэта адбываецца на самай справе сума 4, а не проста 1.
Таму я дадаць 1, але гэта на самай справе дададзена 4, таму што кампутара смарт.
Дык гэта будзе на самой справе дадаць па I раз Памер тыпу паказальніка.
Добра?
>> Такім чынам, калі б ён быў сімвал, напрыклад, калі б гэта было сімвал зорка у,
і калі мы дадалі 1, то гэта будзе быць 5, таму што сімвал з'яўляецца даўжынёй 1 байт.
Добра?
>> І, нарэшце, мы дабраліся да паказальнікі і масівы.
Атрымліваецца, што кожны раз, калі Вы маеце справу з масівам,
вы на самой справе маем справу з паказальнікам.
Вельмі добры канцэптуальны прычына гэта што масівы вельмі вялікія.
Так што памятаеце, што я сказаў, што кожны раз, калі вы праходзіце рэчы вакол,
скапіяваць усё змесціва.
Так што калі ў вас ёсць масіў што на самой справе, сапраўды вялікі,
Вы сапраўды не хочаце скапіяваць ўсе кожны раз
Вы перадаваць яго ў іншую Функцыя, таму што гэта проста
велізарная колькасць працы.
Так што вам зрабіць, гэта проста міма адрас першага байта.
І тое функцыя будзе мець доступ для ўсіх элементаў у гэтым масіве.
Такім чынам, вы прайшлі масіў, яго адрас, так што адрас першага байта.
>> Так што, калі мы заяўляем INT Масіў 3, тут, мы ведаем,
як атрымаць доступ да першага элементу выкарыстоўваючы абазначэння кранштэйна.
Калі вы памятаеце, кранштэйн абазначэння, масіў кранштэйны 0 роўны 1.
Ну, гэта было б дакладна ж, як толькі туды і пакласці 1.
ОК, гэта роўна тое ж самае.
Так пазначэннях кранштэйнам ў тут будзе такім жа, як гэтай лініі.
>> І што вы думаеце абазначэння кранштэйна для масіва кранштэйна 1 будзе?
Гэта як раз і будзе тое ж самае, гэта.
Так што дадайце адзін для масіва.
Перасоўванне адзін ўздоўж у памяці.
Ідзіце туды, і пакласці 2.
Добра?
І гэтая лінія тое ж самае.
Мы хочам, каб пайсці ў трэці скрынка, так масіў плюс 2.
Ідзіце туды, і пакласці 3.
Такім чынам, у памяці, што адбудзецца гэта мы
будзе мець 1, 2 і 3, як тры элемента гэтага масіва.
>> Мы маглі б зрабіць гэта з дапамогай наш знаёмы абазначэння кранштэйна.
Я проста хачу, каб вы, хлопцы, ведаеце, што яны адно і тое ж.
ОК, пытанні па гэтай нагоды?
Добры.
Зараз, я збіраюся здаць гэта на Ханну,
>> Ханна: Ура, Йі-Хо.
>> Мяккія: Гаворачы аб памяці і артыкул рэчы.
[Апладысменты]
>> Ханна: Прывітанне, выдатна, так што мы будзем казаць трохі больш
аб памяці, аб якім мы толькі што звярнуўся з дапамогай паказальнікаў.
Такім чынам, ёсць дзве асноўныя часткі памяці, што мы заклапочаныя.
У нас ёсць стэк, які расце у ніжняй часткі, і кучы, які
ідзе ўніз ад вяршыні.
І стэк збіраецца правесці усе нашы зменныя асобніка.
Такім чынам, кожны называе па функцыя атрымлівае свой уласны маленькі кадр у стэку.
Так як Гейб ужо згадвалася раней, калі мы зноў і зноў выклікаць функцыю,
мы збіраемся складваць рэчы ў стэку.
>> І сапраўды гэтак жа, куча, які пачынаецца ў верхняй
збіраецца правесці ўсю памяць што мы дынамічна вылучаць.
І так як мы дынамічна вылучыць памяць,
гэта сыдзе да нізе.
Пара рэчаў, каб быць у курсе, калі мы выкарыстоўваем стэк і кучу,
са стэкам, калі мы маем занадта many-- давайце say-- рэкурсіўныя выклікі,
і мы называем функцыю зноў, і зноў, і зноў, і зноў,
і гэта да кладкі, да кладкі, кладкі да.
І гэта будзе ўрэзацца ў кучу.
Мы збіраемся запусціць з памяці.
Гэта збіраецца выклікаць Праблема для кампутара.
І гэта называецца перапаўненне стэка.
Так што, безумоўна, нешта вас павінен ведаць і імкнуцца пазбягаць.
І куча, павінны памятаць, каб выпадкова не адбываецца ўцечка памяці.
Кожны раз, калі вы выкарыстоўваеце Таноса, ня забудзьцеся вызваліць гэтую памяць.
У адваротным выпадку, гэта будзе проста быць у кучы марна,
і кампутар не будзе ведаць, што ён можа свабодна выкарыстоўваць гэтую памяць.
Так што тыя, пара рэчаў быць вельмі асцярожныя з тым, калі
Вы маеце справу з стэк і куча.
Любыя пытанні з гэтым?
Дзіўны.
>> Добра, прахалодна.
Так гэты выгляд мае тое ж самае Ідэя, як перапаўненне стэка, дзе
мы збіраемся за Межы таго, што памяць
будзе мы павінны быць у стане выкарыстаць.
Так што бярыце, напрыклад, буфер, ці вы можа проста думаць пра гэта як масіў.
І мы сказалі, добра, што мы збіраемся стварыць гэты міленькі масіў.
Гэта збіраецца быць радком.
Ці ён збіраецца захоўваць сімвалы.
І гэта толькі збіраецца, каб павітацца.
І гэта няпэўны.
Гэта так.
>> Але калі б я быў хто-то зло і хацеў зрабіць што-то дрэннае з гэтага масіва, што
Я мог бы зрабіць, гэта паспрабаваць напісаць міма канца радка.
І, як вы ўбачыце, калі Я пішу досыць далёка,
Я можа рэальна ўплываць на адрас вяртання.
І калі я пачынаю ўплывае адрас вяртання,
Я ўплываць як праграма на самай справе працуе.
І замест таго каб вярнуцца, вам ведаю, шчаслівае радок выгляду прывітаньне, я
мог зрабіць што-то дрэннае, як перайсці да дзе-то яшчэ ў вашым кампутары, яшчэ
памяці, змяніць яго, усё, што я хачу зрабіць.
Дык вось што гэта будзе выглядаць калі я толькі збольшага запоўнілі яго
са выпадковай велічыні смецця, У гэтым выпадку, гэтак жа.
А потым, калі я на самой справе патрапілі па адрасе памяці,
Я пачаў запаўняць яго з чым-то што зрабіў тое, што я хацеў, каб гэта зрабіць.
Любыя пытанні з перапаўненнем буфера?
Высокі, лётаць прама праз гэты матэрыял.
>> Такім чынам, мы шмат гаварылі пра аб паказальніка з Gabe.
Як мы на самай справе атрымаць паказальнік?
Як мы можам атрымаць адрас у памяці?
Ну, мы можам выкарыстоўваць гэты добры Функцыя выкліку Таноса, якія
збіраецца атрымаць маленькі кавалачак памяці,
у прыватнасці, у куча, як мы абмяркоўвалі,
і ён збіраецца даць вам назад паказальнік на гэты адрас у памяці.
І аргумент, што мы павінны даць Malloc
гэта колькі месца ў памяці мы хочам.
>> Такім чынам, вы можаце ўбачыць памер у байт.
Скажам, напрыклад, або на самай справе, у гэтым прыкладзе,
мы вылучаем дастаткова прастору для 10 лікаў.
Так, верагодна, тое, што мы збіраемся хачу паставіць тут з'яўляецца масівам з 10 цэлых лікаў.
Так мы даем яму памер цэлых лікаў, якія Мы даведаліся, было колькі байт?
СТУДЕНТ: 4.
Ханна: 4, прыгожы, і мы хачу 10 з іх запар,
так што ў нас ёсць дастаткова месца для захоўваць усе 10 лікаў, у гэтым выпадку.
Што-то супер важна, у любы час патэлефанаваць Таноса,
Вы павінны праверыць нуль.
Калі вы не праверыць нуль, а, Таноса калі яна не хапіла месца
і больш не можа даць вам любы больш памяці, то ён верне нуль.
Так што, калі вы не праверыць, Таноса можа вярнуцца нуль.
І тады, калі мы паспрабуем разыменовать нулявым паказальнікам,
мы збіраемся, каб атрымаць памылку сегментацыі, які мы будзем казаць аб прама цяпер.
Дзіўны.
>> ОК, пытанні з Таноса?
Так?
>> СТУДЕНТ: Хіба праверкі нулявы [Неразборліва] не зрабіць гэта на віктарыне?
>> Ханна: Вядома, пытанне было гэта matter-- на віктарыне,
вы будзеце атрымліваць акуляры, калі б Вы не правяраюць нуль?
Так, вы будзеце атрымліваць акуляры ад калі вы не праверыць нуль.
Кожны раз, калі вы тэлефануеце Таноса, як на віктарына і вашы psets і ў рэальным жыцці,
Вы павінны праверыць нуль.
Добры пытанне.
>> Гейб: Што рабіць, калі я не вызваліць?
Ханна: Гейб хоча ведаць, што рабіць, калі мы не бясплатна.
Тады ў нас будзе ўцечка памяці ў нашай кучы.
Яшчэ пытанні?
Так?
>> СТУДЕНТ: Можа you-- перайсці Перапаўненне буфера сапраўды хутка зноў?
>> Ханна: Вядома.
Пытанне было мы можам перайсці Перапаўненне вельмі хутка буфер.
Давайце вернемся да тых горкамі.
Так буфера, вы можаце проста думаць пра яго як масіў, ці не так?
У вас ёсць некаторы прастору ў памяці.
І калі мы ўпершыню ствараем масіў, мы ведаем, масівы маюць фіксаваны памер,
або наш буфер мае фіксаваны памер.
>> Так скажам, у гэтым выпадку, у нас ёсць толькі досыць месцы, каб напісаць радок прывітанне.
Калі мы ідзем міма, што мяжа, калі мы ідзем міма што наш масіў мы сказалі, што гэта можа правесці,
мы маглі б сапраўды пачаць запісы ў памяць
што кампутар не хочаце нам напісаць у.
І ў прыватнасці, калі мы трапілі нешта накшталт вяртання
адрас функцыі, якая, як і любы іншы кавалак памяці,
проста дзе-то ў вашым кампутар, вы можаце на самой справе
змяніць што і пачынаюць тварыць зло.
Адказ на ваша пытанне?
Дзіўны, што-небудзь яшчэ?
Так?
>> СТУДЕНТ: Так стэк [неразборліва], вы сказаў ісці знізу ідзе ўверх.
У зоне стэка, робіць памяць перайсці ад, як,
зверху ўніз, якія адносяцца да кожнай перапынку?
>> Ханна: Як зрабіць you-- адкласці адзежу на гэтым.
>> ROB: Ён будзе расці ў тым жа кірунак, як стэк расце.
Ханна: ОК.
ROB: Так я заблытацца.
Гэта будзе абстракцыя.
Ханна: ОК.
ROB: Гэта правільна.
Так што, калі стэк расце ўверх, то generally-- яго
не павінен быць такім. але вы можаце абвясціць Int х.
Тады вы аб'яўляеце Int у.
Тады інтэрвал х наогул будзе ніжэй у стэку, чым INT у.
Але гэта проста факт.
Гэта не так, як важную насення рэч.
>> ROB: Так што пытанне зноў быў проста што адбываецца кожны кадр назапашваецца.
Так кожная функцыя атрымлівае маленькі кавалачак стэка.
І, як вы ідзяце уверх, у тым, што маленькі кавалачак, у гэтым кадры,
мы будзем казаць, што зменныя у гэтым кадры таксама рухацца ўверх.
Пытанне?
>> ROB: Проста каб быць на мікрафон.
Ханна: О, так.
ROB: Я буду казаць у вас.
Ханна: О, так, добра.
ROB: выключэннем з'яўляецца для масіваў і структур,
дзе масівы, ніжэй Індэкс ў масіве,
і ў структур у вышэй Поле ў структур
гарантавана будуць на больш нізкіх адрасоў чым больш позні значэнне ў масіве.
Так што тыя, гарантаваныя.
Але якія-небудзь канкрэтныя зменныя ўнутры, як INT х і інтэрвал у ў функцыі,
няма неабходнасці адносіны паміж іх адрасы.
Ханна: Яшчэ адно пытанне тут?
СТУДЕНТ: Так у буфер паток, толькі перапаўнення буфера
толькі адбылося, калі вам ўжо, быццам бы, прысвоены
Колькасць масіва што тое больш?
Маўляў, ці не так?
Так што, калі вы просіце што-то з user--
>> Ханна: Мм-хм.
СТУДЕНТ: Можа яны сілком даць вам што-то наўзамен
гэта больш, чым усё, што Вы выдзелена для іх?
Ханна: Вядома, так Пытанне было ў асноўным,
можа карыстальнік дасць вам больш, чым вы просіце?
СТУДЕНТ: Так.
Ханна: Ну, вы маглі б прадухіліць карыстальнік ад гэтага.
Вы маглі спецыяльна сказаць не дай мне больш, чым х колькасць па байтаў
Я толькі даў вам месца для х колькасць байтаў, х лік знакаў.
Так што тое, што вы хочаце, каб прадухіліць.
Так?
У чым розніца паміж Перапаўненне стэка і перапаўненне буфера?
>> Ханна: ОК, так што стос overflow-- ах, які
розніца паміж стэкам Перапаўненне і перапаўненне буфера?
Таму мы хочам, каб думаць аб перапаўнення стэка адбываецца, калі мы на самай справе
кладка гэтыя выклікі функцый.
Скажам у вас ёсць рэкурсіўных функцыю, таму што мы ведаем, што кожны раз, калі вы
выклікаць функцыю, гэта становіцца самастойна рамка на стэку.
>> Такім чынам, мы складаюць занадта высока, і Затым мы пачынаем пералівацца.
І мы выкарыстоўваем занадта шмат памяці, і мы не сапраўды ёсць дзе-небудзь засталося.
Мы атрымліваем гэтую памылку.
>> Перапаўненне буфера знаходзіцца ў межах праграмы.
Мы хочам, каб, магчыма, не абавязкова запусціць з памяці гэтак жа,
што мы маглі б, калі мы кладкі так шмат выклікаў функцый,
але мы пішам міма памяці што мы ведаем, што мы можам выкарыстоўваць.
І што дазваляе нам рабіць зло.
Так?
>> ROB: Так, вы можаце каб проста паўтарыць гэта,
але вы таксама можаце думаць перапаўненнем стэка
а як пэўны тып перапаўнення буфера.
Ці вы проста думаць аб сваім стэк, як сапраўды вялікі буфера.
Затым, калі вы перапаўненне вы стэк, гэта накшталт як перапаўненне буфера.
Але перапаўненне стэка проста спецыяльны тэрмін выкарыстоўваецца, калі стэк
Сам перапаўняе.
>> Ханна: Права, так, каб Паўтараю для відэа,
гэта вы можаце думаць аб перапаўненне стэка, як Канкрэтны тып перапаўнення буфера.
Прахладны?
Любыя іншыя пытанні, перш чым ісці далей?
Дзіўны.
>> Добра, халаднавата, так што давайце казаць пра некаторыя агульныя паведамленні пра памылкі.
Гэта тое, што мае паказана на некалькіх віктарынах,
так што-тое, што варта прымаючы другі погляд на.
Я ўпэўнены, што вы сутыкнуліся па меншай меры, некаторыя з іх
як вы робіце, ваша праблема ўсталёўвае.
Таму пераканайцеся, што вы можаце казаць пра іх на віктарыне.
>> Такім чынам, першы з іх памылкі сегментацыі.
І гэта ў любы час, мы паспрабуйце атрымаць доступ да памяці
што мы не дазволілі доступ.
Такім чынам, вы migh бачыў гэта, Напрыклад, у прарыве.
Калі выявіць сутыкнення вярнуцца нуль, а затым вас
спрабаваў нешта зрабіць з гэтым значэннем нуль,
кампутар дасць Вы памылкі сегментацыі.
Так што, галоўнае, каб зрабіць для таго, каб паспрабаваць пазбегнуць гэтага
гэта заўсёды праверыць на нуль.
>> Вы, магчыма, таксама бачыў няяўная дэкларацыя функцыі.
Так што гэта тое, што адбываецца калі Элісан паказаў,
як мы робім прататып, ці не так?
Так скажам, у нас ёсць некаторыя функцыя, якую мы вызначым.
Скажам куб.
І гэта ідзе на дно нашай функцыі, у адпаведнасці з асноўным.
>> Калі мы забываем сказаць кампутара аб куб, калі асноўная спрабуе выклікаць куб,
кампутар будзе, як, о, чорт вазьмі.
Я паняцця не маю, што гэта значыць.
Я не ведаю, што рабіць, вось.
Так прататыпам кажа, не хвалюйцеся.
Я збіраюся расказаць вам.
>> Гэта прыйдзе.
Не крычаць на мяне.
Не дай мне невідавочнае Дэкларацыя функцыі.
Так што калі вы атрымаеце гэтую памылку, адзін што вы будзеце жадаць зрабіць
гэта пераканацца, што ў вас ёсць свой прататып.
Добра?
>> І апошняе, але не менш важна, неаб'яўленай ідэнтыфікатар
па сутнасці, калі вы спрабуеце выкарыстоўваць Зменная, што вы не заявілі.
Так раптам вы пачынаеце кажучы, як п плюс плюс.
І кампутар кажа, што гэта н?
Ты ніколі не казаў мне, н быў рэччу.
>> Так адна рэч, вы павінны пераканацца, што вы зрабіў гэта сказаць кампутара, што п.
Так, напрыклад, н можа быць цэлым лікам.
І тады вы будзеце пазбегнуць гэтай памылкі.
Любыя пытанні па распаўсюджаных памылак?
Так?
>> СТУДЕНТ: Для невідавочнае Дэкларацыя функцыі,
можа таксама быць, што вы апусцілі адзін з бібліятэк вы павінны былі
каб ўключаць у сябе, замест прататыпа?
>> Ханна: Права, так Пытанне было, ты мог
Таксама гэтая памылка, калі вы забыліся ўключыць бібліятэку.
>> СТУДЕНТ: Так.
>> Ханна Абсалютна, таму што так жа,
што мы хочам, каб пакласці нашы прататыпы Перад асноўнай функцыі,
калі ў нас ёсць бібліятэка, тыя ідуць па сутнасці ўключаюць у сябе прататыпы,
ўключыць вызначэння з функцый.
Вялікае пытанне.
>> СТУДЕНТ: Для сегментацыі віна, будзе, што таксама
адбудзецца, калі мы, як, спрабаваў атрымаць доступ да зменнай,
як, па-іншаму [неразборліва] чым ён быў аб'яўлены ў?
Ханна: Вядома, так бы мы атрымаць памылку сегментацыі
калі мы паспрабавалі атрымаць доступ Пераменная выходзіць за рамкі?
Ці было гэта пытанне?
СТУДЕНТ: Так.
Ханна: Прыгожая.
Так, верагодна, вы збіраецеся атрымаць Неабвешчаная памылка ідэнтыфікатар замест.
Так што гэта проста хачу сказаць, Я не ведаю, што гэта такое.
Крута, што-небудзь яшчэ?
Так, добра, прыгожа.
>> Усе правша, так Рэкурсія.
Так я ўжо пару разоў што мы маглі б атрымаць перапаўненне стэка
таму што мы называем наш рэкурсіўная функцыя так шмат разоў.
Мы атрымліваем усе гэтыя чаркі кадры, бла, бла, бла.
Што яшчэ з'яўляецца рэкурсіўная функцыя?
Ну, рэкурсіўная функцыя з'яўляецца любая функцыя, якая называе сябе.
>> Некаторыя рэчы, каб быць у курсе, калі вас рэалізуем рэкурсіўных функцыю,
не забудзьцеся ўключыць базавы варыянт.
Базавы варыянт з'яўляецца Кропка, у якой мы ў канцы.
Так, напрыклад, калі мы кадавання, , Кажуць, Фібаначы рэкурсіўна,
мы хочам пераканацца, што, калі мы атрымліваем на або пад першым нумарам 0 Фібаначы,
гэтыя два ліку маюць гэтыя выпадкі, таму што тыя не залежаць
на рэчы, якія прыйшлі раней.
Тыя, маюць свае ўласныя значэння.
>> Некаторыя профі ў рэкурсіі, што з'яўляецца Пытанне, які мы бачылі на апошніх апытанняў.
Яны могуць прывесці да больш кароткім, элегантны код.
І шмат функцый, шмат розных алгарытмаў,
на самай справе паддаюцца рэкурсіі.
Іх вызначэнне можа быць Рэкурсіўныя і само па сабе.
Так Фібаначы з'яўляецца адным.
Фактарыяла з'яўляецца адным.
Зліццё сартавання одно-- ўсе рэчы, якія вы можаце паглядзець.
Добра, ёсць пытанні?
Так?
>> СТУДЕНТ: Ёсць памежныя выпадкі аналагічна базавай выпадку?
Ці ў тым, што для нейкай іншай выгляд [неразборліва]?
>> Ханна: Вядома, так кут выпадак any-- так
з'яўляецца кут справу гэтак жа, як базавай выпадку?
Кут выпадак што-небудзь, што ваш Код можа паводзіць сябе крыху па-іншаму.
Базавы варыянт з'яўляецца свайго роду звязаны, у што яны, як прыватныя выпадкі
што вы хочаце паглядзець.
Але ідэя базавай выпадку з'яўляецца тое, што Вы хочаце, каб ваш рэкурсіўных функцыю
спыніцца на нейкі момант.
Ён не можа трымаць, якая называе сябе назаўжды.
Гэта трэба спыніць на нейкі момант.
>> Роб: Так, часта, вашы базавыя выпадкі можа быць прыклады кутніх баз.
>> Ханна: Права, выдатна, што-небудзь?
>> СТУДЕНТ: Не маглі б вы растлумачыць, засноўвае трохі больш?
Я не зусім разумею, [Неразборліва] базавыя выпадкі.
>> Ханна: З базавых выпадках?
>> СТУДЕНТ: Базавыя выпадкі, так.
>> Ханна: О, так, вядома.
Паглядзім.
Ці ёсць у нас мел тут?
Так, мы робім.
Такім чынам, на самай справе хутка, я буду паспрабуйце напісаць досыць вялікі
так што вы можаце бачыць на экране.
Давайце пагаворым аб, сапраўды хутка, Фібаначы.
Таму я дам вам паслядоўнасць Фібаначы.
Вы можаце шукаць вызначэнне.
>> Па сутнасці, кожны нумар у паслядоўнасці з'яўляецца сумай двух папярэдніх лікаў.
Такім чынам, тое, як я толькі што апісаў Фібаначы,
вы маглі пачуць рэкурсіі, ці не так?
Калі я сказаў, што кожны нумар сума двух папярэдніх лікаў,
мы маглі б сказаць, у парадку.
Ну, п-я Фібаначы number-- так што давайце
у нас ёсць гэтая функцыя называецца fib-- выдумка п
будзе роўная прыхлусіць н мінус 1 plus-- шкада,
мы збіраемся на наступным радку над here-- выдумка п мінус 2.
>> Такім чынам, гэта выдатна працуе, калі вы глядзіце, напрыклад, нуль, адзін,
два, тры, чатыры, пятая лік Фібаначы,
дзе можна сказаць, што 5 роўная 2 плюс 3.
Але што, калі вы ў пачатку?
Што рабіць, калі вы проста ідзяце гэтыя першыя два значэння?
>> Каб атрымаць гэты 1, вы не можаце сказаць дадаць два папярэднія,
таму што нуль и-- я не ведаю.
Такім чынам, у нейкі момант, мы павінны спыніцца.
У нейкі момант, мы павінны сказаць, што гэта два толькі маюць свае ўласныя вызначэння.
Колькасць 0 Фібаначы 0.
І першае лік Фібаначы 1.
>> Так як я мог бы кадзіраваць гэта, я сказаў бы, калі п менш двух,
то проста вярнуць н.
І што б мой базавы варыянт.
Вось як я ведаю, каб спыніць з рэкурсыўнай функцыі.
Гэта зразумела?
Дзіўны.
Што-небудзь яшчэ на рэкурсіі?
Прыгожая.
>> Давайце хутка казаць пра Пошук і сартаванне выконваюцца раз.
А потым я дам Дэвин некаторых Час пагаварыць пра кадаванні прыклады.
Дык вось асноўны пошук і віды, якія вы павінны ведаць аб.
Guarantee-- я не магу гарантаваць, таму што я не бачыў quiz--
але гэта прыходзіць віктарыны пасля віктарыны пасля выхаду.
Так вызначана выкарыстоўваць гэты графік.
Маўляў, узяць гэты графік.
Пакладзеце яе на свой шпаргалку.
Вы будзеце шчаслівым чалавекам.
>> Гэта кажа нам часу працы кожнага з гэтых сартавання і алгарытмаў пошуку.
Так лінейны пошук, вы можаце ўбачыць бег Час, і тое ж самае з бінарнага пошуку.
Перайсці над тым, што гэтыя алгарытмы зрабіць, агульную ідэю.
Паглядзіце на нейкі псевдокоде, калі не сам код.
>> Вы ўбачыце, што пузырьковый сартаванне мае верхні звязаны ў горшым выпадку п квадрат.
Так што, калі наш масіў быў цалкам назад, перш чым мы хацелі, каб улагодзіць яго,
мы б сказалі, што гэта збіраецца заняць н у квадраце крокі.
Але ў лепшым выпадку, так ніжняя мяжа для лепшым выпадку
ці будзе гэта ўжо зусім адсартаваныя.
Тады ўсё, што трэба зрабіць, гэта праверыць, што гэта сартуюцца.
Ёсць пытанне тут?
>> СТУДЕНТ: Калі будзе Вы хочаце выкарыстоўваць тое?
Гатунак.
Мне проста цікава.
>> Ханна: Калі вы хочаце выкарыстоўваць выбар роду?
Гэта адзін?
Той, які н квадрат у абодвух выпадках?
>> СТУДЕНТ: [неразборліва].
>> Ханна: Так што гэта вельмі розныя.
Калі ў вас ёсць канкрэтныя Патрабаванні да праграмы,
як рэчы, як калі б мы толькі што сказалі, ажыццявіць search-- sorry--
ажыццявіць свайго роду, вы будзеце верагодна, хочаце пайсці
для аднаго з тых, што мае лепшы выпадак п,
ці ніжнюю мяжу ў лепшым выпадку п.
Але там можа быць некаторыя рэчы, як, скажам,
свопы сапраўды дорага для нейкай прычыне.
Тады вы хацелі б зрабіць пузырьковый сартаванне, таму што вы
трэба зрабіць так шмат свопы, такія рэчы, як, што.
Любы other-- так?
>> СТУДЕНТ: было б [неразборліва] сказаць, што [неразборліва]?
Ханна: Гэта адна рэч, што б вам сказаць,
калі вы шукаеце на рэалізацыю.
Тое, як я б на самой справе думаю пра тое, чаму гэта н
квадрат ў тым, што мы павінны працаваць праз наш масіў даўжыні п,
кожны раз робячы у большасці, п свопов.
І мы павінны зрабіць гэты працэс п раз.
>> Так што, калі вы павінны зрабіць у самае, н свопы і для п прабягае масіва,
там збіраецца быць н у квадраце.
Але так, гэта будзе выяўлена праз гэты ўдвая за пятлю,
як пытанне asked-- або укладзенымі для цыклу, я павінен сказаць.
Добра?
>> А потым зліваюцца роду, якія гэта самы хуткі від мы цяпер,
або, калі мы разгледзелі ў CS50, Вядома, што асноўным алгарытм
гэтая ідэя ўзлому адсартаваныя кавалкі і затым
зліваючыся гэтыя адсартаваныя біты.
І атрымаеце нам увайсці н увайсці п.
Любыя пытанні па ператрусаў і віды, перш чым я перадаць яго?
Паглядзім.
>> О, сувязныя спісы.
На жаль, у мяне ёсць яшчэ адзін падзел.
ОК, дзіўным, звязаныя спісы.
Праблема з масівамі, яны маюць фіксаваны памер.
Так што, калі вы не ведаеце, наколькі вялікая Ваш ўклад будзе,
Вы не хочаце, каб стварыць масіў.
Таму што, калі мы ствараем Масіў, занадта малая,
мы маглі б сутыкнуцца з перапаўненнем буфера.
>> Так замест гэтага мы маглі б зрабіць што-то са звязанымі спісамі, якія
дазваляе нам мець дынамічна памеру структуры дадзеных
што дазволіць нам захоўваць больш гнуткім аб'ём дадзеных.
Такім чынам, унутры кожнага вузла ў нашым звязаны спіс, у нас ёсць дзве часткі.
У нас ёсць фактычнае значэнне, што ён захоўвае.
Так што гэта проста, што вы б см у масіве, напрыклад.
І тады мы таксама адсочваць ўказальнік да наступнай рэчы ў памяці.
>> У адрозненне ад масіваў, якія мы ведаем усё збіраемся
у be-- элементы масіва ўсё адно за іншым у memory-- звязаны
Спісы могуць быць дзе заўгодна ў памяці.
Яны адвольных месцах.
Так што, калі б мы павінны былі на самай справе пайсці знайсці іх, мы
трэба адсочваць Наступнае, што ў нашым спісе.
>> І тады для таго, каб ведаць, дзе, што спіс у цэлым,
Усе мы павінны адсочваць гэта Самы першы элемент у нашай звязанага спісу.
І што будзе дазволіць нам выканаць.
>> Так што гэта, як вы маглі б вызначыць рэжым.
Гэта выдатная магчымасць скарыстацца структур.
Таму што ў вас ёсць гэтая ідэя, добра, для дадзенага вузла, у мяне ёсць дзве часткі.
У мяне ёсць фактычнае само значэнне.
А потым у мяне ёсць паказальнік на Наступны элемент у звязаным спісе.
Такім чынам, вы бачыце, у нас ёсць лік п, які будзе фактычнае значэнне,
а затым паказальнік на вузел, званы побач.
Так што гэта будзе наступны элемент у нашай звязанага спісу.
СТУДЕНТ: Да?
Вы павінны паказаць, што зорка, як структуры?
>> Ханна: Так, так, так як гэта амаль як свайго роду,
здаецца, што рэкурсіўны вызначэнне, у якім мы
павінны ведаць, што вузел ўнутр, каб знайсці вузел.
Так як гэта не на самай справе ведаю, што вузел цалкам
пакуль мы не атрымаем да канца this-- і пасля гэтага мы можам назваць яго проста
node-- ўнутры гэтага вызначэння, мы павінны назваць гэта структура вузла.
Вялікае пытанне.
Што-небудзь яшчэ?
Так?
>> СТУДЕНТ: Чаму мы павінен сказаць, вузел двойчы?
Таму што, калі мы былі ў [неразборліва] мы проста павінны былі зрабіць гэта ў кропку з коскай,
але зараз мы павінны знайсці, што структура вузла? [Неразборліва].
Ханна: Так што я лічу, у апошнім прыкладзе,
мы былі проста стварэнне ў любы час вы хацеў выкарыстаць студэнта пасля гэтага, вы
давялося выкарыстоўваць-структуру node-- Я sorry-- структуры студэнта.
Гэта дазволіла нам, пасля таго, як той факт, проста Выкарыстанне вузел дадання новага тыпу, па сутнасці.
Гэта мае сэнс?
Такім чынам, мы павінны былі б вярнуцца і паглядзець на код, перш чым.
Але я думаю, што мы не выкарыстоўвалі ЬурейеЕ.
І мы задалі пытанне, чаму мы павінны выкарыстоўваць ЬурейеЕ?
Typedef дазваляе пазбегнуць Слова структура ў пачатку.
Так?
СТУДЕНТ: Якія пытанні будуць прыдумаць
ў плане з пункту гледжання вузлы і звязаныя спісы?
>> Ханна: Так адно можна сказаць, як можа вы праглядзіце звязанага спісу?
Добра, таму што гэта крыху больш складана
чым калі мы шукаем праз масіў.
Мы можам толькі глядзець на нулявы элемент, Элемент адзін, элемент два, бла, бла,
бла.
Калі мы хочам шукаць праз звязаны спіс,
мы фактычна павінны прытрымлівацца гэта крыху лабірынт паказальнікаў.
Так што давайце на самай справе ісці праз гэта сапраўды хутка.
Тое, што мы маглі б зрабіць у замовіць to-- скажам мы
хачу проста перабраць наша цалкам звязаны спіс.
Мы пачалі б у галаву.
І затым, з тым каб перайсці да наступнага элементу,
а не проста прырашчэння на адзінку як мы маглі б пры пераходзе праз масіў,
мы на самай справе збіраемся прытрымлівацца наступны паказальнік,
так што мы можам знайсці, дзе ў Памяць на наступны элемент.
Так што я ведаю, што гэта не дастаткова, каб прыняць усе гэта прама зараз,
але вы будзеце мець гэтыя слайды.
Такім чынам, вы можаце прайсці гэта крыху больш павольна.
Але па сутнасці, тое, што мы хочам зрабіць, выканайце наступныя паказальнікі
праз паўнату звязанага спісу.
Так што гэта пытанне можа быць вы спыталі.
>> Што-то, каб заўважыць з устаўка, скажам
мы хацелі паставіць новы элемент у пярэдняй часткі нашай звязанага спісу.
Мы павінны быць вельмі асцярожныя, аб парадку, у якім мы
пераназначаны паказальнікі.
Таму што, скажам, я проста сказаў, добра.
Зрабіць галаўнога кропку на гэты новы элемент.
Проста каб яна паказвала на 1 часу мы істотна страцілі астатнюю частку нашага спісу,
таму што я не памятаю, дзе 2 жыцця.
>> Так што мы павінны зрабіць у вельмі пэўны парадак.
Па-першае, мы робім новы элемент паказвае на галаву.
І тады мы робім галаву паказваць на новы элемент.
Такім чынам, давайце паглядзім, як гэта выглядае з arrows-- проста так.
Такім чынам, вы павінны спачатку новыя элемент паказвае на старой галаве.
А цяпер, у нас ёсць галава ён паказваў на новы першы элемент.
Любыя пытанні з гэтым?
>> ОК Вось код зноў, што-то глядзець на трохі пазней.
А цяпер я буду перадаць яе Давин для GDB і крыху практыкі
кадавання на паперы.
Прыгожая.
>> ROB: А Роб.
>> Ханна: О, Дэвин і Роб.
Мне шкада.
>> СТУДЕНТ: Woo!
>> ROB: Дзякуй.
>> DAVIN: Вы хочаце сказаць, ўсё сапраўды хутка?
ROB: Так, так.
DAVIN: Пасля таго, як я да.
ОК, у той час як Роб ставіць Мікрафон на, так што GDB?
Усе павінны былі бачыць GDB ў клас, а таксама на працоўныя гадзіны.
І вы павінны выкарыстоўваць яго.
Так што GDB?
Любы?
>> СТУДЕНТ: Гэта адладчык.
>> DAVIN: Гэта адладчык.
І тое, што гэта дазволіць вам рабіць?
Маўляў, навошта нам падабаецца GDB?
СТУДЕНТ: Каб запаволіць праграму.
DAVIN: справа, так што вы можаце хадзіць праз яго, як чалавек у нагу.
І так, што некаторыя каманды вы можаце зрабіць?
Ну, перапынак, верагодна, Ваш любімы каманда.
Таму што дазваляе разбіць Праграма і фактычна ісці праз яго
парадкова.
>> Выканаць дазваляе запускаць яго.
Далей, як пакрокава.
Што паміж побач і кроку?
Пачакайце, кажу гэта ўслых.
Гэта было правільна.
>> СТУДЕНТ: [неразборліва].
>> DAVIN: Так, дзіўны.
Так як, у наступным і крок, калі you're-- скажам ў вас ёсць функцыя вы
вызначыць.
Скажам некаторыя ў вашай асноўнай функцыі, і вы проста ідзяце побач, побач,
Наступны.
Ты на самай справе адбываецца ў выканаць гэтую функцыю,
але вы збіраецеся скакаць праз яго.
Калі вы патрапілі крок, або ы або любы іншы, вы
збіраецца на самай справе скакаць у гэтай функцыі,
а затым вы можаце націснуць побач каб убачыць розныя званкі
ўнутры гэтай канкрэтнай функцыі.
Так?
>> СТУДЕНТ: Ці ёсць спосаб скакаць, як, адступіць?
DAVIN: Гатова, так, скончыць з скакаць вам.
Дык гэта будзе скончыць, што Функцыя, а затым вы
збіраецца вярнуцца ў асноўны, напрыклад.
Друк будзе раздрукаваць яго адзін раз.
Што-то я заўсёды выкарыстоўваю гэта дысплей.
Дысплей раздрукаваць яго пастаянна на працягу ўсёй паўнаце
вашай праграмы.
>> Напрыклад, калі вы у цыкле, і вы
хачу паглядзець, як нешта мяняецца, і вы не хочаце, каб, як, пастаянна
рабіць, як друк, друк, друк, дысплей
пакажа гэтую зменную пастаянна, кожны раз, калі вы націснеце кнопку Далей.
І па-ранейшаму.
Так ГПБ, гэта GDB.
>> СТУДЕНТ: Што адзін дзе вы [неразборліва]?
DAVIN: Што гэта такое?
>> СТУДЕНТ: Што the-- лакальныя зменныя.
ROB: Існуе што-то на самай справе як мясцовыя жыхары або што-то.
Я can't--
>> DAVIN: Гэта можа быць як-то так, так.
>> Ханна: У мясцовых жыхароў?
>> DAVIN: Вось гэта.
Вось адзін.
ROB: Прыгожая.
>> DAVIN: Так.
>> СТУДЕНТ: Што па-ранейшаму рабіць?
>> DAVIN: Гэта continues-- так што гэта проста збіраецца працягнуць свае праграмы.
Так што, калі вы парушыце і ўдарыў працягваць, гэта будзе
не проста запусціць гэтую праграму, пакуль яна трапляе, што перапынак зноў.
Так, напрыклад, калі вы зламаў ў функцыі,
і вы збіраецеся рабіць, як для пятля ці нешта падобнае,
і вы патрапілі працягваць, ён збіраецца працягнуць і вярнуцца да гэтага перапынку.
Або няма ніякага перапынку, яна не збіраецца працягнуць і завяршыць праграму.
>> ROB: Так проста падабаецца спыняецца, на першым супыну
вы патрапілі, калі вам, то хіт працягваць, гэта будзе трымаць
адбываецца, пакуль гэта не наступнай кропкі.
А потым працягнуць пойдзе да наступнай кантрольнай кропкі.
DAVIN: Любыя іншыя пытанні аб GDB?
Так што я думаю, што і ў мінулым, мы прасілі вас, што
GDB і даць Прыклад некаторых рэчаў, якія вы
можна зрабіць з дапамогай GDB, так рэальны просты, але так.
Там вы ідзяце.
І вузлы?
>> ROB: Так, так, у якім кірунку гэта было?
СТУДЕНТ: Вось і ўсё.
DAVIN: Пачакайце.
ROB: Гэты хлопец?
DAVIN: Гэта адзін.
ROB: Гэты хлопец, ох, я не разумеў ,.
Такім чынам, мы не былі вядомыя на тое, што я the-- ня
ведаю, хто гэта was-- але пытанне.
Мы не ведаем, што менавіта вы пыталіся пра гэта, так што проста
ўдакладніць што-то.
Такім чынам, спачатку, як я ўжо казаў, ЬурейеЕ вы заўсёды з дапамогай толькі
стварыць псеўданім для тыпу.
Дык вось тут, мянушка мы Стварэнне для гэтага тыпу структуры вузла.
>> Такім чынам, спачатку, ігнаруючы гэты вузел у ЬурейеЕ, так гэта структура вузла кучаравыя
рыхтавацца да наступнага кучаравых Артэз Тып структуры вузла.
І мы павінны да гэтага вузла там, таму што мы
трэба спасылацца вузел тут.
Так што з такога роду рэкурсыўнай структуры, Вы павінны даць гэтай структуры імя,
інакш вы не маглі кажуць структура вузла тут.
Калі раней з вучнем калі мы набраліся, я думаю,
мы не павінны сказаць, студэнт там, таму што мы
не павінен сказаць-структуру Студэнт ўнутры самой структуры.
Так што гэта рэкурсіўная што прымушае нас сказаць вузел ёсць.
>> Гэты вузел з'яўляецца толькі назва мы даючы вузел для вызначэння тыпу.
Так што вузел ня гэтак жа, як гэты вузел.
Але гэты вузел з'яўляецца структура такі ж, як той структура вузла.
DAVIN: Таму, калі вы тэлефануеце, як, вузел у галоўнай функцыі,
Вы ж не збіраецеся павінен сказаць, структура вузла.
Вы можаце проста сказаць вузел, таму што вузел з'яўляецца ў асноўным different--
Вы кажаце, ОК.
Замест таго, каб патэлефанаваць структура вузла ў сваім кодзе,
Я проста хачу, каб перайменаваць яго як вузел, каб зрабіць яго больш лёгкім.
>> ROB: Калі вас заўсёды выкарыстоўваць ЬурейеЕ, то гэта
гэта адзінае месца, вы будзеце мець, абвясціць зменную з STRUCT вузла
зорка, так.
>> DAVIN: ОК, так што апошняя частка Цяжка навучыць because--
ROB: Што?
>> DAVIN: Таму што гэта кадаваньне на паперы.
Такім чынам, кожны год у нас ёсць Код на папяровых пытанняў.
Так што я думаю, што ў мінулым годзе, 12 з 80 балаў былі Код на паперы.
Год да гэтага, 10 з 80, За год да гэтага, 20 з 100,
так нямала з іх.
Такім чынам, вы будзеце мець, каб быць у стане кадзіраваць гэтыя функцыі ўручную.
>> Таму я меркаваў, што мы маглі б прайсці Пару з іх і паглядзець, як людзі робяць,
выгляд хадзіць праз іх павольна з людзьмі.
Так звычайна, StrLen і atoi былі вельмі папулярныя.
У мінулым годзе, я думаю, што мы павінны былі GetPositiveInt і RandomInt.
Але ваеннапалонных, таму магутнасць, таксама станоўчым занадта.
Давайце проста прайсці, можа быць, адзін ці два з іх разам.
Што людзі хочуць бачыць?
>> СТУДЕНТ: Atoi.
СТУДЕНТ: Так.
DAVIN: Atoi?
СТУДЕНТ: [неразборліва].
DAVIN: ОК, я збіраюся зрабіць гэта на дошцы.
Ці ёсць у вас перавагі калі я раблю гэта тут ці там?
Там, Гейб кажа там.
>> ROB: І гэта агульныя думкі на гэтыя пытанні кадавання.
Паспрабуйце напісаць што-небудзь.
Ня пакіньце гэта поле пустым.
>> DAVIN: Так.
ROB: Калі вы можаце атрымаць вярнуцца тып правільна,
ці, можа быць, мы маглі б даць яго Вы, але калі вы можаце, як,
напісаць агульную функцыю подпіс, Калі вы можаце атрымаць базавыя выпадкі правільна,
ці прыватныя выпадкі, або успамінаючы чэк на нуль,
да таго часу, пакуль у вас ёсць некаторыя рэчы, то, магчыма, мы
можа даць вам пару паказвае на праблемы.
Не проста пакіньце поле пустым.
>> DAVIN: Так, і калі вам толькі цалкам
тупік ў тым, як на самай справе ператворыцца ў кодзе.
Калі вы пішаце псевдокод, гэта вельмі добра таксама.
Так што гэта як, гэта шэсць цэлых пытанне, і вы напішыце правільны псевдокод,
Вы атрымаеце не менш за два кропак.
Так што не проста пакінуць іх пустымі.
Паспрабуйце пакласці што-то.
>> ROB: Яна павінна быць правільна псевдокод, хоць.
>> DAVIN: Так.
ROB: Такім чынам, мы, як правіла, з'яўляюцца менш паблажлівы з памылкамі ў псевдокоде.
Дэвин: ОК, так што вы, хлопцы хацеў бачыць atoi.
ОК, так што проста really-- так што вы хочаце зрабіць,
гэта вы збіраецеся быць улічваючы нейкія колькасці.
Але гэтая колькасць не будзе інтэрвал, ці не так?
Што гэта будзе?
>> СТУДЕНТ: [неразборліва].
>> DAVIN: Гэта збіраецца быць радком, ці не так?
Так што калі вы далі string-- давайце say--
>> ROB: Ці павінен я падцягнуць рэдактар?
Я магу выцягнуць up--
>> DAVIN: О, вы хочаце зрабіць гэта on--
>> ROB: Вы б аддалі перавагу дошку?
>> DAVIN: Што вы хочаце зрабіць?
Я маю на ўвазе, вы хочаце зрабіць гэта ўручную?
Ці вы хочаце, каб зрабіць гэта з дапамогай кампутара?
>> ROB: Зрабіце гэта ўручную.
>> DAVIN: [Смяецца]
ROB: Зрабіце гэта ўручную.
>> DAVIN: ОК, так што гэта будзе atoi.
Так што it-- Я маю на ўвазе, мы будзем верагодна, дасць вам гэта.
Але тое, што ён збіраецца вярнуцца?
>> СТУДЕНТ: Int.
>> DAVIN: Гэта збіраецца вярнуцца Int, ці не так?
So-- Я не хачу, каб гэта зрабіць ёсць.
Я зраблю гэта тут.
>> ROB: Вы можаце цягнуць яго ўніз а затым націснуць на яго.
>> DAVIN: так.
[Смяецца] змяненне гульні.
ОК, так што гэта будзе INT atoi, і тое, што ён збіраецца распачаць?
Сімвал зоркі, так проста Радок, зорка з, як, што.
>> ROB: Nice зорка, добры.
DAVIN: Гэта не можа быць там, ОК.
ROB: Так.
DAVIN: ОК, так што першы што вы хочаце do-- I
не ведаю, калі хто-небудзь паглядзеў на практыцы solutions--
але тое, што вы збіраецеся хацець зрабіць гэта вы
захоча ёсць пятля, таму што ты
захоча фактычна пакрокава гэтага радка.
Так helpful-- так скажам мы збіраемся для завесы,
і мы збіраемся прайсці праз кожны элемент радка.
Як доўга гэта?
Колькі разоў мы збіраемся для перабору ў тым, што для цыкла?
СТУДЕНТ: Sterln?
DAVIN: Sterln, так.
Так скажам, даўжыня інтэрвал роўны sterln с.
І проста цікава, чаму гэта заўсёды свайго роду з лепш рабіць гэта па-за завесы?
Як, чаму гэта лепш назваць гэтая функцыя па-за цыкла?
Проста праверце хуткі здаровае?
Так?
СТУДЕНТ: Такім чынам, вы не павінны працягваць правяраць яго.
Вы можаце проста [неразборліва].
>> DAVIN: Роўна, так што так, менавіта тое, што яна сказала.
Такім чынам, мы не павінны працягваць правяраць яго.
Так, напрыклад, калі я тэлефаную гэтая функцыя ў цыкле,
Затым я збіраюся працягваць тэлефанаваць гэтая функцыя некалькі разоў.
І што адбываецца, каб паменшыць эфектыўнасць вашай праграмы.
Так што гэта заўсёды карысна аб'явіць яго па-за.
>> ROB: Гэта кажа, на любы з гэтых праблем,
у значнай ступені, пакуль вы атрымліваеце працоўнага раствора, вы атрымаеце поўны крэдыт.
Так што не хвалюйцеся, калі ваш дызайн абсалютна жахлівым.
Гэта можа зрабіць нас засмучаны чытаць ваш код.
Аднак да таго часу, як яно працуе, вы атрымаеце ачкоў.
>> DAVIN: Так.
Такім чынам, тое, што я збіраюся абвясціць некаторыя зменныя.
Гэта проста будзе тэлефанаваць Int суму.
І я збіраюся ўсталяваць гэта роўны нулю, як гэта.
І гэта толькі збіраецца быць запаўняльнік.
Так што гэта будзе тое, што я збіраюся вярнуцца.
Так што я збіраюся ў рэшце рэшт вярнуцца суму з гэтай праграмы.
Таму ў мяне ёсць гэтыя дзве зменныя.
Я маю даўжыню.
У мяне ёсць суму.
А цяпер давайце пяройдзем у нашу радок.
>> Так што давайце ёсць наш цыкл.
Так чатыры INT я роўная 0 ж, у той час як Я менш даўжыні I плюс плюс.
І now--
ROB: Nice.
DAVIN: ОК, а цяпер тут прыходзіць мяса нашага кода.
Такім чынам, вы можаце на самой справе рабіць гэта ў асноўным у адну лінію.
Дык хто-небудзь ёсць ідэя пра тое, што мы збіраемся рабіць далей?
ОК, так што ўсё ў парадку.
Такім чынам, мы робім сказаць суму equals-- дазвольце мне бегчы стрымгалоў гэты over-- суму
роўная суме раз 10 plus-- мы збіраецца заняць ы I мінус адзін
Цытата 0 адна цытата зроблена, як, што.
ROB: Вельмі інтуітыўны.
>> DAVIN: Друз яго.
Такім чынам, someone-- я атрымаў яго, я атрымаў яго.
ОК, так што гэта відавочна ідзе ўверх.
Што гэта значыць?
Дык хто-небудзь ведае, што гэта значыць?
Ці ўсё могуць пераканацца ў гэтым?
Не, ніхто не можа ў гэтым пераканацца, у парадку.
Я збіраюся to--
>> ROB: Я збіраюся напісаць Формула проста прама тут.
DAVIN: ОК, Роб збіраецца гэта зрабіць на кампутары, які весела.
ROB: О, мой Бог.
Ці я не буду.
DAVIN: чакання.
СТУДЕНТ: У мяне ёсць пытанне.
DAVIN: Так, вядома.
СТУДЕНТ: [неразборліва]?
DAVIN: ОК, так гэта на самай справе, як, толькі ў агульным,
калі б вы былі паставіць, як, У гэтай дэкларацыі міжнар
Я роўная даўжыні 0 коску роўная sterln, that--
>> СТУДЕНТ: [неразборліва].
>> DAVIN: Гэта добра, таму што that--
СТУДЕНТ: Навошта вы нават трэба выкарыстоўваць даўжыню?
Чаму мы не маглі проста [неразборліва] sterln с, як увесь час [неразборліва]?
>> DAVIN: Вы маеце на ўвазе тут?
>> СТУДЕНТ: Так.
DAVIN: Таму што кожны Час гэта для завес трас,
гэта будзе ацаніць гэты стан.
СТУДЕНТ: справа.
DAVIN: А калі ў вас ёсць sterln ёсць, то гэта
прыйдзецца на самай справе назваць што функцыя кожны раз.
Такім чынам, замест таго, каб проста параўноўваючы яго з міжнар,
Вы збіраецеся тэлефанаваць Функцыя, а затым параўноўваючы яго
на вяртаецца значэнне.
Так, так што гэта проста, так.
>> Добры, ОК, так што зараз кожны можа ўбачыць яго.
Што does-- гэта як, гэта ён.
Гэта варэнне, прама тут.
Што гэта значыць?
Што я раблю?
Так, ідэя?
Так?
>> СТУДЕНТ: Ну, так што, калі Вы ўводзіце масіў,
Вы збіраецеся ісці злева направа,
так вы збіраецеся ісці ў дзесятковай ад ўніз [неразборліва].
DAVIN: Цалкам дакладна.
СТУДЕНТ: Так кожны трэба памножыць
тое, што вы бачылі, як ад значэння міжнар па раз, калі вы атрымліваеце рухацца, што над адным.
>> DAVIN: Выдатна, выдатна, так, напрыклад, давайце
сказаць, што я даў you-- Я буду пісаць тут.
Не, я не.
Я збіраюся напісаць сюды.
Скажам, я даў табе 76, ці не так?
Скажам, я даць вам 76.
Гэта радок для пачатку, добра?
>> Так даўжыня ёсць што?
2, ці не так?
Сума 0.
Тады мы скачам ў нашай цыкл.
ОК, першая ітэрацыя гэта, што гэта будзе?
Гэта будзе сума 0.
Так падвесці раз 10 0.
Гэта бессэнсоўна.
Тады што ж гэта зрабіць?
СТУДЕНТ: [неразборліва].
>> DAVIN: Гэта збіраецца павярнуць, што характар ​​у цэлы лік, ці не так?
Гэта накшталт як з вашым Праблема set-- гэтым light--
гэта накшталт як з Праблема усталяваны на Visioneer.
Вы маеце справу са значэннямі ASCII.
Так што, калі я даю вам, як, сем, але гэта характар,
і вы хочаце ведаць, Добра, што лічба з'яўляецца тое, што?
Так, вы маглі б, так.
Так што лічба, што?
Вы можаце адняць 0 ад яго, але вы павінны адняць 0, характар.
>> І дзе некаторыя людзі атрымаць спатыкнуўся, яны
як, у парадку, добра, я павінен ведаць, значэння ASCII для гэтай віктарыне?
Не, вы, безумоўна, не трэба ведаць ASCII
Значэння, быццам бы, у ніжнім рэгістры , Верхні рэгістр, нуль.
>> ROB: Там няма прычын, каб калі-небудзь паставіць гэта на шпаргалку.
>> DAVIN: Вызначана не марнаваць сваю прастору ў гэтым.
Вы можаце literally-- толькі замест сказаць 48, як аж
там, што эквівалентна кажучы адзін, адзін апостраф,
так, сапраўды гэтак жа.
>> ROB: Вы маглі б падумаць, пра гэта, як if-- Бога, мне патрэбен мой,
oops-- вы маглі амаль думаць пра гэта як быццам у нас ёсць што-то накшталт гэтага хэша
вызначыць 0 як 48.
Гэта не будзе працаваць.
Але думаць пра гэта як адзін цытатай 0 апостраф, і для ўсіх персанажаў.
Думайце пра гэта як канстанта, ўяўляе гэта значэнне ASCII.
>> DAVIN: Так.
Такім чынам, у першы раз праз, так з 76-- так у першы раз праз,
гэта толькі сімвал 7 мінус сімвал 0,
і тыя сем integers-- добра, тыя,
сем прасторы адзін ад іншы на ASCII графіцы або любы іншы.
Так што збіраецца вярнуць Int з 7.
Так што цяпер, сума роўная 7.
>> Добра, добра, давайце пяройдзем у гэты цыкл зноў.
Добра, зараз гэта сума раз 10.
Так вы эфектыўна перамяшчаючы 7 налева.
Ці мае гэта сэнс?
Ты эфектыўна перамяшчаючы яго налева.
>> І тады вы add-- гэта будзе 6 мінус 0.
Вось 6.
Так што гэта будзе 70 плюс 6.
76, што ваш нумар.
Такім чынам, незалежна ад таго, які колькасці Я даў вам, гэта павольна проста
збіраецца зрушыць вялікія значэння налева, 1 фактар ​​10
кожны раз на працягу цыклу, а затым дадаць на па меры неабходнасці.
>> У спіну?
СТУДЕНТ: Мы не павінны рабіць любая праверка ў праграме?
>> ROB: Так наколькі праверкі ідзе па праграме,
мы б расказаць вам даволі шмат, што вам трэба, каб праверыць.
Калі мы не кажам вам што-небудзь, то, як правіла
Выкажам здагадку, у вас ёсць, каб праверыць большасць рэчаў.
Як вы, магчыма, проста каб быць у бяспецы, вам верагодна, варта праверыць эй, гэта з нулявым?
Тады я паняцця не маю, што такое вярнуцца.
Але мы б вам сказаць, такога роду рэчы.
0, я не ведаю.
>> DAVIN: А чаму вы хацелі б пераправерыць, калі з роўна нуля?
СТУДЕНТ: [неразборліва].
DAVIN: З-за паўкокс зоркі.
Гэта паказальнік.
Так цалкам прымальна Дэкларацыя, я мог бы сказаць, у парадку,
з роўны нулю, таму што гэта можа быць паказальнікам на нуль.
Таму, калі ў вас ёсць паказальнікі на вашым шляху ў, як гэта,
Вы, верагодна, варта праверыць.
Таму што, калі вы не пераканайцеся, што і то вы потым у ваш цыкл,
і вы doing-- стрымгалоў ўніз.
Скут ўніз.
>> ROB: На жаль, гэта так.
>> DAVIN: І так, як, калі гэта нуль, а затым вас
зрабіць гэта, што памылка вы збіраецеся атрымаць?
СТУДЕНТ: Вы збіраецеся атрымаць набор віну.
DAVIN: Вы збіраецеся ўсталяваць віна, правільна, таму што ты
спрабуючы індэкса ў нуль.
Такім чынам, вы будзеце спрабаваць індэкса ў памяць, што вы не валодаеце.
Такім чынам, гэта, калі гэта з'яўляецца нулявым, і Вы робіце гэта, вы будзеце цыклу.
>> ROB: Я таксама думаю, што на экзамене, у якім мы задалі гэтае пытанне, мы кажам вам,
што вы можаце проста лічыць, гэта станоўчае лік.
Таму што atoi Таксама чакаецца апрацоўваць адмоўныя лікі,
так што вы павінны былі б асаблівы выпадак.
Эй, гэта першы сімвал працяжнік, і ў гэтым выпадку, у парадку,
Зараз гэта адмоўнае лік.
Мы раскажам вам гэтыя віды рэчаў.
Мы раскажам вам, што вам трэба для працы.
DAVIN: Так.
Так што я ўпэўнены, што некаторыя людзі могуць have-- калі вы пачалі глядзець на старых экзаменаў,
Вы бачылі sterln.
Гэта папулярны.
І я думаю, што ў sterln, вы павінны былі зрабіць гэтую праверку для нуль, вяртанне
0 або што-то падобнае.
Як, вы павінны былі праверыць на нуль.
І калі вы не зрабілі, што было пазначыць прэч на віктарыне.
Так ці інакш, робіць усіх адчуваю ў парадку з atoi?
Ці хоча, каб хто-небудзь перайсці частак зноў?
ROB: О, так, я думаю, мы таксама сказаць, што вы
можна лічыць, што ўсе is-- што яны на самой справе увёўшы нумар,
што вам не прыйдзецца турбавацца аб, як, будучы літары ў радку, таму.
DAVIN: Так.
Так?
СТУДЕНТ: Ці можаце вы пайсці над больш адзін раз, калі
Вы карыстаецеся падвойныя двукоссі і адзінарныя двукоссі?
>> DAVIN: Вядома, так двайныя двукоссі, вельмі проста, гэта падвойныя двукоссі з'яўляюцца радкамі.
Так што, калі вы двойчы цытату што-небудзь, што гэта радок.
Так, як, калі б мне давялося гэта 0 тут, і я зрабіў гэта, гэта радок.
ня Вось ўжо не персанаж.
Так што я не магу знайсці гэтую велічыню на маім ASCII Графік, таму што гэта радок, так.
>> ОК, любыя іншыя пытанні?
Так?
>> СТУДЕНТ: Такім чынам, вы маеце ўжо адказаў на гэтае пытанне,
але як, калі мы на самай справе пішу гэта на віктарыне,
Вы хочаце, каб мы напісалі з скарачае нулі [неразборліва]?
DAVIN: Не.
Пытанне было павінен вам ўставіць касую рысу праз нулі
каб паказаць, калі яны нулі?
Не, мы з гэтым разбярэмся.
Так, дзякуй, што яны добрыя.
Добра, што-небудзь яшчэ?
Ці хоча хто-небудзь to-- таму я думаю, мы запускаем трохі на працягу доўгага часу.
Хочаце ўбачыць яшчэ адзін, або?
СТУДЕНТ: RandomInt.
>> DAVIN: RandomInt, ОК, дакладна.
Так што давайце рабіць RandomInt.
Я зраблю гэта тут.
Так RandomInt на самай справе значна прасцей.
Я думаю, што atoi, верагодна, адзін з самых цяжкіх што мы папрасілі ў папярэднія гады.
СТУДЕНТ: [неразборліва].
>> DAVIN: Што?
ROB: Я бачу, калі гэта збольшага з прагляду ад сюды.
DAVIN: Ці так гэта?
ROB: Я не думаю, што гэта going-- я думаю, ён збіраецца бегчы направа.
DAVIN: ОК, так што я буду рабіць гэта.
І тады вы проста пакласці яго на экране.
>> ROB: Добра.
>> DAVIN: Вы хочаце быць маім кніжнік?
>> ROB: Так.
>> DAVIN: Ніца.
ОК, я магу сцерці гэта?
>> СТУДЕНТ: Так.
>> DAVIN: Гэта так цяжка.
(Спевы) Ты робіш што вы робіце.
І рабіць тое, што вы не ведаеце.
Добра.
>> Добра, калі я правільна памятаю, на віктарына RandomInt пахадзіў,
ОК, я збіраюся даць вам два нумары, як у а і б.
І я хачу, каб ты даў мне RandomInt паміж гэтымі лікамі.
Так RandomInt збіраецца ўзяць два numbers--
так RandomInt-- і гэта збіраецца вяртаць Int.
>> Так што вяртаецца значэнне?
Я толькі што сказаў вам.
Int, ці не так?
Як гэта, і тады гэта збіраецца ўзяць два цэлых.
Так што гэта зойме Int і INT б, як што.
Так што RandomInt з'яўляецца збіраюся зрабіць, гэта ён збіраецца
вярнуцца выпадковае значэнне паміж гэтымі двума значэннямі.
Так што гэта будзе больш чым, менш, чым б.
Так што я думаю, што вы, верагодна, можа лічыць, што з'яўляецца меншым з двух значэнняў.
Так што, калі мы маем справу з Выпадковасць, што функцыя
мы бачылі, што дае нам выпадковыя рэчы?
СТУДЕНТ: Drand.
DAVIN: Drand, дакладна.
Такім чынам, вы будзеце, верагодна, хочаце выкарыстоўваць drand.
Такім чынам, вы можаце сказаць, інтэрвал выпадковай, і мы будзем проста сказаць, што гэта складае 0 прама цяпер.
І яны мы збіраемся сказаць, ОК, выпадковыя роўна drand 48.
І што ж гэта вяртанне?
Што гэта функцыя дасць вам?
>> СТУДЕНТ: ад 0 да 1.
>> DAVIN: Так, паміж 0 і 1.
Дык гэта будзе be--
>> ROB: І гэта is-- я думаю, мы б расказаць вам пра гэта.
Як можна выкарыстоўваць drand 48.
Вы можаце пераканацца ў гэтым на мінулым экзамену.
Але мы б, верагодна, сказаць вам можна выкарыстоўваць drand 48, які
вяртае паплавок паміж 0 і 1.
>> DAVIN: Так, так, я упэўнены, што на экзамене
ён кажа вам, верагодна, хочаце выкарыстоўваць drand, так.
Дык гэта будзе вярнуцца некаторы значэнне паміж 0 і 1.
І тады тое, што ты захоча зрабіць?
Ну, вы хочаце, каб памножыць по-- пачакайце, я думаю, што гэта, як гэта, прабачце.
Я проста гэта зрабіць.
Я не ведаю.
>> Так бы мінус.
Дык чаму б мінус?
Так скажам, drand дае вам назад int-- ОК, я проста рабіць усё астатняе,
так плюс.
Так што does-- у з'яўляецца б мінус.
Так скажам, што drand дае вам назад максімальнае значэнне гэта магло магчыма
даць вам.
Што гэта будзе?
СТУДЕНТ: 1.
>> DAVIN: 1, ці не так?
Так што, калі гэта 1, а ты памножыўшы яго на б мінус,
добра, вось толькі Розніца паміж мінус А.
І калі вы затым дадаць, што таму на, што ёсць што?
Гэта ў асноўным б.
Ці мае гэта сэнс?
>> СТУДЕНТ: Так.
>> DAVIN: Так што, калі гэта максімум шануеце гэта магло б быць,
гэта будзе адзін.
А потым гэта проста Розніца паміж імі.
Дадаць на, так што гэта збіраецца вярнуцца выпадковым.
І ў выпадку, кутняй drand дае вам назад 1,
выпадковых будзе проста эфектыўна б.
Але гэта максімум, што можа быць.
Так што, калі гэта будзе менш, чым што, так скажам, што яго, як 0,9,
так то 0,9 разы б мінус будзе менш
, Чым розніца паміж б мінус.
>> І тады, калі вы дадасце што на, тое, што значэнне
будзе больш, чым, таму Вы дадаеце што-то на яго,
але гэта будзе менш б.
Такім чынам, вы збіраецеся атрымаць выпадковы лік, таму што вы тэлефануеце drand.
І што рэнд, што выпадковы лік будзе дзесьці пасярэдзіне
і б.
Ці мае гэта сэнс?
>> ROB: Проста, каб паставіць яго ў канкрэтныя лічбы, так
Дапусцім, мы хочам, каб забраць выпадковы лік паміж 7 і 10.
Так бы мінус гэта наш асартымент.
Так што ёсць цэлы шэраг з трох нумары мы хочам, каб выбраць з.
А потым множання што паміж 0 і 1 студзеня,
калі што тое дае нам some-- скажам, што дае нам 1,5.
>> Тады 1,5, мы хочам ісці з 7 па 10.
Так 1,5 плюс 7 падводзіць нас назад у нашым 7 да 10 дыяпазоне.
А потым мы яе захоўвання ўнутры цэлы лік, так што усекается да 8.
А потым мы проста вярнуць гэта.
Так бы мінус гэта наш асартымент.
зрушвае яго ў лічбы што мы хочам у гэтым дыяпазоне.
Так паміж 7 і 10, а затым мы можа вярнуць тое, што мы ў канчатковым выніку з.
>> DAVIN: Так, прыемна.
>> ROB: Дзякуй.
>> DAVIN: Так, у чым справа?
>> СТУДЕНТ: Ці ёсць у нас запусціць яго для любога віду Памылкі ASCII калі we're-- калі drand з'яўляецца
вяртанне паплавок [неразборліва].
>> ROB: Гэтак жа, як Роб сказаў, таму што выпадковая ня INT,
так drand будзе паплавок.
Так, а затым ён размнажаецца па-за.
І вы можаце атрымаць некаторыя выгляд лікаў з якая плавае кропкай.
І тады гэта будзе абрэзаць.
>> СТУДЕНТ: ОК.
DAVIN: Так.
ROB: А калі кампілятар былі папярэдзіць Вы о, як, страта дакладнасці,
проста кінулі на Int ў ёсць, і то гэта добра.
DAVIN: Да?
>> СТУДЕНТ: Ці будзе гэта мець ж верагоднасць атрымання,
як, бы або [неразборліва]?
>> ROB: Так is-- Я на самой справе wondering-- з'яўляецца RandomInt мяркуецца
каб быць нумарам ад меней б?
Маўляў, калі гэта ад 7 да 10, якія магчымасці?
7, 8 і 9, або 7, 8, 9, 10?
DAVIN: я забываю.
На праблемнай set--
>> ROB: Я думаю, што гэта 7, 8, 9.
>> DAVIN: Яна прама кажа свайму уключна і адзін эксклюзіўнай.
>> ROB: Так.
>> DAVIN: Але я don't-- Я не--
>> ROB: Так што я думаю, што гэта з'яўляецца не ўключаны, і ў гэтым выпадку,
ёсць роўна Верагоднасць 7, 8, і 9.
Там няма верагоднасць 10.
DAVIN: Да?
СТУДЕНТ: У мяне ёсць пытанне.
Мы хочам, каб вызначыць функцыю вяртае не адно значэнне, але масіў.
Тады што будзе Сінтаксіс пасля вяртання?
>> DAVIN: ОК, так, то вы would-- пасля вяртання?
Так, скажам, вы абвясцілі масіў дзе-то там.
Тады вам проста вернецца Імя масіва.
>> СТУДЕНТ: ОК, дзякуй.
Тады проста вярнуцца з a--
DAVIN: Ой, пачакайце, вельмі шкада.
Пытанне ў тым, як Вы вяртаць масіў.
>> ROB: Хоць гэта не можа быць масіў, абвешчаны
у стэку або што-небудзь падобнае.
Гэта павінна было б быць што-то malloced, таму Таноса
як вы абысці аўтаматычнае размеркаванне памяці.
>> DAVIN: Так.
ROB: Як вам абыйсці лакальнай вобласці бачнасці.
>> DAVIN: Але вы б проста вярнуць яго name--
>> СТУДЕНТ: [неразборліва] гэта не адзін значэнне, напрыклад, два лікі, так
[Неразборліва].
>> DAVIN: Вы не можаце вярнуцца некалькі лік.
Вы не можаце, як, return--
>> СТУДЕНТ: Я казаў аб вяртанні масіў ці нешта падобнае.
>> DAVIN: Так, так што пытанне я магу вяртаць некалькі значэнняў.
Вы не можаце вяртаць некалькі значэнняў.
Вы не можаце, як, вярнуць тое вярнуцца б ці нешта падобнае.
Таму што пасля таго, як вы вернецеся, вас вярнуцца з функцыі.
І тое функцыя будзе зроблена, і як Роб сказаў, знаходзіцца ў стэку.
>> Так што ўсё, што памяць проста атрымлівае вяртаецца да кампутара.
Усе забываецца, у асноўным.
Так што, калі вы хочаце, каб вярнуцца кратнае значэння, вы павінны вярнуць масіў,
І тое, як вы робіце гэта mallocing.
А потым вы вернецеся х падобнае.
У прынцыпе, вы проста вяртае імя.
І калі вы вернецеся нешта накшталт гэтага, вы
на самай справе не вяртання значэння.
>> Так скажам, у вас захоўваецца значэння ў масіве.
Ты на самай справе не вяртання гэтых каштоўнасцяў.
Маўляў, калі б я вярнуўся ў Int, я сапраўды вяртаюцца копіі значэнняў.
Але калі б я павінен быў вярнуцца нешта накшталт гэтага,
Я вяртаюся спасылку для гэтых значэнняў.
Так я вяртаюся, у асноўным, Адрас памяці для значэнняў.
Ці мае гэта сэнс?
СТУДЕНТ: Так.
DAVIN: Ніца.
Так?
>> СТУДЕНТ: Калі ты выкарыстоўваючы drand тут,
Вы павінны паставіць srand да гэтага?
>> DAVIN: Не, не, я так не думаю.
>> ROB: Так, так што ў вас ёсць сказаць што-небудзь пра srand?
Па змаўчанні вам ніколі не казаў srand наогул, гэта проста зрабіць srand нуль.
Так drand па ўласнай працы будзе.
І ён будзе аўтаматычна насення з бягучы час, з'яўляецца тое, што ён выкарыстоўвае.
DAVIN: Да?
СТУДЕНТ: Ці падабаецца вам [неразборліва] з нумарамі?
DAVIN: Так, можна.
СТУДЕНТ: Такім чынам, вы маглі сказаць, як, у 4 разы 2.
Справа ў тым, што вы не можаце выказаць здагадку, то інтэрвал складае чатыры байта.
Only--
>> DAVIN: Я маю на ўвазе, для віктарыны можна.
[Смяецца]
>> ROB: М-м, няма.
DAVIN: Так, так, вы можаце.
Калі яны пытаюцца вас, як вялікі інтэрвал з'яўляецца, Вы не можаце быць, як, чатыры ці восем.
ROB: О, так што калі Пытанне ў тым, у прыватнасці,
як, калі гэта праблема кадавання, Вы павінны сказаць памер міжнар.
Калі гэта стол, або ён кажа, колькі байт,
Вы не павінны запаўняць памеру цэлых лікаў.
>> СТУДЭНТЫ: [Смяецца]
>> DAVIN: справа, дык чаму ж Памер міжнар важнай тут?
Бо, калі мы збіраемся 32-біт працэсар ці нешта падобнае,
то будзе чатыры байта.
Але на некаторыя з новых матэрыял, гэта можа быць што?
Гэта можа быць восем, ці не так?
Так this-- калі вы проста цяжка код з чатырох, затым на некаторых машынах, ён будзе працаваць.
Некаторыя машыны, ён не будзе працаваць.
Але калі на віктарыне мы знаходзімся як наколькі вялікі інтэрвал?
Пакладзеце чатыры.
ROB: справа.
DAVIN: Да?
СТУДЕНТ: Так таму што мы аб'яўленні [Неразборліва] ўнутры функцыі,
мы павінны паставіць 3 ўнутры гэтай функцыі?
Ці мы можам выкарыстоўваць гэта па-за?
DAVIN: Вы можаце выкарыстоўваць яго па-за гэтай функцыі.
Так ён просіць бясплатна.
>> СТУДЕНТ: губляць дзе [неразборліва].
>> ROB: О, бясплатна не happen-- гэта частка магіі Таноса
з'яўляецца тое, што вы не абмяжоўваецца лакальнай вобласці бачнасці.
Вы маеце поўны кантроль над як доўга вашы зменныя жыць.
Так мы называем Таноса тут, гэта магло б быць цалкам асобная функцыя.
Гэта можа быць праз 10 гадзінаў што мы, нарэшце, тэлефанаваць бясплатна.
>> DAVIN: Так, напрыклад, як, пара тыдняў праз, калі вы, нарэшце,
зрабіць свой слоўнік Speller psets, вы збіраецеся
мець некаторую функцыю, якая стварае тон вузлоў.
Такім чынам, вы mallocing тон вузлоў у гэтай функцыі.
А потым у асобная функцыя, вы
захоча вызваліць усе гэтыя вузлы.
Такім чынам, вы можаце літаральна проста пераходзяць на вызваліць паказальнік, так што адрас памяці
каб тое, што вы malloced.
І што будзе добра.
Вам не трэба, каб вызваліць, як, у той жа самай функцыі.
Так?
>> СТУДЕНТ: Так Таноса Пераменная [неразборліва] за межамі?
Гэта тое, што вы кажаце?
DAVIN: Пачакайце, што?
Прабачце.
>> СТУДЕНТ: Калі зменная Таноса можа быць вольным у любым месцы ў кодзе,
то яны могуць быць даступныя у любым месцы ў кодзе?
Вы можаце трымаць іх мясцовы?
>> DAVIN: О, яна спытала, як зменная, like--
>> ROB: Такім чынам, вы ўсё яшчэ павінны ёсць нейкія даведкі
ў блоку Malloc ў памяці.
Дык вось, мы вяртаемся х.
СТУДЕНТ: О.
ROB: Калі мы не вярнуліся х тут, і гэта было проста пустата,
то мы не мелі б доступу да паказальнік, які быў malloced,
і гэта ўцечка памяці.
>> СТУДЕНТ: ОК.
>> DAVIN: Так як, скажам, вас ёсць гэта, як, прама тут.
ROB: Не.
DAVIN: У маёй асноўнай функцыі, я не магу проста назваць гэтую х і быць, як, у парадку,
у гэтай функцыі, я зрабіў гэта.
>> ROB: справа.
>> DAVIN: Так што я буду называць х у, як, асноўнай ці нешта падобнае.
Вы не можаце зрабіць гэта.
Вы збіраецеся нешта вярнуць.
Але тое, што вы збіраецеся вярнуцца?
Вы збіраецеся вярнуцца адрас памяці.
І таму, што вы вернецеся на памяць адрас, які можа быць даступны ў іншых краінах.
Любыя іншыя пытанні?
Так?
>> СТУДЕНТ: Ці з'яўляецца дадзеная функцыя быць праверка на [неразборліва]?
>> DAVIN: Чаму я не трэба рабіць, што?
СТУДЕНТ: [неразборліва].
DAVIN: Таму што ты ня mallocing нічога.
Так што гэта не-- так, гэта не падабаецца струнны с.
Гэта паказальнік кудысьці.
Гэта ўсяго толькі значэння.
СТУДЕНТ: ОК.
DAVIN: Так.
Што-небудзь яшчэ?
ROB: Да?
СТУДЕНТ: Але калі вы [неразборліва]?
>> ROB: Так што для таго, каб вызваліць памяці, мы б сказалі, тут.
Так х наша паказальнік блок памяці.
Мы бясплатна гэты паказальнік.
І мы не абавязкова рабіць гэта тут.
Мы можам зрабіць гэта ў любым месцы.
Але вы толькі тэлефанаваць бясплатна на што-тое, што Malloc аддачу.
Так Таноса, тут, вяртаецца тое, што ў цяперашні час захоўваецца ў х.
Такім чынам, мы можам назваць свабодным ад х.
Любыя апошнія пытанні?
>> DAVIN: Любыя апошнія пытанні?
Так?
>> СТУДЕНТ: На жаль, вы можаце зноўку тлумачыць чаму вы б вызваліць там?
Чаму [неразборліва]?
>> DAVIN: Для сюды?
>> СТУДЕНТ: Так, як адразу пасля.
DAVIN: Вы, напэўна, не хачу бясплатна тут.
ROB: Вы, напэўна, не будзе.
DAVIN: Так, гэта б нічога не рабіць.
Гэта будзе, як, стварыць памяці, рабіць такія рэчы, да яго,
, А затым неадкладна забудзьцеся пра гэта, так.
>> ROB: Але мы маглі б зрабіць, як, тут па нейкай прычыне.
Мы маглі б сказаць, INT зорку у роўны зваротны масіў.
У сёе з у, магчыма раздрукаваць змесціва.
І вось, нарэшце, мы зрабілі.
Мы можам вызваліць у.
СТУДЕНТ: [неразборліва].
DAVIN: Ці павінен я пракруціць ўніз?
Дзякуй.
ROB: Nice.
>> DAVIN: ОК, вось яно што.
ROB: Добра, добра.
Ўдачы.
>> DAVIN: Калі ў вас ёсць пытанні, напішыце нам.
Ўдачы.