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

#include <iostream> using namespace std; int main () { // Déclaration de variable locale int a, b; int c; // initialisation réelle a = 10; b = 20; c = a + b; cout << c; return 0; }

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

#include <iostream> using namespace std; // déclaration de variable globale int g; int main () { // Déclaration de variable locale int a, b; // initialisation réelle a = 10; b = 20; g = a + b; cout << g; return 0; }

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

#include <iostream> using namespace std; // déclaration de variable globale int g = 20; int main () { // Déclaration de variable locale int g = 10; cout << g; return 0; }

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éesInitialiser 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

#include <iostream>

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

#include <iostream>

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é.

类变量: 30
autres extensions