Variabelen declareren

Status
Niet open voor verdere reacties.

Kiekefreak

Gebruiker
Lid geworden
5 jul 2009
Berichten
8
Mijn vorige vraag is nog maar net opgelost, en ik heb al een andere vraag :p

Is het mogelijk om variabelen te declareren zodat ik ze in alle functies kan gebruiken?
Ik vrees van niet :( , maar ik kon het toch eens proberen hé :thumb:
 
Dat is mogelijk. Als je een variabele declareert buiten de functies wordt het een globale variabele die je in het hele programma kan gebruiken. Al wordt dit afgeraden, tenzij je er een hele goede reden voor hebt. In alle andere gevallen kan je beter gebruik maken van pointers/references als functie-argumenten.
 
vraag opgelost

Bedankt!


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.:p
 
Laatst bewerkt:
ok, dat moet ik toch een tweede keer lezen hoor... :p
ik ben nog maar net (5 dagen) bezig met c++ :D
maar ik denk wel dat ik het snap hoor :rolleyes:
 
Het maakt niet uit dat je het nog niet begrijpt. Alles zal je op den duur duidelijk worden :)
Ondertussen zou je (wanneerr je denkt er aan toe te zijn) dit kunnen lezen over pointers en reference.

Het zal nog wel zware kost zijn, maar wanneer je begrijpt wat er gebeurd met pointers, snap je direct veel meer over hoe C/C++ werken. Het is een van de belangrijkste concepten uit de taal.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan