2011-10-09 3 views
2

Dites que j'ai un tas de fonctions qui vont utiliser int = price; par exemple. Est-ce que je peux mettre ceci en dehors int main et toutes les fonctions ainsi elles tous l'appellent?Curiosité variable globale

Par exemple ici j'ai appelé int prix en dehors de la main mais il y aura plus de fonctions l'utilisant. Est-ce bien?

int price; 

int main() 
{ 

cout << price; 
return 0; 
} 

Répondre

2

Très bien oui. Recommandé DÉFINITIVEMENT pas. Essayez d'éviter les variables globales à chaque tour. De plus, vous devriez initialiser vos variables.

+0

Par initialiser vous voulez dire 0 à droite? – mystycs

+0

Mais syntaxiquement parlant c'est bien? Parce que j'avais besoin de l'utiliser pour ce que j'ai fait. – mystycs

+0

@mystycs Syntaxiquement, c'est correct. Mais ce que vous avez fait, je suis sûr que cela peut aussi être fait sans variables globales. En initialisant, je veux dire à toute valeur que vous jugez correcte, que ce soit 0 ou quelque chose d'autre, indépendamment du fait que la plupart des compilateurs modernes le font pour vous. Il est considéré et est une meilleure pratique. – FailedDev

1

c'est très bien tant que la variable price est visible où vous voulez l'utiliser. Si vous voulez utiliser cette variable dans une autre "unité de compilation" (un autre fichier .c), vous devrez mettre au début de votre nouveau fichier: extern int price;, qui indique au compilateur qu'il doit utiliser la variable price déclaré ailleurs dans le projet.

Notez que l'utilisation de la variable globale est fortement déconseillée, car il n'y a aucun moyen de contrôler qui modifie la variable et quand il le fait, ce qui peut conduire à des effets secondaires désagréables.

+0

Whoa n'a jamais entendu parler de ça comme ça. – mystycs