Règles de portée C


Dans tout type de programmation, la portée est la zone où existent les variables définies dans le programme. Les variables ne sont pas accessibles au-delà de cette zone. Il existe trois endroits en langage C où les variables peuvent être déclarées :

  1. À l'intérieur d'une fonction ou d'un blocLocalVariables

  2. En tout La variable globale en dehors de la fonction

  3. dans la définition du paramètre de fonction du formulaire paramètre

Voyons ce que sont les variables locales, les variables globales et les paramètres formels.

Variables locales

Les variables déclarées à l'intérieur d'une fonction ou d'un bloc sont appelées variables locales. Ils ne peuvent être utilisés que par des instructions contenues dans la fonction ou le bloc de code. Les variables locales ne sont pas connues en dehors de la fonction. Ce qui suit est un exemple d'utilisation de variables locales. Ici, toutes les variables a, b et c sont des variables locales de la fonction main().

#include <stdio.h> int main (){  /* 局部变量声明 */  int a, b;  int c; 
  /* 实际初始化 */
  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 de la fonction, généralement en haut du programme. Les variables globales sont valides tout au long du cycle de vie du programme et sont accessibles dans n'importe quelle fonction.

Les variables globales sont accessibles par n'importe quelle fonction. En d'autres termes, les variables globales sont disponibles dans tout le programme après avoir été déclarées. Voici un exemple d'utilisation de variables globales et de variables locales :

#include <stdio.h> /* 全局变量声明 */int g; int main (){  /* 局部变量声明 */  int a, b; 
  /* 实际初始化 */
  a = 10;
  b = 20;
  g = a + b;
 
  printf ("value of a = %d, b = %d and g = %d\n", a, b, g); 
  return 0;}

Dans un programme, les noms des variables locales et des variables globales peuvent être les mêmes, mais dans une fonction, la valeur de la variable locale prévaudra la valeur de la variable globale. Voici un exemple :

#include <stdio.h> /* 全局变量声明 */int g = 20; int main (){  /* 局部变量声明 */  int g = 10;
 
  printf ("value of g = %d\n",  g); 
  return 0;}

Lorsque le code ci-dessus sera compilé et exécuté, il produira les résultats suivants :

value of g = 10

Paramètres formels

Paramètres de la fonction, paramètres formels , Traitées comme des variables locales au sein de la fonction, elles remplaceront en premier les variables globales. Voici un exemple :

#include <stdio.h> /* 全局变量声明 */int a = 20; int main (){  /* 在主函数中的局部变量声明 */  int a = 10;  int b = 20;  int c = 0;  int sum(int, int);

  printf ("value of a in main() = %d\n",  a);
  c = sum( a, b);
  printf ("value of c in main() = %d\n",  c);  return 0;}/* 添加两个整数的函数 */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 produira les résultats suivants :

value of a in main() = 10value of a in sum() = 10value of b in sum() = 20value of c in main() = 30

Initialiser les variables locales et les variables globales

Lorsque les variables locales Une fois défini, le système ne l'initialisera pas, vous devez l'initialiser vous-même. Lorsque vous définissez une variable globale, le système l'initialise automatiquement, comme indiqué ci-dessous :

数据类型初始化默认值
int0
char''
float0
double0
pointerNULL

C'est une bonne habitude de programmation d'initialiser correctement les variables, sinon le programme peut parfois produire des résultats inattendus car il n'est pas Les variables initialisées génèrent des valeurs inutiles déjà disponibles dans l'emplacement mémoire.