Ero paikallisen ja globaalin muuttujan välillä
Tärkeimmät erot paikallisen ja globaalin muuttujan välillä
- Paikallinen muuttuja ilmoitetaan funktion sisällä, kun taas globaali muuttuja ilmoitetaan funktion ulkopuolella.
- Paikalliset muuttujat luodaan, kun funktio on aloittanut suorituksen ja katoavat, kun toiminto päättyy, toisaalta globaali muuttuja luodaan suorituksen alkaessa ja katoaa ohjelman päättyessä.
- Paikallinen muuttuja ei tarjoa tietojen jakamista, kun taas yleinen muuttuja tarjoaa tietojen jakamisen.
- Paikalliset muuttujat tallennetaan pinoon, kun taas globaali muuttuja on tallennettu kiinteään paikkaan, jonka kääntäjä päättää.
- Parametrien välitys vaaditaan paikallisille muuttujille, kun taas globaaleille muuttujille se ei ole välttämätöntä
Mikä on muuttuja?
Muuttuja on tallennusalueelle annettu nimi, jota ohjelma voi käsitellä. Muuttujan tyyppi määrittää muuttujan muistin koon ja asettelun.
Se määrittää myös arvoalueen, joka on tallennettava tähän muistiin, ja toimintojen luonteen, joita voidaan soveltaa kyseiseen muuttujaan.
Muuttujien laajuus
Muuttujan laajuus on yksinkertaisesti muuttujan elinikä. Se on koodilohko, jonka alla muuttuja on sovellettavissa tai elossa. Esimerkiksi:
function foo(){ var x; }
Ilmoitat muuttujan "x" funktion "foo" sisällä. Muuttujan laajuus pysyy kyseisen funktion sisällä, sitä ei voida käyttää kyseisen funktion ulkopuolella.
Voit ilmoittaa muuttujien ohjelmointikielen kolmessa paikassa:
- Funktion tai lohkon sisällä: Paikalliset muuttujat
- Kaikkien funktioiden ulkopuolella: Globaalit muuttujat
- Toimintoparametrien määrittelyssä: Muodolliset parametrit
Paikallinen muuttuja
Paikallinen muuttuja määritellään ohjelmointilohkossa tai aliohjelmissa ilmoitettuna muuttujatyyppinä. Sitä voidaan käyttää vain sen aliohjelman tai koodilohkon sisällä, jossa se on ilmoitettu. Paikallinen muuttuja on olemassa, kunnes funktion lohko on suoritettavana. Sen jälkeen se tuhoutuu automaattisesti.
Esimerkki paikallisesta muuttujasta
public int add(){ int a =4; int b=5; return a+b; }
Tässä "a" ja "b" ovat paikallisia muuttujia
Globaali muuttuja
A Globaali muuttuja ohjelmassa on aliohjelman tai funktion ulkopuolella määritetty muuttuja. Sillä on maailmanlaajuinen laajuus, mikä tarkoittaa, että se säilyttää arvonsa koko ohjelman elinkaaren ajan. Näin ollen sitä voidaan käyttää koko ohjelman aikana millä tahansa ohjelmassa määritellyllä toiminnolla, ellei se ole varjostettu.
Esimerkiksi:
int a =4; int b=5; public int add(){ return a+b; }
Tässä "a" ja "b" ovat globaaleja muuttujia.
Paikallinen muuttuja vs globaalit muuttujat
Tässä on joitain perustavanlaatuisia eroja paikallisten ja globaalien muuttujien välillä.
Parametri | paikallinen | Global |
---|---|---|
Laajuus | Se ilmoitetaan funktion sisällä. | Se ilmoitetaan funktion ulkopuolella. |
Arvo | Jos sitä ei ole alustettu, roskaarvo tallennetaan | Jos sitä ei ole alustettu, nolla tallennetaan oletusarvoksi. |
Elinikäinen | Se luodaan, kun toiminto alkaa suorituksen, ja menetetään, kun toiminnot päättyvät. | Se luodaan ennen ohjelman yleisen suorituksen alkamista ja katoaa ohjelman päättyessä. |
Tietojen jakaminen | Tietojen jakaminen ei ole mahdollista, koska paikallisen muuttujan dataa voi käyttää vain yksi toiminto. | Tietojen jakaminen on mahdollista, koska useat toiminnot voivat käyttää samaa globaalia muuttujaa. |
parametrit | Parametrien välitys vaaditaan, jotta paikalliset muuttujat voivat käyttää arvoa toisessa funktiossa | Parametrien välitys ei ole välttämätöntä globaalille muuttujalle, koska se näkyy koko ohjelman ajan |
Muuttujan arvon muuttaminen | Kun paikallisen muuttujan arvoa muutetaan yhdessä funktiossa, muutokset eivät näy toisessa funktiossa. | Kun globaalin muuttujan arvoa muutetaan yhdessä funktiossa, muutokset näkyvät muualla ohjelmassa. |
Pääsy: | Paikallisiin muuttujiin pääsee käsiksi lauseiden avulla funktion sisällä, jossa ne on ilmoitettu. | Voit käyttää globaaleja muuttujia millä tahansa ohjelman käskyllä. |
Muistin tallennus | Se tallennetaan pinoon, ellei toisin mainita. | Se on tallennettu kiinteään paikkaan, jonka kääntäjä päättää. |
Yleisten muuttujien käytön edut
- Voit käyttää globaalia muuttujaa kaikista ohjelman funktioista tai moduuleista
- Sinun tarvitsee ilmoittaa globaali muuttuja vain kerran moduulien ulkopuolella.
- Sitä käytetään ihanteellisesti "vakioiden" tallentamiseen, koska se auttaa säilyttämään johdonmukaisuuden.
- Yleinen muuttuja on hyödyllinen, kun useat funktiot käyttävät samaa dataa.
Paikallisten muuttujien käytön edut
- Paikallisten muuttujien käyttö takaa, että muuttujien arvot pysyvät ennallaan tehtävän ollessa käynnissä
- Jos useat tehtävät muuttavat yhtä muuttujaa, joka on käynnissä samanaikaisesti, tulos voi olla arvaamaton. Mutta sen ilmoittaminen paikalliseksi muuttujaksi ratkaisee tämän ongelman, koska jokainen tehtävä luo oman esiintymän paikallisesta muuttujasta.
- Voit antaa paikallisille muuttujille saman nimen eri funktioissa, koska ne tunnistetaan vain funktiosta, jossa ne on ilmoitettu.
- Paikalliset muuttujat poistetaan heti, kun mikä tahansa toiminto on päättynyt ja vapauttaa sen viemän muistitilan.
Yleisten muuttujien käytön haitat
- Liian monta muuttujaa on ilmoitettu globaaliksi, jolloin ne pysyvät muistissa, kunnes ohjelman suoritus on valmis. Tämä voi aiheuttaa Muisti täynnä -ongelman.
- Tietoja voidaan muokata millä tahansa toiminnolla. Mikä tahansa ohjelmaan kirjoitettu lause voi muuttaa globaalin muuttujan arvoa. Tämä voi tuottaa arvaamattomia tuloksia moniajoympäristöissä.
- Jos globaalit muuttujat lopetetaan koodin uudelleenmuodostuksen vuoksi, sinun on vaihdettava kaikki moduulit, joissa niitä kutsutaan.
Paikallisten muuttujien käytön haitat
- Paikallisen muuttujan virheenkorjausprosessi on melko hankala.
- Yhteiset tiedot on siirrettävä toistuvasti, koska tiedon jakaminen ei ole mahdollista moduulien välillä.
- Niiden soveltamisala on hyvin rajallinen.
Mikä on hyödyllisempää?
Paikallinen ja globaali muuttuja on yhtä tärkeä kirjoitettaessa ohjelmaa millä tahansa kielellä. Suuri määrä globaalia muuttujaa voi kuitenkin viedä valtavan muistin. Ei-toivottua muutosta globaaleihin muuttujiin on vaikea tunnistaa. Siksi on suositeltavaa välttää ei-toivottujen globaalien muuttujien ilmoittamista.