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 :

  • À l’intérieur d’une fonction ou d’un bloc appelé variables locales.
  • En dehors de toutes les fonctions appelées variables globales.
  • 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.
 
 

1- 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 <stdio.h>
 
int main () {

  /* Déclaration des variables locales */
  int a, b;
  int c;
 
  /* initialisation */
  a = 10;
  b = 20;
  c = a + b;
 
  printf ("value of a = %d, b = %d and c = %dn", a, b, c);
 
  return 0;
}

 

2- 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 <stdio.h>
 
/* 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;
 
  printf ("valeur de a = %d, b = %d et c = %dn", a, b, c);
 
  return 0;
}

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 <stdio.h>
 
/* Déclaration d'une variable globale */
int c = 20;
 
int main () {

  /* Déclaration d'une variable locale */
  int c = 10;
 
  printf ("valeur de c = %dn",  c);
 
  return 0;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant :

valeur de c = 10

 
 

3- 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 <stdio.h>
 
/* 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;

  printf ("valeur de a dans main() = %dn",  a);
  c = somme( a, b);
  printf ("valeur de c dans main() = %dn",  c);

  return 0;
}

/* Pour ajouter deux entiers */
int somme (int a, int b) {

   printf ("valeur de a dans somme () = %dn",  a);
   printf ("valeur de b dans somme () = %dn",  b);

   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éesValeur initiale par défaut
int0
char »
float0
double0
pointeurNULL

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.
 
 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.