[00:00:00] [Музика свири] [00:00:11] DaviN: Во ред, момци. Така што ова е преглед за прв тест. Е сите подготвени за квиз во средата? ALLISON: Ву! СТУДЕНТ Ву! DaviN: Да. ALLISON: Да! DaviN: Тоа момче е подготвена. Тоа момче, две раце, убаво. Така квиз преглед денес, тоа се случува за да биде околу еден час и половина. Ние сме ќе одат над сите големи концепти што треба да знаете за квиз. Ние сме ќе одат над некои кодирање од страна од примери, кои се наоѓаат на секој тест. И ако имате прашања, слободно да се подигне својата рака и сè како тоа. Па, логистика за квиз онлајн. Па ние ќе да се подели луѓе до во различни соби. Тоа е врз основа на нивното име. Значи, ако имате било какви прашања во врска со, каде што да одат или за каков материјал е, како, официјален збор за она што се случува да биде на квиз, проверете на интернет. И тоа е сè до денес. Значи, ако не постојат прашања кои треба да започне со тоа, ние се случува да се започне. И тука е Алисон. [00:00:56] [Плеска] [00:00:57] ALLISON: Добро, благодарение Роб. Цениме тоа. Дейвин треба да се flipped до ова. Оваа е неисцрпна листа на теми, како и секогаш, како Давин само рече. Консултирајте ја документацијата онлајн за квиз нула. Но, ова е прилично much-- тоа е на програма е сè сме качил над досега. Сè што тука е фер игра, како и се друго кои може да се споменати во предавањето. [00:01:21] Мојот дел, тука е само многу преглед. Существуют неколку вежби дека вие момци би можеле да работат на. Но, во најголем дел, ние навистина сакате да стигнете до Давин со оние код со рака вежби. [00:01:31] Па идам да лета преку ова. Ако имате било какви прашања, ме запре. Ја подигне својата рака. Јас ветувам дека јас веројатно ќе се видиме. Ако не, само да го подвижи наоколу. Одам да се зборува брзо. Се надевам дека секој е во ред со тоа. [00:01:43] Добро, посебен збор, Давин очигледно заборавив да флип преку овие слајдови. [Се смее] Ти си во неволја, човек. Па совети за квиз нула, практикуваат кодирање на хартија. Вие момци се случува да се добијат некои пракса со што сега со Давин, така да нема да биде целосно од себе. Јас мислам дека ние сме всушност ќе во текот на овие две функции. Па ќе бидат добро подготвени таму. [00:02:04] Да бидат запознаени со вашиот проблем комплети. Там биле прашања на претходната квизови која ќе се прашате, на пример, да се код нешто многу слична на Марио. Па се многу запознаени со вашиот проблем поставува, како и како прашања бараме од вас во почетокот на форма да го пополните, ќе ви служи многу добро. [00:02:20] Направите претходната квиз под временски ограничувања. Овие квизови се долги. Оди навистина брзо време. И често, вие не сфаќаат колку е брзо оди додека вие всушност стави себеси под оние ограничувања. Значи, ако сте само може да ги клесаат, знаете, 75 минути игра, или вечерва или утре да се земе една од овие квизови под тоа, ќе биде во многу подобра форма. [00:02:41] И, исто така, создавање на референтна листа. Запомнете, вие да добијат еден страница предната и задната страна како референца за вашиот квиз во средата. Создавање дека е одличен начин да учат. Нешто што имаш проблеми со тебе сакаат да се вклучат на таму. Нешто што вашиот TFS биле, како, ова е навистина важно. Вие треба да знаете ова, се можеби работи што треба таму ако вие не мора да ги меморира. Дури и ако не ги знаат навистина добро, понекогаш го имаат таму е само вид на комфор за вас, што знам квизови се стресни. Па секоја утеха ќе го добиете може да помогне. Сите права, исто така, да спијам и јадат и се допаѓа нормално работи дека ние ви кажам за квизови. [00:03:16] Така поаѓање лесно, типови на податоци и големини. Како што реков, ова е само ќе да се мене фрлање многу нешта до тука што треба да знаете. Па ние имаме знаци кои се еден бајти, целочислените кои се четири бајти, долги долг, кои се осум бајти. Во суштина, тоа е само вас сакате да се одржи поголеми цели броеви. Floats, кои се четири, дуплира, кои се осум. Повторно, само ви дава повеќе простор за вашата лебди. И потоа внеси ѕвезда, па секоја покажувачот на 32-битен машина, која е сите вие ​​момци треба да знаеме, е четири бајти. [00:03:44] Така што сите работи што треба знам, можеби работите сакате да имате на Вашата референтен лист. Добро, бинарна конверзија на бинарни, конверзија да хексадецимален, напред и назад, сите работи што треба да знаете. Па од бинарни да децимални. Вие, момци, сакате да се земе брз минута и се обиде да дознаам секоја од овие а потоа да ми кажете што се тие? [00:04:06] Јас исто така имам бонбони во торбата, така што секој кој одговори добива бонбони, патем. И имам многу од тоа. Дозволете ми да го имате овој. Одам да се даде на тоа да Габе. Па можете да рака бонбони кој и да е убаво и соработка. [00:04:21] ОК, видов рака има во грб. [00:04:26] STUDENT: Да, првиот е 42. [00:04:28] ALLISON: Да, првиот е 42, точни. СТУДЕНТСКИ: [нечујни]. [Смеа] ALLISON: Втора една, таму назад во жолта? СТУДЕНТ 110.010. ALLISON: Точно, и ова последната, овде долу на дното? Исто така, да, знаеш сакаат? Само да ги фрлиш бонбони. Како за бонбони за секого? [00:04:46] СТУДЕНТСКИ: [нечујни] кога сме готови. [00:04:47] ALLISON: Шшш. А потоа последен. Кој сака да се одговори? Право таму. [00:04:52] СТУДЕНТСКИ: 11.100. [00:04:54] ALLISON: 11.100, погледнете во тоа. Алал да му е, голема работа, сите. ОК, секој вид на се разбере процесот за тоа? Сте, одејќи од бинарни да децимални начинот на кој јас имаат тенденција да го направи тоа, пишува надвор овластувањата на 2. Па јас се каже, во ред, 0 пати 2-0, па тоа е 0, 1 пати 2 до првиот, е 2 оди наваму тој начин. Сака ли некој да ми експлицитно да поминат низ еден пример на бинарен? Добро, кул. [00:05:28] Децимални на бинарни е многу сличен. Имам навика да се напише на овластувањата на 2. Започнете со еден што е најголема, но не одат минатото децималниот дека сте го барате. А потоа вид на работа на вашиот пат наназад додавање од работи како што е потребно. [00:05:42] И тогаш со тоа, тоа е исто како нормален прилог. Ако некогаш имате случај кога сте додавање на две 1s, тоа очигледно станува 2. 2 во бинарен е сега 1 0, така што треба да ги вашите 1 во следната колона. Кул. [00:05:59] Хексадецимален, ова може да биде нешто што е малку помалку познати. Па како Роб беше само да ми кажеш претходно, неговиот трик за ова е само да го разделуваат во четири бајт парчиња, во ред? Битови, жалам. Види? Благодарение Роб. Ова е причината зошто сме тука. [Шума] ОК, па ние само го растури во четири бита парчиња. Значи со бинарни да хексадецимален, ние се погледне во првите 4, што е ако имаме четири 1S во ред, она што бројот се дека ги симболизираат? [00:06:25] СТУДЕНТСКИ: Ф. [00:06:26] ALLISON: Па во овој случај, она што е 11111111 или-- да? СТУДЕНТ ФФ. ALLISON: Совршена, ФР. Толку голема, бонбони за вас. Сега, за тоа како хексадецимален бинарни, ние Само помислете за тоа каков вид на во обратна насока. За секој број или писмото што имаме во нашите хексадецимален, само да го претворат во своите четири малку [Се смее] на своите четири малку реализација. Па 5, во овој случај, што е 5 ако ние сме го претставувајќи со четири бита? [00:06:58] СТУДЕНТСКИ: 010? Мм-НВ. А потоа и, што е всушност 10, ќе биде? 1010. Значи ние го имаме тоа, тука. Така конвертирање помеѓу хексадецимални и бинарни, всушност, не е така лошо. Ако се погледне во него во четири малку парчиња, ќе биде златна. Everyone-- да? [00:07:19] ROB: Ова е глупаво, но јас секогаш се сеќавам А, со оглед би требало да биде 10. И бинарни е само 10 10, so-- [00:07:26] ALLISON: А, таму одиме. [00:07:27] ROB: Еј. [00:07:28] ALLISON: Еј, бонбони за Роб. Существует не-чоколадо работи таму. Па можете да имате некои. Така ASCII математика. Однесуваме. Така ASCII математика, како вие момци веројатно добро се сеќавам стр собата 2 со Visioneer и Цезар, ќе направи многу за тоа. Запомнете, ликовите се фундаментално само броеви. Па ние може да го направи математика со нив, исто како што направи математика со целочислените. [00:07:54] Па ние имаме само малку едноставна работа тука. Имаме некои во тоа е иницијализиран до 65. И б еднаква на ASCII вредност на една плус 1, char C еднаква на D минус 1, и char D еднаква на 68. Па тогаш ние се случува да се печати сите од нив, како што гледаме тука. И секој може да ми кажете што ова ќе испечатите? СТУДЕНТСКИ: [нечујни]. ALLISON: Точно, така едно нешто да се забележи е дека ние сме ги отпечатите знаци секој пат, тука. Се назначување иако A и B се целочислените кога ние ги прогласи погоре. Ние ги печатење како ликови од проценти C и нашите printf изјава, така што сите ќе се печати како ликови. И, се разбира, вредност ASCII 65 ќе печати како А. ASCII вредност на А плус 1 ќе биде 66, што би горди да Б. Така, всушност, ние добие А Б В Д Секој добро таму? Било какви прашања? Страшни. [00:08:52] Добро, обем. Така обем е очигледно многу Важно е да се разбере, тука. Многу од вас, ако сте имаат составувањето грешки, и таа вели дека не е нужно пристап до некои променлива, тоа е веројатно затоа што што е дефинирано во рок од еден циклус а потоа се обиде да го пристап надвор од неа, или обратното. [00:09:12] Така обемот на неговото јадро, тоа само одредува каде велиме променлива постои, каде што да го смените, каде што може да го пристап. Тоа е само вид на велејќи дека тие се само места каде што имате пристап на оваа променлива. [00:09:26] Па два опсега дека зборуваме за за време на часот се глобални и локални. Така глобални променливи зборуваме за кога ќе се да ги дефинира горенаведените главни. Тоа значи дека целиот свој програма има пристап до него, и тоа постои толку долго како на програмата се извршува, во ред? Локален значи дека тоа е повеќе ограничени на еден регион. Значи секогаш кога ќе имаат специфични функции како трампа, ние секогаш се зборува. Ние секогаш се зборува за трампа со и B. А и B постои во рамките на таа функција. Тие не постојат никаде на друго место. [00:09:56] Како и, кога ќе имаат, ако изјави или за петелки. Секогаш кога треба, на пример, во за телефонска линија имаме int i е еднаква на 0. Имаме некои услов и ние го ажурира. I постои само во рамките на протези на кои за јамка. Ако се обидете да го пристап на друго место, Вашата компајлерот ќе се развикам. Тоа би било како, она што ви се обидува да направам? Оваа не постои. Значи тоа е две различни видови на опсег. Дали тоа се направи смисла на сите? [00:10:23] Па на пример тука, овој е само неколку едноставни програма. Она што мислите вие ​​се ќе се случи на секоја точка дека ние се обидуваме да ги испечатите? Така што ова тука, што ќе се случи? СТУДЕНТСКИ: Тоа ќе печати три. ALLISON: Токму така. Тоа ќе печати три. Она што за тука? СТУДЕНТСКИ: Тоа нема да работи. ALLISON: Тоа нема да работи. Вие сте надвор од опсегот, нели? Локална променлива не постои надвор од овие загради, во ред? И тогаш што за тука? [00:10:56] СТУДЕНТСКИ: [нечујни]. [00:10:57] ALLISON: Што? Роб, оди. [00:10:59] ROB: Јас само рече. Глобални променливи треба да биде глобалната црта променлива. [00:11:04] ALLISON: Ах, да, жалам. Ви благодариме, Роб. Роб како нашите жител компајлерот. Тој само ќе се развикам нас кога ние е потребно. [Се смее] Да, треба да биде глобален црта променлива. Значи под претпоставка дека тоа е глобален црта променлива, што ќе се случи овде? СТУДЕНТСКИ: Тоа ќе работат. ALLISON: Тоа ќе работат. Па тоа ќе се печати, па само многу едноставен пример. Добро, прототипови. Па очигледно, ние навистина се нагласи за вас момци за да се направи функции, ако тоа да има смисла во вашите програми. Но, се разбира, кога ќе се направите свој функции, обично ќе ги дефинираат по главни. И ќе се обидат да ги нарекуваат во главната. И ако не го користите прототип, Вашата компајлерот ќе се развикам. [00:11:46] Прототипот е во основа само кажува вашиот компајлерот дека имам оваа функција под главните. Одам да го наречеме пред да го дефинира. Само се издржи. Јас ветувам дека тоа е дефинирано, и вие ќе имаат се што ви треба. [00:12:00] Па начинот на кој го правиме тоа е само вашиот враќање тип, на вашата функција име, вашиот влез листа. Тоа е во основа на првата линија на вашата функција декларација. Тоа е навистина сето тоа е. Но, ова е само општ вид на формат. [00:12:14] Значи, во нашиот пример овде, кои вие момци треба видовме во делот во одреден момент, имаме некои int коцка дека зема некои int на влез. И ние имаме нашите главни функција, која повикува коцка. И коцка е дефинирана по тоа. [00:12:28] Значи, ако ние не имаат int коцка влез на врвот, кога ние се нарекува коцка во рамките на главната, нашите компајлерот ќе се налути на нас. Тоа би било како, што ви се зборува? Коцка не постои. Јас не знам што си бара. И јас сум само ќе запре. [00:12:43] Туку затоа што ние го сторивме нашиот прототип на врвот, што рековме, знаеш, кога ќе видите коцка, не грижете се за тоа. Јас ветувам дека тоа е дефинирано подоцна. И тоа ќе ви овозможи да го направи она што го сакате. Значи, ако некогаш имате функција која е прогласена откако ќе го нарекуваат за прв пат, треба да се имаат прототип на врвот. [00:13:01] Да? [00:13:02] ROB: Тоа е квадрат, не местење Рубикова коцка. [00:13:04] ALLISON: О, боже. Јас не have-- Габе, Мислех, сте биле ни коректор. ОК момци, го носат со мене, тука. Се надевам дека секој е добивање на идеја. Добро, така што ова треба да имаат бил квадрат, не коцки. Но идејата останува иста. Било која функција, дека ние сме нарекувајќи по Всушност треба да имаат прототип. Секој добро со тоа? Било која друга грешки? ОК. Било грешки овде пред да започнеме, Роб? [Се смее] Добро, така structs. Во суштина, structs ви овозможи да се создаде свој тип на податок. Толку многу како int или знак или плови, тоа е само уште еден тип. Сакам да мислам на тоа како, како, создаде свој тип на податок. Така што ви овозможува да го направите тоа. И тоа има различни типови на податоци. [00:13:56] Значи, ако се сеќавате, во низа, ние само може да се одржи работи од сличен тип. Structs ни овозможи да се одржи на повеќе работи од различни типови. Значи во овој случај тука, ние имаат структура наречена студент, именувана тука на дното. И ние имаме некои int id и некои стринг име. Така што ова е само уште еден тип на податоци. Ние сега имаме еден вид на податоци се нарекува ученик. [00:14:20] Така затоа што може да мислам на то како само уште еден тип на податоци, можеме да се декларираат променливи како што би било која друга. Па, наместо само што има, како, на int студент, ние само треба студент, студент 1. О, погледнете. Тоа е Роб. Па еве ние сме прогласување структура, или променлива наречен ученик 1 од типот студент. Па затоа се случува да имаат проект и име поврзани со неа. [00:14:45] И начинот на кој ние пристап до овие елементи во рамките на нашата структура е со операторот точка, тука. Значи во овој случај, ние прогласена за некои ученик 1. Се доделен на ID за да биде 1. И ние се доделени името да биде Роб. ОК, секој добар со тоа? Користете го за само like-- да? [00:15:06] СТУДЕНТСКИ: Да, typedef-- кога не ни треба да се користи ЬурейеЕ? [00:15:09] ALLISON: Значи ЬурейеЕ само вели that-- Роб, ќе може да ме поправи на ова, ако јас сум wrong-- но ЬурейеЕ е само, всушност, прогласувајќи ја како тип кој можете да го користите, нели? [00:15:19] ROB: Да, тоа е во основа, па тоа е само создавање псевдоним или прекар за тип. Така што можете да напишете дека [нечујни]. Така [нечујни] постои, и сега ние само треба [Нечујни] средства токму истото. И така тука, ние сме ја внеле, мислам, некои структура тип 2 [нечујни]. Па тоа е само прекар за даден тип. [00:15:40] СТУДЕНТСКИ: String [нечујни] библиотека се напишани до како знак ѕвезда. [00:15:51] ALLISON: За нашите цели тука, ако сте за прогласување на структура, само го прават ЬурейеЕ структура. OK, па претходно, ова е само нормална променлива тука. Ние го пристап со точка. ако имаме покажувач структура, може да се, всушност, користат стрелките, што е прилично кул. [00:16:10] Значи во овој случај, имаме покажувач студент 1 кое е од тип на ученик. Запомнете, со вашиот покажувачот изградба, сакате Без оглед на типот на вашиот покажувач е да се покажува за да биде на почетокот. Па ние имаме некои ученик 1, тука. А од оваа студент 1 сега е заострена, ние всушност може да оди ученик 1 стрела име наместо на dot, поради тоа што е покажувач, и додели Роб. И сега, ако сакаме да промени Роб Давин, ова е само ви покажува на поинаков начин да го направи тоа. [00:16:43] Така, наместо на користење на стрелките, вие може да also-- ќе ја завршам ова и потоа се земе дека question-- што би можеле исто така, направи референца ученик 1. Тоа е велејќи дека како одат на се што е на ученикот 1, кое ќе биде нашиот студент структура. Пристап до неа со точка и елемент што сакате, а потоа го превъзложите. Существовал прашање. СТУДЕНТСКИ: Да, па како да дојде имате да се користи [нечујни] кога сте прави студент ѕвезда без [Нечујни] студент? ALLISON: Бидејќи ова е создавање на покажувач. ROB: Ние ќе се зборува за тоа. ALLISON: Ние ќе се зборува за тоа подоцна во прегледот. Па само го задржи таа мисла. Ако се уште ви пречи при крајот, дојде да разговараат со еден од нас. [00:17:20] Па овие го прават токму истото. Ние сме само ви покажува две различни начини да го направи тоа. Student 1 е сега покажувач, така можете да пристапите Име елемент во рамките на структура со стрела. Или можете да разыменовывать вашиот покажувач, и тогаш имате пристап до него како што нормално би. Дали тоа го прави смисла да секој еден? Ако целиот покажувач работите се малку збунувачки, Габе ќе зборуваме за тоа, а потоа можеби и ова ќе се направи повеќе смисла. Да? [00:17:46] СТУДЕНТСКИ: Да, па како е ова различно од? ALLISON: претходниот? Така што студентот 1 на овој случај не е покажувачот. Тоа е само вашиот вистински структура. [00:17:54] СТУДЕНТ ОК. [00:17:55] ALLISON: Со оглед на оваа е покажувач кон структура. [00:17:58] СТУДЕНТСКИ: Добро, но тоа го прави вид на заврши работа на истиот [нечујни]. [00:18:02] ALLISON: Тоа ефикасно работи на истиот. Вашата синтакса е само различни. СТУДЕНТ ОК. [00:18:05] ALLISON: Да, тие се ефективно исти. Тоа е само во зависност од контекстот, можеби ќе сакате еден над друг. Да? [00:18:11] СТУДЕНТСКИ: Кога ќе го направите референци за 1-- ALLISON: MM-хм? СТУДЕНТСКИ: Зошто го правите имаат голема заграда? ALLISON: Бидејќи студент 1 е покажувач. Така што треба да бидете сигурни дека сте само разыменование покажувач. [00:18:22] СТУДЕНТ ОК. [00:18:23] ALLISON: Значи во овој случај тука, загради околу неа значи дека сте разыменование ученик 1. Така си оди до местото каде што студент 1 поени, што е вашата структура. Така, сега можете да се сетите на неа како што структура, за да можеме да ги користат нашите нормални точка операција. Било какви други прашања? Кул, неверојатна. [00:18:48] Така последно нешто, мислам дека е мојот последен слајд, уо! Добро, така подвижна запирка непрецизност. Ние разговаравме накратко за ова за време на предавањето. Во суштина, ние имаме бесконечно многу реални броеви. И ако некој од вас момци сакам математика, има сите видови на кул работи со нас. [00:19:05] Но, постојат бесконечно многу реални броеви. Но, тие се само конечен многу делови кои ги имаме. Па ти си секогаш ќе имаат непрецизност, е за сите. И тоа е тоа е само вид на како нешто што треба да знаете. Дека, како и ние може да побара од вас зошто подвижна запирка непрецизност постојат? Па само нешто што треба да знаете. И со тоа, јас сум вртење над неа, показалки. [00:19:27] Бинки: Здраво, момци. Бинки Моето име. Одам да се зборува за совети. Да, така е, всушност, совети мојот омилен дел во овој курс. Па само да се направи јасно што Алисон говореше за тука, па причина why-- единствената разлика тука, голема разлика е начинот на кој декларираме работи. Така студент ѕвезда значи ова е покажувач кон ученикот. Со оглед на тоа слајд пред, ученикот е вистински структура, како вистински студент, којашто содржи некоја од тие работи. [00:19:54] И причината зошто ние сакате to-- да Давин? [00:19:57] DaviN: Што значи стрелка значи? [00:19:58] Бинки: стрелките на средства иста како оваа. Така што навистина не треба стрелката. Како, ако сте само програма во C, можете само да го користите овој. Жал ми е, јас не она што е. Вие само може да ја користите оваа синтакса. [00:20:14] Но, некои луѓе, кога тие беа дизајнирање C, тие сфатиле дека луѓето користи што синтаксис толку многу, дека тие ќе се допаѓа само да излезе со синтакса структура за тоа. И оваа се одржа во форма на оваа стрела. И тоа е навистина убаво, бидејќи го симболизира нешто како ние сме всушност следниве ова стрела, овој покажувач, кон некои простор во меморијата. И кога ќе стигнеме таму, ние сакаме да погледнеме во името на тој студент, ако тоа го прави смисла. ОК? [00:20:43] Па ова е иста. Ова е токму истото што е оваа. Тие се составени токму истото, во ред? И причината зошто ние тука Примерок нешто, е поради тоа што, во овој случај, нашата променлива е всушност само покажувачот променлива. Па ние само треба некои простор во меморија која во рацете држи покажувач. Ние навистина не треба секој простор што ја има конкретната структура. [00:21:06] Па ова мора да се направи во два чекори. Ние мора да се создаде меморија за да се стави структура во. И ние треба да се создаде меморија за да се стави покажувачот во. Па тие се во основа две различни варијабли, тука. Еден од нив е од типот студент, освен тоа навистина нема име. А другиот е од типот студент ѕвезда. А потоа студент 1 точки таму, ако тоа има смисла. ОК? [00:21:28] Така причина зошто ние ги користиме покажувачи е бидејќи сè во компјутер, секој променлив во компјутерот има две работи. Тоа има своја вредност. И тоа има свои адреса. И добар начин да се conceptualize ова е има многу проблеми кога ќе обидете да го користите функции. И ние си оди за да се обиде да погледне во еден од нив. Имено, тоа се случува да мислам на меморија, како кутии. [00:21:50] Вие секогаш мислев на променливи кога ќе се каже Na е еднакво на 5. Мислите за ставање 5 во кутија. Па што ако сакате да го помине дека int во функција? Вие само pass-- јас не знаю-- x во функција. Но, она што се случува е нормално, исто како и луѓето, ти би помислил нешто како јас сум кој поминува од кутијата на лице. И тоа не е навистина се случи во компјутери. Што се случува е копирате вредност на полето кутија на лицето. [00:22:17] Па што јас се обидувам да го кажам е дека ако имате function-- sorry-- тука, ако имаме функција како пет до таму, ако се обидете да помине променлива, тоа е само случува да копирате. Ако иницијализира NX е еднаква на 3, тоа се случува да се копија од оваа вредност до променлива таму горе. Добро, и ова е вид на причина Затоа сакаме да го користите совети. Бидејќи наместо на давање само на вредноста, наместо само поминува само вредноста на функцијата, ние сакаме да го помине со повикување. Она што ние го нарекуваме помине со повикување е вид на давање на полето на функцијата, така што функцијата може, исто така, промени на вредностите во рамките на тоа поле. [00:22:53] Добро, па само некои основни покажувачот работи е да се создаде покажувачи, можете само да го прогласи тип, и ќе се стави една ѕвезда веднаш по неа. И типот е само она што го покажувајќи кон. Па ако е int ѕвезда, сте покажувајќи кон int. Ако тоа е знак ѕвезда, сте покажувајќи кон табелата. И ако е студент ѕвезда, сте покажувајќи кон ученикот. ОК? [00:23:08] И тие се сите 4 бајти долго. Затоа што оваа променлива тоа не е така, всушност, треба да се одржи знак, int, или студент. Тоа само треба да се одржи адреса. Тоа е причината зошто тие се сите 4 бајти долг во една нормална 32-bit машина. ОК? Па овде, x е променлива, што укажува на некоја int. y поени на Чар. z поени до float. Било какви прашања тука? Кул. И постојат две различни симболи тие имаат да се има предвид кога доаѓаат во покажувач. Така референцирање и разыменование се големите. Така симболот на име на променлива ви дава? СТУДЕНТ адреса. Бинки: адреса. Значи, ако сте се изјасни int е еднакво на 5, а потоа го симболот на се случува да ви даде адреса. И ти всушност може да се обидете да се печати дека и види она адреса во меморијата Вашата променлива има. А потоа dereferencing-- така што беше референцирање, добивање на address-- разыменование е токму спротивното. ОК, исто како и пати е спротивно на поделба, ѕвезда е спротивно на симболот. Така разыменование средства одат таму. Значи, ако ви даде star-- јас не знаю-- 50, тоа е ќе се обидат да се оди на адреса на број 50 во внатрешноста на вашиот компјутер. Добро, и зошто ние се види дека тие се спротивставени? Затоа што она што се случува ако го направите нешто како ѕвезда го симболот? Па, симболот дава адреса на променлива, на адресата на a. Но ѕвездата значи одиме таму. [00:24:35] Така што се случува ако одат на адреса на? Вие само се стигне до, нели? Па оди на адреса на a е истото како a. Тоа е причината зошто тие се обично наведени на оваа same-- и ова се наведени како спротивна на операторите. ОК? Толку кул. [00:24:53] Под хаубата, на пример, ако ние прогласи int x е еднаква на 5, ние имаат променлива. И се сеќавам дека реков секој переменная-- и ова е добра работа да се задржи во mind-- има две различни нешта поврзани со. Таа има упатено и вредност. ОК? [00:25:07] Така што вредноста во овој случај е 5. И адреса is-- да речеме, јас сум правејќи нешто up-- тоа е 0x04. И единствената причина зошто ние обично претставуваат адреси во хексадецимален е еден, бидејќи тоа е како добро. Тоа важи и со бинарни. Тоа е лесно да се претворат во и од бинарни. И тоа не се премногу големи, ако имаш многу голем број. Па ние сакале да ја користат хексадецимален во печат адреси. Но, јас би можеле да претставуваат ова како цел број. Тоа е во ред. [00:25:32] И така тоа има адреса 4 и во вредност од 5. А потоа јас реков int ѕвезда покажувач. Така што ова е различен тип, најава. Int ѕвезда покажувачот е еднаква на адреса на х. Па што се случува да се биде вредноста на меморија? Тоа се случува да биде адреса на x, овде долу. OK, па на вредноста се случува да се биде иста како и адресата. Тоа е задача да работи јас го правам. А потоа кон меморија се случува да имаат своја адреса, која се испоставува, во овој случај, 8, OK? [00:26:03] И тогаш јас се создаде нова цел број копија. И велам int копија е еднаква одам таму. Така одат за тоа што кон меморија е да се покажува. Па, што е ова кон меморија имате? Кон меморија има 0x04. Што се случува ако се обидат да одам таму? Јас ќе се најде човек кој има адреса х и кој има адреса 4. И кој има одговори на четири е х. Дали тоа има смисла? Да? [00:26:28] STUDENT: Во овој случај, не е покажувач на говедо? [00:26:32] Binky: Во овој случај, it's-- добро прашање. Јас навистина не мислам за ова при донесувањето на овие адреси. Но, ако тоа не е, како, на сите овие се локални променливи, тогаш х се случува да се живее in-- сè, се случува да се живее во магацинот. Значи се што се случува да биде покажувајќи на магацинот. Можете само да се на куп кога ќе почнете да го користите Примерок, нели? [00:26:52] Значи, ако се сеќавате оџакот е во секое време ќе се јавите на функција во вашата програма, како на пример, главниот на пример, или било која друга функција, како printf. Сите на локални променливи се случува да се стави во магацинот рамка. И тие се случува да се добие како крената во магацинот. Тоа е она што се нарекува оџак. И сите оние локални променливи се случува да биде таму. И heap-- и ние ќе да се зборува повеќе за овој later-- грамада е местото каде што сите на динамички доделени мемориски животи. Кул? [00:27:20] Ние одиме на овој слајд. Да? [00:27:22] СТУДЕНТСКИ: Зошто не се int копија враќање 0x04? [00:27:27] Бинки: Зошто не се int копија враќање 0x04? [00:27:30] СТУДЕНТСКИ: Зошто не е тоа што [нечујни]? [00:27:32] Binky: Бидејќи она што е вредноста на меморија? [00:27:37] СТУДЕНТСКИ: 0x04. [00:27:38] Бинки: 0x04. Што се случува ако се оди до 0x04? Што добивате? [00:27:41] СТУДЕНТСКИ: О, во ред. Бинки: Гледаш? СТУДЕНТСКИ: Да. Бинки: Значи ќе добиете 5. Па копија се случува да имаат 5, ако тоа го прави смисла. Да? [00:27:49] СТУДЕНТСКИ: Може ли да има добивано 5 во вредност кутија [нечујни] ако се стави копирате int [нечујни]. [00:27:55] Бинки: Int-- ние би, да. Што би го направиле доста истото. Но, овој начин, ние може да го положат се обрати до функции. И тоа е кул работа ние си оди за да се направи токму сега. [00:28:06] Така овој вид на вежбање секогаш доаѓа до on-- многу обично доаѓа на квизови. Така, тоа е навистина добро да се обиде да направите тој вид на работа себе. Па се обидуваат да ги пратите на она адреса е и сакаме на вредности на променливи се изложени на секоја точка. Значи ова е точно она што ние ќе треба да се направи. Тука, ние треба чекори, еден, два, три, четири, пет. Еден, два, три, четири, пет. И ние си оди за да ги пратите на вредностите на x и a. [00:28:34] Па што ова се прави, ако ова е кабриолет код, ние се обидуваме да се направи до пет. Значи ние се обидуваме да стапиме во променлива и промена на својата вредност до 5. И се сеќавам на мојата аналогија на постоење кутија и предавање полето некој? Па главната има оваа кутија наречена х. И го содржи вредноста 3. И јас се обидувам да го предаде ова поле за да до пет. [00:28:58] И јас сакам да пет до промени на вредноста на ова поле, за да 5. А потоа јас само печати вредност на x. Тоа е она што ми function-- тоа е она што јас се обидувам да се направи. Јас сум само се обидува да се ажурира вредноста на x до 5. Е јасно што функција го прави? [00:29:16] Добро, па што ќе биде вредности на x и токму тука, на првата линија, право пред првиот line-- Јас би say-- на програмата? [00:29:27] СТУДЕНТСКИ: Веројатно ѓубре. [00:29:28] Бинки: Само ѓубре нешта. Па јас само се стави N / A. Така ние навистина не знам. Како, дури и не постојат сепак, бидејќи не сме се нарекува до пет. Int не е декларирана. И X е случува да постои тука, но ние не сме навистина доделени било која вредност на него, така OK? [00:29:46] А потоа, она што се случува да биде вредности на x и во број два? [00:29:54] СТУДЕНТСКИ: [нечујни]. [00:29:55] Бинки: Значи х ќе биде 3. Тоа е лесно, бидејќи ние сме доделување 3 до него. И уште не постои бидејќи една само живее во пет. Па ќе одам да имаат 3 и ништо. или како ѓубре, без разлика, навистина не е дефинирано. И сега, ова е важна линија. Тука, ние ќе треба да всушност повик до пет. И се сеќавам она што го рече. Ние никогаш не помине во кутија. Ние само копија на вредноста на кутија на друго поле. Тоа е сите компјутери се, копирајте работи од едно до друго место. [00:30:27] Па до пет, што всушност го прави тоа е тоа копии на вредноста на x до a. Па она што се случува да се биде овде? Вредности на x и a. 3 и 3, ние само ќе копирате над неа, од x до a. Кул. [00:30:45] Сега сме тука. И сега ние ќе да се ажурира е еднакво на 5. Што ќе се случи во согласност четири? [00:30:55] СТУДЕНТСКИ: [нечујни]. [00:30:56] Бинки: добива ажурирани, но х не се ажурирани. Затоа што х уште живее во главниот, тоа е сосема поинаква блок од меморија. Тоа е поинаква променлива. a е друга променлива. Тие се случи да има иста вредност, бидејќи јас копирани во текот на вредноста на x до a. Но, сега кога правам е еднаква на 5, го навистина не ефект x на било кој начин. Ова е сложени да ја формира дел. Дали има смисла за секого? Да? СТУДЕНТ уште едно прашање, имате 3. Зошто е already-- О, не, тоа е 3. Жал ми е, не е важно. Читам 5. [00:31:29] Бинки: Да, 3, 3. [00:31:30] СТУДЕНТСКИ: [нечујни], да. Бинки: И после ние доделите 5 до a, но всушност не се промени x. Добро? СТУДЕНТСКИ: Да. Бинки: Да? Може да се објасни како повторно копируется [нечујни]? [00:31:42] Бинки: Добро, па кога ќе се јавите на пет на x, па оваа линија на код овде. до пет на x, што е x? x е само 3 на оваа точка, така? Така да само да мислам на ставање 3 во овде и заборавање за х. Само стави 3 тука. Како, ние ќе треба да го копирате во текот на вредност на x за да int тоа е таму. ОК? [00:32:13] Така што вредноста на x е 3. Ние ќе треба да го копирате 3 во текот на. И сето ова други блок меморија, овој друга променлива наречен ќе има 3, како и. Дали тоа има смисла? Да? [00:32:25] СТУДЕНТСКИ: Ако ви даде до пет како да го имаат како цел број, наместо на x a, дека ќе поправат сè? [00:32:32] Бинки: Ако е integer-- не, кои не би поправат сè. Значи тоа е многу добро прашање. Тоа навистина не е важно она што ти се јавам оние променливи. Повторно, тоа нема да биде проблем на обем, бидејќи тие не се исти x. Тие се целосно различни простори во меморијата. СТУДЕНТСКИ: [нечујни]. Бинки: Значи тоа не е важно она што им се јавам. Дека не ги поправи работите, во ред? Повеќе прашања? Да? [00:32:55] СТУДЕНТСКИ: Како е назад во број пет [нечујни]? Бинки: Добро, не сме го направиле тоа уште. Ајде да одиме во број пет, тогаш. [00:33:03] СТУДЕНТСКИ: [нечујни]? [00:33:04] Бинки: Што? [00:33:05] СТУДЕНТСКИ: Дали имате враќање на сите? Бинки: Немаме За возврат, не од главните. Но, главниот враќа 0 автоматски ако не се врати ништо. Да? [00:33:15] СТУДЕНТСКИ: Може ли да се направи main-- или можете да направите до пет враќање? [00:33:24] Бинки: Ние би можеле да имаат до пет врати, да. Но, тогаш ние ќе треба да му ја додели х е еднаква на повратната вредност на до пет, кој ќе биде малку различен програмата. Тоа ќе функционира. Но, она што сакате да го направите е она што е наречен смени нешто во место. Затоа сакаме да всушност го промени тоа поле и не грижете се за да мора да се вратат вредности или ништо. ОК? [00:33:46] Ова е исто како swap функција Дејвид покажа во предавање, освен јас сум само се занимаваат со една променлива. И тој се користи за два, па int a и b и тогаш привремено променлива и какво ли не. ОК? Значи она што е последната линија? По пет враќа, тоа е едноставно се случува да си отиде. Ние нема да имаат повеќе, и само х уште ќе живеат. [00:34:10] И погоди што? x не се промени неговата вредност, по сите, бидејќи ние сме само менување на вредноста на a. Тоа е зошто х беше 3 во текот на. ОК? Добро. Така оваа програма не постигне она што сакавме. Сега ајде да го поправам. [00:34:24] И фикс програма е со користење на совети. Она што го правиме е ние имаме три линии кои се различни. Први се ние не сме поминува х. Ние сме полагање на адреса на х. Така, наместо копирање над вредноста на кутијата, Јас сум уште се случува да копирате нешто. Но јас сум копирање над на адресата на кутијата. [00:34:45] Значи, ако јас помине на адреса на поле, за да до пет, а потоа до пет ќе биде во можност да се најде дека во меморија и промени нејзината вредност. [00:34:53] Така и тогаш, таму горе, имам дека не е int повеќе. a е цел int ѕвезда. Тоа е покажувач кон цел број. И тогаш, бидејќи јас сум полагање на се обрати тука, а потоа она што го правам не е еднакво на 5, бидејќи држи адреса. Значи она што сакате да го направите е да отидете таму и ажурирање на содржината на оваа адреса со 5. [00:35:18] ОК, па ајде оди преку сите линии, еден по еден. Значи, кога да почнам тука, јас уште имаат N / A, N / A, N / A за се што е во прв линија, бидејќи јас не имаат навистина прогласена работи уште. А потоа се редат две, имам х е еднакво на 3. Int ѕвезда не постојат, истото како и претходно. [00:35:39] Сега тоа станува интересно. Па ќе одам да помине. И ајде да се претпостави дека на адресата на x е 12 во хексадецимален. Ајде само да се претпостави ова. Јас ја измисли. Па што сум јас поминува тука е пет. Јас сум поминува 12. [00:35:56] Така што вредност се имаат? [00:36:04] СТУДЕНТСКИ: [нечујни]. [00:36:06] Бинки: Молам? [00:36:06] СТУДЕНТСКИ: [нечујни]. Бинки: Да, како да нека се претпостави дека ние сме тука, сега. Прашувам. [00:36:12] СТУДЕНТСКИ: [нечујни]. [00:36:13] Бинки: Тоа е инициран. [00:36:14] СТУДЕНТСКИ: [нечујни]. Бинки: Затоа што го поминавме нешто на функција. Да? [00:36:19] СТУДЕНТСКИ: Адреса на х. Бинки: Тоа се случува да имате адреса на х. И адреса на x е 12, добро. Па x е ќе биде 3, бидејќи ние не сме навистина е изменета х уште. А потоа се случува да биде 0x12, така адреса на x, бидејќи тоа е она што го поминавме за да до пет. [00:36:38] И тогаш што се случува ако се обидеме да одиме таму? Што сме ние случува да се најде? Значи, ако се обидете да печатите ѕвезда, ние ќе треба да го следат овој адреса и да добијат вредност во внатрешноста. И вредноста не е точно со иста вредност, што X има, бидејќи тоа е адреса на x, која ќе биде 3. Дали сме добро? [00:36:56] Добро, и тогаш и сега, ние, всушност, оди таму. И ние ажурирање без оглед на е во оваа адреса 12. Ние правиме тоа 5. Па сега и двете х и ѕвезда се 5. [00:37:13] Зошто е тоа така? Бидејќи адреса на x е 12. И, исто така, 12, како на неговата вредност. Значи, ако ние ја следиме 12, ние сме само случува да се најде х. Па што и да правиме со ѕвезда ќе се случи до x, бидејќи една содржи адреса на х. ОК? [00:37:34] И ова е како суштината на поправам. Па сега сме во можност, од до пет, всушност пристап меморија, кој живеел во главниот. Па оваа меморија не живее за да пет, како порано, оваа адреса 12. И ние бевме во можност да одам таму и промена на својата вредност до 5. [00:37:50] А потоа кога ќе се вратиме, ние се забораваме за. Ние се забораваме за ѕвезда. И X е уште пет. Значи, ако сакате да спроведување swap функција, вие само ќе го стори истото работа, освен што треба да се int ѕвездите тука, и така натаму и така натаму. ОК? Дали сме добро? Кул. [00:38:10] Така покажувачот аритметички. Оваа е малку слабо тема. Па излегува дека совети се само цели броеви. Можете да мислам на нив како цели броеви. Бидејќи во меморијата, имате како меморија адреса нула, еден, два, три, четири, пет. За да можеме да ги сумира мемориски адреси. [00:38:23] И тоа е обично она што го правите кога ти си во и низа, на пример. Низа е исто како соседни блок од меморија, на многу знаци, на пример, многу целочислените. Значи, ако сакате да одите на второ int или до третиот int, што само може да се сумира нешто на првиот адреса, и ви се случува да одам таму. Значи ова е навистина корисни за тоа. [00:38:39] И работа да се задржи во умот, сепак, е дека тоа не е исто како нормален аритметика во смисла дека ако си имаш работа со, да речеме, int ѕвезда, а вие додадете 1 до него, тогаш вие нема да се додаде 1 до адресата, си оди за да додадете 4 до адреса. Поради тоа int е 4 бајти. [00:38:57] Така што ова е само како одење на низа. Ако имаме низа на многу целочислените и тогаш ние се обидуваме да одат на вториот, тоа е во основа, само собирање на адресата на првиот човек плус 1. Но, тоа нема да be-- само да речеме дека на адресата на првиот е 4. Овде, во овој случај. И ако ние ги сумира, така што ова е она што се случува. Имаме Int. Int x е еднаква на 5. X има вредност 5. И ние го иницијализирате овој покажувач, int у int ѕвезда у еднаква на адреса на х. [00:39:31] Ајде да се претпостави адреса на x е 4. Што ќе се случи Сега, ако јас сума додадете 1 до ш? Тоа се случува да всушност збирот 4, наместо само 1. Па јас додадете 1, но тоа всушност додадени 4, бидејќи компјутер паметни. Па затоа се случува да всушност додадете со з пати на големината на тип на покажувач. ОК? [00:39:58] Па ако тоа беа char, на пример, ако ова беше знак ѕвезда Y, и ако ние додаде 1 тогаш ова ќе биде 5, бидејќи char е 1 byte долго. Добро? [00:40:10] И конечно, стигнавме до покажувачи и низи. Излегува дека во секое време си имаш работа со масив, ти си, всушност се занимаваат со покажувач. Многу убаво концептуална причина за ова е тоа што низи се многу големи. Па се сеќавам дека јас реков дека секој пат кога ќе помине работите околу себе, копирате сè. Значи, ако имате низа тоа е навистина, навистина голема, Вие навистина не сакате да копирате сè, во секое време го помине околу на друг функција, бидејќи тоа е само масивни количини на работа. Па она што го правите е само минато на адресата на првиот бајт. И тогаш функцијата ќе имаат пристап до сите елементи со тоа, што низа. Па ти помина низа од нејзината адреса, така на адресата на првиот бајт. [00:40:48] Значи, ако ние прогласи int низа 3, тука, знаеме како да се пристапи на првиот елемент со користење на конзола нотација. Ако се сеќавате на конзолата нотација, низа заграда 0 еднаков на 1. Па, ова ќе биде точно иста како и само одиме таму и го стави 1. Добро, е иста работа. Така заградата нотација тука ќе биде иста како и оваа линија. [00:41:13] И погоди што заградата нотација за низа заграда 1 ќе биде? Тоа само ќе биде истото како ова. Па додадете една до низа. Се движат еден по должината на памет. Одиме таму, и го стави 2. ОК? И оваа линија е иста работа. Ние сакаме да одиме на третиот кутија, па низа плус 2. Одиме таму, и стави 3. Па во меморијата, што е ќе се случи е дека сме случува да имаат 1, 2, и 3 како три елементи на оваа низа. [00:41:44] Ние би можеле да го направи тоа со користење на нашите познати заградата нотација. Јас само сакам вие момци да знаете дека тие се иста работа. Добро, прашања во врска со ова? Убаво. Сега, јас ќе одам да се предаде над неа, на Хана, [00:41:59] Хана: Yay, Yee-Haw. [00:42:00] Бинки: Зборувајќи за меморија и член нешта. [Аплауз] [00:42:06] Хана: Привет, кул, па ние сме се случува да се зборува малку повеќе за меморија, која ние само адресирани користејќи покажувачи. Па таму се два главни делови на меморија дека сме загрижени со. Имаме магацинот, кој расте нагоре во долниот дел, и грамада, која оди надолу од врвот. И на магацинот се случува да се одржи сите наши пример променливи. Така што секоја повици кон функцијата добива свој малку рамка на оџак. Па како Габе споменавме порано, ако ние јавете се во функција повторно и повторно, ние ќе треба да магацинот работите на магацинот. [00:42:35] И слично на тоа, на грамада, која почнува на врвот се случува да ги собере сите на памет дека ние динамички распредели. И така како ние динамички алоцирање на меморија, ова ќе слезе кон дното. Неколку работи кои треба да бидат свесни за кога ние сме со користење на магацинот и грамада, со стек, ако имаме премногу many-- нека say-- рекурзивните повици, и ние сме нарекувајќи функција повторно, и повторно, и повторно, и повторно, и тоа е напластувањето, напластувањето, напластувањето. И тоа се случува да се сруши во грамада. Ние сме случува да се кандидира на меморија. Што се случува за да се предизвика проблем за компјутер. И дека се вика магацинот претекување. Па тоа е дефинитивно нешто што треба да бидат свесни и да се обидат да се избегне. И грамада, треба да се запамети да не случајно излегуваат во јавноста меморија. Секое време да го користите Примерок, не заборавајте да се ослободи дека меморијата. Инаку, тоа само ќе да биде на куп залудно потрошени, и компјутерот не ќе знае дека тој е слободен да ја користат таа меморија. Значи тоа се неколку работи да се биде многу внимателен со кога си имаш работа со магацинот и грамада. Било какви прашања со ова? Страшни. [00:43:31] Добро, кул. Па овој вид на го има истото идеја како магацинот претекување, каде ние ќе надвор од границите на она што меморија е ние би требало да биде во можност да го користите. Па ја преземе, на пример, пуфер, или ти може само да мислат на тоа како низа. И што рековме, во ред, ние ќе треба да се создаде овој убаво малку низа. Тоа се случува да биде стринг. Или тоа се случува да се сместат карактери. И тоа е само случува да се каже здраво. И тоа е неопределен. Тоа е тоа. [00:43:53] Но, ако јас се злобен и сакаше да направи нешто лошо со оваа низа, што Јас би можеле да направите е да се обиде да напише минатото на крај на низата. И како што ќе видите, ако Јас пишувам доволно далеку, Јас всушност може да влијае на враќање адреса. И ако почнам да влијае врати адреса, Јас влијаат на тоа како на програмата всушност бега. И наместо да се враќа, можете Знаеш, среќен жиците како Здраво, јас може да направи нешто лошо, како да одат во некаде на друго место во вашиот компјутер, се уште меморија, тоа се промени, што сакам да го направам. Значи тоа е она што ова ќе изгледа е ако јас само вид на го полни со случајни ѓубре вредност, во овој случај, само. И тогаш кога јас всушност стигнал до мемориската адреса, Почнав да го полнат со нешто дека не она што јас сакав да го направите. Било какви прашања со buffer overflow? Страшни, летање право преку овој материјал. [00:44:40] Добро, па ние разговаравме многу за покажувачот со Габе. Како ние всушност се добие покажувачот? Како можеме да станеме адреса во меморијата? Па, ние да го користите овој убав повикот на функцијата Примерок, која се случува да се добие малку парче од меморијата, конкретно во грамада, како што се договоривме, и тоа се случува да ви даде назад Покажувач на таа адреса во меморијата. И аргументот дека ние треба да се даде на Примерок е колку простор во меморијата сакаме. [00:45:04] Па можете да видите големината во бајти. Да речеме, на пример, или всушност, во овој пример, ние се доделат доволно простор за 10 цели броеви. Па веројатно она што ние сме случува да сакаме да се стави тука е низа од 10 цели броеви. Па ние го даде големината на целочислените, која ние дознавме беше колку бајти? СТУДЕНТСКИ: 4. Хана: 4, убава, и ние сакаат 10 од оние кои се во ред, така што ние имаме доволно простор за чување на сите 10 цели броеви, во овој случај. Нешто супер важно, секое време ти се јавам Примерок, што треба да се провери за ништовни. Ако не ви се провери за ништовни, добро, Примерок ако го снема простор и веќе не може да ви даде секое повеќе меморија, ќе се врати null. Значи, ако не ви се провери, Примерок може да се врати нула. А потоа ако се обидеме да разыменовывать нула покажувачот, ние си оди за да се добие сегментација грешка, кои ние ќе зборуваме за сега. Страшни. [00:45:56] Добро, прашања со Примерок? Да? [00:46:00] СТУДЕНТСКИ: Дали проверка на нула [Нечујни] не го прават тоа за квиз? [00:46:05] Хана: Секако, прашањето е не го matter-- на квизот, ќе добиете поени исклучи доколку не ви се провери за ништовни? Да, ќе добиете поени од ако не се провери за ништовни. Секое време ти се јавам Примерок, како на квиз и вашиот psets и во реалниот живот, што треба да се провери за ништовни. Добро прашање. [00:46:18] ГАБЕ: Што ако јас не ослободи? Хана: Габе сака да знае што ако ние не бесплатно. Тогаш ќе имаме меморија излегуваат во јавноста во нашата куп. Било какви други прашања? Да? [00:46:27] СТУДЕНТ you-- може да одат над buffer overflow вистински брз повторно? [00:46:30] Хана: Секако. Прашањето беше можеме да одиме во текот на buffer overflow навистина брзо. Да се ​​вратиме на оние слајдови. Така тампон, можете само мислам на тоа како низа, нели? Имате некои простор во меморијата. И кога првпат се создаде нашиот низа, знаеме низи имаат фиксни големина, или нашите буфер има фиксна големина. [00:46:45] Па да речеме, во овој случај, имаме само доволно простор да се пишува низ здраво. Ако одиме минатото, кои врзани, ако одиме минатото она што нашите низа што рековме тоа би можело да се одржи, ние всушност може да започне пишување во меморија дека на компјутерот не сакаат ни да се напише во. И посебно, ако се погоди нешто како враќање адреса на функција, која, како и секој друг дел од меморијата, е само некаде во вашиот компјутер, можете всушност го промени тоа и да почне да се направи лоши работи. Одговори на вашето прашање? Прекрасно, нешто друго? Да? [00:47:17] СТУДЕНТСКИ: Значи магацинот [нечујни], можете рече одат од дното растат. Во рамките магацинот опсег, прави меморија одат од, како, врвот надолу се однесуваат на секоја пауза? [00:47:28] Хана: Како да you-- се одложи на Роб на оваа. [00:47:35] ROB: ќе се развива во истиот насока како оџак расте. Хана: ОК. ROB: Значи јас се збунети. Ова се случува да биде апстракција. Хана: ОК. ROB: Оваа е точна. Значи, ако магацинот расте нагоре, тогаш тоа generally-- не мора да биде вака. но вие може да прогласи int x. Тогаш вие декларирате int y. Тогаш int x генерално ќе биде пониски на оџак од int y. Но тоа е само факт. Дека не е како важен семе нешто. [00:48:02] ROB: Значи, прашањето повторно беше само она што се случува секоја рамка гради. Така што секоја функција добива малку парче од магацинот. И како што оди нагоре, во рамките на таа малку парче, во рамките на таа рамка, ние ќе кажам дека променливи во рамките на таа рамка, исто така, се движат нагоре. Прашање? [00:48:17] ROB: Само да се биде на микрофон. Хана: О, да. ROB: Ќе се зборува во вас. Хана: Ах, да, во ред. ROB: Исклучок е за низи и structs, каде низи, понизок индекс во низа, и во structs на повисоки поле во structs се гарантира да биде на пониско адреси од една подоцна вредност во низа. Па оние се загарантирани. Но некој посебен променливи во рамките на, како int x и y int во рамките на функција, нема неопходно врска помеѓу нивните адреси. Хана: Друго прашање овде? СТУДЕНТСКИ: Значи во тампон проток, само buffer overflow само кога ќе се случи се, како, доделени количина од низа дека тогаш е поголема? Како, може да ви? Значи, ако сте прашува за нешто од user-- [00:49:05] Хана: MM-хм. СТУДЕНТСКИ: Може насилно ви даде нешто назад тоа е поголем од што и сте наменети за нив? Хана: Секако, така Прашањето беше во основа, може корисникот да ви даде повеќе отколку што побара? СТУДЕНТСКИ: Да. Хана: Па, можете да се спречи корисникот од тоа го прават. Вие конкретно да се каже, не да ми даде повеќе од x број од бајти Јас само сум те остава простор за x број на бајти, х број на карактери. Па тоа е нешто што сакате да се спречи. Да? Која е разликата помеѓу магацинот претекување и buffer overflow? [00:49:30] Хана: Добро, така магацинот overflow-- ох, она што е разликата помеѓу оџак overflow и buffer overflow? Значи, сакаме да се мисли на магацинот претекување се случува кога ние сме всушност напластувањето овие функциски повици. Да речеме дека имате рекурзивен функција, затоа што знаеме дека секој пат кога ќе јавете се на функција, тоа е добива сопствената рамка на оџак. [00:49:45] Па ние оџакот премногу висока, и тогаш ние почнуваме да се прелее. И ние ги користиме премногу меморија, и Ние немаме било каде лево. Ние се добие таа грешка. [00:49:51] Buffer overflow е во рамките на програмата. Ние сакаме да не мора нужно снема меморија на ист начин дека ние би можеле да ако сме редење до толку многу функциски повици, но ние пишуваме минатото меморија дека знаеме можеме да го користиме. И која ни овозможува да се направи лоши работи. Да? [00:50:08] ROB: Да, можеби ќе сакате да го повтори ова само, но вие исто така може да се мисли на магацинот претекување како што е како специфичен тип на buffer overflow. Или пак само мислам на вашиот магацинот како навистина голем тампон. Потоа кога ќе се прелее да магацинот, тоа е вид на како buffer overflow. Но магацинот претекување е само специфичен термин кој се користи кога оџак самата прелива. [00:50:24] Хана: Право, така да се повторува за видео, тоа може да се мисли на магацинот претекување како специфичен тип на buffer overflow. Кул? Други прашања, пред да одиме на? Страшни. [00:50:37] Добро, кул, па ајде да зборуваме за некои вообичаени грешки пораки. Ова е нешто што има прикажан на повеќе квизови, така нешто што е вреди земајќи вториот изглед на. Сигурен сум дека сте наишле барем некои од овие како што го правиш вашиот проблем поставува. Така бидете сигурни дека можете да разговарате за нив на квиз. [00:50:50] Па првиот е сегментација на вина. И тоа е кое било време ние се обидат да пристапат на меморијата дека ние не им е дозволено да ги отворите. Па вие migh го виделе ова, на пример, во Збег. Ако се открие судир врати NULL, а потоа ќе се обиде да направи нешто со тоа null вредност, компјутер ќе им даде ви сегментација грешка. Така еден, важна работа да се се направи со цел да се обидат да се избегне ова е секогаш да се провери за ништовни. [00:51:13] Вие би можеле, исто така, се гледа имплицитна изјава на функција. Значи ова е она што се случува кога Алисон ви покажа како се прави прототип, нели? Па да речеме имаме некои функција која ја дефинираме. Да речеме дека коцка. И тоа оди на дното на нашата функција, под главниот. [00:51:27] Ако ние се забораваме да му кажете на компјутерот за коцка, кога главниот обидува да се јавите коцка, компјутер ќе биде, како, ох боже. Јас немам идеја што значи тоа. Не знам што да правам, тука. Така прототип вели, не грижете се. Одам да ви кажам. [00:51:42] Тоа ќе дојде. Не се развикам мене. Не ми даде имплицитна декларација на функција. Па ако добиете оваа грешка, еден нешто што се случува да сакате да го направите е бидете сигурни дека имате вашиот прототип. ОК? [00:51:53] И последно, но не и најмалку важно, непријавени идентификатор е во суштина кога ќе се обидете да го користите променлива што не сте го прогласи. Па одеднаш ќе почнете да велејќи дека како н плус плус. И компјутерот вели дека она што е н? Вие никогаш не ми кажа н е нешто. [00:52:06] Така што едно нешто што треба да бидете сигурни дека направил е да му кажете на компјутерот што n е. Така на пример, n може да биде цел број. А потоа ќе ја избегнете оваа грешка. Било какви прашања на заедничките грешки? Да? [00:52:17] СТУДЕНТСКИ: За имплицитна декларација на функција, би можела тоа, исто така, да биде дека ќе се испуштени едно на библиотеките што требаше да се вклучи, отколку на прототип? [00:52:24] Хана: Право, па Прашањето беше, можете ли да исто така се добие оваа грешка, ако заборавена да се вклучи библиотека. [00:52:28] СТУДЕНТСКИ: Да. [00:52:29] Хана: Апсолутно, бидејќи на ист начин дека ние сакаме да го стави нашиот прототипови пред главната функција, ако имаме библиотека, тие се случува да суштина вклучуваат прототипови, вклучуваат дефинициите на функциите. Големо прашање. [00:52:40] СТУДЕНТСКИ: За сегментација вина, би кој исто така се случи ако ние, како, се обиде за пристап до променлива, како на пример, во различни [нечујни] отколку што беше прогласена во? Хана: Секако, така би ние добие сегментација грешка ако се обидовме да пристапите променлива надвор од опсегот? Беше дека станува збор? СТУДЕНТСКИ: Да. Хана: стара. Па веројатно, си оди за да се добие непријавени идентификатор грешка, наместо. Па тоа е само случува да се каже, Не знам што е тоа. Кул, нешто друго? Да, во ред, прекрасни. [00:53:10] Сите правша, па рекурзијата. Па јас спомнав неколку пати дека ние може да се добие магацинот претекување бидејќи сме повикување рекурзивен функција толку многу пати. Ние сме добивање на сите овие оџакот рамки, бла, бла, бла. Која дури е рекурзивен функција? Па, рекурзивен функција е било функција која се нарекува себеси. [00:53:26] Некои работи да бидат свесни за кога ќе се надгледува спроведувањето на рекурзивен функција, не заборавајте да го вклучите база случај. База случај е точката во која ние се стави крај. Па, на пример, ако сме за кодирање, , Велат, Фибоначи рекурзивно, ние сакаме да бидете сигурни дека кога ќе го добиеме на 0 или првата Fibonacci број, овие две бројки имаат овие случаи, бидејќи оние кои не се зависни за работи кои дојдоа пред. Оние имаат свои вредности. [00:53:51] Некои добрите до рекурзија, што е прашање што сум го видел на минатото квизови. Тие можат да доведат до повеќе концизен, елегантен код. И многу функции, многу различни алгоритми, всушност се подложни на рекурзијата. Нивната дефиниција може да биде рекурзивен во себе и за себе. Па Fibonacci е еден. Факторијал е еден. Се спојат вид е одно-- сите нешта што може да се погледне. Добро, било какви прашања? Да? [00:54:15] СТУДЕНТСКИ: Дали агол случај сличен на база случај? Или е тоа што за некои други вид на [нечујни]? [00:54:22] Хана: Секако, така агол случај е any-- така е удар случај исто како и база случај? Агол случај е нешто што си код може да се однесуваат малку поинаку. База случај е вид на поврзани, во дека тие се како посебни случаи кој сакате да се погледне. Но, идејата на база случај е тоа што сакате вашиот рекурзивен функција да престанат во одреден момент. Тоа не може да ги задржи се нарекува засекогаш. Тоа треба да се запре во некоја точка. [00:54:49] ROB: Да, често, вашата база на случаи би можеле да бидат примери на агол бази. [00:54:53] Хана: Право, кул, нешто? [00:54:55] СТУДЕНТСКИ: Можете ли да се објасни базира малку повеќе? Јас не се разбирам [Нечујни] база случаи. [00:55:01] Хана: Од неблагородни случаи? [00:55:02] СТУДЕНТСКИ: Основа случаи, да. [00:55:03] Хана: О да, секако. Ајде да видиме. Дали имаме креда овде? Да, тоа го правиме. Добро, па навистина брзо, јас ќе се обиде да напише доволно голем па можете да видите на екранот. Ајде да зборуваме за, навистина брзо, Фибоначи. Па јас ќе ви даде Фибоначи секвенца. Можете да барате до дефиницијата. [00:55:17] Во суштина, секој број во низата е збирот на двете претходни броеви. Добро, па начинот на кој јас само што е опишано Фибоначи, можете да ги слушнете на рекурзијата, нели? Кога јас реков секој број е Збирот на претходните два броја, би можеле да кажеме ОК. Па, енти Фибоначи number-- па ајде велат имаме оваа функција наречен fib-- фантазија на n се случува да биде еднаква на ПИБ од n минус 1 plus-- жал, ние ќе се случува до следната линија над here-- послъгвам на n минус 2. [00:55:52] Добро, така тоа функционира одлично доколку сте и гледа во, на пример, на нула, еден, два, три, четири, петтиот Фибоначи број каде што може да се каже дека 5 е еднакво на 2, плус 3. Но, што ако сте на почетокот? Што ако сте само притискање овие први две вредности? [00:56:08] Да се ​​добие оваа 1, не можете да велат додадете претходните две, затоа што тоа нулта и-- не знам. Па во одреден момент, ние треба да престанат. Во одреден момент, ние треба да се каже дека овие два само имаат свои дефиниции. 0 Fibonacci број е 0. И првиот Fibonacci број е 1. [00:56:26] Па начинот на кој јас може да се кодира ова, јас би рекол, ако n е помалку од два, потоа само се вратат н. И дека ќе биде мојата база случај. Тоа е како јас се знае да престанат со рекурзивен функција. Дали е тоа јасно? Страшни. Било што друго на рекурзија? Убава. [00:56:45] Ајде брзо се зборува за пребарување и сортирање кандидира пати. А потоа јас ќе ти даде некои Давин време да се зборува за кодирање примери. Па тука се главните пребарување и видови што треба да знаете за. Guarantee-- не можам да гарантирам, затоа што не сум ја видел quiz-- но ова доаѓа до квиз по квиз по откажат. Значи дефинитивно ја користите оваа шема. Како, да ја искористам оваа шема. Стави тоа на вашиот измамник лист. Вие ќе бидете среќен човек. [00:57:09] Ова ни кажува во бегство пати на секоја на овие вид и алгоритми за пребарување. Така линеарно пребарување, можете да видите бегство време, и иста со бинарни пребарување. Одат над она што овие алгоритми се направи, општа идеја. Погледнеме некои псевдокод Ако не е сам код. [00:57:25] Ќе видите дека меур вид има горниот врзани во најлош случај на n квадрат. Значи, ако нашите низа беше целосно назад пред сакавме да го средиме, ние би рекле дека тоа е случува да се земе n квадрат чекори. Но, во најдобар случај, па долна граница за најдобар случај ќе биде ако тоа е веќе совршено подредени. Тогаш сите ние треба да направите е проверете дали тоа е подредени. Дали постои прашање околу тука? [00:57:47] СТУДЕНТСКИ: Кога би сакате да го користите вид? Вид. Јас сум само љубопитни. [00:57:52] Хана: Кога ќе ти сакате да го користите селекција вид? Оваа? Оној кој е n квадрат и во двата случаи? [00:57:55] СТУДЕНТСКИ: [нечујни]. [00:57:56] Хана: Значи тоа е многу различно. Ако имаш конкретни барања за вашата програма, како работи како ако ние едноставно се рече спроведување search-- sorry-- спроведување вид, ќе веројатно сакате да одите за еден од оние кои има најдобар случај на n, или долната граница во најдобар случај на n. Но може да има некои работи како, да речеме, свопови се навистина скапи поради некоја причина. Тогаш ќе сакате да го направите меур вид, затоа што треба да се направи толку многу размена, такви работи. Било other-- да? [00:58:23] СТУДЕНТСКИ: Дали тоа ќе биде [нечујни] да се каже дека [нечујни]? Хана: Тоа е една работа дека ќе ти кажам ако сте во потрага на имплементација. Начинот на кој јас би всушност мислам за тоа зошто тоа е н квадрат е дека ние мора да се кандидира преку нашата низа на должина n, секој пат правење на повеќето, n размена. И ние треба да направите на овој процес n пати. [00:58:46] Па кога ќе треба да се направи најмногу, н свопови и за n тече низ низа, таму се случува да биде n квадрат. Но да, ова ќе биде откриена преку овој двоен за телефонска линија, како прашање asked-- или вгнездени јамка за, јас треба да се каже. ОК? [00:59:00] А потоа се спојат вид, кој е најбрз каков што сега, или дека сме покриени во CS50, се знае дека главниот алгоритам е оваа идеја за кршење на сортирани парчиња, а потоа спојување заедно овие подредени бита. И ќе добиете нас најавите n најавите n. Било какви прашања на пребарувања и видови пред да го помине на? Ајде да видиме. [00:59:21] О, поврзани листи. Жал ми е, имам уште една тема. ОК, страшни, поврзани листи. Проблемот со низи, тие имаат фиксна големина. Значи, ако не знаете колку е голема вашиот влез ќе биде, вие не сакате да се создаде низа. Затоа што ако ние создаваме низа која е премногу мал, ние може да наиде на buffer overflow. [00:59:35] Па наместо тоа, ние може да направи нешто со поврзани листи, што ни овозможува да се имаат динамички големина на податоци структура која ќе ни овозможи да ги чувате повеќе флексибилни количина на податоци. Па во рамките на секој јазол во нашата поврзана листа, имаме две парчиња. Имаме вистински вредност, која го чува. Па тоа е само нешто што би види во низа, на пример. А потоа ние, исто така, ги пратите на Покажувач на следното нешто во меморијата. [01:00:04] За разлика од низи, кои Ние сите знаеме се случува да be-- низа елементи се сите еден по друг во memory-- поврзани листи може да биде било каде во меморијата. Тие се произволни места. Значи, ако ние требаше да всушност, оди да ги пронајдеме, ние треба да ги пратите на Следното нешто во нашата листа. [01:00:19] А потоа, со цел да се знае каде што таа листа како целина е, сите ние треба да ги пратите на е Уште првиот елемент во нашиот поврзана листа. И дека ќе ни овозможи да се следат преку. [01:00:31] Значи ова е како може да се дефинира на владата. Ова е одлична можност да ги искористат предностите на structs. Затоа што имаат оваа идеја, добро, за даден јазол, имам две парчиња. Имам вистински самата вредност. И тогаш имам покажувач на следниот елемент во поврзана листа. Така што гледате, ние имаме цел број n, која се случува да биде вистинската вредност, а потоа покажувач еден јазол, наречен следниот. Така што ќе биде следниот елемент во нашиот поврзана листа. СТУДЕНТСКИ: Да? Дали имате да се каже дека ѕвезда е како структура? [01:01:01] Хана: Да, па од ова е речиси како еден вид на, ми се чини дека рекурзивен дефиниција со тоа, што ние треба да знаеш што јазол е во внатрешноста на изнаоѓање јазол. Од тоа не е така, всушност, знаете што јазол е целосно додека да добиеме до крајот на this-- и по ова ние само може да го наречеме node-- во внатрешноста на оваа дефиниција, ние треба да го наречеме структура јазол. Големо прашање. Нешто друго? Да? [01:01:26] СТУДЕНТСКИ: Зошто ние мора да се каже јазол двапати? Затоа што кога бевме во [нечујни] ние едноставно мораше да го направи тоа во точка-запирка, но сега ние треба да се најде дека структура јазол? [Нечујни]. Хана: Значи јас верувам во последниот пример, бевме само создавање во секое време да сакаше да го користите студент после тоа, може мораше да употреби структура node-- Јас сум sorry-- структура студент. Овој ни е дозволено да се, по фактот, само употреба јазол додадете нов тип, во суштина. Дека има смисла? Па ние ќе мора да се вратиш назад и погледнете го кодот порано. Но јас би се претпостави дека ние не го користат ЬурейеЕ. И ние го поставил прашањето, зошто не ни треба да се користи ЬурейеЕ? ЬурейеЕ ни овозможува да се избегне Зборот структура на почетокот. Да? СТУДЕНТСКИ: Каков вид на прашања ќе излезе во смисла во однос на јазли и поврзани листи? [01:02:10] Хана: Значи, една работа е ние може да се каже како може да ви пребарување низ поврзана листа? Добро, бидејќи тоа е малку покомплицирано отколку ако ние сме во потрага преку низа. Ние само може да се погледне во елемент нула, елемент еден, два елементи, бла, бла, бла. Ако сакаме да пребарување преку поврзана листа, ние, всушност, ќе треба да ги следат оваа мала лавиринт на совети. Па ајде, всушност, оди преку овој навистина брзо. Она што ние не можеше да стори во нареди to-- да речеме ние сакате само да iterate преку нашите целосно поврзана листа. Ние ќе започне во главата. А потоа, со цел да се движи кон следниот елемент, наместо само инкрементирайки од страна на еден како ние би можеле во поминува низ низа, ние сме всушност ќе следете ги следните покажувач, така што може да се најде каде во меморија од следниот елемент е. Така знам дека тоа не е доволно да се земе сето тоа во право сега, но ќе ги имаат овие слајдови. Па може да оди преку ова малку повеќе бавно. Но во суштина, она што сакаме да направите е да се следат овие совети преку севкупноста на поврзани листа. Па ова е прашање може да се праша. [01:03:01] Нешто да се забележат со вметнување, да речеме сакавме да се стави нов елемент на предниот дел од нашите поврзани листа. Ние треба да бидат многу внимателни за редоследот по кој ние прераспореден совети. Затоа што да речеме јас само рече ОК. Направи главата точка на овој нов елемент. Само го прават тоа точка до 1 Потоа, ние сме во суштина изгуби остатокот од нашата листа, бидејќи јас не се сеќавам каде 2 животи. [01:03:25] Значи ние треба да го направи во многу специфични ред. Прво, ние се направи нов елемент точка на главата. А потоа ние се направи главата точка на нов елемент. Па ајде да видиме што тоа личи со arrows-- само како тоа. Па прво мора ново елемент точка на стариот главата. И сега, имаме главата точка на нов првиот елемент. Било какви прашања со ова? [01:03:49] Добро еве некои код, повторно, нешто да се погледне малку подоцна. И сега јас ќе го предаде на Давин за GDB и малку пракса кодирање на хартија. Убава. [01:04:01] ROB: И Роб. [01:04:01] Хана: О, Давин и Роб. Жал ми е. [01:04:03] СТУДЕНТ Ву! [01:04:08] ROB: Ви благодариме. [01:04:09] DaviN: Дали сакате да се каже сè што вистински брз? ROB: Да, да. DaviN: Откако јас сум до. ОК, додека Роб става микрофон, така што е GDB? Секој треба да го виделе GDB во класа и исто така на работното време. И ти треба да се користи тоа. Значи она што е GDB? Никого? [01:04:28] СТУДЕНТСКИ: Тоа е дебагерот. [01:04:29] DaviN: Тоа е дебагерот. И што ќе ви овозможи да се направи? Како, зошто не ни се допаѓа GDB? СТУДЕНТСКИ: За да го забави програма. DaviN: Право, па може да одиме преку неа се допаѓа человек темпо. И така она што се некои команди можете да направите? Па, пауза е веројатно Вашата омилена команда. Бидејќи тоа ви овозможува да се пробие програма, а всушност да го разгледаме ред по ред. [01:04:44] Стартувај ви овозможува да го работи. Следно, како Менувајќи. Што е меѓу следната и чекор? Чекај, велат дека на глас. Тоа беше точно. [01:04:54] СТУДЕНТСКИ: [нечујни]. [01:04:55] DaviN: Да, неверојатна. Па како, следната и чекор, ако you're-- ајде да речеме дека имате функција можете се дефинира. Да речеме дека некои во вашата главна функција, а ти си само удирање следниот, следната, следната. Ти си всушност ќе вршење на таа функција, но ви се случува да скокаат над неа. Ако го погоди чекор, или s или што и да, вие сте ќе всушност се фрламе во таа функција, а потоа може да удри следната за да го видиш различни повици внатре во тоа особено функција. Да? [01:05:16] СТУДЕНТСКИ: Дали постои начин да скокаат, како, се откаже? DaviN: Заврши, да, заврши со скок надвор. Па затоа се случува да се заврши оваа функција, а потоа сте ќе се врати назад во главната, на пример. Печат ќе го испечатите едно време. Нешто што јас секогаш го користите е екранот. Екранот ќе го испечатите постојано во текот на интегритет на вашата програма. [01:05:32] На пример, ако сте во за телефонска линија, и вие сакате да видите како нешто се менува, а вие не сакате да се, како, постојано се прави како печати, печатење, печатење, дисплеј ќе се прикаже дека променливата континуирано, секој пат кога ќе удри на Next. И да се продолжи. Така ОТЗ, тоа е gdb. [01:05:47] СТУДЕНТСКИ: Што е една каде што [нечујни]? DaviN: Што е тоа? [01:05:52] СТУДЕНТСКИ: Што е the-- локални променливи. ROB: Существует нешто, всушност, како локалните жители или нешто. Јас can't-- [01:05:58] DaviN: Тоа може да биде нешто слично, да. [01:05:59] Хана: Во локалното население? [01:06:00] DaviN: Тоа е тоа. Тоа е една. ROB: стара. [01:06:03] DaviN: Да. [01:06:04] СТУДЕНТСКИ: Што не продолжи направам? [01:06:06] DaviN: Тоа continues-- па тоа е само се случува да продолжи со својата програми. Значи, ако ви се скрши и удари продолжи, тоа се случува само да работи таа програма до тоа хитови дека пауза повторно. Така на пример, ако се се скрши во функција, и ви се случува да се направи како и за јамка или нешто слично, и ќе го погоди продолжи, тоа се случува да продолжи и се врати на тоа пауза. Или нема пауза, тоа се случува да продолжи и заврши програмата. [01:06:22] ROB: Значи исто како кандидира запира на самиот прв точка на прекин го погоди, ако тогаш хит продолжи, тоа ќе го задржи случува се додека не е следната точка на прекин. А потоа продолжи да одам до следната точка на прекин. DaviN: Секое други прашања на GDB? Па мислам дека во минатото, ние сме ти праша што GDB е и да даде пример за некои работи што можете можете да направите со GDB, па вистински едноставно, но да. Там да одите. И јазли? [01:06:43] ROB: Да, така која насока беше тоа? СТУДЕНТСКИ: Тоа беше тоа. DaviN: Чекај. ROB: Овој човек? DaviN: Тоа човек. ROB: Овој човек, ох, јас не се реализира. Значи ние не беа јасни на она што the-- јас не знам кој was-- но прашањето. Ние не знаеме што точно ви се прашуваа за тоа, па само да се разјаснат нешто. Значи прво, како што реков претходно, ЬурейеЕ сте секогаш користејќи само создаде прекар за тип. Па токму тука, прекар сме создавањето е за овој тип структура јазол. [01:07:13] Значи прво, игнорирање на ова јазол во ЬурейеЕ, така што ова структура јазол кадрава подготвуваат надолу до следниот кадрава голема заграда е тип структура јазол. И ние треба да тој јазол таму горе, бидејќи ние треба да референца јазол тука. Значи со овој вид на рекурзивен структура, што треба да им даде на оваа структура име, или на друго место не би можел велат структура јазол тука. А пред с студент кога бевме внеле, мислам, ние не треба да се каже студент таму, затоа што ние не мора да се каже структура студент во внатрешноста на структура себе. Така, тоа е рекурзивен дека присилува нас да се каже јазол таму. [01:07:43] Овој јазол е само името сме давање на јазол за ЬурейеЕ. Па тој јазол не е исто како што јазол. Но оваа структура јазол е иста како онаа структура јазол. DaviN: Значи секогаш кога ќе се јавите, како, јазол во вашата главна функција, вие нема да мора да се каже структура јазол. Вие само може да се каже јазол, бидејќи јазол е different-- е во основа си ти што зборуваш, ОК. Наместо да се има за да се јавите структура јазол во мојот код, Јас само сакам да го преименувате како јазол за да се направи полесно. [01:08:04] ROB: Ако секогаш користат ЬурейеЕ, тогаш ова е единственото место ви се случува да имаат да прогласи променлива со структура јазол ѕвезда, да. [01:08:14] DaviN: Добро, така последниот дел е тешко да се научи because-- ROB: Што? [01:08:24] DaviN: Затоа што тоа е кодирање на хартија. Па секоја година имаме код на хартија прашања. Па мислам дека минатата година, 12 од 80 поени беа код на хартија. Година пред тоа, 10 од 80, година пред тоа, 20 од 100, така неколку од овие. Па ти си ќе мора да биде во можност да се код на овие функции со рака. [01:08:40] Па јас јавуваа ние би можеле да одат преку неколку од нив и да видиме како луѓето го прават, вид на прошетка низ ги полека со луѓе. Па, генерално, strlen и atoi биле многу популарни. Минатата година, мислам дека имавме GetPositiveInt и RandomInt. Но Pow, па моќ, исто така, позитивен еден премногу. Ајде само оди преку можеби една или две од овие заедно. Она што луѓето сакаат да се види? [01:09:05] СТУДЕНТ atoi. СТУДЕНТСКИ: Да. DaviN: atoi? СТУДЕНТСКИ: [нечујни]. DaviN: Добро, јас одам да го направи тоа на табла. Дали ви се имаат предност ако го направите тука или таму? Там, Габе вели таму. [01:09:16] ROB: И ова е општа мисли на овие кодирање прашања. Се обиде да напише нешто. Не го оставите празно. [01:09:22] DaviN: Да. ROB: Ако можете да добиете врати видот точни, или можеби ние би можеле да го даде на вас, но ако можеш, како, напишете генерална функција потпис, Ако може да се добијат база случаи точни, или агол случаи, или сеќавајќи се провери за ништовни, онолку долго колку што имаат некои работи, тогаш можеби и ние може да ви даде неколку укажува на проблем. Немојте само да го оставите празно. [01:09:36] DaviN: Да, и ако се само целосно stumped на тоа како да се всушност се претвори во кодот. Ако напишете псевдокод тоа е прилично добро исто така. Па тоа е како, тоа е шест точки прашање, и ти пишувам правилно псевдокод ќе добиете најмалку два поени. Па не само да ги оставите празно. Обидете се да се стави нешто. [01:09:50] ROB: Тоа треба да биде точни псевдокод, иако. [01:09:51] DaviN: Да. ROB: Значи ние сме генерално се помалку снизходителен со ошибки во псевдокод. DaviN: Добро, така вие момци сакав да видам atoi. Добро, па само really-- па што сакате да го направите се си оди за да биде даде некој вид на број. Но, овој број не е ќе биде int, нели? Што е тоа ќе биде? [01:10:08] СТУДЕНТСКИ: [нечујни]. [01:10:09] DaviN: Тоа се случува да биде стринг, нели? Значи, ако сте биле дадени string-- нека say-- [01:10:13] ROB: Треба ли да се повлече до уредувачот? Јас може да се повлече up-- [01:10:16] DaviN: О, вие сакате да го направите on-- [01:10:16] ROB: Дали преферирате форумот? [01:10:17] DaviN: Што сакате да направите? Мислам, дали сакате да го направите рачно? Или сакате да го направите со помош на компјутер? [01:10:21] ROB: Направете го тоа од рака. [01:10:22] DaviN: [се смее] ROB: Направете го тоа од рака. [01:10:23] DaviN: Добро, така што ќе биде atoi. Значи она што е it-- Мислам, ние ќе веројатно даде ова за вас. Но што е тоа се случува да се вратат? [01:10:29] СТУДЕНТСКИ: Int. [01:10:29] DaviN: Тоа се случува да се врати int, нели? So-- не сакам да го направи таму. Јас ќе го направите тука. [01:10:34] ROB: Можете да го повлечете надолу а потоа им помогнам на неа. [01:10:38] DaviN: да. [Се смее] промена на играта. Добро, па тоа се случува да биде int atoi, и она што тоа се случува да се земе? Знак ѕвезда, па само низ, ѕвезда и, како што. [01:10:57] ROB: Ница ѕвезда, убаво. DaviN: Ова не може да има, во ред. ROB: Да. Дейвин: OK, така што првиот нешто што сакате да do-- јас не знам дали некој гледаше на практиката solutions-- но она што си оди да сакате да направите е да сте ќе сакаат да имаат јамка, затоа што ти си ќе сакаат да всушност чекор преку овој стринг. Така helpful-- така да речеме ние ќе се за телефонска линија, и ние си оди за да влезете низ секој елемент на низата. Колку долго е тоа? Колку пати сме ние ќе да iterate со тоа, што за јамка? СТУДЕНТ Sterln? DaviN: Sterln, да. Па да речеме int должина е еднаква на sterln ОК. И само љубопитни, зошто е тоа секогаш вид на подобро да се направи ова надвор од петелки? Како, зошто е подобро да се јавите оваа функција надвор од јамка? Само еден брз разумност провери? Да? СТУДЕНТСКИ: Значи, вие не мора да се задржи проверка на тоа. Можете само [нечујни]. [01:11:59] DaviN: Точно, така да, токму она што рече таа. Така што не мора да се задржи проверка на тоа. Така на пример, ако Апелирам оваа функција во внатрешноста на јамка, тогаш јас ќе одам да ги повикуваат оваа функција повеќе пати. И што се случува да се намали на ефикасноста на вашата програма. Така, тоа е секогаш корисна да го декларираат надвор. [01:12:12] ROB: Тоа е, рече, на било која од овие проблеми, доста се додека не се добие работен раствор, ќе го добиете целосна кредитна. Затоа, не грижете се ако вашиот дизајн е апсолутно ужасни. Тоа би можело да ни направи вознемирени читањето на вашата код. Но, како што долго како тоа функционира, ќе добиете поени. [01:12:28] DaviN: Да. Добро, па потоа јас ќе одам да декларираат некои променлива. Тоа е само случува да се јавите int сума. И јас одам да го поставите ова еднаков на нула, како што. И тоа е само случува за да биде случаеви. Така што ќе биде она што јас ќе одам да се вратат. Па ќе одам да на крајот врати сума од оваа програма. Па морам овие две променливи. Имам должина. Имам сума. И сега ајде да се фрламе во нашата низа. [01:12:48] Значи ти овозможува да имаме за телефонска линија. Па четири int I е еднакво на 0 w, додека I е помала должина I плус плус. И now-- ROB: Ница. DaviN: Добро, а сега тука доаѓа месо од нашиот код. Така што всушност може да го стори ова во основа во една линија. Па не никого имаат идеја на она што ние ќе да правите следно? Добро, па тоа е во ред. Па ние сме прави е да се каже сума equals-- дозволете ми да махам овој over-- сума е еднаква на збирот пати 10 plus-- сме случува да се земе и јас минус еден Цитат 0 едно цитат направи, како тоа. ROB: многу интуитивен. [01:13:56] DaviN: тоа уништен. Добро, така someone-- јас го зедов тоа, јас го зедов тоа. Добро, па ова е јасно растат. Што значи ова? Па не некој знае што значи тоа? Може секого види ова? Не, никој не може да се види ова, во ред. Одам to-- [01:14:18] ROB: Одам да се напише формула само право тука. DaviN: Добро, Роб се случува да го направи тоа на компјутер, кој е забава. ROB: О, боже. Или јас нема. DaviN: стојат од страна. СТУДЕНТСКИ: Имам едно прашање. DaviN: Да, секако. СТУДЕНТСКИ: [нечујни]? DaviN: Добро, така што, всушност, како на пример, само во целина, ако сте во ситуација да се стави, како, во оваа декларација int Јас е еднаква на должината 0 запирка е еднаква на sterln, that-- [01:14:59] СТУДЕНТСКИ: [нечујни]. [01:15:01] DaviN: Тоа е во ред, бидејќи that-- СТУДЕНТСКИ: Зошто би ви дури и треба да се користи должина? Зошто ние не можевме само [нечујни] sterln ОК, како и на целиот пат [нечујни]? [01:15:08] DaviN: Мислите право тука? [01:15:09] СТУДЕНТСКИ: Да. DaviN: Затоа што секој време тоа за јамка работи, тоа се случува да се оцени оваа состојба. СТУДЕНТСКИ: Токму така. DaviN: И ако имате sterln таму, тогаш тоа е ќе мора да всушност повик таа функција секој време. Така, наместо на само споредувајќи го на некоја int, си оди за да се јавувате функција и потоа споредувајќи го да се врати вредност. Да, па тоа е само, да. [01:15:28] Ница, во ред, па сега секој може да го види. Што does-- ова е како, тоа е тоа. Ова е џем, токму тука. Што значи тоа? Што правам? Да, идеја? Да? [01:15:43] СТУДЕНТСКИ: Е, па кога сте влегуваат низа, сте ќе треба да се оди од лево кон десно, така си оди за да се оди во децимална од долу [нечујни]. DaviN: Токму така. СТУДЕНТСКИ: Значи секој од нив што треба да се мултиплицираат она што го видов како на вредноста на int страна време можеш да се движат дека над еден. [01:15:59] DaviN: Совршен, совршен, така на пример, ајде да велат Дадов you-- Јас сум случува да пишувам овде. Не, јас не сум. Одам да се напише овде. Да речеме дека јас би ти дал 76, нели? Да речеме дека јас ви даде 76. Тоа е стринг за да започне со тоа, во ред? [01:16:15] Па должина е она? 2, нели? Збирот е 0. Тогаш ние фрламе во нашите за телефонска линија. OK, првиот повторување на ова, што е тоа ќе биде? Тоа се случува да биде сума е 0. Па сума пати 10 0. Тоа е бесмислено. Тогаш што ли овој направам? СТУДЕНТСКИ: [нечујни]. [01:16:33] DaviN: Тоа се случува да се претвори дека карактер во цел број, право? Тоа е вид на како со вашиот проблем set-- овој light-- тоа е вид на како и со проблем во собата да Visioneer. Си имаш работа со ASCII вредности. Значи, ако јас ви даде, како, седум, но тоа е карактер, и сакате да знаете, Добро, што цифрен е тоа? Да, можно, да. Па што цифрен е тоа? Вие би можеле да одземе 0 од него, но вие мора да се одземе 0, ликот. [01:16:59] И каде што некои луѓе се спънал, тие се како, добро, добро, имам да знаете ASCII вредности за овој квиз? Не, дефинитивно не треба да знаете ASCII вредности на, како, мали букви , главни, нула. [01:17:09] ROB: Существует нема причина да некогаш стави тоа на измамник лист. [01:17:12] DaviN: Дефинитивно не трошете вашето простор со ова. Можете да literally-- само наместо да на велејќи: 48, како и право таму, која е еквивалентна на велејќи дека еден, еден апостроф, како што, токму истото. [01:17:27] ROB: Можете речиси можеше да се сети на тоа како if-- Бог, ми треба, oops-- можете речиси можеше да мислам на тоа како да имаме нешто како што хаш дефинираат 0 како 48. Тоа нема да функционира. Но мислам на тоа како еден цитат 0 една понуда, а за сите ликови. Сфатете го тоа како константа што претставува дека ASCII вредност. [01:17:47] DaviN: Да. OK, па прв пат преку, па с 76-- така прв пат преку, ова е само лик 7 минус карактер 0, а тоа се седум integers-- добро, оние се седум простори далеку од секоја друг на ASCII табелата или whatever. Така што нема да се врати int од 7. Па сега, сума е еднаква на 7. [01:18:08] Добро, добро, ајде да скокне во тоа за јамка повторно. Добро, сега тоа е сума пати 10. Значи вие сте ефикасно поместување на 7 на левата страна. Дали тоа има смисла? Вие сте ефикасно движејќи се кон лево. [01:18:19] А потоа можете add-- ова се случува да биде за 6 минус 0. Тоа е 6. Па тоа ќе биде 70 плус 6. 76, кој е вашиот број. Значи без оглед на тоа што бројот Ви дадов, тоа е бавно само се случува да се префрлат на поголеми вредности од лево, 1 фактор од 10 секој пат во за телефонска линија, и потоа додадете на како што е потребно. [01:18:37] Во грбот? СТУДЕНТСКИ: Ние не треба да се направи било проверка во програмата? [01:18:41] ROB: Па колку што е проверка на оди на програмата, ние ќе ви кажам доста колку што ви треба за да се провери. Ако ние не го ви кажам нешто, тогаш генерално се претпостави што треба да се провери повеќето работи. Како што може да, само за да бидат безбедни, можете веројатно ќе треба да се провери еј, е и нула? Тогаш јас немам идеја што да се вратат. Но, ние ќе ти кажам овој вид на работа. 0, не знам. [01:18:59] DaviN: А зошто сакаш да Провериповторно ако и е еднаква на нула? СТУДЕНТСКИ: [нечујни]. DaviN: Поради знак ѕвезда. Тоа е покажувачот. Така совршено прифатлив декларација, јас може да се каже, во ред, s е еднаква на нула, бидејќи тоа може да биде покажувач на нула. Значи секогаш кога ќе имаат совети во вашиот пат во вака, веројатно ќе треба да се провери. Затоа што ако не се провери тоа, и тогаш потоа да одите во вашиот за јамка, а ти си doing-- махам надолу. Махам надолу. [01:19:22] ROB: За жал, тоа е тоа. [01:19:23] DaviN: И така, како, ако е null, а потоа ќе го направите ова, она грешка што ви се случува да се добие? СТУДЕНТСКИ: Сте ќе добиете сет вина. DaviN: Ти си оди за да го поставите вина, десно, затоа што ти си обидувајќи се да индекс во нула. Така си оди за да се обиде да индекс во меморијата тоа што вие не го поседувате. Па ова, доколку ова е нула, и ќе го направите ова, ќе циклус. [01:19:39] ROB: Јас исто така мислам дека на испит, во која ние праша ова прашање, ние ви кажам дека само може да се претпостави тоа е позитивен број. Бидејќи atoi е, исто така, се очекува да се справи со негативни броеви, така ќе треба да се посебен случај. Еј, не е првиот карактер за израмнување, во кој случај, OK, сега е негативен број. Ќе ви кажам овие видови на нештата. Ние ќе ви кажам она што треба да се справи. DaviN: Да. Па сигурен сум дека некои луѓе би можеле да have-- ако ти почна да гледа во стари испити, сте виделе sterln. Тоа е популарна една. И мислам дека во sterln, ти мораше да направите ова чек за ништовни, враќањето 0 или нешто слично. Како, ти мораше да се провери за ништовни. И ако не сте, дека беше целта исклучување на квиз. Па, сепак, не сите чувствуваат во ред со atoi? Дали некој сакаат да одат над делови повторно? ROB: О да, мислам дека ние, исто така, да ви кажам вас може да се претпостави дека сè is-- дека тие се всушност внесувате број, тоа што вие не мора да се грижите за, како, писма се во низа, така. DaviN: Да. Да? СТУДЕНТСКИ: Можете да одите над еден повеќе време кога го користите двојни наводници и апостроф? [01:20:37] DaviN: Секако, така двојни наводници, многу едноставно, е двојни наводници се стрингови. Значи, ако сте двојно цитат ништо, тоа е низ. Па, како, ако имав ова 0 овде, и јас го направи ова, тоа е низ. Тоа е веќе не карактер. Па не можам да го најдете на оваа вредност на мојот ASCII шема, бидејќи тоа е стринг, да. [01:20:57] Добро, било какви други прашања? Да? [01:21:00] СТУДЕНТСКИ: Значи сте веќе одговори на ова, но како, кога сме всушност пишување на оваа на квизот, Сакаш да се напише со засеци нули [нечујни]? DaviN: Не Прашањето е треба да ви стави коса црта преку нули за да се покаже, ако тие се нули? Не, ние ќе го дознаам. Да, благодарение, тие се добри. Добро, нешто друго? Дали некој сакаат to-- па мислам дека ние сме се кандидира малку со текот на времето. Дали сакате да се види уште еден, или? СТУДЕНТ RandomInt. [01:21:29] DaviN: RandomInt, во ред, точно. Па ајде да го направите RandomInt. Јас ќе го направи тоа овде. Така RandomInt е всушност многу поедноставно. Мислам дека atoi е веројатно најтешкиот еден дека ние сме поставени во претходните години. СТУДЕНТСКИ: [нечујни]. [01:21:46] DaviN: Што? ROB: јас гледам, ако тоа е вид на видлива од овде. DaviN: Дали е тоа? ROB: Јас не мислам дека тоа е going-- Мислам дека тоа се случува да избега од десната страна. DaviN: Добро, па јас ќе го направите ова. И можеш само да го стави на екранот. [01:21:56] ROB: Во ред. [01:21:57] DaviN: Сакате да ми биде писар? [01:21:58] ROB: Да. [01:21:58] DaviN: Ница. Добро, можам да ги избрише ова? [01:22:02] СТУДЕНТСКИ: Да. [01:22:04] DaviN: Тоа е толку тешко. (Пее) Правиш она што го правиш. И прави она што не го направите. Добре. [01:22:19] Добро, ако се сеќавам точно, на квиз RandomInt беше како, Добро, јас одам да ви даде две броеви, како и b. И сакам да ми дадеш RandomInt меѓу тие бројки. Така RandomInt се случува да се земе два numbers-- така RandomInt-- и тоа е случува да се врати int. [01:22:41] Значи она што е повратната вредност? Јас само ти реков. Int, нели? Како тоа, и после тоа е се случува да се земе два целочислените. Па затоа се случува да се земе int a и int b, како што. Па што RandomInt е случува да се направи е тоа се случува да се вратат некои случајни вредност помеѓу овие две вредности. Па тоа се случува да биде поголема од една, помалку од b. Па мислам дека веројатно може да се претпостави дека a е помал од две вредности. Значи, ако ние сме се занимаваат со случајноста, што функција не сме виделе дека ни дава случајни нешта? СТУДЕНТ Drand. DaviN: Drand, точно. Па ти си ќе веројатно сакате да го користите вашиот drand. Па може да се каже int случаен избор, и ние ќе само велат дека тоа е еднакво на 0 моментов. И тие се ние се случува да се каже, Добро, случаен еднаквите drand 48. И она што го прави ова се вратат? Што значи оваа функција ви даде? [01:23:43] СТУДЕНТ помеѓу 0 и 1. [01:23:45] Дейвин: Да, помеѓу 0 и 1. Па затоа се случува да be-- [01:23:48] ROB: И ова is-- Мислам дека ние ќе ви кажам ова. Како, можете да го користите drand 48. Може да се потврди ова на минатото испит. Но, ние веројатно ќе ви каже може да се користи drand 48, која враќа float помеѓу 0 и 1. [01:23:58] DaviN: Да, да, јас сум прилично сигурни дека на испит тоа ви вели веројатно сакате да го користите drand, да. Па затоа се случува да се вратат некои вредност помеѓу 0 и 1. И тогаш што сте случува да сакате да направите? Добро, сакате да се размножуваат по-- чекај, мислам дека е вака, жалам. Јас само ќе го направите тоа. Јас не знам. [01:24:19] Па b минус a. Па зошто б минус? Па да речеме drand дава назад int-- Добро, јас само ќе го стори останатото, така плус a. Па што does-- y е б минус. Па да речеме дека drand дава назад максимална вредност што може за евентуално да ви даде. Што е тоа ќе биде? СТУДЕНТСКИ: 1. [01:24:43] DaviN: 1, нели? Затоа, ако тоа е 1, а ти си множење тоа од страна на b минус a, добро, тоа е само Разликата помеѓу минус А. И ако тогаш ќе додадете дека назад кон, што е што? Тоа е во основа б. Дали тоа има смисла? [01:24:57] СТУДЕНТСКИ: Да. [01:24:59] Дейвин: Па ако ова е максимум цените што веројатно би можело да биде, тоа се случува да биде 1. И тогаш ова е само разликата помеѓу двете. Додади за a, така што ова е случува да се врати по случаен избор. И во аголот случај дека drand дава назад 1, случаен сака да биде ефикасно да се б. Но, тоа е максимум што може да биде. Значи, ако тоа се случува да биде помал од тоа, па да речеме дека е како 0.9, па потоа 0,9 пати б минус се случува да биде помалку од разликата помеѓу b минус a. [01:25:33] А потоа, ако додадете дека за да се a, а потоа дека вредноста не е нема да биде поголем од a, бидејќи сте додавање на нешто врз него, но тоа се случува да биде помал од б. Така си оди за да се добие случаен број, затоа што ти си повикувајќи drand. И тоа rand, дека случаен број е ќе биде некаде помеѓу и b. Дали тоа има смисла? [01:25:50] ROB: Само да го стави во бетон броеви, така да речеме ние сакаме да ги собереш случаен број помеѓу 7 и 10. Така б минус е нашата палета. Така што постои низа од три броеви сакаме да изберете. А потоа множење дека помеѓу 0 и 1 1, ако тоа потоа ни дава some-- да речеме дека ни дава 1.5. [01:26:07] Потоа 1,5, ние сакаме да одиме од 7 до 10. Така 1,5 плус 7 ни носи назад во нашата 7 до 10 опсег. И тогаш ние го поставите во внатрешноста на цел број, па тоа скратена надолу до 8. А потоа ние едноставно се врати тоа. Така б минус е нашата палета. го смени нагоре во броеви дека сакаме во рамките на тој опсег. Па помеѓу 7 и 10, а потоа ние може да се врати она што на крајот ќе заврши со. [01:26:30] DaviN: Да, убаво. [01:26:32] ROB: Ви благодарам. [01:26:34] DaviN: Да, што правиш? [01:26:35] СТУДЕНТСКИ: Дали се пушта и на било кој вид на ASCII грешки кога we're-- ако drand е враќање плови [нечујни]. [01:26:42] ROB: Значи исто како Роб рече, бидејќи случаен не е цел број, така drand ќе биде плови. Па и после тоа се размножува надвор. И може да се добијат некои вид плови броеви. И тогаш тоа се случува да се намалит. [01:26:51] СТУДЕНТ ОК. DaviN: Да. ROB: И ако на компајлерот биле за да ги предупредат ви за, како на пример, загуба на точност, само фрлени int во таму, и тогаш тоа е добро. DaviN: Да? [01:27:02] СТУДЕНТСКИ: Дали тоа ќе има иста веројатност за добивање, како, b или a [нечујни]? [01:27:08] ROB: Значи is-- Јас сум, всушност, wondering-- е RandomInt би требало за да биде број од до помалку од b? Како, ако тоа е помеѓу 7 и 10, какви се можностите? 7, 8 и 9, или 7, 8, 9, 10? DaviN: Јас заборавам. На проблемот set-- [01:27:19] ROB: Мислам дека тоа е 7, 8, 9. [01:27:20] DaviN: Тоа конкретно вели еден инклузивен и една ексклузивна. [01:27:22] ROB: Да. [01:27:23] DaviN: Но, јас don't-- Јас сум не-- [01:27:23] ROB: Па мислам дека овие се што не се вклучени, во кој случај, има еднакви Веројатноста на 7, 8, и 9. Там постои веројатност од 10. DaviN: Да? СТУДЕНТСКИ: Имам едно прашање. Ние сакаме да се дефинира функција се враќа не една вредност, но низа. Тогаш што би било синтакса откако се врати? [01:27:41] DaviN: Добро, па потоа ти would-- по враќањето? Па да речеме сте го прогласи низа некаде таму горе. Можеш само ќе се врати името на низа. [01:27:49] СТУДЕНТСКИ: Во ред, ви благодарам. Потоа само се вратат со a-- DaviN: О чека, толку ми е жал. Прашањето беше како ти се врати низа. [01:27:54] ROB: И покрај тоа што не можеше се низа прогласи на магацинот или нешто слично. Таа ќе треба да биде нешто malloced, бидејќи Примерок е како да се добие околу автоматска алокација на меморија. [01:28:01] DaviN: Да. Роб: Како може да се добие околу локалните обем. [01:28:09] DaviN: Но, што би само го врати својот name-- [01:28:11] СТУДЕНТСКИ: [нечујни] не е еден вредност, на пример, две броеви, така [Нечујни]. [01:28:18] DaviN: Вие не може да се врати повеќе број. Не може, како, return-- [01:28:20] СТУДЕНТСКИ: јас разговаравме за враќање низа или нешто слично. [01:28:23] DaviN: Да, така што прашање е можам да се вратат повеќе вредности. Вие не може да се врати повеќе вредности. Вие не може да, како, се врати тогаш врати б или нешто слично. Затоа што откако ќе се врати, ќе врати на функцијата. И тогаш функцијата е направено, и како Роб рече, е на магацинот. [01:28:35] Така што сите тоа меморија само добива се врати на компјутер. Сè што добива заборавен, во основа. Значи, ако сакате да се врати повеќе вредности, ќе мора да се врати низа, И начинот на кој ќе го направите тоа е mallocing. А потоа ќе се врати х како тоа. Во суштина, ти само се вратат име. И кога ќе се вратите нешто како ова, ти си не, всушност враќање на вредност. [01:28:53] Па да речеме ви се чуваат вредностите во низа. Вие не сте всушност враќање тие вредности. Како, ако се вратив int, јас сум навистина се враќа копии на вредности. Но, ако јас да се вратат нешто како ова, Јас сум враќање референца на оние вредности. Па јас сум враќање, во основа, меморија адреса на вредности. Дали тоа има смисла? СТУДЕНТСКИ: Да. DaviN: Ница. Да? [01:29:13] СТУДЕНТСКИ: Кога сте користење drand овде, не мора да се стави Srand пред тоа? [01:29:17] DaviN: Не, не, јас не мислам така. [01:29:20] ROB: Да, затоа направете го имате да се каже ништо за Srand? Стандардно од вас никогаш велејќи Srand на сите е само да направите Srand на нула. Така drand по своја волја работа. И тој автоматски ќе семе со тековното време, е она што го користи. DaviN: Да? СТУДЕНТСКИ: Дали [нечујни] со броеви? DaviN: Да, можеш. СТУДЕНТ така што би можеле велат, како, 4 пати 2. Работата е, вие не може да се претпостави тогаш int е четири бајти. Only-- [01:29:51] DaviN: Мислам, за квизот можеш. [Се смее] [01:29:54] ROB: Мм, бр. DaviN: Да, да можеш. Ако тие ве прашам колку е голема int е, не може да биде, како, четири или осум. ROB: О, па ако Прашањето е конкретно, како на пример, ако тоа е кодирање на проблеми, треба да се каже големината на инт. Ако тоа е на маса, или таа вели дека колку бајти, вие не треба да се пополни во големината на целочислените. [01:30:08] СТУДЕНТИ: [се смее] [01:30:18] DaviN: Право, па зошто е големината на int важно тука? Па како, ако ние се случува да се 32-битна процесор или нешто слично, тогаш тоа ќе биде четири бајти. Но на некои од поновите материјал, тоа може да биде што? Тоа би можело да биде осум, нели? Така this-- ако само тешко код четири, а потоа на некои машини, таа ќе работи. Некои машини, тоа нема да работи. Но, ако на квиз сме како колкав е int? Стави четири. ROB: Токму така. DaviN: Да? СТУДЕНТСКИ: Значи, бидејќи ние сме прогласување [Нечујни] во функција, ние треба да се стави 3 внатрешноста таа функција? Или можеме да го користите надвор? DaviN: Можете да го користите надвор од таа функција. Па тој е барајќи бесплатно. [01:30:49] СТУДЕНТ изгуби патеката на која [нечујни]. [01:30:51] ROB: О, слободната не happen-- тоа е дел од магијата на Примерок е тоа што вие не сте ограничени на локалните обем. Имате целосна контрола над колку долго вашиот променливи живеат. Така што ние го нарекуваме Примерок тука, тоа би можело да да биде целосно одвоени функција. Тоа може да биде 10 часа подоцна дека ние конечно се јавите бесплатно. [01:31:08] DaviN: Така на пример, како, неколку недели од сега кога конечно направите вашиот речник правопис psets, си оди да имаат некоја функција која создава тони јазли. Па ти си mallocing тони на јазли во оваа функција. А потоа подоцна во посебна функција, ти си се случува да сакаме да ги ослободи сите оние јазли. Па можете да буквално се пренесат и на ослободи покажувач, па меморија адреса на она што го malloced. И дека ќе биде добро. Вие не треба да се ослободи, како на пример, во иста функција. Да? [01:31:30] СТУДЕНТСКИ: Значи Примерок променлива [нечујни] надвор? Дали е тоа она што си ти што зборуваш? DaviN: Чекај, велат дека? Извинете. [01:31:38] СТУДЕНТСКИ: Ако Примерок променлива може да биде слободен, било каде во код, тогаш тие може да се пристапи каде било во код? Можете ли да ги задржи локалните? [01:31:45] DaviN: О, праша: како, променлива, like-- [01:31:51] ROB: Значи ти сепак треба да имаат некој вид на референца за да го блокира Примерок на памет. Па еве, ние се враќа х. СТУДЕНТСКИ: О. ROB: Ако ние не се врати х тука, а тоа беа само празнина, тогаш ќе немаат пристап до покажувач кој беше malloced, и тоа е протекоа меморија. [01:32:05] СТУДЕНТ ОК. [01:32:06] DaviN: Па како, нека ви каже ја имаат оваа, како, токму тука. ROB: Не DaviN: Во мојата главна функција, не можам само јавете овој х и да биде, како, во ред, во оваа функција, јас го направи ова. [01:32:14] ROB: Токму така. [01:32:14] DaviN: Па јас одам да се јавите х в, како, основна или нешто слично. Вие не може да го направи тоа. Си оди за да се врати нешто. Но, она што ви се случува да се врати? Си оди за да се врати меморијата адреса. И затоа што се врати меморијата адреса, што може да се пристапи на друго место. Други прашања? Да? [01:32:28] СТУДЕНТСКИ: Дали функција над се проверка за [нечујни]? [01:32:33] DaviN: Зошто јас не треба да го направите тоа? СТУДЕНТСКИ: [нечујни]. DaviN: Затоа што ти си не mallocing ништо. Така, тоа е не-- да, тоа е не сакале низ с. Тоа е покажувачот некаде. Ова се само вредности. СТУДЕНТ ОК. DaviN: Да. Нешто друго? ROB: Да? СТУДЕНТСКИ: Но, кога ќе [нечујни]? [01:32:55] ROB: Значи, со цел да се ослободи меморија, ние ќе кажам тука. Така x е нашиот покажувач на блок од меморија. Ние ослободи дека покажувачот. И ние не мора да го направите тука. Ние можеме да го направи тоа насекаде. Но ти само јавете се бесплатно на нешто што Примерок враќа. Така Примерок, тука, се врати што се чуваат во x. Па ние може да се јавите бесплатно на х. Било последен прашања? [01:33:20] DaviN: Секое последните прашања? Да? [01:33:22] СТУДЕНТСКИ: За жал, може да се ре-ви објасни зошто би се ослободи таму? Зошто [нечујни]? [01:33:26] DaviN: За тука? [01:33:27] СТУДЕНТСКИ: Да, како веднаш по. DaviN: Најверојатно не сакаат бесплатно овде. ROB: Најверојатно не. DaviN: Да, тоа ќе не прават ништо. Ова ќе, како и, се создаде меморија, направете работи на него, и потоа веднаш се заборави за тоа, да. [01:33:37] ROB: Но, ние може да се направи, како на пример, в тука поради некоја причина. Може да се каже int ѕвезда у е еднакво на враќање низа. Направите некои работи со Y, можеби печати содржината. А потоа, конечно, сме готови. Ние може да се ослободи год. СТУДЕНТСКИ: [нечујни]. DaviN: Треба ли да дојдете долу? Благодарност. ROB: Ница. [01:34:02] DaviN: Добро, тоа е тоа. ROB: Добро, добро. Со среќа. [01:34:05] DaviN: Ако имате прашања, пишете ни. Со среќа.