C - Règles de portée
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 n'est pas accessible. Il y a trois endroits où les variables peuvent être déclarées en langage de programmation C −
-
A l'intérieur d'une fonction ou d'un bloc appelé local variable.
-
En dehors de toutes les fonctions dites globales variable.
-
Dans la définition des paramètres de fonction qui sont dits formels paramètres.
Comprenons ce qui est local et mondial variables et formelles paramètres.
Variables locales
Les variables déclarées dans une fonction ou 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 de ce bloc de code. Les variables locales ne sont pas connues des fonctions en dehors des leurs. L'exemple suivant montre comment les variables locales sont utilisées. Ici, toutes les variables a, b et c sont locales à la fonction main().
Démo en direct#include <stdio.h> int main () { /* local variable declaration */ int a, b; int c; /* actual initialization */ a = 10; b = 20; c = a + b; printf ("value of a = %d, b = %d and c = %d\n", a, b, c); return 0; }
Variables globales
Les variables globales sont définies en dehors d'une fonction, généralement au-dessus du programme. Les variables globales conservent leurs valeurs pendant toute la durée de vie de votre programme et elles sont accessibles dans toutes les fonctions définies pour le programme.
Une variable globale est accessible par n'importe quelle fonction. Autrement dit, une variable globale est disponible pour être utilisée dans tout votre programme après sa déclaration. Le programme suivant montre comment les variables globales sont utilisées dans un programme.
Démo en direct#include <stdio.h> /* global variable declaration */ int g; int main () { /* local variable declaration */ int a, b; /* actual initialization */ a = 10; b = 20; g = a + b; printf ("value of a = %d, b = %d and g = %d\n", a, b, g); return 0; }
Un programme peut avoir le même nom pour les variables locales et globales, mais la valeur de la variable locale à l'intérieur d'une fonction aura la préférence. Voici un exemple −
Démo en direct#include <stdio.h> /* global variable declaration */ int g = 20; int main () { /* local variable declaration */ int g = 10; printf ("value of g = %d\n", g); return 0; }
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant −
value of g = 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 −
Démo en direct#include <stdio.h> /* global variable declaration */ int a = 20; int main () { /* local variable declaration in main function */ int a = 10; int b = 20; int c = 0; printf ("value of a in main() = %d\n", a); c = sum( a, b); printf ("value of c in main() = %d\n", c); return 0; } /* function to add two integers */ int sum(int a, int b) { printf ("value of a in sum() = %d\n", a); printf ("value of b in sum() = %d\n", b); return a + b; }
Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant −
value of a in main() = 10 value of a in sum() = 10 value of b in sum() = 20 value of c in 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 |
---|---|
entier | 0 |
caractère | '\0' |
flottant | 0 |
doubler | 0 |
pointeur | NULL |
C'est une bonne pratique de programmation d'initialiser correctement les variables, sinon votre programme peut produire des résultats inattendus, car les variables non initialisées prendront une valeur de déchets déjà disponible à leur emplacement mémoire.
Langue C