Programmation en C++ – La portée des variables
Une portée dans toute programmation est une région du programme où une variable définie peut avoir son existence et au-delà de cette variable, elle ne peut pas être consultée. Il existe trois endroits où les variables peuvent être déclarées dans le langage de programmation C++ :
1- À l’intérieur d’une fonction ou d’un bloc appelé variables locales.
2- En dehors de toutes les fonctions appelées variables globales.
3- Dans la définition des paramètres de fonction qui sont appelés paramètres formels.
Comprenons les variables locales et globales et les paramètres formels.
Variables locales
Les variables déclarées dans une fonction ou dans un bloc sont appelées variables locales. Ils ne peuvent être utilisés que par des instructions qui se trouvent à l’intérieur de cette fonction ou dans ce bloc. Les variables locales ne sont pas connues pour fonctionner en dehors de leurs propres espace.
L’exemple suivant montre comment les variables locales sont utilisées. Ici toutes les variables a, b et c sont locales dans la fonction main ().
#include <iostream> using namespace std; int main () { /* Déclaration des variables locales */ int a, b; int c; /* initialisation */ a = 10; b = 20; c = a + b; cout << c; return 0; }
La sortie :
30
Variables globales
Les variables globales sont définies en dehors d’une fonction, généralement au-dessus du programme. Les variables globales gardent leurs valeurs tout au long de la durée de vie de votre programme et peuvent être consultées dans n’importe quelle fonction définie pour le programme.
Une variable globale peut être accédée par n’importe quelle fonction. Autrement dit, une variable globale est disponible pour être utilisée tout au long de votre programme après sa déclaration.
Le programme suivant montre l’utilisation des variables globales dans un programme.
#include <iostream> using namespace std; /* Déclaration d'une variable globale */ int c; int main () { /* Déclaration d'une variable locale */ int a, b; /* initialisation */ a = 10; b = 20; c = a + b; cout << c; return 0; }
La sortie :
30
Un programme peut avoir le même nom pour les variables locales et globales, mais la variable locale sera prioritaire que la variable globale dans une fonction. Voici un exemple
#include <iostream> using namespace std; /* Déclaration d'une variable globale */ int c = 20; int main () { /* Déclaration d'une variable locale */ int c = 10; cout << c; return 0; }
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :
10
Paramètres formels
Les paramètres formels sont traités comme des variables locales dans une fonction et ils ont priorité sur les variables globales. Voici un exemple
#include <iostream> using namespace std; /* Déclaration d'une variable globale */ int a = 20; int main () { /* Déclaration d'une variable locale dans la fonction principale main */ int a = 10; int b = 20; int c = 0; cout << "valeur de a dans main() ="<<a<<endl; c = somme( a, b); cout << "valeur de c dans main() ="<<c<<endl; return 0; } /* Pour ajouter deux entiers */ int somme (int a, int b) { cout << "valeur de a dans somme () ="<<a<<endl; cout << "valeur de b dans somme () ="<<b<<endl; return a + b; }
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant
Valeur de a dans main () = 10 Valeur de a dans somme () = 10 Valeur de b dans somme () = 20 Valeur de c dans main () = 30
Initialisation des variables locales et globales
Lorsqu’une variable locale est définie, elle n’est pas initialisée par le système, vous devez l’initialiser vous-même. Les variables globales sont initialisées automatiquement par le système lorsque vous les définissez comme suit
Type de données | Valeur initiale par défaut |
---|---|
int | 0 |
char | » |
float | 0 |
double | 0 |
pointeur | NULL |
C’est une bonne pratique de programmation pour initialiser les variables correctement, sinon votre programme peut produire des résultats inattendus, parce que les variables non initialisées prendra une valeur déjà disponible à leur emplacement de mémoire.