Dat ging te makkelijk. Je hebt ze toch niet
echt global (buiten de functies) gemaakt of wel? Zoals supersnail al zei: dit wordt
ten sterkste afgeraden. Beter kun je functies met argumenten maken. (geen void-void functies met globale variabelen dus!)
Waarom geen globalen hoor ik je zeggen?
een voorbeeld:
[cpp]
int nummer;
void maak_nummer_twee(void){
nummer = 2;
}
int main(){
maak_nummer_twee();
cout << nummer;
int nummer = 3;
maak_nummer_twee();
cout << nummer;
cin.get();
}[/cpp]
Hier een functie die de global de waarde 2 geeft. Verder een herdefinitie van nummer in de main. Vertel jij maar wat de output wordt. Nu is dit nog een simpel voorbeeld, maar je kunt je voorstellen dat dit een groter probleem wordt naarmate je programma groeit en meerdere bestanden gaat gebruiken. De betere oplossing zou dit zijn:
[cpp]
int maak_nummer_twee(){
return 2;
}
int main(){
int nummer = 3;
nummer = maak_nummer_twee();
cout << nummer;
nummer = maak_nummer_twee();
cout << nummer;
cin.get();
}[/cpp]
Nu is de ouput
wel 22.
Maar hoe doe je dat dan met meerdere variabelen?
Ik ben blij dat je het vraagt
[cpp]
void verander(int* a, int* b, int* c){
*a=1;
*b=2;
*c=3;
}
int main(){
int nummer1 = 0, nummer2 = 0, nummer3 = 0;
cout << nummer1 << " " << nummer2 << " " << nummer3 << '\n';
verander(&nummer1, &nummer2, &nummer3);
cout << nummer1 << " " << nummer2 << " " << nummer3 << '\n';
cin.get();
}[/cpp]
output is nu:
0 0 0
1 2 3
Conclusie: globals zijn slecht.
