Table des matières
1. Le mot-clé static modifie les variables locales
2. Le mot-clé static modifie les variables globales
3. Fonction de modification de mot clé statique
1. Le mot-clé static modifie les variables locales
En mémoire, elle est souvent divisée en trois blocs : la zone de pile, la zone de tas et la zone statique . Les variables locales définies en langage C, y compris les paramètres de fonction, sont stockées dans la zone de pile , mais lorsque la variable locale est modifiée statiquement , l'attribut de stockage de la variable est modifié et la variable modifiée par statique est stockée dans la zone statique. .
Les variables stockées dans la zone statique ne seront pas détruites lorsqu'elles seront hors de portée.Le cycle de vie des variables statiques est le cycle de vie du programme .
À la fin du programme, la variable statique sera récupérée de l'espace
Exemple:
1. Lorsqu'il n'est pas modifié par le mot-clé static
code:
#include<stdio.h>
void test()
{
int a = 1; //未被static修饰
a++;
printf("%d", a);
}
int main()
{
int i = 10;
while (i--)
{
test();
}
}
2. Lorsqu'il est modifié par le mot-clé static
code:
#include<stdio.h>
void test()
{
static int a = 1; //被static修饰
a++;
printf("%d,", a);
}
int main()
{
int i = 10;
while (i--)
{
test();
}
}
Il ressort de ce qui précède que la portée des variables locales modifiées par static reste inchangée et que le cycle de vie est prolongé jusqu'à la fin du programme.
2. Le mot-clé static modifie les variables globales
Les variables globales ont un attribut de lien externe. Lorsque le mot clé static modifie une variable globale , l'attribut de lien externe de la variable globale devient un attribut de lien interne et ne peut pas être appelé par un fichier .c autre que lui-même.
1. Avant d'être modifié par static :
2. Après avoir été modifié par statique
3. Fonction de modification de mot clé statique
La fonction elle-même a également un attribut de lien externe . S'il est modifié par static , l'attribut de lien externe deviendra un attribut de lien interne et ne pourra pas être appelé par un fichier .c autre que lui-même. (Un autre point remarquable est placé en troisième place ci-dessous)
1. Non modifié par le mot-clé static
2. Après avoir été modifié par le mot-clé static
3. Il convient également de noter que lorsque le mot-clé static dans le fichier externe modifie la méthode a_static() (personnalisée), la définition d'un fichier du même nom dans le fichier d'origine n'en sera pas affectée.