Varijable se nadalje klasificiraju u 'lokalnu' i 'globalnu' varijablu, što je glavna tema naše rasprave. Ovdje je glavna razlika između lokalne i globalne varijable ta da je lokalna varijabla deklarirana unutar funkcijskog bloka, gdje je globalna varijabla deklarirana izvan funkcija u programu.
Proučimo još nekoliko razlika između lokalne i globalne varijable zajedno s usporednom tablicom.
Tablica usporedbe:
Osnova za usporedbu | Lokalna varijabla | Globalna varijabla |
---|---|---|
Deklaracija | Varijable se deklariraju unutar funkcije. | Varijable se objavljuju izvan bilo koje funkcije. |
djelokrug | Unutar funkcije, unutar koje su deklarirane. | Kroz cijeli program. |
Pristup | Pristupaju im samo izjave, unutar funkcije u kojoj su deklarirane. | Pristupiti bilo kojoj izjavi u cijelom programu. |
Život | Stvoreno kada se unese i uništi funkcijski blok pri izlasku. | Ostanite u postojanju cijelo vrijeme dok se program izvodi. |
skladištenje | Lokalne varijable pohranjuju se u snopu, osim ako nisu specificirane. | Pohranjuje se na fiksnoj lokaciji koju određuje prevodilac. |
Definicija lokalne varijable
Lokalna varijabla se uvijek deklarira unutar funkcijskog bloka. U C je lokalna varijabla deklarirana na početku bloka koda. U C ++, oni se mogu deklarirati bilo gdje u bloku koda prije njihove uporabe. Lokalnim varijablama može se pristupiti samo putem izraza napisanih unutar funkcije u kojoj se lokalna varijabla deklarira. Oni su sigurni u smislu da im se ne može pristupiti niti jedna druga funkcija istog programa.
Lokalna varijabla postoji sve dok se blok funkcije ne izvrši i time uništi nakon izlaska iz bloka. Lokalne varijable gube sadržaj čim izvršenje napusti blok u kojem su deklarirane.
Razlog tome je što su lokalne varijable pohranjene u stogu osim ako nije specificirano njihovo posebno spremanje. Stack je po prirodi dinamičan, a promjena memorijske lokacije dovodi do razloga zašto lokalna varijabla ne zadržava svoju vrijednost čim blok funkcije postoji.
Bilješka:
Međutim, postoji način da se zadrži vrijednost lokalne varijable pomoću "statičkog" modifikatora.
Definicija globalne varijable
Globalna varijabla objavljuje se izvan svih funkcija prisutnih u programu. Za razliku od lokalnih varijabli, globalnoj varijabli može pristupiti bilo koja funkcija prisutna u programu. Globalne varijable nisu mnogo pouzdane jer se njihova vrijednost može promijeniti bilo kojom funkcijom prisutnom u programu.
Globalne varijable ostaju prisutne sve dok se cijeli program ne izvrši u potpunosti. Globalne varijable zadržavaju svoje vrijednosti dok se program ne izvrši. Razlog tome je što su pohranjeni na fiksnom području memorije, o čemu odlučuje prevodilac.
Globalna varijabla je korisna u situacijama kada više funkcija pristupa istim podacima. Korištenje velikog broja globalnih varijabli može biti problematično, jer mogu postojati neželjene promjene vrijednosti globalne varijable.
Ključna razlika između lokalne i globalne varijable.
- Lokalne varijable nazivaju se 'lokalnim' jer su poznate samo za izjave napisane u funkciji unutar koje su deklarirane i nisu poznate niti jednoj drugoj funkciji koja je prisutna izvan tog funkcijskog bloka. U slučaju globalne varijable, one su poznate svakoj funkciji prisutnoj u programu; stoga se nazivaju "globalnim".
- Globalne varijable zadržavaju svoju vrijednost sve dok program nije u fazi izvođenja, jer se pohranjuju na fiksnoj lokaciji koju određuje prevodilac. Lokalne varijable su pohranjene u stog; dakle, oni ne zadržavaju svoju vrijednost kao 'stog' je dinamički po prirodi, ali kompajler može biti usmjeren da zadrži svoju vrijednost, koristeći 'statički' modifikator.
- Ako su tada globalna i lokalna varijabla deklarirane s istim imenom, svi izrazi bloka koda u kojima je lokalna varijabla deklarirana odnosit će se samo na lokalnu varijablu i neće uzrokovati učinak na globalnu varijablu.
- Lokalna varijabla se uništava kada kontrola izlaza programa iz bloka u kojem je lokalna varijabla deklarirana. Međutim, globalna varijabla se uništava kada se cijeli program prekine.
Zaključak:
Lokalne i globalne varijable jednako su potrebne tijekom pisanja programa. No, proglašavanje velikog broja globalnih varijabli moglo bi biti problematično u velikom programu, jer može uzrokovati neželjene promjene u globalnoj varijabli; bilo bi teško identificirati koji dio programa je napravio tu promjenu. Stoga treba izbjegavati deklariranje nepotrebnih globalnih varijabli.