het resultaat van de term onbepaald (afgezien van triviale termen, zoals 0*x). De initialisering vindt plaats
via de toewijzing van een waarde.
B.v.
int i;
i = 0;
Bij array – variabelen moet elk element apart ge nitialiseerd worden, b.v. in een lus, die de index van 0 tot
het aantal elementen – 1 laat lopen.
int i;
long table [13]
for i = 0 ... < 13
table [i] = 0
Variabelen van samengestelde datatypes zijn pas volledig ge nitialiseerd, als alle aparte velden, ook de
velden van gekoppelde types ge nitialiseerd zijn.
Mytype t;
t.pos.x = 0;
t.pos.y = 0;
t.value = 0;
t.text = " ";
5.5.5 Globale en locale variabelen
C2 en de virtuele machine van de C-Control II unit maken onderscheid tussen globale en locale
variabelen.
Globale variabelen worden op module – niveau naast threads, functies, benoemde constanten en
samengestelde datatypes gedefinieerd.
B.v.
int i;
function fx ()
{
/ / . . .
}
Globale variabelen bestaan tijdens het gehele doorlopen van het programma statisch op een zeer
bepaalde, door de compiler berekende geheugenplaats. Via de modulenaam zijn ze in de gehele
brontekst volgens de definitie zichtbaar en toegankelijk. Globale variabelen moeten heel spaarzaam en
goed doordacht gebruikt worden! Indien mogelijk moeten alle manipulaties van een variabele binnen
dezelfde module ervan uitgevoerd worden waarin deze gedefinieerd is. Anders wordt het programma al
snel onoverzichtelijk, als er niet meer duidelijk herkenbaar is op welke plaats de waarde van een globale
variabele kan veranderen. Een typische toepassing voor globale variabelen zijn variabelen voor het
opslaan van programmatoestanden en gebruikersinstellingen, variabelen voor de data – uitwisseling
tussen threads of byte-array – variabelen als buffergeheugen bij een data -overdracht. Locale variabelen
worden in het opdrachtblok van een thread of van een functie gedefinieerd.
Bijvoorbeeld:
Function fx ()
{
int i;
/ / . . .
}
Locale variabelen van een functie worden voor de looptijd van het programma op de stack van de actuele
thread aangelegd en bestaan alleen binnen een geheugencontext, d.w.z. tijdens het verwerken van een
functie. Ze zijn alleen binnen deze context zichtbaar en toegankelijk. Bij het verlaten van een functie
eindigt de levenscyclus van een locale variabele. Bij het terugkeren naar deze functie of bij het parallel
oproepen van de functie door een andere thread is de waarde van een locale variabele steeds
onbepaald.
Een speciale vorm wordt gevormd door locale variabelen van threads. Omdat de geheugencontext van
threads tijdens de totale duur van het programma blijft bestaan, ook voor gestopte threads, bestaan de
29