Mais si vous avez besoin de l'accès à la variable de toutes fonctions dans le fichier source entier, ceci bidon également fait avec le mot-clé statique, mais en mettant la définition en dehors de toutes les fonctions. Par exemple :
#include <stdio.h>
static int num = 10; /* will be accessible from entire source file */
int main(void)
{
printf("The Number Is: %d\n", num);
return 0;
}
Et il y a également des cas où une variable doit être accessible du programme entier, qui peut se composer de plusieurs fichiers source. Ceci s'appelle un variable global et devrait être évité quand on ne l'exige pas.
Ceci est également fait en mettant la définition en dehors de toutes les fonctions, mais sans employer le mot-clé statique:
#include <stdio.h>
int num = 10; /* will be accessible from entire program! */
int main(void)
{
printf("The Number Is: %d\n", num);
return 0;
}
Il y a également le mot-clé externe, qui est employé pour des variables globales de accès dans d'autres modules. Il y a également quelques qualificateurs que vous pouvez ajouter aux définitions variables. Le plus important de elles est const. Une variable qui est définie car le const ne peut être modifié.
Il y a deux modificateurs supplémentaires qui sont moins utilisés généralement. Le modificateur volatil et de registre. Le modificateur volatil exige du compilateur d'accéder réellement à la variable chaque fois qu'on le lit. Il peut ne pas optimiser la variable en la mettant dans un registre ou ainsi. Ceci est principalement employé pour multithreading et interruption traitant les buts etc.
Le modificateur de registre invite le compilateur à optimiser la variable dans un registre. C'est seulement possible avec des variables automatiques et dans beaucoup de cas le compilateur peut améliorer choisi les variables à optimiser dans des registres, ainsi ce mot-clé est obsolescent. La seule conséquence directe de faire un registre variable est que son adresse ne peut pas être prise.
La table des variables, donnée dans la prochaine page décrit la classe de stockage du type cinq de classes de stockage.
Dans la table nous voyons que le mot-clé externe est placé dans deux rangées. Le mot-clé externe est employé dans les fonctions pour déclarer une variable externe statique qui est définie ailleurs.
Classe variable de stockage |
Défini As |
Portée |
Classe |
Mot-clé |
Automatique |
Le mot-clé est facultatif |
Provisoire |
Dans une fonction |
Local |
Statique |
statique |
Provisoire |
Dans une fonction |
Local |
Registre |
registre |
Provisoire |
Dans une fonction |
Local |
Externe |
Facultatif |
Permanent |
En dehors d'une fonction |
Global (tous les dossiers) |
Externe |
Statique |
Permanent |
En dehors d'une fonction |
Global (un dossier) |
|