Variables globales et variables statiques
Les variables statiques déclarées en langage C ont deux caractéristiques :
1 Les variables sont placées dans le programme dans le global. zone de stockage, afin que l'affectation d'origine puisse être conservée lors du prochain appel. C'est la différence entre celui-ci et les variables de pile et les variables de tas.
2. Les variables utilisent la statique pour indiquer au compilateur qu'elles ne sont visibles que dans la portée de la variable. C'est ce qui la différencie des variables globales.
Conseils :
A. Si la variable globale n'est accessible que dans un seul fichier C, vous pouvez modifier cette variable en variable globale statique pour réduire le couplage entre les modules
B. Si une variable globale n'est accessible que par une seule fonction, cette variable peut être modifiée en variable locale statique de la fonction pour réduire le couplage entre modules
C. variables globales, variables globales statiques, variables locales statiques, nous devons considérer le problème de réentrance
D Si nous avons besoin d'une fonction réentrante, alors nous devons éviter d'utiliser des variables statiques dans la fonction (telle que la fonction est appelée). : une fonction avec fonction "mémoire interne")
E. La situation où des variables statiques doivent être utilisées dans la fonction : Par exemple, lorsque la valeur de retour d'une fonction est de type pointeur, elle doit être statique. L'adresse de la variable locale est utilisée comme valeur de retour. Si elle est de type auto, un pointeur d'erreur est renvoyé.
L'ajout de statique avant une fonction fait de la fonction une fonction statique. Mais la signification de « statique » ici ne fait pas référence à la méthode de stockage, mais fait référence à la portée de la fonction étant limitée à ce fichier (elle est donc également appelée fonction interne). L'avantage d'utiliser des fonctions internes est que lorsque différentes personnes écrivent des fonctions différentes, elles n'ont pas à se soucier de savoir si les fonctions qu'elles définissent portent le même nom que les fonctions d'autres fichiers.
Analyse étendue : Le terme statique a une histoire inhabituelle. Initialement, le mot-clé static a été introduit en C pour indiquer les variables locales qui existent encore après la sortie d'un bloc. Par la suite, static a une deuxième signification en C : utilisé pour représenter des variables globales et des fonctions auxquelles d'autres fichiers ne peuvent pas accéder. Enfin, C++ réutilise ce mot-clé et lui donne un troisième sens différent du précédent : désignant des variables et des fonctions appartenant à une classe plutôt qu'à un objet spécifique appartenant à cette classe (même sens que ce mot-clé en Java).
La différence entre les variables globales, les variables globales statiques, les variables locales statiques et les variables locales
Les variables peuvent être divisées en : variables globales, variables globales statiques, variables locales statiques et variables locales.
Selon la zone de stockage, les variables globales, les variables globales statiques et les variables locales statiques sont toutes stockées dans la zone de stockage statique dela mémoire, et les variables locales sont stockées dans la zone de pile de la mémoire.
Selon la portée, les variables globales sont valides dans l'ensemble du fichier de projet ; les variables globales statiques ne sont valides que dans le fichier dans lequel elles sont définies ; les variables locales statiques ne sont valides que dans la fonction dans laquelle elles sont définies, et ne sont allouées qu'une seule fois par le programme Mémoire, la variable ne disparaîtra pas après le retour de la fonction ; les variables locales sont valides dans la fonction dans laquelle elles sont définies, mais deviennent invalides après le retour de la fonction ;
La description des variables globales (variables externes) est précédée de static pour former une variable globale statique. Les variables globales elles-mêmes sont des méthodes de stockage statiques, et les variables globales statiques sont bien entendu également des méthodes de stockage statiques. Il n’y a aucune différence entre les deux dans la manière dont ils sont stockés. La différence entre les deux réside dans le fait que la portée des variables globales non statiques s'étend à l'ensemble du programme source. Lorsqu'un programme source est constitué de plusieurs fichiers source, les variables globales non statiques sont valides dans chaque fichier source. Les variables globales statiques limitent leur portée, c'est-à-dire qu'elles ne sont valides que dans le fichier source dans lequel la variable est définie et ne peuvent pas être utilisées dans d'autres fichiers source du même programme source. Étant donné que la portée des variables globales statiques est limitée à un fichier source et ne peut être partagée que par les fonctions de ce fichier source, les erreurs peuvent être évitées dans d'autres fichiers source.
Comme le montre l'analyse ci-dessus, le changement d'une variable locale en variable statique modifie sa méthode de stockage, c'est-à-dire sa durée de vie. Changer une variable globale en variable statique modifie sa portée et limite son champ d'utilisation.
Une fonction statique est différente d'une portée de fonction ordinaire et n'est valide que dans le fichier source dans lequel la variable est définie. Les fonctions utilisées uniquement dans le fichier source actuel doivent être déclarées comme fonctions internes (statiques), et les fonctions internes doivent être décrites et définies dans le fichier source actuel. Les fonctions qui peuvent être utilisées en dehors du fichier source actuel doivent être indiquées dans un fichier d'en-tête, et les fichiers source qui utilisent ces fonctions doivent inclure ce fichier d'en-tête.
Quelle est la différence entre les variables globales statiques et les variables globales ordinaires : les variables globales statiques ne sont initialisées qu'une seule fois pour éviter qu'elles ne soient référencées dans d'autres unités de fichiers
Quelles sont les différences entre les variables globales statiques ; variables et variables locales ordinaires ? Quelle est la différence : les variables locales statiques ne sont initialisées qu'une seule fois, et la fois suivante est basée sur la valeur du résultat précédent
Quelle est la différence entre les fonctions statiques et les fonctions ordinaires : les fonctions statiques ; ont des portées différentes des fonctions ordinaires, seule la source de la variable est définie Valide dans le fichier
Les variables globales et les variables statiques sont initialisées à 0 par le compilateur si elles ne sont pas initialisées manuellement. Les valeurs des variables locales ne sont pas connues.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!