C Règles de portée
Dans tout type de programmation, la portée est la zone dans laquelle existent les variables définies dans un programme ; au-delà de cette zone, les variables ne sont pas accessibles. En langage C, il existe trois endroits où les variables peuvent être déclarées :
- À l'intérieur d'une fonction ou d'un bloclocaleVariable
- En dehors de toutes les fonctionsglobaleVariable
- Dansle formulaireDans les définitions des paramètres de fonction
Regardons ce que sontles variables locales,les variables globalesetle formulaireparamètres.
Variables locales
Les variables déclarées à l'intérieur d'une fonction ou d'un bloc sont appelées variables locales. Elles ne peuvent être utilisées que par les instructions à l'intérieur de cette fonction ou de ce bloc de code. Les variables locales ne sont pas connues en dehors de la fonction. Voici un exemple d'utilisation de variables locales. Ici, toutes les variables a, b et c sont des variables locales de la fonction main().
Exemple
Variables globales
Les variables globales sont définies en dehors des fonctions, généralement au début du programme. Les variables globales restent valides tout au long du cycle de vie du programme et sont accessibles à l'intérieur de n'importe quelle fonction.
Les variables globales sont accessibles par n'importe quelle fonction. C'est-à-dire qu'après la déclaration d'une variable globale, elle est disponible dans tout le programme. Ce qui suit est un exemple d'utilisation de variables globales et locales :
Exemple
Dans un programme, les variables locales et les variables globales peuvent avoir le même nom, mais à l'intérieur d'une fonction, si deux noms sont identiques, la valeur de la variable locale est utilisée, et la variable globale n'est pas utilisée. Voici un exemple :
Dans un programme, les variables locales et les variables globalesExemple
Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :
value of g = 10
Paramètres formels
Les paramètres de fonction, c'est-à-dire les paramètres formels, sont traités comme des variables locales dans cette fonction, et s'ils ont le même nom que les variables globales, ils sont prioritaires. Voici un exemple :
Exemple
Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :
value of a in main() = 10 value of a in sum() = 10 value of b in sum() = 20 value of c in main() = 30
La différence entre les variables globales et les variables locales en mémoire:
- Les variables globales sont stockées dans la zone de stockage globale de la mémoire, occupant des unités de stockage statiques ;
- Les variables locales sont stockées dans la pile, et ce n'est que lorsque la fonction dans laquelle elles se trouvent est appelée que des unités de stockage sont allouées dynamiquement pour les variables.
Pour plus d'informations, voir :Utilisation de static en C/C++ : variables globales et variables locales
Initialisation des variables locales et globales
Lorsqu'une variable locale est définie, le système ne l'initialise pas ; vous devez l'initialiser vous-même. Lors de la définition d'une variable globale, le système l'initialise automatiquement, comme montré ci-dessous :
| Types de données | Initialiser les valeurs par défaut |
|---|---|
| int | 0 |
| char | '\0' |
| float | 0 |
| double | 0 |
| pointeur | NULL |
Initialiser correctement les variables est une bonne pratique de programmation ; sinon, le programme peut parfois produire des résultats inattendus, car des variables non initialisées peuvent entraîner des valeurs parasites déjà présentes dans des emplacements mémoire.
autres extensions