>> [Mūzikas atskaņošanai]
>> Davin: Nu labi, puiši.
Tātad tas ir pārskats pirmo viktorīnā.
Vai visi gatavi viktorīna trešdien?
ALLISON: Woo!
STUDENTU: Woo!
Davin: Jā.
ALLISON: Jā!
Davin: Tas puisis ir gatavs.
Ka puisis, divas rokas, jauki.
Tātad viktorīna pārskatīšana šodien, tas būs būt apmēram pusotru stundu.
Mēs ejam, lai iet pa visu galvenais jēdzieni jums vajadzētu zināt viktorīnas.
Mēs ejam, lai iet pār kādu kodēšana ar rokas piemēri, kas ir uz katra viktorīnā.
Un, ja jums ir jautājumi, nekautrējieties paaugstināt savu roku un viss
tāpat.
Nu, par loģistika viktorīna tiešsaistē.
Tāpēc mēs esam gatavojas sadalīt cilvēkus augšup dažādās telpās.
Tā ir balstīta uz viņu vārda.
Tātad, ja Jums ir kādi jautājumi par to, kur iet vai par to, kādi materiāli ir, piemēram,
oficiālais vārds par to, kas notiek būt par viktorīnas, pārbaudīt tiešsaistē.
Un tas viss ir aktuāla.
Tātad, ja nav jautājumi Pirmkārt, mēs ejam, lai sāktu.
Un šeit ir Allison.
>> [Aplaudē]
>> ALLISON: OK, thanks, Rob.
Appreciate it.
Davin būtu Pagriezts to.
Tas ir nepilnīgs saraksts tēmas, kā parasti, kā Davin tikko teica.
Konsultēties ar dokumentāciju tiešsaistē par viktorīnas nulles.
Bet tas ir diezgan much-- tas ir uz mācību programmu
ir viss, mēs esam izgājuši vairāk nekā līdz šim.
Viss šeit ir godīga spēle, arī kā kaut kas cits
kas var būt minēti lekcijā.
>> Mans sadaļā šeit, ir tikai daudz pārskatīšanu.
Ir pāris vingrinājumi Ka jūs puiši varētu strādāt.
Bet lielākā daļa, mēs patiešām vēlaties nokļūt Davin ar tām kodu
ar roku vingrinājumi.
>> Tāpēc es esmu gatavojas lidot caur šo.
Ja jums ir kādi jautājumi, mani apturēt.
Paaugstināt savu roku.
Es apsolu, es droši vien redzēt.
Ja tā nav, tikai vilnis to apkārt.
Es esmu gatavojas runāt ātri.
Es ceru, ka visi ir OK ar to.
>> Labi, īpašu vārdu, Davin acīmredzot aizmirsu, lai uzsist pa šiem slaidiem.
[Smejas] Tu esi nepatikšanas, cilvēks.
Tātad padomi viktorīnu nulles, praktizēt kodēšanas uz papīra.
Jūs puiši gatavojas iegūt kādu prakse ar, ka tagad ar Davin,
tāpēc jums nebūs pilnībā pats.
Es domāju, ka mēs esam patiesībā notiek caur šīm divām funkcijām.
Tātad jums ir labi sagatavotas tur.
>> Esiet pazīstami ar savu problēmu kopas.
Ir bijuši jautājumi uz iepriekšējām viktorīnas
ka lūgs jums, piemēram, kodu up kaut ko ļoti līdzīgs Mario.
Tāpēc ir ļoti labi pārzina jūsu problēma komplekti, kā arī
kā jautājumi, lūdzam Jūs no sākuma par formā
, ka jūs aizpildīt, būs kalpos jums ļoti labi.
>> Vai iepriekšējo testu saskaņā laika ierobežojumi.
Šie viktorīnas ir garas.
Laiks iet ļoti ātri.
Un bieži vien, jums nav saprast, cik ātri tas iet, kamēr jūs faktiski
sevi saskaņā ar šiem ierobežojumiem.
Tātad, ja jūs varat vienkārši meklējumos, jūs zināt, 75. minūtē, vai nu šovakar vai rīt
veikt vienu no šīm viktorīnas saskaņā ka jums būs daudz labākā formā.
>> Un arī, izveidojot savu atsauces lapu.
Atcerieties, ka jūs saņemsiet vienu lapa priekšā un aizmugurē
kā atsauci jūsu viktorīnas trešdien.
Radīt tas ir lielisks veids, kā mācīties.
Jebkas, kas jums ir problēmas ar jūs vēlaties iekļaut tur.
Jebkas, kas jūsu TFS bijis, piemēram, tas ir patiešām svarīgi.
Jums vajadzētu zināt to, ir varbūt lietas, jums ir tur
ja jums nav tos iegaumētu.
Pat ja jūs zināt tos patiešām labi, dažreiz ar to tur
ir tikai sava veida komfortu, lai jūs, ko es zinu, viktorīnas, ir saspringta.
Tāpēc jebkura komforts jums var palīdzēt.
Visas tiesības, arī, iegūt miega un ēst un patīk normālas lietas
ka mēs jums pastāstīt par viktorīnas.
>> Tik, sākot off viegli, datu tipi un izmēri.
Kā jau teicu, tas ir tikai gatavojas kas man throwing daudz sīkumi
šeit, ka jums vajadzētu zināt.
Tātad mums ir mūsu simboli kas ir viens baiti, Ints
ka ir četri baiti, ilgi garš, kas ir astoņi baiti.
Būtībā, tas ir tikai jums vēlas turēt lielākus veseli skaitļi.
Pludiņiem, kas ir četri, dubultspēlē, kas ir astoņi.
Atkal, tikai dod jums vairāk vieta jūsu pludiņi.
Un tad ierakstiet zvaigzne, tāpēc jebkurš rādītāju uz 32 bitu mašīna,
kas ir viss, kas jums ir nepieciešams, puiši zināt, ir četri baiti.
>> Tātad visas lietas, jums vajadzētu zina, varbūt lietas
Jūs vēlaties, lai būtu uz jūsu atsauces lapa.
Labi, bināro konversijas uz bināro, pārveidi
uz heksadecimālo, uz priekšu un atpakaļ, visas lietas, jums vajadzētu zināt.
Tātad no bināro uz decimālo.
Jūs puiši vēlas veikt ātri minūti un mēģināt izdomāt katrs no šiem
un tad man pateikt, kādi viņi ir?
>> Man arī ir konfektes manā maisā, tāpēc ikviens kurš atbildēs izpaužas konfektes, ko veidā.
Un man ir daudz no tā.
Ļaujiet man paķert to.
Es esmu gatavojas sniegt to Gabe.
Tātad jūs varat roku, konfektes kurš ir jauki un kooperatīvu.
>> Labi, es redzēju tur roku uz muguras.
>> STUDENTU: Jā, pirmais ir 42.
>> ALLISON: Jā, pirmais ir 42, pareizs.
STUDENTU: [dzirdams].
[Smiekli]
ALLISON: Otrā viena, tur atpakaļ dzeltenā?
STUDENTU: 110010.
ALLISON: Pareizi, un šis pēdējais, uz leju šeit apakšā?
Arī, jā, jūs zināt, vēlaties?
Tikai mētāt konfektes.
Kā par Candy ikvienam?
>> STUDENTU: [dzirdams], kad mēs esam darīts.
>> ALLISON: Shh.
Un tad pēdējais.
Kas grib, lai atbildētu?
Turpat.
>> STUDENTU: 11100.
>> ALLISON: 11100, apskatīt to.
Apsveicam, liels darbs, ikvienam.
Labi, visi veida saprast process, kā to darīt?
Jūs, dodoties no binārā uz decimālo veids, kā es mēdz darīt, ir rakstiski out
pilnvaras 2.
Tāpēc es saku, OK, 0 reizes 2 0, tāpēc kas ir 0, 1 reizes 2 ar pirmo,
ir 2 iet uz priekšu, ka veidā.
Vai kāds vēlas, lai es skaidri iet cauri piemēru binārā?
Labi, atdzesē.
>> Decimal uz bināro ir ļoti līdzīgs.
Man ir tendence rakstīt pilnvaras 2.
Sākt ar vienu, kas ir lielākais, bet nepārsniedz garām aiz komata
ka jūs meklējat.
Un tad veida strādāt savu ceļu atpakaļ saskaitot lietas, kā nepieciešams.
>> Un pēc tam ar turklāt tas ir tāpat kā parastā papildus.
Ja jums kādreiz ir gadījums, kad jūs esat pievienojot divus 1s, tas acīmredzami kļūst 2.
2 binārā tagad ir 1: 0, lai jums ir nepieciešams lai veiktu savu 1 arī nākamajā kolonnā.
Atdzist.
>> Heksadecimālo, tas varētu būt kaut kas kas ir nedaudz mazāk pazīstami.
Lai Rob bija tikai spēcīgi mani iepriekš, viņa triks par to
ir vienkārši sadalīt to uz augšu četrās baitu gabalos, OK?
Biti, sorry.
Redzēt?
Pateicība Rob.
Tas ir iemesls, kāpēc tu esi šeit. [TROKSNIS] Labi, tāpēc mēs vienkārši lauzt augšup
četrās bitu gabalos.
Tātad ar binaries uz heksadecimālo, mēs skatāmies pirmo 4,
kas ir, ja mums ir četri 1s in rinda, cik lielā skaitā tas, kas simbolizē?
>> STUDENT: F.
>> ALLISON: Tātad šajā gadījumā, kāda ir 11111111 or-- jā?
STUDENTU: FF.
ALLISON: Perfect, FF.
Tik liels, konfektes jums.
Tagad, kā heksadecimālo uz bināro, mēs tikai domāt par to veida atpakaļgaitā.
Par katru numuru vai burtu šajā mums ir mūsu heksadecimālā,
vienkārši pārvērst to uz četriem bit [Smejas], lai tās četras bitu konversiju.
Tātad, 5, šajā gadījumā, kas ir 5 vai mēs pārstāv to ar četrām bitiem?
>> STUDENTU: 010?
Mm-hm.
Un pēc tam, kas ir faktiski 10, varētu būt?
1.010.
Tātad mums ir, ka šeit.
Tātad konvertējot starp heksadecimālo un bināro patiesībā nav tik slikti.
Ja paskatās uz to četrās bit gabalos, būs zelta.
Everyone-- jā?
>> ROB: Tas ir muļķīgi, bet es vienmēr atceros
Kopš s vajadzētu būt 10.
Un bināro ir tikai 10 10, so--
>> ALLISON: Ah, tur mēs ejam.
>> ROB: Hei.
>> ALLISON: Hei, Candy Rob.
Ir aizliegti šokolādes sīkumi tur.
Tātad jūs varat būt dažas.
Tik ASCII math.
Uzvesties.
Tātad ASCII matemātikas, kā jūs puiši droši vien labi atceros
p komplekts 2 ar VISIONEER un Caesar, jūs daudz to.
Atcerieties, rakstzīmes ir Būtībā tikai cipari.
Tātad, mēs varam darīt math ar tiem, tāpat kā mēs math ar Ints.
>> Tāpēc mums ir tikai nedaudz vienkārša lieta šeit.
Mums ir daži, kas ir inicializēts līdz 65.
Un B ir vienāds ar ASCII vērtību A plus 1, palijas C vienāds ar D mīnus 1,
un char D vienāds ar 68.
Tātad mēs gatavojamies print visi no tiem, kā mēs redzam šeit.
Un var kāds man pateikt Ko tas izdrukāt?
STUDENTU: [dzirdams].
ALLISON: Tieši tā, tāpēc viena lieta, lai paziņojuma ir
ka mēs izdrukāšana simboli katru reizi, šeit.
Mēs apzīmē kaut arī A un B ir Ints kad mēs deklarēta tos iepriekš.
Mēs iespiešanu kā rakstzīmes, ko procenti C un mūsu printf paziņojumu,
lai viņi visi drukāt kā rakstzīmes.
Un, protams, ASCII vērtība 65 griba drukāt kā A. The ASCII vērtību A plus 1
varētu būt 66, kas būtu lepni B. Tātad faktiski mēs
nokļūt B C D Ikvienam labs tur?
Kādi jautājumi?
Awesome.
>> Labi, darbības joma.
Tā darbības joma ir acīmredzami ļoti Svarīgi ir saprast, šeit.
Daudzi no jums, ja jūs ir apkopo kļūdas,
un tas saka, jums nav piekļuve kādu mainīgo,
tas ir iespējams tāpēc, ka jums definēja ietvaros cilpu
un tad mēģināja piekļūt no tā, vai vīzu versa.
>> Tā joma tās kodols, tas tikai nosaka, kur
mēs sakām mainīgais eksistē, kur mēs var mainīt to, kur mēs varam piekļūt.
Tas ir tikai sava veida sakot tie ir vienīgās vietas, kur jums ir piekļuve
līdz šim mainīgajam.
>> Tātad divas sfēras, ka mēs runājam par laikā klasē ir globāla un vietēja.
Tātad globālo mainīgo mēs runājam par kad esat tos definējot iepriekš galvenais.
Tas nozīmē, ka visa jūsu Programma ir piekļuvi tai,
un tā pastāv tik ilgi kā programma darbojas, OK?
Vietējā nozīmē, ka tas ir vairāk tikai reģionam.
Tātad, ja jums ir īpašas funkcijas piemēram, mijmaiņas, mēs vienmēr runājam par.
Mēs vienmēr runājam par mijmaiņas ar A un B. un B pastāvēt šo funkciju.
Tie nav nekur citur.
>> Kā arī, ja jums ir, ja paziņojumiem vai par cilpas.
Gadījumos, kad mums ir, piemēram, cilpa mums ir int man ir vienāds ar 0.
Mums ir dažas stāvokli, un mēs atjaunināt to.
Man pastāv tikai bikšturi, kas, ka cilpa.
Ja jūs mēģināt piekļūt citur, Jūsu sastādītājs varētu kliegt pie jums.
Tas gribētu būt, piemēram, ko jūs mēģināt darīt?
Tas neeksistē.
Tā, ka ir divi dažāda veida darbības jomu.
Vai tas ir jēga visiem?
>> Tā, piemēram, šeit, šis ir tikai dažas vienkāršas programmas.
Ko jūs guys domā ir notiks katrā punktā
ka mēs cenšamies drukāt?
Tātad šeit tas viens, to, kas notiks?
STUDENTU: Tas drukāt trīs.
ALLISON: Labais.
Tas būs drukāt trīs.
Kas par šeit?
STUDENTU: Tas nedarbosies.
ALLISON: Tas nedarbosies.
Jūs no darbības jomas, vai ne?
Vietējā mainīgais neeksistē ārpus šīm bikšturi, labi?
Un tad ko par šeit?
>> STUDENTU: [dzirdams].
>> ALLISON: Kas?
Aplaupīt, iet.
>> ROB: es tikko teicu.
Globālie mainīgie jābūt globālo pasvītrojums mainīgs.
>> ALLISON: Ah, jā, sorry.
Paldies, Rob.
Rob ir tāpat kā mūsu rezidents kompilatoru.
Viņš vienkārši kliegt uz mums, kad mēs to vajag. [Smejas] Jā, tas
jābūt globālai pasvītrojums mainīga.
Tā, pieņemot, ka bija globālā pasvītrojums
mainīgs, to, kas notiks šeit?
STUDENTU: Ka strādās.
ALLISON: Tas būs darbs.
Tā tas būs drukāt, tāpēc vienkārši ļoti vienkāršs piemērs.
Labi, prototipus.
Tātad, protams, mēs patiešām uzsvērt jums puiši
lai funkcijas, ja tas jēgas savās programmās.
Bet, protams, ja jums veikt savas funkcijas,
parasti jūs noteikt to, ka pēc galvenā.
Un jūs mēģināt viņiem piezvanīt pamatdarbā.
Un, ja jūs neizmantojat prototipu, Jūsu kompilators kliegt pie jums.
>> Prototips ir būtībā vienkārši stāsta savu kompilatoru
ka man ir šo funkciju zemāk galvenais.
Es esmu dodas uz zvanu, pirms es to definēt.
Vienkārši turēt uz.
Es apsolu, ka tas ir noteikts, un jūs būs viss, kas jums nepieciešams.
>> Tātad kā mēs to darām, ir tikai jūsu atgriešanās veids, jūsu funkcijas nosaukums, jūsu ieguldījums
sarakstā.
Tas būtībā pirmā rinda savu funkciju deklarācijas.
Tas tiešām viss tas ir.
Bet tas ir tikai Kopumā veida formātā.
>> Tātad mūsu piemērā šeit, ko jūs guys vajadzētu
esmu redzējis iedaļā kādā brīdī, mums ir
daži int kubs, ka prasa zināmu t.sk. ieejas.
Un mums ir mūsu galvenie funkcija, kas aicina kubu.
Un kubs ir definēts pēc fakta.
>> Tātad, ja mums nebūtu int cube ievade augšpusē, kad mēs sauc kubs
ietvaros galvenajā, mūsu kompilators varētu saņemt mad pie mums.
Tas gribētu būt, piemēram, tas, ko tu runā?
Cube neeksistē.
Es nezinu, ko jūs jautājat.
Un es esmu tikai gatavojas pieturā.
>> Bet tāpēc, ka mēs darījām prototipu augšpusē, mēs jau teicām,
jūs zināt, kad jūs redzat kubs, nav jāuztraucas par to.
Es apsolu, tas ir noteikts vēlāk.
Un tas būs jums darīt to, ko jūs vēlaties.
Tātad, ja jums kādreiz ir funkcija kas tiek izsludinātas pēc jūs sauc to
pirmo reizi, jums ir nepieciešams, lai ir tas prototyped augšpusē.
>> Jā?
>> ROB: Tas brusas, nevis cubing.
>> ALLISON: Ak mans Dievs.
Man nebija have-- Gabe, es domāju tu biji mūsu korektore.
Labi puiši, sedz ar mani, šeit.
Es ceru, ka visi kļūst ideja.
Labi, tāpēc šis būtu ir brusas, nevis kubā.
Bet ideja paliek tas pats.
Jebkura funkcija, kas mēs esam aicinot pēc fakts būtu prototipu.
Ikviens labi ar šo?
Jebkuras citas typos?
OK.
Jebkuras typos šeit, pirms mēs sākam, Rob?
[Smejas] Labi, tāpēc statņi.
Būtībā, structs ļauj jums lai izveidotu savu datu tipu.
Tik daudz, piemēram, int vai char vai pludiņš, tas ir tikai vēl viens veids.
Man patīk domāt par to, kā, piemēram, izveidot savu datu tipu.
Tātad tas ļauj jums to darīt.
Un tas pieder dažāda veida datus.
>> Tātad, ja jūs atceraties, masīvā, mēs var būt tikai lietas līdzīga veida.
Structs ļauj turēt vairākus lietas, dažādu veidu.
Tātad šajā gadījumā šeit, mēs ir struct sauc Student,
šeit nosaukts apakšā.
Un mums ir dažas int id un daži stīgu nosaukums.
Tātad tas ir tikai vēl viens datu tips.
Mums tagad ir datu tipu sauc Student.
>> Tāpēc, ka mēs varam domāt par tā kā tikai citu datu tipu,
mēs varam deklarēt mainīgos kā mēs būtu jebkurš cits.
Tātad, nevis tikai, kam, piemēram, int students, mums vienkārši ir students,
students 1.
Ak, paskaties.
Tas ir Rob.
Tāpēc šeit mēs esam deklarējot struktūrai, vai mainīgs
sauc students 1 tipa students.
Tātad, tas ir nāksies id un vārds, kas saistīts ar to.
>> Un kā mēs piekļūt šiem elementi mūsu struct
ir ar dot operatoru, šeit.
Tātad, šajā gadījumā, mēs deklarēja aptuveni students 1.
Mēs piešķirts ID ir 1.
Un mēs piešķirts nosaukums būt Rob.
Labi, labi, visi ar šo?
Izmantojiet to tikai like-- jā?
>> STUDENTU: Jā, typedef-- kad Vai mums ir nepieciešams, lai izmantotu typedef?
>> ALLISON: Tātad typedef vienkārši saka that-- Rob, jūs
var labot man par šo, ja es esmu wrong-- bet typedef ir tikai faktiski pasludinot
tā kā veids, ka jūs varat izmantot, vai ne?
>> ROB: Jā, tas ir pamatā, tāpēc tas ir tikai radot
alias, vai segvārds tipam.
Tātad jūs varat rakstīt, ka [nedzirdama].
Tātad [nedzirdama] pastāv, un tagad mums vienkārši ir
[Dzirdams] līdzekļi tieši tas pats.
Un tāpēc šeit, mēs esam drukāti, es domāju, daži struct 2 tipa [nedzirdama].
Tātad tas ir tikai segvārds attiecībā uz konkrētu veidu.
>> STUDENTU: String [dzirdams] bibliotēka tika drukāti uz augšu, piemēram char zvaigzne.
>> ALLISON: Mūsu mērķiem šeit, ja jūs deklarējot struct,
vienkārši darīt typedef struktūrai.
Labi, tāpēc iepriekš, tas ir tikai normāla mainīgais šeit.
Mēs tai piekļūt ar punktu.
ja mums ir rādītāju uz struktūrai, mēs varam reāli
izmantot bultiņu, kas ir diezgan atdzist.
>> Tātad šajā gadījumā, mums ir rādītāju uz students 1, kas ir tipa students.
Atceros, ar savu rādītājs būvniecība,
Jūs vēlaties, neatkarīgi ievadiet rādītāju ir vērsta uz būt sākumā.
Tātad mums ir dažas students 1, šeit.
Un kopš šī students 1 tagad norādīja,
mēs patiešām varam iet students 1 arrow nosaukumu nevis dot, jo tas ir rādītājs,
un piešķirt Rob.
Un tagad, ja mēs gribam, lai mainīt Rob uz Davin,
tas ir tikai parāda jums atšķirīgs veids, kā to darīt.
>> Tā vietā, izmantojot bultiņas, jūs var also-- Es pabeigt šo un tad
pieņemt, ka question-- jūs varētu arī darīt atsauces students 1.
Ka saka, piemēram, doties uz kāds ir students 1, kas
būtu mūsu students struktūrai.
Piekļūt ar punktu un elementu ka jūs vēlaties, un pēc tam pārdalīt to.
Tur bija jautājums.
STUDENTU: Jā, tad kā nāk jums ir izmantot [dzirdams], ja esat
darot studentu zvaigzne bez [Dzirdams] students?
ALLISON: Tā kā šī rada rādītāju.
ROB: Mēs runāsim par to.
ALLISON: Mēs ejam, lai runātu par to vēlāk pārskatā.
Tik vienkārši turēt uz šo domu.
Ja tas joprojām traucē jums gals, nāk runāt ar kādu no mums.
>> Tātad šie darīt tieši to pašu.
Mēs esam tikai parāda jums divi dažādi veidi, kā to darīt.
Student 1 tagad ir rādītājs, tāpēc Jūs varat piekļūt nosaukums elementu
ietvaros struktūrai ar bultiņu.
Vai jūs varat dereference jūsu rādītājs, un tad tai piekļūt kā parasti.
Vai tas ir jēga, lai katru vienu?
Ja viss rādītājs lietas ir nedaudz mulsinoši, Gabe runās par to,
un tad varbūt tas būs lielāka jēga.
Jā?
>> STUDENTU: Jā, tā kā ir tas atšķiras no?
ALLISON: Iepriekšējā viens?
Tātad students 1 šajā lieta nav rādītājs.
Tas ir tikai jūsu faktiskā struktūrai.
>> STUDENTU: OK.
>> ALLISON: tā kā šo vienu ir rādītājs, lai struktūrai.
>> STUDENTU: OK, bet to dara veida galu galā strādā to pašu [nedzirdama].
>> ALLISON: Tā efektīvi darbojas tā pati.
Tavs sintakse ir tikai atšķirīgs.
STUDENTU: OK.
>> ALLISON: Jā, tie ir viens un tas pats.
Tas ir tikai atkarībā no konteksta, Jūs varat viens pār otru.
Jā?
>> STUDENTU: Kad jūs atsauces uz 1--
ALLISON: Mm-hm?
STUDENTU: Kāpēc jums ir iekavas?
ALLISON: Tā students 1 ir rādītājs.
Tātad jums ir nepieciešams, lai pārliecinātos, ka jūs esat vienkārši dereferencing rādītāju.
>> STUDENTU: OK.
>> ALLISON: Tātad šajā gadījumā šeit, iekavās ap to
nozīmē, ka jūs esat dereferencing students 1.
Tātad jūs gatavojas kur students 1 punkti, kas ir jūsu struktūrai.
Tātad tagad jūs varat iedomāties par to, kā šī struktūrai,
lai mēs varētu izmantot mūsu parasto dot darbību.
Jebkādi citi jautājumi?
Atdzist, awesome.
>> Tātad pēdējā lieta, es domāju, ir mans pēdējais slaids, bildināt!
Labi, tā peldošā komata neprecizitātes.
Mēs runājām īsi par šis lekciju laikā.
Būtībā, mēs esam bezgala daudz reāliem skaitļiem.
Un, ja kāds no jums, puiši mīlu matemātiku, tur ir
visādas cool stuff ar mums.
>> Bet ir bezgala daudzi reāliem skaitļiem.
Bet viņi tikai ierobežots daudz bitu, kas mums ir.
Tātad jūs vienmēr gatavojas ir neprecizitātes, ir viss.
Un tas, ka ir tikai sava veida piemēram, kaut ko jums vajadzētu zināt.
Ka, piemēram, mēs varētu jautāt, kāpēc to dara peldošais komats neprecizitāte pastāv?
Tātad, tikai kaut kas jums vajadzētu zināt.
Un ar to, ka es esmu pagrieziena tas pār Norādes.
>> Binky: Sveiki, puiši.
Mans vārds ir mīkstās.
Es esmu gatavojas runāt par norādes.
Jā, tāpēc norādes ir faktiski mana mīļākā daļa šajā kursā.
Tik vienkārši, lai skaidrs, ko Allison runāju par šeit, tāpēc iemeslu
why-- vienīgā atšķirība šeit liela atšķirība bija ceļš
mēs paziņojam lietas.
Tātad students zvaigzne nozīmē, ka šis ir rādītājs, lai students.
Tā kā slaidu pirms, students Faktiskais struktūrai, piemēram, faktisko students,
satur kādu no šīm lietām.
>> Un iemesls, kāpēc mēs gribu kuri paredzēti, jā, Davin?
>> Davin: Ko bultiņa nozīmē?
>> Binky: Bulta līdzekļi tieši tāds pats kā šis.
Tātad jums nav tiešām ir nepieciešams uz bultiņas.
Tāpat kā, ja jūs esat vienīgā programma C, jūs varat izmantot šo.
Atvainojiet, es nedomāju, kas tas ir.
Jūs varat izmantot šo sintaksi.
>> Bet daži cilvēki, kad tie projektēšana C,
viņi izpētījuši, ka cilvēki izmanto šo sintaksi tik daudz,
ka viņi patīk vienkārši nākt klajā ar sintakses struktūru to.
Un tas notika veidā šī bulta.
Un tas ir patiešām jauki, jo tas simbolizē kaut ko
piemēram, mēs esam patiešām pēc šī bultiņa, šis rādītājs,
uz kādu telpu atmiņā.
Un, kad mēs tur nokļūt, mēs vēlamies skatīties uz nosaukuma, ka students,
ja tas ir jēga.
OK?
>> Tātad, šis ir tieši tāds pats.
Tas ir tieši tas pats, jo tas.
Viņiem apkopoti tieši tas pats, OK?
Un iemesls, kāpēc šeit mēs malloc kaut kas ir tāpēc, ka šajā gadījumā,
Mūsu mainīgais ir faktiski tikai rādītājs mainīgs.
Tātad mums ir tikai dažas vietas atmiņu, kas ir saimniecības rādītāju.
Mums nav īsti nekādas telpu kas tur faktisko struct.
>> Tāpēc tas ir jādara divos posmos.
Mums ir jārada atmiņa likt struct in.
Un mums ir jārada atmiņa likt bultiņu.
Lai viņi būtībā divi dažādi mainīgie, šeit.
Viens no tiem ir tipa students, izņemot to, nav īsti ir vārds.
Un otrs ir tipa studentu zvaigzni.
Un tad studentu 1 punkti tur, ja, jēgas.
OK?
>> Tātad, iemesls, kāpēc mēs izmantojam norādes ir tāpēc, ka viss
datorā, katrs mainīgais datorā ir divas lietas.
Tā ir sava vērtība.
Un tas ir tā adrese.
Un labs veids, kā konceptualizēt tas tur
daudzas problēmas, kad jūs mēģināt izmantot funkcijas.
Un mēs braucam, lai mēģinātu izskatās vienā no tiem.
Proti, tas notiek, lai domāju, ka atmiņā kā kastes.
>> Jūs vienmēr domāja par mainīgajiem ja jūs sakāt na vienāds 5.
Jūs domājat, liekot 5 kastē.
Tātad, ko tad, ja jūs vēlaties, lai iet ka int uz funkciju?
Jūs vienkārši pass-- man nav know-- x uz funkciju.
Bet kas notiek, ir normāli kā cilvēkiem, jūs
Varētu domāt, kaut kā es esmu iet lodziņu personai.
Un tas nav īsti notikt datoriem.
Kas notiek, ir jums kopēt vērtību kastes uz personas lodziņā.
>> Tātad, ko es cenšos pateikt, ir tas, ka tad, ja Jums ir function-- sorry-- šeit
ja mums ir funkcijas, piemēram, līdz pieciem augšu tur, ja jūs mēģināt nodot mainīgo,
tas ir tikai gatavojas kopēt.
Ja Initialize nx vienāds 3, tas būs kopēt šo vērtību līdz mainīgā a
tur augšā.
OK, un tas ir sava veida iemesla kāpēc mēs vēlamies izmantot norādes.
Jo tā vietā, dodot tikai vērtību,
nevis tikai iet tikai vērtību funkcijai
mēs vēlamies, lai iet ar atsauci.
Ko mēs saucam caurlaide ar atsauci ir laipns dot lodziņu funkcijai,
tā, ka funkcijas var arī mainīt vērtības šajā ailē ietvaros.
>> Labi, lai tikai dažas pamata rādītājs sīkumi ir radīt norādes,
jūs vienkārši pasludināt to veidu, un jūs varat ievietot zvaigzni uzreiz pēc tā.
Un veids ir vienkārši ko jūs norādot uz.
Tātad, ja tas ir int zvaigzne, jūs norādot uz int.
Ja tas ir char zvaigzne, jūs norādot uz diagrammu.
Un, ja tas ir students zvaigzne, jūs norādot uz students.
OK?
>> Un viņi visi 4 baiti.
Jo šim mainīgajam tas nav reāli
nepieciešams rīkot char, int, vai students.
Tas tikai nepieciešams rīkot adresi.
Tieši tāpēc viņi visi 4 baiti ilgi normālu 32-bit mašīna.
OK?
Tātad šeit, x ir mainīgais, kas norāda int. y norāda uz palijas. z punkti
uz apgrozāmos līdzekļus.
Kādi jautājumi šeit?
Atdzist.
Un tur ir divi dažādi simboli viņi ir
paturēt prātā, kad tuvojas rādītāja.
Tik norādes un dereferencing ir lielie.
Tātad Ampersends no mainīgā nosaukums dod jums?
STUDENTU: adrese.
Binky: adrese.
Tātad, ja jums paziņot, int vienāds ar 5, tad aizvieto & zīmes
no gatavojas sniegt jums adresi.
Un jūs faktiski var mēģināt izdrukāt to un redzēt
kāda adrese atmiņā Jūsu mainīgais ir.
Un tad dereferencing-- Tā, ka bija norādes,
kļūst address-- dereferencing ir tieši pretējs.
OK, tāpat kā reizēm ir pretējs sadalīšanu,
zvaigzne ir pretējs Ampersends.
Tātad dereferencing līdzekļiem iet uz turieni.
Tātad, ja jūs piešķirat star-- I nav know-- 50, kas ir
gatavojas izmēģināt, lai dotos uz adresi numurs 50 iekšpusē datora.
Labi, un kāpēc mēs redzam ka tie viens otru?
Tāpēc, ka tas, kas notiek, ja jūs darāt kaut kā zvaigzne Ampersends?
Nu, & zīme dod jums adresi ir mainīgs, adrese.
Bet zvaigzne nozīmē iet uz turieni.
>> Tātad, kas notiek, ja jums dodieties uz adresi?
Jūs vienkārši nokļūt, vai ne?
Tā iet uz adresi ir tas pats, kas.
Tieši tāpēc viņi parasti minēts same-- šo
un tas ir minēts kā pretī uzņēmēji.
OK?
Tik foršs.
>> Saskaņā ar kapuci, piemēram, ja mēs paziņojam int x ir vienāds ar 5,
mums ir mainīgs.
Un atcerieties, ka es teicu katrs variable-- un šī ir laba lieta
paturēt mind-- tas ir divas dažādas lietas, kas saistītas ar.
Tas ir adresēts un vērtību.
OK?
>> Tā vērtība, kas šajā gadījumā ir 5.
Un adrese is-- teiksim, es esmu padarot kaut up-- tas ir 0x04.
Un vienīgais iemesls, kāpēc mēs parasti pārstāvēt adreses heksadecimālo
ir viens, jo tas ir tāpat kā laba.
Tas notiek arī ar bināro.
Tas ir viegli konvertēt uz un no bināro.
Un tas nav pārāk liels, ja Jums ir ļoti liels skaits.
Tāpēc mēs vēlētos izmantot heksadecimālo tipogrāfijas adresēm.
Bet es varētu pārstāvēt to kā veselam skaitlim.
Tas ir jauki.
>> Un tā tas ir adrese 4 un vērtību 5.
Un tad es teicu int zvaigzne rādītājs.
Tātad tas ir atšķirīgs veids, paziņojums.
Int zvaigzne rādītājs ir vienāds adrese x.
Tātad, kas būs vērtība PTR?
Tas būs adrese x, uz leju šeit.
Labi, tā vērtība ir gatavojas būt tāds pats kā adresi.
Tas ir uzdevums darboties es daru.
Un tad PTR nāksies savu adresi, kas izrādās,
Šajā gadījumā, 8, OK?
>> Un tad es varu izveidot jaunu skaitlim kopiju.
Un es saku int kopija vienāds iet uz turieni.
Lai iet uz to, kas PTR ir vērsta uz.
Nu, ko tas PTR ir?
PTR ir 0x04.
Kas notiek, ja es cenšos iet uz turieni?
Es atradīs puisis, kurš ir adrese x un kurai ir adrese 4.
Un kurš ir jārisina četri ir x.
Vai tas ir jēga?
Jā?
>> Students: Šajā gadījumā ir rādītājs kaudze?
>> Binky: Šajā gadījumā, it's-- labs jautājums.
Es īsti par to domāju Veicot šos adreses.
Bet, ja tas ir, piemēram, visi tie ir vietējie mainīgie,
Tad x gatavojas dzīvot in-- visu gatavojas dzīvot kaudze.
Tātad viss notiek būt norādot kaudze.
Jūs tikai iegūt uz kaudzi kad tas sākat lietot malloc, vai ne?
>> Tātad, ja jūs atceraties steks ir katru reizi jūs zvanu funkciju savā programmā,
tāpat, galvenais piemēram, vai jebkurš citas funkcijas, piemēram, printf.
Visi vietējie mainīgie ir gatavojas saņemt ielikt kaudze rāmī.
Un viņi gatavojas saņemt tāpat sakrauti kaudze.
Tas ir tas, ko sauc kaudze.
Un visi šie vietējie mainīgie gribam būt tur.
Un heap-- un mēs braucam runāt vairāk par šo later--
kaudze ir, ja visi dinamiski piešķirta atmiņas dzīvi.
Forši?
>> Mēs ejam uz šo slaidu.
Jā?
>> STUDENTU: Kāpēc nav int kopēt atgriežoties 0x04?
>> Binky: Kāpēc nav int kopēt atgriežoties 0x04?
>> STUDENTU: Kāpēc nav, ka [dzirdams]?
>> Binky: Tāpēc, ka to, kas ir vērtība, PTR?
>> STUDENTU: 0x04.
>> Binky: 0x04.
Kas notiek, ja jums iet uz 0x04?
Ko jūs saņemsiet?
>> STUDENTU: Ak, OK.
Binky: Redzi?
STUDENTU: Jā.
Binky: Tātad jums 5.
Tā kopija ir nāksies 5, ja tas ir jēga.
Jā?
>> STUDENTU: Vai mēs esam gotten 5 vērtības kastē [dzirdams]
ja mēs int kopēt [nedzirdama].
>> Binky: Int-- mēs to darītu, jā.
Tas būtu darījis diezgan daudz pats.
Bet šādā veidā, mēs varam nodot adresēt funkcijām.
Un tas ir cool lieta mēs esam gatavojas darīt tieši tagad.
>> Tātad šāda veida izmantošanas vienmēr nāk uz augšu on-- ļoti parasti nāk līdzi viktorīnas.
Tātad, tas ir ļoti labi, lai mēģinātu darīt šāda veida lieta sevi.
Tātad mēģiniet, lai sekotu kāda adreses ir un vēlas vērtības mainīgajiem
ir katrā punktā.
Tātad, tas ir tieši tas, ko mēs gatavojamies darīt.
Šeit mums ir soļus, viens, divi, trīs, četri, pieci.
Viens, divi, trīs, četri, pieci.
Un mēs ejam, lai sekotu no vērtībām x un.
>> Tad ko tas dara, ja tas ir buggy kodu, mēs cenšamies to darīt līdz pieciem.
Tāpēc mēs cenšamies iegūt mainīga un mainīt savu vērtību 5.
Un atcerieties manu analoģiju ar kaste un nododot lodziņu, lai kāds?
Tātad galvenais ir šo lodziņu sauc x.
Un tas satur vērtību 3.
Un es cenšos nodot šo lodziņu, lai līdz pieciem.
>> Un es gribu, lai pieciem mainīt vērtība šo lodziņu, lai 5.
Un tad es vienkārši izdrukāt vērtību x.
Tas ir tas, ko mans function-- tas ir tas, ko es cenšos darīt.
Es esmu tikai mēģina atjaunināt vērtība x 5.
Tas ir skaidrs, ko funkcija dara?
>> Labi, lai to, ko būs vērtības x un tieši šeit,
pirmajā rindā, tieši pirms pirmā line-- es say-- programmas?
>> STUDENTU: Iespējams atkritumu.
>> Binky: Just atkritumu sīkumi.
Tāpēc es vienkārši ielieciet N / A. Tā mēs īsti nezinām.
Tāpat, nav pat pastāv vēl, jo mēs neesam aicināti pieci.
Int nav deklarēta.
Un x gatavojas pastāvēt šeit, bet mums nav īsti
piešķirts jebkuru vērtību, tāpēc, OK?
>> Un tad, kādi gribam būt vērtības x un A divām skaits?
>> STUDENTU: [dzirdams].
>> Binky: Tātad x būs 3.
Tas ir viegli, jo mēs piešķirot 3, lai to.
Un vēl neeksistē jo vienkārši dzīvo līdz pieciem.
Tāpēc es esmu nāksies 3 un nekas.
vai, piemēram, atkritumu, neatkarīgi, nav īsti definēts.
Un tagad, tas ir svarīgi līnija.
Lūk, mēs ejam faktiski zvanīt līdz pieciem.
Un atceries, ko es teicu.
Mēs nekad iet lodziņā.
Mēs tikko kopēt vērtību kaste uz citu lodziņā.
Tas viss ir datori, kopēt lietas no vienas vietas uz citu.
>> Tātad līdz pieciem, kas tas patiesībā dara Vai tas kopijas vērtība x līdz.
Tātad, kas būs šeit?
Par x un vērtības.
3 un 3, mēs vienkārši kopēt tas pāri no x līdz.
Atdzist.
>> Tagad mēs esam šeit.
Un tagad mēs ejam atjaunināt vienāds 5.
Kas notiks atbilstoši četriem?
>> STUDENTU: [dzirdams].
>> Binky: izpaužas atjaunina, bet x nesaņēma atjaunināts.
Jo x joprojām dzīvo galvenokārt, tas ir pilnīgi atšķirīgs bloks atmiņas.
Tas ir atšķirīgs mainīgs.
ir vēl viens mainīgais.
Viņiem gadās būt pati vērtība, jo I
pārkopēti vērtību x līdz.
Bet tagad, kad man ir vienāds ar 5, to nav īsti ietekmēt x jebkādā veidā.
Tas ir sarežģītāks daļa.
Vai ir kāda jēga visiem?
Jā?
STUDENTU: Vēl viens jautājums, jums ir 3.
Kāpēc already-- ak, nē, tas ir 3.
Atvainojiet, nekad prātā.
Es izlasīju 5.
>> Binky: Jā, 3, 3.
>> STUDENTU: [nedzirdama], jā.
Binky: Un tad mēs piešķirt 5 līdz , bet nav īsti mainīt x.
Labs?
STUDENTU: Jā.
Binky: Jā?
Vai varat izskaidrot to, cik izpaužas kopēt [dzirdams]?
>> Binky: Labi, tad, kad jūs zvanīt uz pieciem x, tāpēc šo līniju kodu šeit.
līdz pieciem no x, kas ir x?
x ir tikai 3 šajā brīdī, vai ne?
Lai jūs varētu tikai iedomāties liekot 3 šeit un aizmirstot par x.
Vienkārši ielieciet 3 šeit.
Tāpat kā mēs ejam, lai kopētu vairāk vērtība x int a, kas ir tur augšā.
OK?
>> Tā vērtība x ir 3.
Mēs ejam uz 3. kopēt pār.
Un tas viss cits bloks atmiņa, tas citi vērtspapīri ar nefiksētu
sauc būs 3, kā arī.
Vai tas ir jēga?
Jā?
>> STUDENTU: Ja jūs dotu pieci līdzīgi ir tā kā vesels skaitlis x, nevis,
tas var noteikt visu?
>> Binky: Ja tas ir integer-- nē, kas nav noteikt visu.
Tā ka ir ļoti labs jautājums.
Tas nav īsti jautājums, ko tu sauc tos faktorus.
Atkal, tas būs jautājums par darbības jomu, tāpēc, ka viņi nav tas pats x.
Viņi pilnībā dažādas telpas atmiņā.
STUDENTU: [dzirdams].
Binky: Tātad tas nav īsti svarīgi, ko jūs viņiem piezvanīt.
Tas nenozīmē, ka noteikt lietas, OK?
Vairāk jautājumu?
Jā?
>> STUDENTU: Kā tas ir atpakaļ skaitlis pieci [dzirdams]?
Binky: Labi, mēs neesam darījuši, ka vēl.
Iesim uz numuru pieci, tad.
>> STUDENTU: [dzirdams]?
>> Binky: Kas?
>> STUDENTU: Vai jums ir atgriezties vispār?
Binky: Mums nav atgriešanos, nevis galvenais.
Bet galvenie atgriež 0 automātiski ja jums nav atgriezties neko.
Jā?
>> STUDENTU: Vai jūs veicat main-- vai jūs varētu darīt līdz pieciem atgriezties?
>> Binky: Mēs varētu būt līdz pieciem atgriezties, jā.
Bet tad mums būtu jāpiešķir x vienāds atgriešanās vērtību līdz pieciem,
kas būtu nedaudz atšķirīga programma.
Tas strādā.
Bet tas, ko mēs vēlamies darīt, ir tas, kas ir sauc kaut ko mainīt savā vietā.
Tāpēc mēs vēlamies, lai faktiski mainīt šo lodziņu un nav jāuztraucas
par ņemot, lai atgrieztos vērtībām vai neko.
OK?
>> Tas ir tāpat kā mijmaiņas funkciju David parādīja lekciju, izņemot es esmu
tikai nodarbojas ar vienu mainīgo.
Un viņš izmantoja divas, tāpēc int un b un Pēc tam pagaidu mainīgo un plauktiņš.
OK?
Tātad, kas ir pēdējais rindā?
Pēc pieciem skaitļiem, tas ir vienkārši gatavojas doties prom.
Mums nebūs vairs, un tikai x vēl dzīvos.
>> Un guess what? x nemainīja savu vērtību,
galu galā, jo mēs esam tikai mainot vērtību.
Tieši tāpēc x bija 3 visā.
OK?
Labi.
Tātad šī programma nav sasniegt to, ko mēs vēlējāmies.
Tagad pieņemsim salabot.
>> Un noteikt programma ir, izmantojot norādes.
Ko mēs darām, ir mums ir trīs līnijas, kas ir atšķirīgas.
Pirmie ir, mēs esam ne iet x.
Mēs iet adresi x.
Tā vietā kopēšanas vairāk vērtība no kastes,
Es joprojām gatavojas kopēt pār kaut ko.
Bet es esmu kopēšana pāri adrese kastē.
>> Tātad, ja es iet adresi kaste, lai līdz pieciem, tad līdz pieciem
varēs atrast, ka atmiņu un mainīt tās vērtību.
>> Tik un tad tur augšā, man ir ka nav int vairs.
ir int zvaigzni.
Tas ir rādītājs līdz veselam skaitlim.
Un tad, jo es esmu iet risināt šeit, un pēc tam, ko es daru
nav vienāds ar 5, jo aizvadīs adresi.
Tātad, ko es gribu darīt, ir iet uz turieni, un atjaunināt saturu šajā adresē
ar 5.
>> Labi, tāpēc iesim cauri visas līnijas, pa vienam.
Tātad, kad es sāku šeit, es joprojām ir n / a, N /, N / A
par visu pirmais līnija, jo man nav īsti
deklarēta sīkumi vēl.
Un tad līnija divas, man ir x ir vienāds ar 3.
Int zvaigzne neeksistē, pats kā pirms tam.
>> Tagad tas kļūst interesanti.
Tāpēc es esmu gatavojas iet.
Un pieņemsim, ka adresē X ir 12 heksadecimālo.
Pieņemsim tikai pieņemt to.
Es to uz augšu.
Tātad, ko es garām šeit ir līdz pieciem.
Es esmu iet 12.
>> Tātad, kāda vērtība ir?
>> STUDENTU: [dzirdams].
>> Binky: Sorry?
>> STUDENTU: [dzirdams].
Binky: Jā, piemēram, to pieņemsim Pieņemsim, ka mēs esam šeit, tagad.
Es esmu jautā.
>> STUDENTU: [dzirdams].
>> Binky: Tas ir uzsākta.
>> STUDENTU: [dzirdams].
Binky: Tāpēc, ka mēs pagājis kaut funkcijai.
Jā?
>> STUDENTU: adrese x.
Binky: Tas būs ir adrese x.
Un adrese x ir 12, labs.
Tātad x būs 3, jo mēs neesam mainījušies x vēl.
Un pēc tam būs 0x12, lai adrese x, jo tas ir
ko mēs nodots līdz pieciem.
>> Un tad, kas notiek ja mēs cenšamies iet uz turieni?
Ko mēs atrast?
Tātad, ja jūs mēģināt drukāt zvaigzne, Mēs ejam, lai sekotu šo adresi
un iegūt vērtību iekšā.
Un vērtība ir tikai pati vērtība, ka x
ir tāpēc, ka tas ir adrese x, kas būs 3.
Mēs esam labs?
>> OK, un tad tagad mēs faktiski iet tur.
Un mēs atjaunināt neatkarīgi Tieši šajā adresē 12.
Mēs panākot 5.
Tāpēc tagad gan x un zvaigzne ir 5.
>> Kāpēc tā?
Sakarā adrese X ir 12.
Un ir arī 12, kā tās vērtību.
Tātad, ja mēs sekojam 12, mēs esam tikai gatavojas, lai atrastu x.
Tātad neatkarīgi mēs ar zvaigzne notiks
x, jo satur adrese x.
OK?
>> Un tas ir kā mīkla no fiksēt.
Tāpēc tagad mēs esam spējīgi, no līdz pieciem, faktiski
piekļuves atmiņa, kas dzīvoja galvenais.
Tāpēc šis atmiņu nedzīvo uz piecas, tāpat kā agrāk, šī adrese 12.
Un mums bija iespēja iet uz turieni un mainīt tās vērtību 5.
>> Un tad, kad mēs atgriežamies, mēs aizmirstam par.
Mēs aizmirstam par zvaigžņu a.
Un x ir vēl pieci.
Tātad, ja jūs vēlaties, lai īstenot mijmaiņas funkciju,
jūs vienkārši darīt tieši to pašu, izņemot gadījumus, jums ir nepieciešams, lai int zvaigznes šeit
un tā tālāk, un tā tālāk.
OK?
Mēs esam labs?
Atdzist.
>> Tik Pointer aritmētika.
Tas ir nedaudz grūts jautājums.
Tātad izrādās, ka norādes ir tikai veseli skaitļi.
Jūs varat domāt par to kā veseli skaitļi.
Jo atmiņā, jums ir, piemēram atmiņas adrese nulle, viens, divi, trīs,
četriem, pieciem.
Tātad, mēs varam apkopot atmiņas adreses.
>> Un tas parasti ir tas, ko jūs darāt, kad tu esi un masīvs, piemēram.
Masīvs, tāpat kā blakus bloks atmiņas, ar daudz chars,
piemēram, daudz Ints.
Tātad, ja jūs vēlaties doties uz otrais int vai uz trešo int,
Jūs varat vienkārši apkopot kaut ko pirmais adresi, un jūs gatavojas, lai saņemtu tur.
Tātad, tas ir patiešām noderīga, kas.
>> Un lieta, lai saglabātu prātā, lai gan, ir
ka tas ir ne tikai, piemēram, normāli aritmētika tādā nozīmē
ka, ja jums ir darīšana ar, teiksim, int zvaigzne, un jūs pievienojat 1 uz to,
tad jūs nebrauksim pievienot 1 līdz adresei
jūs gatavojas pievienot 4. uz adresi.
Jo int ir 4 baiti.
>> Tātad, tas ir tāpat kā iešana uz masīvu.
Ja mums ir masīvs daudz Ints un tad mēs cenšamies iet uz otru,
tas ir būtībā tikai summējot adrese pirmā plus 1.
Bet, kas būs ne tikai be-- teiksim ka adrese pirmā no tām ir 4.
Šeit, šajā gadījumā.
Un, ja mēs Rezumējot, tāpēc šis ir tas, kas notiek.
Mums ir int.
Int x ir vienāds ar 5.
X ir vērtība 5.
Un mēs sāktu šo rādītāju, int y int star y ir vienāds adresi x.
>> Pieņemsim adrese x ir 4.
Kas notiks tagad, ja es summa pievienot 1 līdz y?
Tas notiek, lai reāli summa 4 nevis tikai 1.
Tāpēc es pievienot 1, bet tas faktiski piebilda 4, jo datora gudri.
Tātad, tas notiek, lai faktiski papildināt ar i reizes izmērs no rādītāja veida.
OK?
>> Tātad, ja tas ir char, piemēram, ja tas būtu char zvaigzne y,
un, ja mēs pievienot 1, tad tas būtu ir 5, jo char ir 1 baitu garš.
Labs?
>> Un, visbeidzot, mēs saņēmām norādes un masīvi.
Izrādās, ka katru reizi jūs nodarbojas ar masīvu,
jūs faktiski nodarbojas ar rādītāju.
Ļoti jauki konceptuālais iemesls tas, ka masīvi ir ļoti liels.
Tāpēc atcerieties, ka es teicu, ka katru reizi, kad jūs iet sīkumi apkārt,
jums kopēt visu.
Tātad, ja jums ir masīvs tas ir ļoti, ļoti liels,
jums nav tiešām vēlaties kopēt visu, katru reizi
jūs nodot to apkārt uz otru funkcija, jo tas ir tikai
milzīgas summas no darba.
Tātad, kas jums jādara, ir tikai pagātnes adrese pirmo baitu.
Un tad funkcija būs pieejama visiem elementiem šajā masīvā.
Tātad jūs izturējis masīvs tās adresi, tā adrese pirmo baitu.
>> Tātad, ja mēs paziņojam int masīvs 3, šeit, mēs zinām
kā piekļūt uz pirmo elementu izmantojot stiprinājuma notācija.
Ja jūs atceraties kronšteinu apzīmējums, masīvs kronšteinu 0 ir vienāds ar 1.
Nu, tas būtu tieši tāds pats, kā tikai iet tur un nodot 1.
OK, ir tieši tas pats.
Tāpēc stiprinājuma notācija šeit būs tāds pats kā šīs līnijas.
>> Un uzmini kronšteinu notācija par masīva grupā 1. būs?
Tas būs tikai pats kā šī.
Tātad pievienot vienu masīvu.
Pārvietot vienu gar atmiņā.
Iet tur, un nodot 2.
OK?
Un šī līnija ir tas pats.
Mēs vēlamies, lai dotos uz trešo kaste, tāpēc masīvs plus 2.
Iet tur, un nodot 3.
Tātad atmiņā, kas ir gatavojas notikt, ir, ka mēs esam
iet uz have 1, 2 un 3, kas trīs elementi šī masīvā.
>> Mēs būtu varējuši izdarīt to, izmantojot Mūsu pazīstami kronšteins notācija.
Es tikai vēlos, lai jūs guys zināt ka tie ir viens un tas pats.
Labi, jautājumi par šo?
Jauki.
Tagad, es esmu gatavojas nodot tas pār Hannah,
>> HANNAH: Yay, yee-nū.
>> Binky: Runājot par atmiņu un rakstu sīkumi.
[Aplausi]
>> HANNAH: Hi, atdzesē, tāpēc mēs esam gatavojas runāt mazliet vairāk
par atmiņu, kuru mēs tikko jārisina, izmantojot norādes.
Tātad ir divas galvenās daļas atmiņu, kas mēs esam saistīti ar.
Mums ir kaudze, kas aug up apakšā, un kaudzē, kas
iet uz leju no augšas.
Un kaudze gatavojas rīkot visas mūsu instances mainīgie.
Tātad katrs zvani funkcija izpaužas sava maza kadru uz skursteņa.
Lai Gabe minēts iepriekš, ja mēs zvanu funkciju atkal un atkal,
mēs ejam, lai kaudze lietas līdzi kaudze.
>> Un līdzīgi, kaudze, kas sākas augšā
notiek, lai noturētu visus no atmiņas ka mēs dinamiski piešķirt.
Un tā kā mēs dinamiski piešķirt atmiņu,
tas nāk uz leju, uz leju.
Pāris lietas, kas ir jāapzinās, kad mēs esam izmantojot kaudze un kaudze,
ar steku, ja mums ir pārāk many-- pieņemsim say-- rekursīvs zvanu,
un mēs esam aicinot funkciju atkal, un atkal, un atkal, un atkal,
un tas ir kraušanas up, kraušanas up, kraušanas up.
Un tas notiek, lai crash uz kaudzes.
Mēs ejam, lai palaistu no atmiņas.
Kas notiek, lai radītu problēma ar datoru.
Un ka sauc kaudze pārplūdes.
Tātad tas ir noteikti kaut tevi jāapzinās un mēģināt izvairīties.
Un kaudze, ir jāatceras, nav nejauši noplūdes atmiņu.
Jebkurā laikā jūs izmantojat malloc, nav aizmirst, lai atbrīvotu šo atmiņu.
Pretējā gadījumā tas būs tikai būt kaudze izšķērdēta,
un dators nevar zināt, ka tas ir bez maksas izmantot šo atmiņu.
Tātad tie ir pāris lietas jābūt ļoti uzmanīgiem ar kad
jums ir darīšana ar kaudze un kaudze.
Visus jautājumus ar šo?
Awesome.
>> Labi, atdzesē.
Tātad šāda veida ir tāda pati ideja kā kaudze pārplūdi, kur
mēs ejam tālāk robežas, kuras atmiņa
ir, mēs esam vajadzēja, lai varētu izmantot.
Tātad, ņem, piemēram, buferi, vai tu varētu tikai domāt par to kā masīva.
Un mēs teicām, Labi, mēs ejam, lai izveidot šo jauku maz masīvs.
Tas būs virkne.
Vai tas notiek, lai saglabātu rakstzīmes.
Un tas ir tikai gatavojas teikt sveiki.
Un tas ir nenoteikts.
Viss.
>> Bet, ja es būtu kāds ļauns un vēlējās darīt kaut ko sliktu ar šo masīvu, ko
Es varētu darīt, ir mēģināt rakstīt garām beigām virkni.
Un, kā jūs redzat, ja Es rakstīt pietiekami tālu,
Es patiesībā var ietekmēt atgriešanās adresi.
Un, ja es sāktu ietekmēt atgriešanās adrese,
Es ietekmē to, kā programma faktiski darbojas.
Un tā vietā atpakaļ, jums zinu, laimīgu virkni, piemēram, sveiki, es
varētu darīt kaut ko sliktu, piemēram, dodieties uz kaut kur citur savā datorā, joprojām
atmiņa, mainīt, ko es gribu darīt.
Tātad tas, ko tas varētu izskatīties ir, ja es tikko veida piepilda to uz augšu
ar izlases atkritumu vērtību, šajā gadījumā tieši.
Un tad, kad es tiešām nokļuvis atmiņas adresi,
Es sāku aizpildot to ar kaut ko ka darīja to, ko es gribēju to darīt.
Jebkuri jautājumi ar bufera pārpildes?
Awesome, kas peld pa labi caur šo stuff.
>> Labi, tāpēc mēs runājām daudz par rādītāju ar Gabe.
Kā mēs faktiski saņemt rādītāju?
Kā mēs varam iegūt adresi atmiņā?
Nu, mēs varam izmantot šo jauka funkcija zvans malloc, kas
ir gatavojas iegūt maz gabals atmiņas,
īpaši kaudze, kā mēs apspriedām,
un tas notiek, lai dotu jums atpakaļ rādītāju uz šo adresi atmiņā.
Un arguments, ka mēs ir dot malloc
ir, cik daudz vietas atmiņā mēs gribam.
>> Tātad jūs varat redzēt izmēru baitu.
Teiksim, piemēram, vai faktiski, šajā piemērā,
Mēs piešķirt pietiekami telpa 10 veselu skaitļu.
Tātad, iespējams, ko mēs esam gatavojas vēlaties likt šeit ir masīvs 10 veseli skaitļi.
Tāpēc mēs arī tā lielumu Ints, kurā Mēs uzzinājām, bija, cik daudz baitu?
STUDENTU: 4.
HANNAH: 4, skaista, un mēs gribu 10 no tiem pēc kārtas,
tāpēc, ka mums ir pietiekami daudz vietas, lai uzglabāt visus 10 veselos skaitļus, šajā gadījumā.
Kaut kas super svarīgs, jebkurā laikā jūs zvanu malloc,
Jums ir, lai pārbaudītu null.
Ja jums nav pārbaudīt null, labi, malloc, ja tas sākas no kosmosa
un vairs nevar sniegt jums jebkādu vairāk atmiņas, tas atgriezīsies null.
Tātad, ja jums nav pārbaudīt, malloc var atgriezties null.
Un tad, ja mēs cenšamies dereference null rādītājs,
mēs spēsim iegūt segmentāciju vaina, kurā mēs runājam par tieši tagad.
Awesome.
>> Labi, jautājumi ar malloc?
Jā?
>> STUDENTU: Vai pārbaudes null [Dzirdams] nedariet to viktorīnu?
>> HANNAH: Protams, jautājums bija tas matter-- uz viktorīnu,
jūs saņemsiet punktus off, ja Jums nav pārbaudīt null?
Jā, jūs saņemsiet punktus off ja jums nav pārbaudīt null.
Jebkurā laikā jūs aicinu malloc, gan viktorīna un jūsu psets un reālajā dzīvē,
Jums ir, lai pārbaudītu null.
Labs jautājums.
>> Gabe: Ko darīt, ja man nav brīvu?
HANNAH: Gabe vēlas zināt Ko darīt, ja mums nav bezmaksas.
Tad mums būs atmiņas noplūde mūsu kaudzē.
Jebkādi citi jautājumi?
Jā?
>> STUDENTU: Vai you-- iet pāri bufera pārpildes nekustamo ātri atkal?
>> HANNAH: Protams.
Jautājums bija, mēs varam iet pa bufera pārpildes tiešām ātri.
Ejam atpakaļ uz šiem slaidiem.
Tātad buferis, jūs varat vienkārši domā par to kā masīvu, labi?
Jums ir dažas vietas atmiņā.
Un, kad mēs pirmo reizi veidot mūsu masīvs, mēs zinām, bloki ir noteikts izmērs,
vai mūsu buferis ir fiksēts lielums.
>> Tātad pieņemsim, ka šajā gadījumā mums ir vienkārši pietiekami daudz vietas, lai rakstītu virkni sveiki.
Ja mēs ejam garām, ka saistoša, ja mēs ejam garām ko mūsu masīvs mēs teicām, ka varētu būt,
mēs patiešām varētu sākt rakstiski atmiņā
ka dators nav vēlas, lai mēs rakstīt par.
Un jo īpaši, ja mēs hit kaut kā atgriešanās
adrese, funkcijas, kas, tāpat kā jebkurš cits gabals atmiņas,
ir tikai kaut kur jūsu dators, jūs faktiski var
mainīt šo un sākt darīt ļaunu.
Atbildētu uz jūsu jautājumu?
Awesome, kaut kas cits?
Jā?
>> STUDENTU: Tātad kaudze [dzirdams], varat teica aiziet no apakšas iet uz augšu.
Robežās kaudze diapazonā, vai atmiņa aiziet no, piemēram,
augšu uz leju, kas attiecas uz katra starpbrīža?
>> HANNAH: Kā you-- piekāpjas Rob par šo vienu.
>> ROB: Tas būs augt pats virziens kā kaudze aug.
HANNAH: OK.
ROB: Tātad man apmulst.
Šis būs abstrakcijas.
HANNAH: OK.
ROB: Tas ir pareizi.
Tātad, ja kaudze aug augšu, tad generally-- to
nav jābūt kā šis. bet jūs varat paziņot int x.
Tad jums paziņot, int y.
Tad int x kopumā būs zemāks par skursteņa nekā int y.
Bet tas ir tikai fakts.
Tas nav kā svarīgu sēklu lieta.
>> ROB: Tātad jautājums atkal bija tikai kas notiek, katrs kadrs uzkrājas.
Tātad katra funkcija izpaužas maz gabals kaudze.
Un kā jums iet uz augšu, ievērojot, ka maz gabals, šajā rāmī,
mēs sakām, ka mainīgie šajā rāmī arī virzīties uz augšu.
Jautājums?
>> ROB: Tikai, lai būtu uz mic.
HANNAH: Ak, jā.
ROB: Es runāju uz jums.
HANNAH: Ak, jā, OK.
ROB: Izņēmums ir par masīvu un statņi,
kur bloki, zemāks indekss masīvā,
un statņi pie augstāka lauks ar structs
tiek garantēta zemākā adreses nekā vēlāk vērtību masīvā.
Tātad tie ir garantēta.
Bet kādas īpašas mainīgie ietvaros, piemēram, int x un int y ietvaros funkciju,
tur nav nepieciešama saistība starp to adresēm.
HANNAH: Vēl viens nekā šeit jautājums?
STUDENTU: Tātad buferī plūsma, tikai bufera pārpildes
tikai tad notika, kad jūs ir, piemēram, piešķir
summa masīva ka tad ir lielāka?
Tāpat kā, jūs varat?
Tātad, ja jūs esat lūdzot kaut kas no user--
>> HANNAH: Mm-hm.
STUDENTU: Vai viņi piespiedu kārtā sniegt jums kaut ko atpakaļ
kas ir lielāks, nekā kāds Jūs esat piešķirti par viņiem?
HANNAH: Protams, tāpēc Jautājums bija pamatā,
var lietotājs sniegt jums vairāk, nekā jūs lūgt?
STUDENTU: Jā.
HANNAH: Nu, jūs varētu novērst lietotājs no darot to.
Tu varētu konkrēti pateikt nav iedodiet man vairāk nekā x skaitu pa baitu
Esmu tikai devis jums telpa x skaitu baitu, x rakstzīmju skaitu.
Tātad, tas ir kaut kas jūs vēlaties, lai novērstu.
Jā?
Kāda ir atšķirība starp kaudze pārplūdes un bufera pārpildes?
>> HANNAH: Labi, tāpēc kaudze overflow-- ak, kādi
ir starpība starp skursteni pārplūdes un bufera pārpildes?
Tāpēc mēs vēlamies domāt par kaudze pārplūdes notiek, kad mēs esam patiesībā
kraušanas šos funkciju zvani.
Pieņemsim, ka jums ir rekursīvo funkciju, jo mēs zinām, ka katru reizi, kad
zvanu funkciju, tas izpaužas savu rāmi uz skursteņa.
>> Tātad mēs kaudze pārāk augsts, un tad sākam pārplūst.
Un mēs izmantot pārāk daudz atmiņas, un mums nav nekur pa kreisi.
Mēs saņemam šo kļūdu.
>> Bufera pārpildes ir programmas ietvaros.
Mēs vēlamies, lai, iespējams, ne vienmēr ir darbināt no atmiņas tādā pašā veidā,
ka mēs varētu, ja mēs esam kraušanas up tik daudz funkciju zvani,
bet mēs rakstīt pagātnes atmiņu ka mēs zinām, mēs varam izmantot.
Un tas ļauj mums darīt ļaunu.
Yeah?
>> ROB: Jā, jūs varētu vēlēties lai tikai atkārtot to,
bet jūs varat arī domāju skursteņus pārplūdi
kā, piemēram, īpaša veida bufera pārpildes.
Vai tu tikai domā par savu kaudze kā ļoti liels buferis.
Tad, kad jūs pārpilda jūs kaudze, tas ir veids kā bufera pārpildes.
Bet kaudze pārplūdes ir tikai izmanto īpašu terminu, kad kaudze
pati pārplūst.
>> HANNAH: Tiesības, tāpēc, lai atkārtot uz video,
tā jūs varat iedomāties kaudze pārplūdes kā īpaša veida bufera pārpildes.
Forši?
Kādi jautājumi, pirms mēs ejam tālāk?
Awesome.
>> Labi, atdzesē, tāpēc parunāsim par dažas kopīgas kļūdu ziņojumus.
Tas ir kaut kas ir parādīts līdzi vairākiem viktorīnas,
lai kaut kas ir tā vērts ņemot otru apskatīt.
Es esmu pārliecināts, ka jūs esat saskārušās vismaz daži no šiem
kā jūs darāt jūsu problēma komplekti.
Tātad, pārliecinieties, ka jūs varat runāt par tiem uz viktorīnas.
>> Tātad, pirmais ir segmentēšana vaina.
Un tas ir jebkurā laikā mēs mēģināt piekļūt atmiņas
ka mēs esam nav atļauts piekļūt.
Tātad jums migh ir redzējuši šo, piemēram, starplaikos.
Ja atklāt sadursmes atgriezties null, un tad jūs
mēģināja kaut ko darīt ar šo Null vērtību,
dators dotu Jūs segmentēšana vaina.
Tik viens, svarīga lieta darīt, lai mēģinātu izvairīties no šī
ir vienmēr pārbaudīt null.
>> Jums varētu būt arī redzējis netiešs deklarācija funkciju.
Tātad, tas ir tas, kas notiek kad Allison parādīja tevi
kā mēs prototipu, labi?
Tātad pieņemsim, ka mums ir daži funkcija, kas mēs definējam.
Teiksim kubu.
Un kas iet apakšā mūsu funkcijas, saskaņā ar galveno.
>> Ja mēs aizmirstam pateikt datoru par kubs, kad galvenais mēģina zvanīt kubu,
dators būs, piemēram, ak mans Dievs.
Man nav ne jausmas, ko tas nozīmē.
Es nezinu, ko darīt, šeit.
Tātad prototips saka neuztraucieties.
Es esmu dodas uz jums.
>> Tas būs nāk.
Nelietojiet kliegt uz mani.
Nedod man netieši deklarācija funkciju.
Tātad, ja jums šo kļūdu, viena lieta, jūs gatavojas vēlaties darīt
ir pārliecināties, jums ir jūsu prototipu.
OK?
>> Un pēdējais, bet ne mazāk svarīgi, nedeklarētu identifikators
būtībā, ja jūs mēģināt izmantot mainīgais, ka jums nav deklarētas.
Lai visi pēkšņi sākat nesakām kā n plus plus.
Un dators saka to, kas ir n?
Tu nekad man teica n bija lieta.
>> Tātad viena lieta, jums ir pārliecināties, jums darīja ir pateikt datoram, ko n ir.
Tā, piemēram, n var būt vesels skaitlis.
Un tad jums būs izvairīties no šo kļūdu.
Visus jautājumus par kopīgām kļūdas?
Jā?
>> STUDENTU: Par netieši deklarācija funkciju,
tas arī varētu būt, ka jūs izlaist vienu no bibliotēkas jums bija paredzēts
lai iekļautu, nevis prototips?
>> HANNAH: Pareizi, tāpēc jautājums bija, vai jūs varētu
arī saņemt šo kļūdu, ja jums aizmirsa: bibliotēka.
>> STUDENTU: Jā.
>> HANNAH: Pilnīgi jo tādā pašā veidā
ka mēs vēlamies, lai mūsu prototipus pirms galvenā funkcija,
ja mums ir bibliotēka, tie dodas būtībā ietver prototipus,
ietver definīcijas no funkcijām.
Liels jautājums.
>> STUDENTU: Par segmentāciju vaina, tas, ka arī
notiktu, ja mēs, piemēram, mēģināja piekļūt mainīgo,
tāpat, kas atšķiras [nedzirdama] nekā tas tika deklarēts?
HANNAH: Protams, lai būtu mēs saņemt segmentāciju vaina
ja mēs mēģinājis piekļūt mainīgais ārpus darbības jomas?
Bija tas, ka jautājums?
STUDENTU: Jā.
HANNAH: Beautiful.
Tātad, iespējams, jūs gatavojas saņemt nedeklarētu identifikators kļūda vietā.
Tātad tas ir tikai gatavojas teikt Es nezinu, kas tas ir.
Forši, kaut kas cits?
Jā, labi, skaisti.
>> Visi righty, tāpēc rekursijas.
Tāpēc es teicu pāris reizes lai mēs varētu saņemt kaudze pārplūdes
tāpēc, ka mēs aicinām mūsu rekursīvs funkciju tik daudzas reizes.
Mēs esam iegūt visus šos kaudze rāmji, blah, blah, blah.
Kas vēl ir rekursīvs funkcija?
Nu, rekursīva funkcija ir kāda funkcija, kas sevi dēvē.
>> Dažas lietas, kas ir jāapzinās, ja jūs īsteno rekursīvā funkcija,
neaizmirstiet iekļaut bāzes lietu.
Gadījumu, ir brīdis, kad mēs galu.
Tātad, piemēram, ja mēs kodēšana, , Teiksim, Fibonači rekursīvi,
mēs vēlamies, lai pārliecinātos, ka tad, kad mēs līdz 0 vai pirmais Fibonači skaitļi,
šie divi skaitļi ir šīs lietas, tāpēc, ka tie nav atkarīgi
par lietām, kas bija pirms tam.
Tiem ir savas vērtības.
>> Daži plusi uz recursion, kas ir jautājums, mēs esam redzējuši uz pagātnes viktorīnas.
Tie var izraisīt vairāk kodolīgs, elegants kods.
Un daudz funkciju, dažādu algoritmu daudz,
faktiski aizdot sevi recursion.
Viņu definīcija varētu būt rekursīvs un pats par sevi.
Tātad Fibonači ir viens.
Faktoriāls ir viens.
Apvienot kārtošanas ir one-- visu lietas, ko varat apskatīt.
Labi, kādi jautājumi?
Jā?
>> STUDENTU: Vai stūra gadījums līdzīgi bāzes lietu?
Vai ir tā, ka daži citi veida [dzirdams]?
>> HANNAH: Protams, tāpēc stūra lieta ir tik any--
ir stūra gadījums tāds pats kā bāzes scenārija?
Stūra lieta ir kaut kas jūsu kods varētu uzvesties nedaudz savādāk.
Bāze lieta ir sava veida līdzīgi, jo ka viņi, piemēram, atsevišķos gadījumos
ka jūs vēlaties apskatīt.
Bet ideja par bāzes lietas ir tas, ka Jūs vēlaties, lai jūsu rekursīvā funkcija
apstāties kādā brīdī.
To nevar turēt zvanot sevi uz visiem laikiem.
Tas nepieciešams, lai apturētu kādā brīdī.
>> Rob: Jā, bieži, jūsu bāzes gadījumi varētu būt piemēri stūra bāzēm.
>> HANNAH: Pa labi, forši, kaut ko?
>> STUDENTU: Vai jūs varētu paskaidrot balsta mazliet vairāk?
Man nav īsti saprotams [Dzirdams] bāzes gadījumi.
>> HANNAH: No bāzes gadījumos?
>> STUDENTU: bāzes lietas, jā.
>> HANNAH: Ak jā, protams.
Paskatīsimies.
Vai mēs esam krīta nekā šeit?
Jā, mēs darām.
Labi, tāpēc ļoti ātri, es ņemšu mēģināt rakstīt pietiekami lielas
lai jūs varētu redzēt uz ekrāna.
Parunāsim par, patiešām ātri, Fibonači.
Tāpēc es došu jums Fibonači secība.
Jūs varat meklēt definīciju.
>> Būtībā, katrs numurs secībā ir no diviem iepriekšējiem skaitļu summa.
Labi, tāpēc, ka es tikko aprakstīju Fibonacci,
jūs varētu dzirdēt rekursijas, labi?
Kad es teicu, katrs numurs ir summa no diviem iepriekšējiem skaitļiem,
mēs varētu teikt OK.
Nu, n Fibonači number-- tāpēc pieņemsim
saka, ka mums ir šī funkcija sauc fib-- melot n
būs vienāds ar melot no n mīnus 1 plus-- žēl,
mēs došanās uz nākamo rindiņu vairāk here-- melot n mīnus 2.
>> Labi, tā tas darbojas lieliski, ja jūs esat Aplūkojot, piemēram, nulle, viens,
divi, trīs, četri, Piektais Fibonači skaitļi,
kur jūs varat teikt, ka 5 ir vienāds ar 2 plus 3.
Bet ja tu esi sākumā?
Ko darīt, ja jūs vienkārši hitting šie pirmie divi vērtības?
>> Lai iegūtu šo 1, jūs nevarat saka pievienot iepriekšējiem diviem,
tāpēc, ka nulles and-- es nezinu.
Tāpēc kādā brīdī, mums ir nepieciešams, lai apturētu.
Kādā brīdī, mums ir nepieciešams teikt, ka šie divi vienkārši ir savas definīcijas.
0 Fibonači skaitļi ir 0.
Un pirmais Fibonači skaitļi ir 1.
>> Tāpēc veids, kā es varētu kods, es teiktu, ja n ir mazāks par diviem,
tad vienkārši atgriezties n.
Un tas būtu mans bāze gadījums.
Tas ir, kā es zinu, lai apturētu ar rekursīvo funkciju.
Vai tas skaidrs?
Awesome.
Kaut kas cits par recursion?
Skaisti.
>> Let 's ātri runāt meklēt un kārtot palaist reizes.
Un tad es dos Davin daži laiks, lai runātu par kodēšanu piemērus.
Tātad, šeit ir galvenais meklēšanas un veidu, ka jums vajadzētu zināt.
Guarantee-- Es nevaru garantēt, jo es neesmu redzējis quiz--
bet tas nāk uz augšu viktorīnā Pēc viktorīnas pēc atmest.
Tāpēc noteikti izmantojiet šo tabulu.
Tāpat, izmantot šo diagrammu.
Ielieciet to uz jūsu apkrāptu lapas.
Jūs būsiet laimīgs cilvēks.
>> Tas stāsta mums palaist reizes katras Šo kārtošanas un meklēšanas algoritmiem.
Tātad lineārā meklēšanu, jūs varat redzēt, palaist laiku, un pats ar bināro meklēšanu.
Iet pa kādiem šiem algoritmiem do, vispārēju priekšstatu.
Paskaties kaut pseudocode, ja ne kodēt sevi.
>> Jūs redzēsiet, ka burbulis ir sava augšējā saistoši sliktākajā gadījumā n brusas.
Tātad, ja mūsu masīvs bija pilnīgi atpakaļ pirms mēs vēlējāmies, lai sakārtotu to,
mēs teiktu, ka tas ir gatavojas veikt n rūtiņām soļus.
Bet labākajā gadījumā, tāpēc pazemināts par labākajā gadījumā
būs, ja tas ir jau perfekti sakārtots.
Tad viss, kas mums jādara, ir pārbaudiet, vai tas ir sakārtoti.
Vai ir jautājums nekā šeit?
>> STUDENTU: Kad būtu vēlaties izmantot sava?
Kārtošanas.
Es esmu tikai ziņkārīgs.
>> HANNAH: Kad Jūs vēlaties izmantot atlases veida?
Tas viens?
Viens, ka ir n brusas abos gadījumos?
>> STUDENTU: [dzirdams].
>> HANNAH: Tātad, tas ir ļoti atšķirīgs.
Ja jums ir īpaša prasības attiecībā uz savu programmu,
piemēram, lietām, piemēram, ja mēs tikko teica īstenot search-- sorry--
īstenot veida, jūs iespējams, vēlaties doties
par vienu no tiem, kas ir labākajā gadījumā n,
vai zemākā robeža labākajā gadījumā n.
Bet tur varētu būt dažas lietas, piemēram, teiksim,
mijmaiņas līgumi ir patiešām dārgi kāda iemesla dēļ.
Tad jūs vēlaties darīt burbulis kārtot, jo jums
ir jādara tik daudz mijmaiņas līgumi, lietas, piemēram, ka.
Jebkurš other-- jā?
>> STUDENTU: Vai tas būtu [dzirdams] teikt, ka [dzirdams]?
HANNAH: Tas ir viena lieta kas pateiks
ja jūs meklējat pie īstenošanai.
Kā es tiešām domāju par to, kāpēc tas ir n
brusas ir tas, ka mums jāskrien caur mūsu masīva garumu n,
katru reizi padarot lielākajā daļā, n mijmaiņas darījumiem.
Un mums ir jādara šo procesu n reizes.
>> Tātad, ja jums ir, lai ne vairāk, n mijmaiņas darījumiem un n iet cauri masīva,
tur būs n brusas.
Bet jā, tas tiks atklāts caur šo divtik cilpas,
kā jautājums asked-- vai ligzdot cilpas, es teiktu.
OK?
>> Un tad apvienot kārtot, kas ir ātrākais kārtošanas mums tagad,
vai arī, ka mēs esam uz in CS50, zinu, ka galvenais algoritms
šī ideja ielauzties šķirotas gabali, un pēc tam
apvienojot kopā šos sakārtoti bitiem.
Un saņems mūs log n log n.
Visus jautājumus par meklējumiem un veidu pirms es dot?
Paskatīsimies.
>> Ak, kas saistīts sarakstus.
Atvainojiet, man ir vēl viena tēma.
Labi, awesome, saistīts sarakstus.
Problēma ar masīvu, tie ir noteikta izmēra.
Tātad, ja jūs nezināt, cik liels jūsu ieguldījums būs,
Jūs nevēlaties, lai izveidotu masīva.
Jo, ja mēs radām masīvs, kas ir pārāk mazs,
mēs varētu uzskriet bufera pārpildes.
>> Tā vietā, mēs varētu darīt kaut ko ar saistītiem sarakstiem, kas
ļauj mums būt dinamiski izmēra datu struktūra
kas ļaus mums uzglabāt elastīgāku datu daudzums.
Tātad katrā mezglu mūsu saistīta sarakstu, mums ir divi gabali.
Mums ir faktisko vērtību, ka tas saglabā.
Tātad tas ir tikai lieta, jūs varētu redzēt masīva, for example.
Un tad mēs arī sekot līdzi rādītāju uz nākamo lieta atmiņā.
>> Atšķirībā bloki, kas mēs zinām, visi dodas
lai be-- masīva elementiem visi esam viens pēc otra memory-- saistīta
saraksti varētu būt jebkur atmiņā.
Viņi patvaļīgi vietās.
Tātad, ja mēs tiešām iet tos atrastu, mēs
nepieciešams, lai sekotu Nākamā lieta, mūsu sarakstā.
>> Un pēc tam, lai zina, kur šis saraksts, jo viss ir,
viss, kas mums ir, lai sekotu ir Pats pirmais elements mūsu saistīts sarakstā.
Un kas būs mums ļauj sekot caur.
>> Tātad, tas ir, kā jūs varētu definēt režīmā.
Šī ir lieliska iespēja izmantot statņi.
Tāpēc, ka jums ir šī ideja, labi, par attiecīgo mezglu, man ir divi gabali.
Man ir faktiskā vērtība pati.
Un tad man ir rādītāju uz Nākamais elements saistīts sarakstā.
Tātad jūs redzat, mums ir vesels skaitlis n, kas būs faktiskā vērtība,
un pēc tam rādītāju līdz mezglu, ko sauc par nākamo.
Tāpēc, ka ir būs nākamais elements mūsu saistīts sarakstā.
STUDENTU: Jā?
Vai jums ir jānorāda, ka zvaigzne ir kā struktūrai?
>> HANNAH: Jā, tāpēc, ka šis ir gandrīz kā sava veida,
šķiet, piemēram rekursīvo definīcija, ka mēs
nepieciešams zināt, kas mezgls ir iekšā, lai atrastu mezglu.
Tā kā tas nav reāli zināt, kas mezgls ir pilnīgi
kamēr mēs nokļūt līdz beigām this-- un pēc tam mēs varam tikai to saucam
node-- iekšpusē šo definīciju, mums ir nepieciešams, lai izsauktu to struct mezglā.
Liels jautājums.
Kaut kas cits?
Jā?
>> STUDENTU: Kāpēc mēs jāsaka mezglu divreiz?
Jo, kad mēs bijām [dzirdams] mēs tikko bija to darīt semikolu,
bet tagad mums ir jāatrod, ka struct mezglā? [Nedzirdama].
HANNAH: Tāpēc es uzskatu, ka pēdējā piemēram,
mēs bijām tikai radot jebkurā laikā vēlējās izmantot students pēc tam, jūs
nācās izmantot struct node-- Es esmu sorry-- struct students.
Tas ļāva mums, pēc fakta, tikai izmantošana mezglu pievienot jaunu veidu, būtībā.
Ka jēga?
Tātad mēs ir jāiet atpakaļ un apskatīt kodu pirms.
Bet es domāju, ka mēs neizmantoja typedef.
Un mēs uzdeva jautājumu, kāpēc mums ir nepieciešams, lai izmantotu typedef?
Typedef ļauj izvairīties vārdu struct sākumā.
Jā?
STUDENTU: Kāda veida jautājumi būtu jānāk klajā
izteiksmē ziņā mezglu un saistīti saraksti?
>> HANNAH: Tātad viena lieta ir, mēs varētu pateikt, cik jūs varētu meklēt, izmantojot saistītu sarakstu?
OK, jo tas ir nedaudz sarežģītāks
nekā tad, ja mēs esam meklēšanu izmantojot masīvu.
Mēs varam tikai apskatīt elements nulles, elements viens, elements divi, blah, blah,
blah.
Ja mēs gribam, lai meklētu caur saistīta sarakstā
mēs gribētu tiešām ir jāievēro tas maz labirints norādes.
Tāpēc pieņemsim faktiski iet caur šo tiešām ātri.
Ko mēs varētu darīt, pasūtīt kuri paredzēti, teiksim mēs
gribu tikai atkārtot, izmantojot Mūsu pilnībā saistīts saraksts.
Mēs varētu sākt pie galvas.
Un pēc tam, lai pārvietot uz nākamo elementu,
nevis tikai palielināšanai par vienu piemēram, mēs varētu dodas cauri masīva,
mēs patiešām gatavojas sekot nākamo rādītāju,
lai mēs varētu atrast, kur atmiņa nākamais elements ir.
Tāpēc es zinu, tas nav pietiekami, lai ņemt to visu tieši tagad,
bet jums ir šīs slaidi.
Tātad, jūs varat iet cauri tas nedaudz lēnāk.
Bet būtībā tas, ko mēs gribam darīt, ir sekot šiem norādes
caur kopumā no saistītā sarakstā.
Tātad tas ir jautājums jums var pajautāt.
>> Kaut ko pamanīt ar ievietošanas, teiksim
mēs vēlējāmies, lai izveidotu jaunu elementu priekšā mūsu saistīts saraksts.
Mums ir jābūt ļoti uzmanīgiem par kārtību, kādā mēs
no jauna uz norādes.
Jo teiksim es tikko teicu OK.
Veikt galvas norāda uz šo jauno elementu.
Tikai padara to norāda uz 1 Tad mēs esam būtībā zaudēja pārējo mūsu sarakstā,
jo es neatceros, kur 2 dzīvi.
>> Tātad mums ir jādara, ļoti īpašu rīkojumu.
Pirmkārt, mēs jauno elements norāda uz galvas.
Un tad mēs galvu norāda uz jaunu elementu.
Tātad, pieņemsim redzēt, ko tas izskatās ar arrows-- tieši tāpat.
Tātad vispirms ir jaunais elements norāda uz veco galvu.
Un tagad mums ir galvu norāda uz jaunu pirmo elementu.
Visus jautājumus ar šo?
>> Labi, šeit ir daži kodu vēlreiz, kaut apskatīt mazliet vēlāk.
Un tagad es savukārt to pa Davin par GDB un mazliet prakses
kodēšanas uz papīra.
Skaisti.
>> ROB: Un Rob.
>> HANNAH: Ak, Davin un Rob.
Es atvainojos.
>> STUDENTU: Woo!
>> ROB: Paldies.
>> Davin: Vai jūs vēlaties teikt viss nekustamo ātri?
ROB: Jā, jā.
Davin: Kad es esmu uz augšu.
Labi, bet Robs tikmēr liek mikrofons, lai to, kas GDB?
Ikvienam vajadzētu būt redzējis GDB in klases un arī darba laika.
Un jums vajadzētu būt, izmantojot to.
Tātad, kas ir GDB?
Kāds?
>> STUDENTU: Tas ir atkļūdotājs.
>> Davin: Tas ir atkļūdotājs.
Un ko tas ļauj jums darīt?
Tāpat kā, kāpēc mums patīk GDB?
STUDENTU: Lai palēninātu programmu.
Davin: Pa labi, lai jūs varētu staigāt caur to patīk cilvēka tempu.
Un tā, kādi ir daži komandas jūs varat darīt?
Nu, pārtraukums ir iespējams savu iemīļoto komandu.
Jo tas ļauj jums pauze programma un faktiski staigāt pa to
pozīcijai.
>> Palaist ļauj palaist to.
Tālāk, tāpat kā pastiprināšanu, izmantojot.
Kas ir starp nākamo un soli?
Pagaidiet, saka, ka skaļi.
Tas bija pareizs.
>> STUDENTU: [dzirdams].
>> Davin: Jā, awesome.
Tātad, piemēram, nākamais solis un, ja you're-- pieņemsim, ka jums ir funkcija jums
definēt.
Teiksim dažus jūsu galvenā funkcija, un jūs tikai hitting nākamo, nākamais,
nākamo.
Jūs tiešām gatavojas izpildīt šo funkciju,
bet jūs gatavojas lēkt pār to.
Ja jūs hit solis, vai s vai kāds, jūs esat
gatavojas faktiski lēkt par šo funkciju,
un tad jūs varat hit nākamo redzēt dažādus zvanus
iekšā, ka konkrēto funkciju.
Yeah?
>> STUDENTU: Vai ir veids, kā lēkt, piemēram, atpakaļ ārā?
Davin: Finish, jā, apdare ar izlēkt jums out.
Tātad, tas notiek, lai pabeigtu, ka funkcija, un tad jūs
būs atpakaļ galvenais, for example.
Print būs izdrukāt vienu reizi.
Kaut ko es vienmēr izmantot, ir displejs.
Displejs izdrukājiet to nepārtraukti visā pilnībā
Jūsu programmā.
>> Piemēram, ja jūs esat in cilpas, un jūs
gribu redzēt, kā kaut kas mainīsies, un jūs nevēlaties, lai, piemēram, pastāvīgi
darīt tāpat kā drukātā, drukāt, drukāt, displejs
būs redzams, ka mainīgo pastāvīgi, katru reizi, kad jūs hit Tālāk.
Un turpināt.
Tātad GBD, tas ir GDB.
>> STUDENTU: Kas ir viens kur jūs [dzirdams]?
Davin: Kas tas ir?
>> STUDENTU: Kas ir the-- vietējie mainīgie.
ROB: Tur ir kaut kas tiešām piemēram, vietējie vai kaut ko.
Es can't--
>> Davin: Tas varētu būt kaut kā tā, jā.
>> HANNAH: Ar vietējiem iedzīvotājiem?
>> Davin: Tas ir tas.
Tas ir viens.
ROB: Beautiful.
>> Davin: Jā.
>> STUDENTU: Kāda turpināt darīt?
>> Davin: Tas continues-- tāpēc tas ir tikai gatavojas turpināt savu programmu.
Tātad, ja jūs pauze un hit turpināsies, tas būs
vienkārši palaist šo programmu līdz tas hits ka pārtraukuma atkal.
Tā, piemēram, ja jūs izputējis funkciju,
un jūs gatavojas darīt, piemēram, par cilpa, vai kaut kas tamlīdzīgs,
un jūs hit turpināsies, tas būs turpināt un doties atpakaļ uz šo pārtraukumu.
Vai tur nav pārtraukuma, tas būs turpināt un pabeigt programmu.
>> ROB: Tātad, tāpat kā palaist apstājas tajā pašā pirmajā pārtraukumpunkts
jūs hit, ja jūs tad hit turpināsies, tas būs glabāt
iet, kamēr tas ir nākamais pārtraukumpunkts.
Un pēc tam turpināt iet uz nākamo lūzuma punktu.
Davin: Citi jautājumi par GDB?
Tāpēc es domāju, ka agrāk, mēs esam jautāja jums to, ko
GDB ir un dot piemērs dažām lietām, kas jums
var darīt ar GDB, tāpēc reāla vienkārši, bet jā.
Tur jums iet.
Un mezgli?
>> ROB: Jā, tik kādā virzienā tas bija?
STUDENTU: Tas bija tā.
Davin: Pagaidiet.
ROB: Šis puisis?
Davin: Ka viens.
ROB: Šis puisis, ak, es nesapratu.
Tāpēc mums nebija skaidri par to, ko the-- man nav
zināt, kas tas was-- bet jautājums.
Mēs nezinām, tieši to, ko jūs jautāji par to, lai tikai
lai noskaidrotu kaut ko.
Tātad, pirmkārt, tāpat kā es teicu iepriekš, typedef jūs vienmēr izmanto tikai
izveidot iesauku tipam.
Tātad tieši šeit, segvārds mēs esam radot Tieši šī tipa struct mezglā.
>> Tātad, pirmkārt, ignorējot šo mezglu typedef, tāpēc šis struct mezglā cirtaini
balstītu uz leju līdz nākamajam cirtaini lencēm ir struct mezglā veids.
Un mums ir nepieciešams, lai šo mezglu tur augšā, jo mēs
nepieciešams atsauces mezglā šeit.
Tātad šāda veida rekursīvo struktūrai, jums ir nepieciešams, lai dotu šo struct nosaukumu,
vai arī jums nevarēja saka struct mezglā šeit.
Tā kā pirms ar studentu kad mēs bijām drukāti, es domāju,
mums nebija jāsaka students tur augšā, jo mēs
nebija jāsaka struct students iekšpusē struktūrai pati.
Tātad, tas ir rekursīvs ka liek mums teikt mezglu tur.
>> Šis mezgls ir tikai nosaukums, mēs esam dodot mezglu par typedef.
Tāpēc, ka mezgls nav tāds pats kā mezglā.
Bet tas struct mezglā ir tāds pats kā minētajā struct mezglā.
Davin: Tātad, ja jums zvana, piemēram, mezglu savu galveno funkciju,
jūs neesat gatavojas jāsaka struct mezglā.
Jūs varat teikt mezglā, jo mezgls ir different-- būtībā
jūs sakāt, OK.
Tā vietā, lai izsauktu struct mezglā manā kodu,
Es tikai gribu, lai pārdēvētu to kā mezglu, lai būtu vieglāk.
>> ROB: Ja jūs vienmēr izmantot typedef, tad šī
ir vienīgā vieta, kur jūs esat nāksies atzīt mainīgo ar struct mezglā
zvaigzne, jā.
>> Davin: Labi, tāpēc pēdējā daļa ir grūti mācīt because--
ROB: Kas?
>> Davin: Jo tas kodēšanas uz papīra.
Tātad, katru gadu mēs esam kodu uz papīra jautājumiem.
Tāpēc es domāju, ka pagājušajā gadā, 12 no 80 punkti bija kodu uz papīra.
Gadu pirms tam, 10 no 80, Gadu pirms, ka 20 no 100,
tāpēc diezgan maz no tām.
Tātad jūs nāksies jāspēj kodēt up šīs funkcijas ar rokām.
>> Tāpēc es sapratu, mēs varētu iet cauri no tiem pāris, un redzēt, kā cilvēki,
veida staigāt pa tos lēnām ar cilvēkiem.
Tātad kopumā, strlen un atoi ir ļoti populāri.
Pagājušajā gadā, es domāju, ka mums bija GetPositiveInt un RandomInt.
Bet Pow, tāpēc jauda, ​​arī pozitīvs too.
Pieņemsim tikai iet cauri varbūt viens vai divi no tiem kopā.
Ko cilvēki vēlas redzēt?
>> STUDENTU: atoi.
STUDENTU: Jā.
Davin: atoi?
STUDENTU: [dzirdams].
Davin: Labi, es dodos to darīt uz kuģa.
Vai jums ir priekšroka ja es varu to darīt šeit vai tur?
Tur, Gabe saka tur.
>> ROB: Un tas ir vispārīgi domas par šiem kodēšanas jautājumiem.
Mēģināt rakstīt kaut ko.
Neatstājiet to tukšu.
>> Davin: Jā.
ROB: Ja jūs varat saņemt atgriešanās tips pareizs,
vai varbūt mēs varētu dot to jums, bet, ja jūs varat, piemēram,
rakstīt vispārējo funkciju parakstu, Ja jūs varat saņemt pamatteritorijas lietas pareizi,
vai stūra gadījumos, vai atceroties čeku par null,
tik ilgi, kamēr jums ir dažas lietas, tad varbūt mēs
var sniegt jums pāris norāda uz problēmu.
Vai ne tikai atstāt to tukšu.
>> Davin: Jā, un, ja jūs ir tikai pilnīgi
stumped uz to, kā faktiski pārvēršas kodu.
Ja jūs rakstīt pseudocode, tas ir diezgan labi too.
Tātad, tas ir, piemēram, tas ir sešu punktu jautājums, un rakstīt pareizo pseudocode,
jūs saņemsiet vismaz divus punktus.
Tātad ne tikai atstāt tos tukšu.
Mēģināt likt kaut ko.
>> ROB: Tai ir jābūt pareizs pseudocode, though.
>> Davin: Jā.
ROB: Tātad mēs esam parasti ir mazāk saudzīgs ar bugs pseudocode.
Davin: OK, lai jūs puiši gribēja redzēt atoi.
Labi, lai tikai really-- lai to, ko jūs vēlaties darīt
ir jūs esat būs ņemot vērā dažus veida numuru.
Bet šis skaitlis nav būs int, vai ne?
Kas tas būs?
>> STUDENTU: [dzirdams].
>> Davin: Tas būs stīgu, vai ne?
Tātad, ja jums tika dota string-- pieņemsim say--
>> ROB: man vajadzētu uzvilkt redaktors?
Es varu pull up--
>> Davin: Ak, jūs vēlaties to darīt on--
>> ROB: Vai jūs gribētu kuģa?
>> Davin: Ko jūs vēlaties darīt?
Es domāju, jūs vēlaties to darīt ar rokām?
Vai jūs vēlaties to darīt ar datoru?
>> ROB: Vai to ar rokām.
>> Davin: [smejas]
ROB: Vai to ar rokām.
>> Davin: Labi, tāpēc tas būs atoi.
Tātad, kas ir it-- es domāju, mēs iespējams, dod to jums.
Bet to, kas tas notiek, lai atgrieztos?
>> STUDENTU: Int.
>> Davin: Tas ir gatavojas atgriezties int, vai ne?
So-- Es nevēlos to darīt tur.
Es darīšu to šeit.
>> ROB: Jūs varat vilkt to uz leju un tad push up par to.
>> Davin: jā.
[Smejas] Spēle pārmaiņas.
Labi, tā tas būs int atoi, un to, kas tā gatavojas veikt?
Char zvaigzne, tāpēc vienkārši stīgu, zvaigzne s, piemēram, ka.
>> ROB: Nice zvaigzne, jauki.
Davin: Tas varētu būt tur, OK.
ROB: Jā.
Davin: Labi, tāpēc pirmais lieta, ko jūs vēlaties, lai do-- I
nezinu, ja kāds izskatījās pie prakses solutions--
bet tas, ko jūs gatavojas to vēlas darīt, ir jūs
gatavojas vēlaties, lai būtu cilpa, jo jūs esat
gatavojas vēlaties, lai faktiski soli pa šīs virknes.
Tik helpful-- tāpēc, teiksim mēs ejam uz cilpas,
un mēs ejam soli pa katrs virknes elements.
Cik ilgi tas ir?
Cik reizes mēs ejam atkārtot jo cilpas?
STUDENTU: Sterln?
Davin: Sterln, jā.
Tātad pieņemsim, ka int garums ir vienāds sterln s.
Un tikai ziņkārīgs, kāpēc ir tā, vienmēr laipns no labāk darīt ārpus cilpas?
Tāpat kā, kāpēc tas ir labāk, lai izsauktu šī funkcija ārpus cilpas?
Tikai ātri veselība pārbaudītu?
Yeah?
STUDENTU: Tātad jums nav ir, lai saglabātu pārbaudot to.
Jūs varat vienkārši [nedzirdama].
>> Davin: Tieši tā, tāpēc, jā, tieši tas, ko viņa teica.
Tāpēc mums nav, lai saglabātu pārbaudot to.
Tā, piemēram, ja es esmu aicinot šī funkcija iekšpusē cilpas,
tad es esmu gatavojas glabāt zvanot šī funkcija vairākas reizes.
Un kas notiek, lai samazinātu efektivitāte jūsu programmā.
Tātad, tas vienmēr ir noderīgi deklarēt to ārā.
>> ROB: Tas ir teicis, uz kādu no šīm problēmām,
diezgan daudz, kamēr jūs saņemsiet darba šķīdums, jūs saņemsiet pilnu kredītu.
Tāpēc nav jāuztraucas, ja Jūsu dizains ir absolūti šausminošos.
Tas varētu padarīt mūs sajukums lasījums savu kodu.
Taču, kamēr tas darbojas, jūs saņemsiet punktus.
>> Davin: Jā.
Labi, tā tad es esmu gatavojas pasludināt kādu mainīgo.
Tas ir tikai gatavojas, lai izsauktu int summu.
Un es esmu gatavojas noteikt šo vienāda ar nulli, piemēram, ka.
Un tas ir tikai gatavojas būt vietturis.
Tāpēc, ka ir būs ko es esmu gatavojas atgriezties.
Tāpēc es esmu gatavojas beidzot atgriezties summu no šīs programmas.
Tāpēc man ir šie divi mainīgie.
Man ir garums.
Man ir summa.
Un tagad pieņemsim lēkt mūsu virkni.
>> Tā ļauj ir mūsu cilpas.
Tāpēc četras int es vienāds ar 0 w, bet I ir mazāks nekā garuma I plus plus.
Un now--
ROB: Nice.
Davin: OK, un tagad šeit nāk gaļu mūsu kodu.
Tātad jūs faktiski var darīt tas būtībā ir viena rinda.
Tātad, vai kāds ir ideja par to, ko mēs gatavojamies darīt tālāk?
Labi, tā ka ir OK.
Tāpēc mēs darām teikt summu equals-- ļaujiet man mukt šo over-- summu
vienāds kopsummas reizes 10 plus-- Mēs gatavojas veikt s I mīnus viens
quote 0 viens citāts darīts, piemēram, ka.
ROB: Ļoti intuitīvu.
>> Davin: šķembas to.
Labi, tāpēc someone-- es saņēmu to, es saņēmu to.
Labi, tā tas ir skaidri iet uz augšu.
Ko tas nozīmē?
Tātad, vai kāds zina, ko tas nozīmē?
Var ikviens redzēt šo?
Nē, neviens nevar redzēt to, OK.
Es esmu gatavojas kuri paredzēti,
>> ROB: Es esmu gatavojas rakstīt formula tikai šeit.
Davin: OK, Rob gatavojas to darīt datorā, kas ir fun.
ROB: Ak mans Dievs.
Vai man nebūs.
Davin: Stand by.
STUDENTU: Man ir jautājums.
Davin: Jā, protams.
STUDENTU: [dzirdams]?
Davin: Labi, tāpēc tas faktiski, piemēram, tikai kopumā,
ja tu būtu likt, piemēram, šajā deklarācijā int
Man ir vienāds ar 0 komatu garumu vienāds sterln, that--
>> STUDENTU: [dzirdams].
>> Davin: Tas ir jauki, jo that--
STUDENTU: kāpēc jūs pat nepieciešams izmantot garumu?
Kāpēc nevarēja mēs tikai [dzirdams] sterln s, piemēram, visu laiku [dzirdams]?
>> Davin: Tu domā tieši šeit?
>> STUDENTU: Jā.
Davin: Jo katru laika šis cilpa iet,
tas notiek, lai novērtētu šo stāvokli.
STUDENTU: Labais.
Davin: Un, ja jums ir sterln tur, tad tas ir
nāksies reāli zvanīt šī funkcija katru reizi.
Tātad, nevis tikai salīdzinot to ar int,
jūs esat būs zvanot funkcija un tad salīdzināt to
līdz atgriešanās vērtību.
Jā, tāpēc tas ir tikai, jā.
>> Jauki, Labi, tāpēc tagad katrs var redzēt.
Kas does-- tas ir, piemēram, tas ir tā.
Tas ir ievārījums, tieši šeit.
Ko tas nozīmē?
Ko es daru?
Jā, ideja?
Yeah?
>> STUDENTU: Nu, tad, kad jūs ievadot masīvu,
jūs gatavojas iet no kreisās uz labo,
lai jūs esat būs iet decimal no leju [nedzirdama].
Davin: Tieši tā.
STUDENTU: Tātad katrs Jums ir reizināt
ko tu redzēji, kā vērtību int ar reizi, kad jūs saņemsiet, lai pārvietotos, ka vairāk nekā viens.
>> Davin: Perfect, ideāls, tā, piemēram, pieņemsim
teikt, es deva you-- es esmu gatavojas rakstīt vairāk nekā šeit.
Nē, es neesmu.
Es esmu gatavojas rakstīt vairāk nekā šeit.
Pieņemsim, ka es tev 76, vai ne?
Pieņemsim, ka es dodu jums 76.
Tas ir virkne sākt ar, OK?
>> Tātad, garums ir tas, ko?
2, vai ne?
Summa ir 0.
Tad mēs ielēkt Mūsu cilpas.
Labi, pirmā atkārtojuma tas, kāda ir tā būs?
Tas būs summa ir 0.
Tātad Rezumējot reizes 10 0.
Tas ir bezjēdzīgi.
Tad ko tas dara?
STUDENTU: [dzirdams].
>> Davin: Tas gatavojas vērsties ka raksturs stājas skaitlim, vai ne?
Tas ir veids, kā ar savu problēma set-- šo light--
tas ir veids, kā ar Problēma iestatīts uz VISIONEER.
Jums ir darīšana ar ASCII vērtībām.
Tātad, ja es jums, piemēram, septiņi, bet tas ir raksturs,
un jūs vēlaties zināt, Labi, kāda cipars ir tas, ka?
Jā, jūs varētu, jā.
Tātad, kas cipars ir tas, ka?
Jūs varētu atņemt 0 no tā, bet jūs ir, lai atņemtu 0, raksturu.
>> Un kur daži cilvēki get paklupa uz augšu, viņi
piemēram, Labi, labi, man ir jāzina ASCII vērtības šajā viktorīnā?
Nē, jums noteikti nav jāzina ASCII
vērtības, piemēram, mazajiem , lielajiem burtiem, nulle.
>> ROB: Nav iemesla, lai kādreiz nodot šo par apkrāptu lapas.
>> Davin: Noteikti nav atkritumu savu telpu ar to.
Jūs varat literally-- vienkārši vietā , sakot: 48, piemēram, tiesības uz augšu
tur, kas ir līdzvērtīga sakot vienu, viens apostrofs,
piemēram, ka, tieši tāds pats.
>> ROB: Jūs varētu gandrīz domājat tā kā if-- Dievam, man vajag manu,
oops-- jūs varētu gandrīz domāt par to kā tad, ja mums ir kaut kas līdzīgs šim hash
definēt 0 kā 48.
Tas nestrādās.
Bet domā par to kā vienu citātu 0 vienotu quote, un visiem burtiem.
Domājiet par to kā konstante, kas apliecina, ka ASCII vērtību.
>> Davin: Jā.
Labi, tāpēc pirmo reizi cauri, tāpēc ar 76-- tāpēc pirmo reizi cauri,
tas ir tikai raksturs 7 mīnus raksturs 0,
un tie ir septiņi integers-- labi, tie,
Ir septiņi telpas prom no katras otru par ASCII diagrammas vai neatkarīgi.
Tāpēc, ka ir gatavojas atgriezties int ir 7.
Tāpēc tagad, summa ir vienāda ar 7.
>> Labi, labi, pieņemsim lēkt uz šis cilpa vēlreiz.
Labi, tagad tas ir summa reizes 10.
Tātad jūs esat efektīvi pārvietojas 7 pa kreisi.
Vai tas ir jēga?
Jūs esat efektīvi pārvietojot to pa kreisi.
>> Un tad jūs add-- šis būs mīnus 6 0.
Tas ir 6.
Tātad tas būs 70 plus 6.
76, tas ir jūsu numuru.
Tātad neatkarīgi no tā, cik lielā skaitā Es deva jums, tas ir lēni tikai
gatavojas novirzīt lielāku vērtības pa kreisi, 1 koeficientu 10
katru reizi uz cilpas, un tad pievienot uz kā nepieciešams.
>> Uz muguras?
STUDENTU: Mums nav jādara jebkurš pārbaudot programmā?
>> ROB: Tātad, cik pārbaudes iet programmai,
mēs varētu pateikt diezgan daudz, kas jums ir nepieciešams, lai pārbaudītu.
Ja mums nav pateikt kaut kas, tad parasti
pieņemu, jums ir pārbaudīt visvairāk lietām.
Tāpat kā jūs, iespējams, tikai, lai būtu droši, jums būtu iespējams pārbaudīt, hey, ir s null?
Tad man nav ne jausmas, ko atgriezties.
Bet mēs varētu pateikt šāda veida lieta.
0, es nezinu.
>> Davin: Un kāpēc jūs vēlaties lai vēlreiz pārbaudiet, vai s vienāds null?
STUDENTU: [dzirdams].
Davin: Sakarā ar char zvaigzni.
Tas ir rādītājs.
Tātad pilnīgi pieņemams deklarācija, es varētu teikt, OK,
s vienāds null, jo tas varētu būt rādītājs null.
Tātad, ja jums ir norādes Jūsu ceļa, piemēram, tas,
jums ir iespējams pārbaudīt.
Jo, ja jums nav pārbaudīt, ka, un tad jūs pēc tam doties uz savu cilpas,
un jūs doing-- mukt uz leju.
Mukt uz leju.
>> ROB: Atvainojiet, tas arī viss.
>> Davin: Un tā, piemēram, ja tas ir spēkā, un tad jūs
izdarītu, kļūdu jūs gatavojas saņemt?
STUDENTU: Jūs gatavojas saņemt noteiktu vaina.
Davin: Jūs esat gatavojas noteikt vaina, labi, jo tu esi
mēģina indeksēt uz null.
Tātad jūs gatavojas izmēģināt indeksēt atmiņā, ka jums nepieder.
Tātad tas, ja tas ir nulle, un jūs to izdarītu, jūs cikls.
>> ROB: Es arī domāju, ka uz eksāmenu, kurā mēs lūdza šo jautājumu, mēs jums pateiks
ka jūs varat tikai pieņemt tas ir pozitīvs skaitlis.
Tāpēc, ka ir gaidāms arī atoi rīkoties negatīvus skaitļus,
lai jūs būtu īpašs gadījums.
Hei, ir pirmā zīme domuzīme, tādā gadījumā, OK,
tagad tas ir negatīvs skaitlis.
Mēs jums pateiks šos veida lietām.
Mēs jums pateiks, kas jums nepieciešams, lai rīkotos.
Davin: Jā.
Tāpēc es esmu pārliecināts, ka daži cilvēki varētu have-- ja jūs sāka meklē vecās eksāmeniem,
Jūs esat redzējuši sterln.
Tas ir populārs vienu.
Un es domāju, ka sterln, jums bija darīt šo pārbaudi par nulli, atgriešanos
0 vai kaut kas tamlīdzīgs.
Tāpat kā, jums bija, lai pārbaudītu null.
Un, ja jums nav, ka bija norādīt off uz viktorīnas.
So anyway, tas visiem jūtas OK ar atoi?
Vai kāds vēlas iet pa daļām atkal?
ROB: Ak jā, es domāju, ka mēs arī pateiks jums
var pieņemt, ka viss is-- ka viņi faktiski ievadot numuru,
ka jums nav jāuztraucas par to, piemēram, vēstules ir virknē, tāpēc.
Davin: Jā.
Jā?
STUDENTU: Vai jums iet gaitā vairāk vienu reizi, kad
Jūs izmantojat dubulto citātu un vienu citātu?
>> Davin: Protams, tā pēdiņas, ļoti vienkārši, ir pēdiņas ir virknes.
Tātad, ja jūs dubultā citātu kaut kas, kas ir virkne.
Tātad, piemēram, ja man bija tas 0 vairāk nekā šeit, un man bija tas, ka ir virkne.
Tas vairs raksturs.
Tāpēc es nevaru atrast šo vērtību par manu ASCII diagramma, jo tas ir string, jā.
>> Labi, kādi citi jautājumi?
Jā?
>> STUDENTU: Tātad jūs esat jau atbildēja tas,
bet, piemēram, tad, kad mēs esam patiesībā rakstot šo par viktorīnu,
Jūs vēlaties, lai mēs rakstītu ar slashes nulles [dzirdams]?
Davin: Nē.
Jautājums bija jums būtu likts slīpsvītra pa nullēm
norādīt, vai viņi nullēm?
Nē, mēs to sapratīsi.
Jā, paldies, viņi labi.
Labi, kaut kas cits?
Vai kāds vēlas, kuri paredzēti, lai, tāpēc es domāju, ka mēs esam palaist mazliet laika gaitā.
Vai vēlaties redzēt vēl vienu, vai?
STUDENTU: RandomInt.
>> Davin: RandomInt, OK, tieši tā.
Tāpēc pieņemsim do RandomInt.
Es darīšu to vairāk šeit.
Tātad RandomInt faktiski ir daudz vienkāršāk.
Es domāju, atoi iespējams cieta viens ka mēs esam jautāja iepriekšējos gados.
STUDENTU: [dzirdams].
>> Davin: Kas?
ROB: Es esmu redzēt, ja tas ir sava veida skatāmo no vairāk nekā šeit.
Davin: Vai tā ir?
ROB: Es nedomāju, ka tas ir going-- Es domāju tas notiek, lai palaistu off uz labo pusi.
Davin: Labi, tāpēc es darīšu šo vienu.
Un tad jūs vienkārši ielieciet to uz ekrāna.
>> ROB: Nu labi.
>> Davin: Jūs vēlaties būt mans mācītājs?
>> ROB: Jā.
>> Davin: Nice.
Labi, es varu izdzēst šo?
>> STUDENTU: Jā.
>> Davin: Tas ir tik grūti.
(Dziedāšana) Jūs darāt ko jūs darāt.
Un darīt to, ko jūs darāt nav.
Labi.
>> Labi, ja pareizi atceros, par viktorīna RandomInt bija, piemēram,
Labi, es esmu gatavojas sniegt jums divas skaitļi, piemēram, ka a un b.
Un es gribu, lai jūs man RandomInt starp šiem skaitļiem.
Tātad RandomInt notiek lietot divas numbers--
tāpēc RandomInt-- un tas ir gatavojas atgriezties int.
>> Tātad, kas ir atgriešanās vērtība?
Es tikai teicu tevi.
Int, vai ne?
Kā šis, un tad tas ir gatavojas veikt divas Ints.
Tātad, tas notiek, lai int un int b, piemēram, ka.
Tātad, kas ir RandomInt gatavojas darīt, ir tas, kas notiek
atgriezties daži izlases vērtību starp šīm divām vērtībām.
Tātad tas būs lielāks nekā mazāk nekā b.
Tāpēc es domāju, ka jūs varat droši pieņemt, ka ir mazāka par divām vērtībām.
Tātad, ja mums ir darīšana ar nejaušības, kādu funkciju
mēs esam redzējuši, ka dod mums izlases lietām?
STUDENTU: Drand.
Davin: Drand, tieši tā.
Tātad jūs gatavojas, iespējams vēlaties izmantot savu drand.
Tātad jūs varat teikt int izlases, un mēs tikai teikt, tas ir vienāds ar 0 tieši tagad.
Un viņi, mēs esam gatavojas teikt, Labi, izlases vienādības drand 48.
Un ko tas atgrieztos?
Ko šī funkcija dod jums?
>> STUDENTU: Starp 0 un 1.
>> Davin: Jā, starp 0 un 1.
Tātad, tas notiek, lai be--
>> ROB: Un šī is-- es domāju mēs jums to pateiks.
Tāpat kā, jūs varat izmantot drand 48.
Jūs varat pārbaudīt šo par pēdējo eksāmenu.
Bet mēs droši vien teiktu jūs var izmantot drand 48, kas
atgriež pludiņš starp 0 un 1.
>> Davin: Jā, jā, es esmu diezgan pārliecināts, ka uz eksāmenu
tā saka jums, iespējams, vēlaties izmantot drand, jā.
Tātad, tas notiek, lai atgrieztos daži vērtība starp 0 un 1.
Un tad kādi ir jums gatavojas vēlaties darīt?
Nu, jūs vēlaties reizināt pēc-- pagaidiet, es domāju, ka tas ir, piemēram, tas, piedodiet.
Es ņemšu tikai darīt.
Es nezinu.
>> Tātad b mīnus.
Tātad, kāpēc b mīnus?
Tātad pieņemsim, ka drand dod jums atpakaļ int-- Labi, es ņemšu tikai darīt pārējo,
tik plus.
Tātad, kas does-- y ir b mīnus.
Tātad pieņemsim, ka drand dod jums atpakaļ maksimālā vērtība, ko tā, iespējams, varētu
dot jums.
Kas tas būs?
STUDENTU: 1.
>> Davin: 1, vai ne?
Tātad, ja tas ir 1, un jūs esat reizinot to ar b mīnus,
labi, tas ir tikai Atšķirība starp mīnus A.
Un, ja jūs pēc tam piebilst, ka atpakaļ uz, kas ir tas, ko?
Tas ir būtībā b.
Vai tas ir jēga?
>> STUDENTU: Jā.
>> Davin: Tātad, ja tas ir maksimālais vērtējam to, iespējams, varētu būt,
tas būs 1.
Un tad tas ir tikai atšķirība starp diviem.
Pievienot uz, tāpēc tas ir gatavojas atgriezties izlases.
Un ar stūra gadījumā, drand dod jums atpakaļ 1,
izlases būs tikai efektīvi b.
Bet tas ir maksimālais tas var būt.
Tātad, ja tas būs mazāks nekā ka, tāpēc pieņemsim, ka tā, piemēram, 0.9,
tā tad 0,9 reizes atņemot b būs mazāk
kā starpību starp b mīnus.
>> Un tad, ja jūs pievienojat, ka uz, tad šī vērtība ir
būs lielāks nekā, jo jūs pievienot kaut ko uz to,
bet tas būs mazāks nekā b.
Tātad jūs esat gatavojas iegūt izlases numuru, tāpēc, ka jūs zvanāt drand.
Un tas Rand, ka izlases skaits ir būs kaut kur pa vidu
un b.
Vai tas ir jēga?
>> ROB: Tikai, lai nodot to konkrēti skaitļi, tāpēc
pieņemsim, ka mēs vēlamies, lai izvēlētos izlases numuru no 7 līdz 10.
Tātad b mīnus ir mūsu diapazons.
Tātad ir virkne trīs skaitļi mēs vēlamies no kuriem izvēlēties.
Un tad reizinot ka starp 0 un 1 1,
ja kas, tad dod mums some-- pieņemsim, ka dod mums 1.5.
>> Tad 1.5, mēs gribam iet 7-10.
Tātad 1.5 plus 7 mūs atpakaļ mūsu 7. līdz 10. diapazonā.
Un tad mēs esam tā glabāšanu iekšpusē skaitlis, tāpēc tas saīsināts līdz 8.
Un tad mēs vienkārši atgriezties to.
Tātad b mīnus ir mūsu diapazons.
maiņās to augšup numuriem ka mēs vēlamies šajā diapazonā.
Tātad no 7 līdz 10, un tad mēs var atgriezties, ko mēs galu galā ar.
>> Davin: Jā, jauki.
>> ROB: Paldies.
>> Davin: Jā, kas notiek?
>> STUDENTU: Vai mēs palaist to, lai jebkura veida ASCII kļūdas kad we're-- ja drand ir
atgriežoties peldēt [nedzirdama].
>> ROB: Tātad tāpat kā Rob teica, jo izlases nav int,
tāpēc drand būs pludiņš.
Tik un tad reizina out.
Un jūs varētu saņemt kādu veida pludiņu numuriem.
Un tad tas notiek, lai saīsināt.
>> STUDENTU: OK.
Davin: Jā.
ROB: Un, ja kompilators būtu brīdināt tu par, piemēram, precizitātes zudums,
vienkārši izmet int in tur, un tad tas ir labi.
Davin: Jā?
>> STUDENTU: Vai tas ir pati varbūtība iegūt,
tamlīdzīgi, b vai [nedzirdama]?
>> ROB: Tātad is-- es esmu patiešām wondering-- ir RandomInt šķietamo
būt skaitli no līdz mazāk nekā b?
Tāpat kā, ja tas ir no 7 līdz 10, kādas ir iespējas?
7, 8 un 9, vai 7, 8, 9, 10?
Davin: es aizmirstu.
Par problēmu set--
>> ROB: Es domāju, ka tas ir 7, 8, 9.
>> Davin: Tas īpaši teikts savām iekļaujošu un viens ir ekskluzīvs.
>> ROB: Jā.
>> Davin: Bet es don't-- es esmu not--
>> ROB: Tāpēc es domāju, ka šie ir nav iekļauti, un šādā gadījumā,
tur ir vienāda varbūtība, 7., 8., un 9..
Nav varbūtība 10.
Davin: Jā?
STUDENTU: Man ir jautājums.
Mēs vēlamies, lai definētu funkciju atgriež ne vienu vērtību, bet masīvs.
Tad kāda būtu sintakse pēc atgriešanās?
>> Davin: Labi, lai tad jūs would-- pēc atgriešanās?
Tātad, pieņemsim, ka jums bija deklarēta masīvs kaut kur tur augšā.
Tad jūs vēlētos atgriezties nosaukumu masīva.
>> STUDENTU: Labi, paldies.
Tad vienkārši atgriezties ar a--
Davin: Oh wait, tik žēl.
Jautājums bija, cik jūs atgriezties masīvs.
>> ROB: gan tas nevarēja jādeklarē masīvs
uz skursteņa vai kaut kā tā.
Tas būtu kaut kas malloced, jo malloc
ir, kā jums apkārt automātiska atmiņas sadalījumu.
>> Davin: Jā.
ROB: Kā jums apkārt vietējā jomu.
>> Davin: Bet jūs būtu vienkārši atgriezties savu name--
>> STUDENTU: [dzirdams] tas nav viens vērtību, piemēram, divi numuri, lai
[Nedzirdama].
>> Davin: Jūs nevarat atgriezties vairākas numuru.
Jūs nevarat, piemēram, return--
>> STUDENTU: Es runāju par atgriešanos masīvs vai kaut kas tamlīdzīgs.
>> Davin: Jā, tāpēc jautājums ir es varu atgriezties vairākas vērtības.
Jūs nevarat atgriezties vairākas vērtības.
Jūs nevarat, piemēram, atgriešanās tad atgriezties b vai kaut kas tamlīdzīgs.
Tāpēc, ka pēc tam, kad jūs atgrieztos, jums atgriežas no funkciju.
Un tad funkcija tiek darīts, un piemēram, Rob teica, ir uz skursteņa.
>> Lai visi, atmiņa tikai kļūst atpakaļ uz datora.
Viss tiek aizmirsts, būtībā.
Tātad, ja jūs vēlaties, lai atgrieztos vairāku vērtībām, jums ir jāatgriežas masīvs,
Un, kā jūs darīt, ir mallocing.
Un tad jūs varētu atgriezties x tāpat.
Būtībā, jums vienkārši atgriezties vārdu.
Un, kad jūs atgrieztos kaut kas līdzīgs šim, jūs esat
faktiski neatgriezīsies vērtību.
>> Tātad, pieņemsim, ka tu glabā vērtības masīvā.
Tu neesi faktiski šīs vērtības atgriežas.
Tāpat kā, ja es atgriezos int, es esmu tiešām atgriežoties kopijas vērtībām.
Bet, ja es būtu, lai atgrieztos kaut kas līdzīgs šim,
Es esmu atpakaļ atsauce Pie šīm vērtībām.
Tāpēc es esmu atpakaļ, būtībā, atmiņas adrese vērtībām.
Vai tas ir jēga?
STUDENTU: Jā.
Davin: Nice.
Jā?
>> STUDENTU: Kad esat izmantojot drand nekā šeit,
Vai jums ir likts srand pirms tam?
>> Davin: Nē, nē, es tā nedomāju.
>> ROB: Jā, tāpēc jums ir neko srand teikt?
Jums Noklusējuma nekad sakot srand vispār, ir tikai darīt srand no null.
Tātad drand savā strādās.
Un tas automātiski sēklas ar pašreizējais laiks, ir tas, ko tā izmanto.
Davin: Jā?
STUDENTU: Vai jūs [dzirdams] ar skaitļiem?
Davin: Jā, tas ir iespējams.
STUDENTU: Tātad jūs varētu saka, piemēram, 4 reizes 2.
Lieta ir, jūs nevarat pieņemt tad int ir četri baiti.
Only--
>> Davin: Es domāju, lai viktorīnas varat.
[Smejas]
>> ROB: Mm, nē.
Davin: Jā, jā, tas ir iespējams.
Ja viņi jums jautāt, cik liels ir int, Jūs nevarat būt, piemēram, četriem vai astoņiem.
ROB: Ak, tādēļ, ja Jautājums ir īpaši,
tāpat, ja tas ir kodēšanas problēma, Jums vajadzētu teikt lielumu int.
Ja tas ir galds, vai tā saka, cik daudz baiti,
jums nevajadzētu aizpildīt lieluma Ints.
>> Studenti: [smejas]
>> Davin: pa kreisi, tad kāpēc ir lielums int svarīgs šeit?
Tātad, piemēram, ja mēs ejam uz 32-bit procesors vai kaut kas tamlīdzīgs,
tad tas būs četri baiti.
Bet par dažiem no jaunāku sīkumi, tas varētu būt, ko?
Tas varētu būt astoņi, vai ne?
Tātad this-- ja jūs vienkārši grūti kods četri, Pēc tam uz dažām mašīnām, tas darbosies.
Dažas mašīnas, tas nedarbosies.
Bet, ja uz viktorīnas mums esi piemēram, cik liela ir int?
Put četri.
ROB: Labais.
Davin: Yeah?
STUDENTU: Tāpēc, ka mēs esam deklarējot [Dzirdams] iekšpusē funkciju,
mums vajadzētu likt 3 iekšā šo funkciju?
Vai arī mēs varam izmantot to ārā?
Davin: Jūs varat izmantot to ārpus šīs funkcijas.
Tāpēc viņš lūdz par brīvu.
>> STUDENTU: pazaudēt no tā, kur [nedzirdama].
>> ROB: Ak, bezmaksas nav happen-- kas ir daļa no burvju malloc
ir tas, ka jūs neesat tikai vietēja mēroga.
Jums ir pilnīga kontrole pār cik ilgi jūsu mainīgie dzīvot.
Tātad, mēs saucam malloc šeit, tas varētu būt pilnīgi atsevišķa funkcija.
Tas varētu būt 10 stundas vēlāk ka mēs beidzot zvanīt bez.
>> Davin: Tā, piemēram, kā, piemēram, pāris nedēļas no tagad, kad jūs beidzot
darīt savu vārdnīcu Speller psets, jūs gatavojas
lai ir dažas funkcijas, kas rada tonnas mezgliem.
Tātad jūs mallocing tonnas mezglu šo funkciju.
Un tad vēlāk atsevišķa funkcija, jūs esat
gatavojas vēlaties, lai atbrīvotu visus šos mezglus.
Tātad jūs varat burtiski vienkārši pāriet bezmaksas rādītāju, tāpēc atmiņas adresi
ko jūs malloced.
Un tas būs labi.
Jums nav atbrīvot, , piemēram, tajā pašā funkciju.
Jā?
>> STUDENTU: Tātad malloc mainīgais [dzirdams] ārpus?
Ir tas, ka to, ko jūs sakāt?
Davin: Pagaidiet, saka, ka?
Piedodiet.
>> STUDENTU: Ja malloc mainīgais var brīvi jebkur kodu,
Tad viņi var piekļūt jebkur kodu?
Vai jūs varat saglabāt to vietējo?
>> Davin: Ak, viņa jautāja, piemēram, mainīgs, like--
>> ROB: Tātad jums joprojām ir nepieciešams ir sava veida atskaites veida
ar malloc bloks atmiņas.
Tātad šeit, mēs esam atgriešanās x.
STUDENTU: Ak.
ROB: Ja mēs neatgriezās x šeit, un tas bija tikai par spēkā neesošu,
tad mums nebūtu pieejami rādītājs, kas tika malloced,
un tas ir noplūdis atmiņu.
>> STUDENTU: OK.
>> Davin: Tātad, piemēram, teiksim jums ir tas, piemēram, tieši šeit.
ROB: Nē.
Davin: Manā galvenā funkcija, es nevaru vienkārši aicinu šo x un jābūt, piemēram, OK,
šo funkciju, I did this.
>> ROB: Labais.
>> Davin: Tātad es esmu dodas uz zvanu x, piemēram, galvenā vai kaut kas tamlīdzīgs.
Jūs nevarat darīt.
Jūs gatavojas atgriezties kaut ko.
Bet tas, ko jūs gatavojas atgriezties?
Jūs gatavojas atgriezties atmiņas adresi.
Un tāpēc, ka jūs atpakaļ atmiņas adrese, kas var piekļūt kaut kur citur.
Kādi jautājumi?
Jā?
>> STUDENTU: Vai funkcija iepriekš ir pārbaude [dzirdams]?
>> Davin: Kāpēc man nav nepieciešams to darīt?
STUDENTU: [dzirdams].
Davin: Tāpēc, ka tu esi nav mallocing neko.
Tātad, tas ir not-- yeah, tas ir nepatīk virknes s.
Tas ir rādītājs kaut kur.
Tie ir tikai vērtības.
STUDENTU: OK.
Davin: Jā.
Kaut kas cits?
ROB: Yep?
STUDENTU: Bet, kad jūs [dzirdams]?
>> ROB: Tātad, lai atbrīvotu atmiņa, mēs teiktu šeit.
Tātad x ir mūsu rādītājs uz bloks atmiņas.
Mēs atbrīvotu šo rādītāju.
Un mēs ne vienmēr darīt to šeit.
Mēs varam to darīt jebkur.
Bet jūs tikai zvanīt bez maksas kaut kas malloc atdevi.
Tātad malloc, šeit, atgriezās kas tiek glabāti x.
Tātad, mēs varam zvanīt bezmaksas x.
Jebkuras pēdējie jautājumi?
>> Davin: Jebkurš pēdējie jautājumi?
Yeah?
>> STUDENTU: Atvainojiet, jūs varat atkārtoti paskaidrot kāpēc jūs atbrīvotu tur?
Kāpēc [dzirdams]?
>> Davin: Jo šeit?
>> STUDENTU: Jā, piemēram, uzreiz pēc.
Davin: Jūs, iespējams, negribu bezmaksas šeit.
ROB: Jūs, iespējams, nebūtu.
Davin: Jā, tā tas varētu darīt neko.
Tas, piemēram, izveidot atmiņa, darīt stuff ar to,
un tad uzreiz aizmirst par to, yeah.
>> ROB: Bet mēs varētu darīt, piemēram, šeit kāda iemesla dēļ.
Mēs varētu teikt int zvaigzni y vienāds atgriešanās masīvs.
Vai daži sīkumi ar y, varbūt drukāt saturu.
Un tad, visbeidzot, mēs esam darīts.
Mēs varam brīvi vec.
STUDENTU: [dzirdams].
Davin: Ja es ritiniet uz leju?
Paldies.
ROB: Nice.
>> Davin: Labi, tas arī viss.
ROB: Labi, labi.
Good luck.
>> Davin: Ja jums ir jautājumi, rakstiet mums.
Good luck.