C++ Portée des variables
De manière générale, il existe trois endroits où les variables peuvent être définies :
Les variables déclarées à l’intérieur d’une fonction ou d’un bloc de code sont appeléesvariables locales。
Les variables déclarées dans la définition des paramètres de fonction sont appeléesparamètres formels。
Les variables déclarées en dehors de toutes les fonctions sont appeléesvariables globales。
La portée est une zone d’un programme. La portée des variables peut être divisée selon les types suivants :
Portée locale: Les variables déclarées à l’intérieur d’une fonction ont une portée locale ; elles ne sont accessibles qu’à l’intérieur de la fonction. Les variables locales sont créées à chaque appel de la fonction et détruites après la fin de l’exécution de la fonction.
Portée globale: Les variables déclarées en dehors de toutes les fonctions et de tous les blocs de code ont une portée globale ; elles sont accessibles par toute fonction du programme. Les variables globales sont créées au démarrage du programme et détruites à la fin du programme.
Portée de bloc: Les variables déclarées à l’intérieur d’un bloc de code ont une portée de bloc ; elles ne sont accessibles qu’à l’intérieur du bloc de code. Les variables de portée de bloc sont créées à chaque exécution du bloc de code et détruites après la fin de l’exécution du bloc de code.
Portée de classe: Les variables déclarées à l’intérieur d’une classe ont une portée de classe ; elles sont accessibles par toutes les fonctions membres de la classe. La durée de vie des variables de portée de classe est la même que la durée de vie de la classe.
Remarque :Si une variable déclarée dans une portée interne porte le même nom qu’une variable d’une portée externe, la variable de la portée interne remplacera la variable de la portée externe.
Variables locales
Les variables déclarées à l'intérieur d'une fonction ou d'un bloc de code sont appelées variables locales. Elles ne peuvent être utilisées que par les instructions situées à l'intérieur de la fonction ou du bloc de code. L'exemple suivant utilise des variables locales :
Exemple
Variables globales
Les variables définies en dehors de toutes les fonctions (généralement au début du programme) sont appelées variables globales. Les valeurs des variables globales sont valides pendant toute la durée de vie du programme.
Les variables globales sont accessibles par n'importe quelle fonction. Autrement dit, une fois qu'une variable globale est déclarée, elle est disponible dans tout le programme. L'exemple suivant utilise des variables globales et des variables 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, la valeur de la variable locale écrasera la valeur de la variable globale. Voici un exemple :
Exemple
Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :
10
Initialisation des variables locales et des variables globales
Lorsqu'une variable locale est définie, le système ne l'initialise pas ; vous devez l'initialiser vous-même. Lorsqu'une variable globale est définie, le système l'initialise automatiquement aux valeurs suivantes :
| 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 produire des résultats inattendus dans certains cas.
La portée de bloc désigne les variables déclarées à l'intérieur d'un bloc de code :
Exemple
int main() {
int a = 10;
{
int a = 20; // variable de portée de bloc
std::cout << "Variable de bloc : " << a << std::endl;
}
std::cout << "Variable externe : " << a << std::endl;
return 0;
}
Dans l'exemple ci-dessus, une variable nommée a est déclarée dans le bloc de code interne, qui porte le même nom que la variable a dans la portée externe. La variable a de la portée interne masquera la variable a de la portée externe. Lorsqu'on accède à a dans la portée interne, elle affiche 20, tandis que lorsqu'on accède à a dans la portée externe, elle affiche 10.
Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :
块变量: 20 外部变量: 10
Portée de classe
La portée de classe désigne les variables déclarées à l'intérieur d'une classe :
Exemple
class MyClass {
public:
static int class_var; // variable de portée de classe
};
int MyClass::class_var = 30;
int main() {
std::cout << "Variable de classe : " << MyClass::class_var << std::endl;
return 0;
}
Dans l'exemple ci-dessus, une variable de portée de classe nommée class_var est déclarée dans la classe MyClass. Vous pouvez utiliser le nom de la classe et l'opérateur de résolution de portée::pour accéder à cette variable. Lors de l'accès à class_var dans la fonction main(), 30 est affiché.
类变量: 30autres extensions