Variabelen worden verder geclassificeerd in 'lokale' en 'globale' variabele, wat het hoofdonderwerp van onze discussie is. Hier is het belangrijkste verschil tussen een lokale en een globale variabele dat een lokale variabele wordt gedeclareerd binnen een functieblok, waarbij de globale variabele buiten de functies van het programma wordt gedeclareerd.
Laten we nog wat meer verschillen bestuderen tussen een lokale en een globale variabele samen met een vergelijkingsgrafiek.
Vergelijkingstabel:
Basis voor vergelijking | Lokale variabele | Globale variabele |
---|---|---|
Verklaring | Variabelen worden gedeclareerd binnen een functie. | Variabelen worden verklaard buiten elke functie. |
strekking | Binnen een functie, waarbinnen ze worden verklaard. | Gedurende het hele programma. |
Toegang | Alleen toegankelijk door de uitspraken, binnen een functie waarin ze worden verklaard. | Toegankelijk voor elke verklaring in het volledige programma. |
Leven | Wordt gemaakt wanneer het functieblok wordt ingevoerd en vernietigd bij het afsluiten. | Blijf bestaan zolang je programma wordt uitgevoerd. |
opslagruimte | Lokale variabelen worden op de stapel opgeslagen, tenzij anders aangegeven. | Opgeslagen op een vaste locatie, bepaald door een compiler. |
Definitie van lokale variabele
Een lokale variabele wordt altijd gedeclareerd binnen een functieblok. In C wordt een lokale variabele aan het begin van een codeblok gedeclareerd. In C ++ kunnen ze overal in het codeblok worden gedeclareerd voordat ze worden gebruikt. Lokale variabelen zijn alleen toegankelijk door de instructies die zijn geschreven in een functie waarin de lokale variabele wordt gedeclareerd. Ze zijn veilig in de zin dat ze niet toegankelijk zijn voor een andere functie van hetzelfde programma.
Lokale variabele bestaat totdat het blok van de functie in uitvoering is en daardoor wordt vernietigd nadat de uitvoering het blok verlaat. Lokale variabelen verliezen hun inhoud zodra de uitvoering het blok heeft verlaten waarin ze zijn gedeclareerd.
De reden hiervoor is dat de lokale variabelen op de stapel worden opgeslagen, tenzij hun speciale opslag is opgegeven. De stack is dynamisch van aard en de verandering in de geheugenlocatie leidt ertoe dat de lokale variabele niet zijn waarde behoudt zodra het blok van een functie bestaat.
Notitie:
Er is echter een manier om de waarde van een lokale variabele te behouden door de 'statische' modifier te gebruiken.
Definitie van globale variabele
Een globale variabele wordt gedeclareerd buiten alle functies die in een programma aanwezig zijn. In tegenstelling tot lokale variabelen is de globale variabele toegankelijk voor elke functie die in een programma aanwezig is. Globale variabelen zijn niet erg betrouwbaar aangezien hun waarde kan worden gewijzigd door elke functie die in het programma aanwezig is.
Globale variabelen blijven bestaan totdat het hele programma volledig is uitgevoerd. Globale variabelen behouden hun waarden totdat het programma in uitvoering is. De reden is dat ze worden opgeslagen in een vast geheugengebied, bepaald door de compiler.
Een globale variabele is nuttig in situaties waar meerdere functies toegang hebben tot dezelfde gegevens. Het gebruik van een groot aantal globale variabelen kan problematisch zijn, omdat er ongewenste wijzigingen in de waarde van een globale variabele kunnen optreden.
Belangrijkste verschil tussen lokale en globale variabele.
- Lokale variabelen worden 'lokaal' genoemd omdat ze alleen bekend zijn bij de instructies die zijn geschreven in een functie waarin ze zijn gedeclareerd en niet bekend bij andere functies buiten dit functieblok. In het geval van globale variabele zijn ze bekend bij elke functie die aanwezig is in een programma; daarom worden ze 'globaal' genoemd.
- Globale variabelen behouden hun waarde totdat het programma in de uitvoeringsfase is, omdat ze worden opgeslagen op een vaste locatie die door de compiler wordt bepaald. Lokale variabelen worden opgeslagen op de stapel; daarom behouden ze hun waarde niet als 'stack' dynamisch van aard is, maar de compiler kan worden gericht om hun waarde te behouden door gebruik te maken van de 'statische' modifier.
- Als een globale en een lokale variabele met dezelfde naam worden gedeclareerd, hebben alle instructies van een codeblok waarin de lokale variabele is gedeclareerd, alleen betrekking op een lokale variabele en veroorzaken ze geen effect op een globale variabele.
- Een lokale variabele wordt vernietigd wanneer de besturing van het programma het blok verlaat waarin de lokale variabele is gedeclareerd. Een globale variabele wordt echter vernietigd wanneer het volledige programma wordt beëindigd.
Conclusie:
De lokale en globale variabelen zijn allebei gelijk tijdens het schrijven van het programma. Maar het verklaren van een groot aantal globale variabelen kan problematisch zijn in een groot programma, omdat het ongewenste wijzigingen in een globale variabele kan veroorzaken; en het zou moeilijk worden om te identificeren welk deel van een programma die verandering heeft gemaakt. Daarom moet men vermijden onnodige globale variabelen te declareren.