Doug LLOYD: Kā jūs sākat strādājot ar funkcijām, Vēl viena lieta ir gatavojas kļūt tiešām svarīgi saprast, kas ir jēdziens mainīgo jomu. Tātad darbības joma ir raksturīgs ir mainīgs kas nosaka, no kurām funkcijām ka mainīgais var piekļūt. Ir divi galvenie jomu in C, vietējās mainīgie un globālie mainīgie. Tagad, vietējie mainīgie var tikai piekļūt ietvaros funkcijām kurā viņi radīja. Tie nevar piekļūt ar katru otro funkcija, kas pastāv jūsu programmā, tikai funkcija kurā tas tika izveidots. Globālie mainīgie, no No otras puses, var piekļūt jebkura funkcija programmā. Un iemesls tam ir jo viņi nav radīti iekšā no noteiktas funkcijas. Mēs paziņojam viņus ārpus visas funkcijas, kas nozīmē, ka katra funkcija zina, kur tas ir un var piekļūt un manipulēt ar to. Līdz šim gaitā jūs esat diezgan daudz strādājusi vienīgi ar vietējiem mainīgajiem. Lūk, piemērs no ļoti, ļoti vienkāršs galvenā funkcija un ļoti vienkāršs papildu funkcija, kas mēs esam rakstīts. Šajā gadījumā, x, kas Esmu zaļā krāsā tikko izcelt apvidus vai veidu, šī mainīgā, ir vietējie funkcijai triple. Galvenais nevar atsaukties uz x vispār. Tā nezina, kas tas ir. Neviena cita funkcija, patiesībā, ja mēs bija papildus funkcijas šeit, varētu atsaukties uz x. Līdzīgi rezultāti, kas es esmu zilā krāsā, ir vietējais tikai uz galveno. Tikai galvenais zina, ko mainīgais rezultāts ir. triple nevar izmantot. Tagad, kā jau minēju, globālie mainīgie pastāv. Ja jums paziņot, ka mainīgo ārpus jebkuras funkcijas, visas funkcijas, Programma var atsaukties uz to. Tātad šajā gadījumā es esmu izcelts green globāls mainīgais deklarācija. Šajā gadījumā mainīgais tiek pasludināts sauc par globālo, tikai būt ļoti skaidri par to. Tas ir tipa pludiņu. Un es piešķirt tai vērtību 0.5050. Jūs pamanīsiet, ka galvenais un triple, es varu atsaukties uz pasaules. Un patiesībā, ja man iet caur programmu kā norādīts, galvenie pirmie zvani triple, triple vairojas globālie par 3, kas nosaka tās vērtību 1,5-kaut ko, 1.51 vai kaut kas tamlīdzīgs, un tad galvenais arī izdrukā vērtību no pasaules. Tātad galvenais nebūs izdrukāt 0.5050, to būs izdrukāt globālās reizes 3, 1.51. Tātad jums ir jābūt uzmanīgiem, kad jūs strādājat ar globālo mainīgo. Kamēr viņi ir ļoti elastīga var novirzīt informāciju apmēram tā, ka katrs funkciju var izmantot, tas arī var būt daži bīstamas sekas ja viena funkcija izmaiņām vērtība ir mainīgs Pirms jūs gaidīt to mainīt. Kāpēc šī atšķirība ir svarīgi? Kāpēc mēs rūpējamies, vai dažiem mainīgajiem ir vietējās un citi pasaules? Nu, lielākā daļa, vietējās mainīgie C ir tas, ko sauc pagājis pēc vērtības kad mēs veiktu funkciju zvanu. Ko tas nozīmē? Nu, kad mainīgais tiek nodots pēc vērtības, callee, kas ir vēl viens veids, kā pateikt funkciju kas saņem mainīgo ka izpaužas pieņemts kā ieguldījumu, tā faktiski nesaņem šo mainīgo pati. Tā saņem savu tā kopiju strādāt. Tas ir ļoti būtiska atšķirība. Mēs tikko redzējām otrs atpakaļ ka ar globālo mainīgo, ja mēs manipulēt pasaules mainīgs vienā funkcija, efekts ar to, ka viens funkcija veic līdz jebkuru citu funkciju. Bet ar vietējās mainīgie, tas nav taisnība. Katra funkcija, kad to saņem mainīgos kā ievade saņemt kopijas tiem mainīgajiem, ne paši mainīgie. Tātad, kas ir blakusparādība, ka? Tas nozīmē, ka mainīgais zvanītājs, funkcija, kas ir padarot funkciju zvanu, ir nemainīga, ja vien jūs ignorēt to. Piemēram, šajā kodu foo nav mainījies vispār. Int foo vienāds ar 4, zvaniet triple no foo, iekšpusē triple, mēs varētu sagaidīt, ka foo būtu jāreizina ar 3 un atpakaļ, bet tur tiešām nav spēkā. Te gan, ļoti smalks atšķirība. Tas tomēr ir sekas mēs gribam. Vai jūs redzat, kāpēc? Mēs esam sevišķi svarīgi foo galvenajā šajā laikā. Tātad int foo vienāds 4, foo vienāds triple foo, kad mēs šo aicinājumu, triple saņem savu eksemplāru par foo, tās kopija 4. Tajā teikts atgriezties 4 reizes 3, vai neatkarīgi mainīgs izpaužas nodots laikā 3. Un tad mēs piešķirt atgriešanos vērtība triple uz foo vēlreiz. Tātad tas patiesībā varētu pārrakstīt foo. Tas ir vienīgais veids, kā to izdarīt tas ar vietējo mainīgo. Tāpēc tagad, ja mēs pievienot citu līnija koda šeit beigās galvenais uz izdrukāt vērtību foo, tas faktiski izdrukāt 12. Mainīgais joma parasti nav pārāk daudz problēmu ja varat nosaukt visas jūsu mainīgie dažādas lietas. Bet tā var iegūt veida šķebinošs ja paša mainīgā nosaukums parādās vairākas funkcijas, kas notiks daudz. Ja jūs kādreiz darīt strādāt reālā pasaulē, kur jūs strādājat sadarbības programmām un cilvēki dažādās komandās strādā kopā, lai rakstīt to pašu programma vai pats programmu kopums, viņi bieži atkārtoti mainīgais nosaukumus, jo tie ir izplatīti piemēram, x, y, I, J, un tā tālāk. Bet, kad mainīgie ir tas pats nosaukums, darbības joma jautājumi var iegūt mazliet sarežģītāk parsēt. Piemēram, vai jūs zināt kas būtu izdrukāt beigās šajā konkrētajā programmas? Ņemt minūti. Pauze video un lasīt izmantojot šo programmu. Jūs varat redzēt augšējā mēs ir funkcija deklarāciju par funkciju sauc pieaugums. Šī funkcija aizņem vienu parametrs, vesels skaitlis, ko mēs saucam x. Un tā rezultāti vesels skaitlis. Tas ir atgriešanās tips sākumā. Tad mums ir galvenais, pāris līnijas no koda galvenais, pēdējā no kurām ir drukas paziņojums. Un atcerieties, tas ir jautājums šeit. Kas patiesībā būs iespiests beigās šo funkciju? Un tad mums tiešām ir definīcija pieauguma zemāk. Tātad ņem minūti, soli pa kodu, izsekot lietas. Vai jūs zināt, kas tiks drukāts uz beigām šo konkrēto programmu? Viss kārtībā. Cerams, jūs esat veikusi dažas sekundes izmēģināt un apstrādāt šo vienu out. Darīsim to kopā. Tāpēc es esmu pārsvītrots pieaugums s deklarācija augšpusē tur. Tā bija sava veida uzmanību. Tas nav pati mainīgs. Tas nav savas darbības jomu. Tas ir tikai funkcija deklarācija, tāpēc vajadzībām mēģina parsētu kas ir notiek šajā programmā, mēs varētu arī vienkārši izvairīties no tā. Tagad mēs ir šajā gadījumā Iemesls šī problēma ir grūts ir tāpēc, ka mums ir vietējie mainīgie gan galvenais un pieauguma, katrs no kuriem sauc x. Un, protams būtība šajā jautājumā ir cenšoties Süss, kura x izpaužas mainījies un kā tas get mainījusies. Tāpēc es esmu krāsainu katru gadījumu x, kas ir vietējais galvenā sarkanā krāsā. Un es esmu krāsainu katru gadījumu x, kas ir vietējais pieauguma zils. Paziņojums šajā trešajā rindā Galveno, y vienāds pieaugumu x, ka pieaugums nav to pagājis galvenais s x, vai sarkanā x. Tas kļūst izturējis tā kopiju. Un tas ir tikai dodas uz darbu ar ka tā kopiju, zils x. Ja jūs esat matemātiski slīpi, jūs varētu ir nevis domāja par to kā x sub m galveno un x sub I pieauguma. Bet tas ir tas pats ideja. x sub m, vai sarkanā x s iepriekšējā slide, ir mainīgie, kas ir local-- ir instance x gan to, ka ir vietēja uz galvenais, un x sub i, vai arī zils mainīgie iepriekšējo slaidu, ir gadījumi, X, kas ir vietējie pieauguma. Tātad, tad tu varētu izdomāt, ko Šī funkcija izdrukāts beigās? Es esmu Doug Lloyd, un tas ir CS50.