Muuttujat luokitellaan edelleen "paikalliseksi" ja "globaaliksi" muuttujaksi, joka on keskustelun pääaihe. Tärkein ero paikallisen ja globaalin muuttujan välillä on, että paikallinen muuttuja ilmoitetaan toimintolohkon sisällä, jossa globaalimuuttuja ilmoitetaan ohjelman funktioiden ulkopuolella.
Tarkastellaan joitakin enemmän eroja paikallisen ja globaalin muuttujan välillä vertailukartan kanssa.
Vertailukaavio:
Vertailun perusteet | Paikallinen muuttuja | Globaalimuuttuja |
---|---|---|
ilmoitus | Muuttujat ilmoitetaan funktion sisällä. | Muuttujat ilmoitetaan minkä tahansa toiminnon ulkopuolella. |
laajuus | Toiminnassa, jonka sisällä ne on ilmoitettu. | Koko ohjelmassa. |
Pääsy | Pääsy vain lausumiin, funktion sisällä, jossa ne on ilmoitettu. | Pääsy kaikkiin ohjelman koko lausuntoihin. |
elämä | Luotu, kun funktion lohko syötetään ja hävitetään poistuttaessa. | Pysy olemassa koko ajan, kun ohjelma on käynnissä. |
varastointi | Paikalle tallennetaan paikallisia muuttujia, ellei toisin mainita. | Säilytetään kääntäjän päättämässä kiinteässä paikassa. |
Paikallisen muuttujan määritelmä
Paikallinen muuttuja ilmoitetaan aina toimintolohkon sisällä. C: ssä paikallinen muuttuja ilmoitetaan koodilohkon alussa. C ++: ssa ne voidaan ilmoittaa missä tahansa koodilohkossa ennen niiden käyttöä. Paikallisia muuttujia voivat käyttää vain ne toiminnot, joiden sisällä paikallinen muuttuja on ilmoitettu. Ne ovat turvallisia siinä mielessä, että niitä ei voi käyttää millään muulla saman ohjelman toiminnolla.
Paikallinen muuttuja on olemassa, kunnes funktion lohko on suoritettu ja se tuhoutuu sen jälkeen, kun toteutus poistuu lohkosta. Paikalliset muuttujat menettävät sisällönsä heti, kun toteutus jätti lohkon, jossa ne on ilmoitettu.
Syynä on se, että paikalliset muuttujat tallennetaan pinoon, ellei niiden erityistä varastointia ole määritetty. Pino on luonteeltaan dynaaminen, ja muistin sijainnin muutos johtaa siihen, että paikallinen muuttuja ei pidä arvoa heti, kun funktion lohko on olemassa.
Huomautus:
On kuitenkin olemassa tapa säilyttää paikallisen muuttujan arvo käyttämällä "staattista" modifikaattoria.
Globaalin muuttujan määritelmä
Maailmanlaajuinen muuttuja ilmoitetaan kaikkien ohjelmassa olevien toimintojen ulkopuolella. Toisin kuin paikalliset muuttujat, globaalimuuttuja voi käyttää millä tahansa ohjelmassa olevalla toiminnolla. Globaalit muuttujat eivät ole kovin luotettavia, koska niiden arvoa voidaan muuttaa millä tahansa ohjelmassa olevalla toiminnolla.
Globaalit muuttujat ovat olemassa, kunnes koko ohjelma toteutetaan kokonaan. Globaalit muuttujat säilyttävät arvonsa, kunnes ohjelma on käynnissä. Syynä on se, että ne tallennetaan kiinteälle muistialueelle, jonka kääntäjä päättää.
Globaali muuttuja on hyödyllinen tilanteissa, joissa useat toiminnot käyttävät samoja tietoja. Useiden globaalien muuttujien käyttö voi olla ongelmallista, koska globaalimuuttujan arvoon saattaa liittyä ei-toivottuja muutoksia.
Keskeinen ero paikallisten ja globaalien muuttujien välillä.
- Paikallisia muuttujia kutsutaan "paikallisiksi", koska ne ovat tiedossa vain niille toiminnoille, jotka on kirjoitettu funktioon, jonka sisällä ne on ilmoitettu ja joita ei tunneta muulle toiminnolle, joka on tämän toimintalohkon ulkopuolella. Globaalimuuttujan tapauksessa ne tunnetaan jokaisella ohjelmassa olevalla toiminnolla; näin ollen niitä kutsutaan globaaleiksi.
- Globaalit muuttujat säilyttävät arvonsa, kunnes ohjelma on toteutusvaiheessa, koska ne tallennetaan kääntäjän päättämään kiinteään paikkaan. Paikalla on paikalliset muuttujat; näin ollen ne eivät säilytä arvoaan, koska "pino" on luonteeltaan dynaaminen, mutta kääntäjää voidaan ohjata säilyttämään arvonsa käyttämällä "staattista" modifikaattoria.
- Jos globaali ja paikallinen muuttuja ilmoitetaan samalla nimellä, kaikki koodilohkon lausunnot, joissa paikallinen muuttuja on ilmoitettu, viittaavat vain paikalliseen muuttujaan eivätkä aiheuta vaikutusta globaaliin muuttujaan.
- Paikallinen muuttuja tuhoutuu, kun ohjelman poistuminen ohjataan lohkosta, jossa paikallinen muuttuja on ilmoitettu. Globaalimuuttuja kuitenkin tuhoutuu, kun koko ohjelma lopetetaan.
johtopäätös:
Paikallisia ja globaaleja muuttujia tarvitaan yhtä lailla ohjelman kirjoittamisen aikana. Suurten maailmanlaajuisten muuttujien ilmoittaminen voi kuitenkin olla ongelma suuressa ohjelmassa, koska se voi aiheuttaa ei-toivottuja muutoksia globaaliin muuttujaan; ja olisi vaikea tunnistaa, mikä osa ohjelmasta teki muutoksen. Näin ollen on vältettävä tarpeettomien globaalien muuttujien ilmoittamista.