DOUG Lloyd: Kun aloitat kanssa tehtävät,
toinen asia on tulossa todella tärkeää ymmärtää,
joka on käsite kiikaritähtäimellä.
Joten soveltamisala on ominaisuus muuttujan
joka määrittelee josta toiminnot että muuttuja voidaan käyttää.
>> On olemassa kaksi ensisijaista laajuuksia C, paikalliset muuttujat ja globaaleja muuttujia.
Nyt paikalliset muuttujat voi vain käsiksi sisällä tehtävät
jossa ne on luotu.
Niitä ei voi käyttää joka toinen toiminto, joka on olemassa ohjelma,
vain toiminto joita varten se luotiin.
Globaaleja muuttujia, on Toisaalta pääsee
millä tahansa toiminto-ohjelman.
Ja syy siihen on koska he eivät luotu sisällä
minkään tietyn toiminnon.
Me julistamme niitä ulkopuolella kaikki toiminnot, jotka
tarkoittaa, että jokainen toiminto tietää missä se on ja voi käyttää ja manipuloida sitä.
>> Toistaiseksi aikana olet melko paljon työskennellyt yksinomaan
paikallisten muuttujien.
Tässä on esimerkki hyvin, hyvin yksinkertainen päätehtävä ja hyvin yksinkertainen
lisätoiminto että olemme kirjoitettu.
Tässä tapauksessa, x, joka Olen värillinen vihreä juuri
Korosta paikkakunnan tai soveltamisalaa muuttuja,
on paikallinen toiminto kolminkertainen.
Tärkeimmät voi viitata x lainkaan.
Se ei tiedä, mitä se on.
Mikään muu toiminto, itse asiassa, jos me oli lisätoimintoja täällä,
voisi viitata X.
>> Samoin tuloksia, joita olen värillinen sininen, on paikallinen vain tärkeimmät.
Vain tärkeimmät tietää mitä muuttuja tulos on.
kolminkertainen voi käyttää sitä.
>> Nyt kuten mainitsin, globaaleja muuttujia olemassa.
Jos toteaa, että muuttuja ulkopuolella minkään toiminnon,
kaikki toiminnot ohjelma voi viitata siihen.
Joten tässä tapauksessa olen korostettu vihreä globaali muuttuja ilmoitus.
Tässä tapauksessa, muuttuja julistetaan
kutsutaan maailmanlaajuinen, vain erittäin selkeä siitä.
Se on tyyppiä float.
Ja minä antaa se arvo 0,5050.
>> Huomaat, että pää- ja kolminkertainen, voin viitata maailmanlaajuiseen.
Ja itse asiassa, jos menen läpi ohjelman kuten, tärkein ensin puhelut kolminkertainen,
kolminkertainen kertoo maailmanlaajuista 3, joka asettaa sen arvo 1,5-jotain,
1,51 tai jotain, ja sitten tärkein myös tulostaa arvo
maailmanlaajuisen.
Joten tärkein ei tulostaa 0,5050, se tulostaa Global Times 3, 1.51.
Joten sinun täytyy olla varovainen, kun olet työskennellyt globaaleja muuttujia.
Vaikka ne ovat hyvin joustava voisivat välittää tiedot
noin niin, että jokainen toiminto voi käyttää sitä,
se voi myös olla joitakin vaarallisia seurauksia
jos yksi toiminto muutoksia arvo muuttujan
ennen odotat sen muuttaa.
>> Miksi tämä ero väliä?
Miksi me välitä siitä joitakin muuttujia ovat paikallisia ja toiset ovat maailmanlaajuisia?
No, suurin osa, paikalliset muuttujat C ovat mitä kutsutaan ohi arvo
kun teemme funktiokutsu.
Mitä se tarkoittaa?
>> No, kun muuttuja on kulunut arvon mukaan callee, joka
on toinen tapa sanoa toiminto joka vastaanottaa muuttuja, joka
saa siirtää vuonna tulona, ​​se todella ei saa, että muuttuja itse.
Se saa oman kopio työskennellä.
Tämä on todella tärkeä ero.
Olemme vain näki toinen sitten että globaalien muuttujien,
jos me manipuloida maailmanlaajuisia muuttuja yksi funktio, vaikutus
että yksi toiminto kuljettaa läpi joka toinen toiminto.
>> Mutta paikallisia muuttujia, se ei ole totta.
Jokainen toiminto, kun se vastaanottaa muuttujat syötteenä
saada jäljennökset näistä muuttujista, ei muuttujia itse.
Joten mikä on sivuvaikutus, että?
Tämä tarkoittaa sitä, että muuttuja soittajan, toiminto,
tekee funktiokutsua, on ennallaan ellet ohittaa sen.
>> Esimerkiksi tämä koodi foo ei muuteta lainkaan.
Int foo vastaa 4, soita kolminkertainen foo sisällä triple,
me odottaa, että foo olisi kerrotaan 3 ja palautetaan,
mutta siellä oikeastaan ​​mitään vaikutusta.
>> Tässä kuitenkin hyvin hiuksenhieno ero.
Tämä ei ole vaikutusta haluamme.
Näetkö, miksi?
Olemme pakottavista foo pää tällä kertaa.
>> Joten int foo vastaa 4, foo vastaa kolminkertainen foo, kun teemme tätä kehotusta,
kolminkertainen saa oman kopion foo, oma kopio 4.
Siinä sanotaan palata 4 kertaa 3, tai mitä tahansa muuttuja saa siirtää aikoina 3.
Ja sitten asetamme paluu arvo kolminkertaisena foo uudelleen.
Joten tämä todella olisi korvaa foo.
Tämä on ainoa tapa tehdä tämä paikallisten muuttuja.
Joten nyt jos lisäämme uuden koodiriviä täällä
lopussa Main tulostaa arvo foo,
se olisi todellakin tulostaa 12.
>> Kiikaritähtäimellä on yleensä ei liian suuri ongelma
jos nimi kaikki muuttujien eri asioita.
Mutta se voi saada sellaista ilkeä jos sama muuttujan nimi
esiintyy useita toimintoja, joka tapahtuu paljon.
Jos joskus ei toimi todellisessa maailmassa, jossa
olet työskennellyt yhteistyössä ohjelmia ja ihmisiä eri tiimien
työskentelevät yhdessä kirjoittaa saman ohjelma tai samoja ohjelmia,
he usein uudelleen muuttuja nimiä, varsinkin yhteisiä,
kuten x, y, i, j, ja niin edelleen.
>> Mutta kun muuttujia on sama nimi, soveltamisala kysymykset
voi saada hieman hankalampi jäsentää.
Esimerkiksi, tiedätkö mitä tulostettavissa
lopussa kyseisen ohjelman?
Kestää hetken.
Tauko video ja lukea ohjelman kautta.
Voit nähdä huipulla me on toiminto ilmoitus
sillä toiminto nimeltään lisäys.
Tämä toiminto ottaa yhden parametri, kokonaisluku jota kutsumme X.
Ja se tuottaa kokonaisluku.
Se palautuva alussa.
>> Sitten meillä on tärkein, pari riviä koodia main, joista viimeinen
on print.
Ja muista, että on kysymys täällä.
Mitä todella olemaan painettu lopussa tämän toiminnon?
Ja sitten meillä on todellakin määritelmä lisäys alla.
>> Joten kestää hetken, selata koodi, jäljittää asioita.
Tiedätkö mitä tulostetaan loppuun kyseisen ohjelman?
>> Selvä.
Toivottavasti olet ottanut muutaman sekunnin yrittää jäsentää tätä ulos.
Tehdään se yhdessä.
>> Joten olen yliviivattu lisäys n ilmoitus yläreunassa siellä.
Se oli tavallaan häiriötekijä.
Se ei ole sen oma muuttuja.
Se ei ole omaa soveltamisalaa.
Se on vain toiminto ilmoitus, niin tarkoituksiin
yrittää jäsentää, mitä on tapahtuu tässä ohjelmassa,
voisimme yhtä hyvin vain välttää sitä.
>> Nyt meillä on tässä asiassa, Syynä tähän ongelmaan on hankala
on koska meillä on paikallisia muuttujia sekä pää- ja kasvu, joista kukin
on nimeltään X.
Ja tietenkin ydin tämä kysymys on yrittää tajuta jossa X saa muuttaa
ja miten se saada muuttunut.
Joten olen värillinen kaikissa tapauksissa x, joka on paikallinen to main punainen.
Ja olen värillinen jokaisen esiintymän X, joka on paikallinen kasvattamaan sininen.
>> Ilmoituksen, että kolmannella rivillä tärkeimpien, y on yhtä kuin lisäys
X, että lisäys ei ole läpäissyt Mainin X, tai punaista X.
Se alkaa kulunut siitä kopion.
Ja se on vain menossa työskennellä että kopio, sininen X.
Jos olet matemaattisesti kalteva, saatat
ovat sen sijaan ajatellut tätä X osa m tärkein ja X osa i lisäys.
Mutta se on sama ajatus.
X sub m, tai punainen x: t edellisen dian,
ovat muuttujia, jotka ovat local-- on esimerkiksi x pikemminkin
on paikallinen tärkein, ja X osa I, tai sininen muuttujat edellisen dian,
ovat esimerkkejä X: ovat paikallista aikaa kasvattaa.
>> Joten, olit pystyä selvittää, mitä tämä toiminto painettu lopussa?
Olen Doug Lloyd, ja tämä on CS50.