Mainīgie lielumi turpmāk tiek klasificēti kā “vietējie” un “globālie” mainīgie, kas ir mūsu diskusijas galvenais temats. Galvenā atšķirība starp vietējo un globālo mainīgo ir tā, ka vietējā mainīgā vērtība tiek deklarēta funkcijas blokā, kur globālais mainīgais tiek deklarēts ārpus programmas funkcijām.
Izpētīsim dažas vairāk atšķirības starp vietējo un globālo mainīgo kopā ar salīdzinājuma diagrammu.
Salīdzināšanas diagramma:
Salīdzinājuma pamats | Vietējais mainīgais | Globālais mainīgais |
---|---|---|
Deklarācija | Mainīgie lielumi tiek deklarēti funkcijas ietvaros. | Mainīgie lielumi tiek deklarēti ārpus jebkuras funkcijas. |
Darbības joma | Funkcijas ietvaros, kurā tās ir deklarētas. | Visā programmā. |
Piekļuve | Pieejami tikai paziņojumi, kas atrodas funkcijā, kurā tie ir deklarēti. | Piekļūst jebkuram paziņojumam visā programmā. |
Dzīve | Izveidots, kad funkciju bloku ievada un iznīcina pēc iziešanas. | Joprojām pastāv visu laiku, kad jūsu programma darbojas. |
Glabāšana | Vietējie mainīgie tiek glabāti kaudzē, ja vien nav norādīts. | Saglabāts fiksētā vietā, ko nolemj kompilators. |
Vietējā mainīgā definīcija
Vietējais mainīgais vienmēr tiek deklarēts funkcijas blokā. C koda koda sākumā tiek deklarēts vietējais mainīgais lielums. C + +, tie var tikt deklarēti jebkurā koda blokā pirms to izmantošanas. Vietējos mainīgos lielumus var piekļūt tikai tie paziņojumi, kas rakstīti iekšpusē funkcijai, kurā deklarēts vietējais mainīgais. Tie ir droši tādā nozīmē, ka tiem nevar piekļūt neviena cita tās pašas programmas funkcija.
Vietējais mainīgais pastāv, līdz funkcijas bloks ir izpildīts, un tādējādi iznīcināts pēc izpildes iziešanas no bloka. Vietējie mainīgie zaudē savu saturu, tiklīdz izpilde atstāj bloku, kurā tie ir deklarēti.
Iemesls tam ir tas, ka vietējie mainīgie tiek glabāti kaudzē, ja vien nav norādīts to īpašais uzglabāšana. Stack ir dinamisks raksturs, un izmaiņas atmiņas vietā noved pie iemesla, kāpēc vietējais mainīgais nespēj saglabāt savu vērtību, tiklīdz pastāv funkcijas bloks.
Piezīme:
Tomēr ir veids, kā saglabāt vietējā mainīgā vērtību, izmantojot “statisko” modifikatoru.
Globālā mainīgā definīcija
Globālais mainīgais tiek deklarēts ārpus visām programmā esošajām funkcijām. Atšķirībā no vietējiem mainīgajiem, globālo mainīgo var piekļūt jebkura programmā esoša funkcija. Globālie mainīgie nav daudz ticami, jo to vērtību var mainīt jebkura programmā esoša funkcija.
Globālie mainīgie paliek pastāvīgi, līdz visa programma tiek pilnībā izpildīta. Globālie mainīgie saglabā savas vērtības līdz programmas izpildei. Iemesls tam ir tas, ka tie tiek glabāti fiksētā atmiņas zonā, ko nolemj kompilators.
Globālais mainīgais ir noderīgs situācijās, kad vairākām funkcijām ir pieejami tie paši dati. Daudzu globālu mainīgo lielumu izmantošana varētu būt problemātiska, jo var būt nevēlamas izmaiņas globālā mainīgā lielumā.
Galvenā atšķirība starp vietējo un globālo mainīgo.
- Vietējie mainīgie tiek saukti par “vietējiem”, jo tie ir zināmi tikai tādiem apgalvojumiem, kas rakstīti kādā funkcijā, kurā tie ir deklarēti un nav zināmi citām funkcijām, kas atrodas ārpus šīs funkcijas bloka. Globālā mainīgā gadījumā tie ir zināmi katrai funkcijai, kas atrodas programmā; tāpēc tos sauc par “globāliem”.
- Globālie mainīgie saglabā savu vērtību, līdz programma ir izpildes fāzē, jo tie tiek glabāti noteiktā vietā, par kuru lemj kompilators. Vietējie mainīgie tiek glabāti kaudzē; tāpēc tie saglabā savu vērtību kā “kaudze” ir dinamisks, bet kompilatoru var virzīt, lai saglabātu savu vērtību, izmantojot “statisko” modifikatoru.
- Ja globālais un vietējais mainīgais tiek deklarēts ar tādu pašu nosaukumu, tad visi koda bloka paziņojumi, kuros deklarēts vietējais mainīgais, attieksies tikai uz vietējo mainīgo un neradīs efektu globālajam mainīgajam.
- Vietējais mainīgais tiek iznīcināts, kad programmas izejas kontrole tiek izslēgta no bloka, kurā tiek deklarēts vietējais mainīgais. Tomēr globālais mainīgais tiek iznīcināts, kad tiek izbeigta visa programma.
Secinājums:
Rakstot programmu, abi ir vienlīdz vajadzīgi vietējie un globālie mainīgie. Bet, paziņojot par lielu globālo mainīgo skaitu, lielā programmā varētu būt problemātiska, jo tas var izraisīt nevēlamas izmaiņas globālajā mainīgajā lielumā; un būtu grūti apzināt, kura programmas daļa to izdarīja. Tāpēc nevajadzētu pasludināt nevajadzīgus globālus mainīgos.