Comprendre les règles de portée en C : Variables locales, globales et formelles
La portée est la région du programme où une variable définie existe et est accessible. Au-delà, elle ne peut pas être accédée. Trois endroits pour déclarer des variables en C :
À l'intérieur d'une fonction ou bloc → variables locales.
À l'extérieur de toutes les fonctions → variables globales.
Dans la définition des paramètres de fonction → paramètres formels.
Variables locales
Déclarées dans une fonction/bloc. Utilisables seulement par les instructions de cette fonction/bloc. Inconnues des autres fonctions.
#include <stdio.h>
int main() {
int a = 10, b = 20, c = a + b;
printf("a = %d, b = %d, c = %d\n", a, b, c);
return 0;
}
Variables globales
Définies hors fonctions, généralement en haut du programme. Conservent leur valeur toute la durée du programme. Accessibles depuis n'importe quelle fonction.
#include <stdio.h>
int g; // globale
int main() {
int a = 10, b = 20;
g = a + b;
printf("a = %d, b = %d, g = %d\n", a, b, g);
return 0;
}
Même nom possible pour locale et globale : la locale a priorité dans sa fonction.
#include <stdio.h>
int g = 20; // globale
int main() {
int g = 10; // locale masque la globale
printf("g = %d\n", g); // affiche 10
return 0;
}
Paramètres formels
Traitées comme variables locales dans la fonction, prioritaires sur les globales de même nom.
#include <stdio.h>
int a = 20; // globale
int sum(int a, int b) { // a, b sont formels
printf("a dans sum() = %d\n", a);
printf("b dans sum() = %d\n", b);
return a + b;
}
int main() {
int a = 10, b = 20, c = 0;
printf("a dans main() = %d\n", a);
c = sum(a, b);
printf("c dans main() = %d\n", c);
return 0;
}
Résultat :
a dans main() = 10 a dans sum() = 10 b dans sum() = 20 c dans main() = 30
Initialisation des variables locales et globales
Variable locale : non initialisée par le système → initialisez-la vous-même. Variable globale : initialisée automatiquement par le système :
| Type | Valeur par défaut |
|---|---|
| int | 0 |
| char | '\0' |
| float | 0 |
| double | 0 |
| pointeur | NULL |
Bonne pratique : initialisez toujours vos variables, sinon elles contiennent des valeurs indéterminées (garbage).
Langue C
- Règles clés des circuits série : courant, résistance et tension
- Fondamentaux des circuits parallèles : règles de tension, résistance et courant
- Règles de dérivation essentielles : aide-mémoire rapide
- Règles fondamentales des primitives : constantes, sommes et différences
- Maîtriser les variables C# et types de données primitifs : guide complet
- Comprendre la portée des variables en C# : Niveaux classe, méthode et bloc
- Maîtriser les variables, littéraux et constantes en C++ : Guide complet
- Variables, constantes et littéraux en C : Guide complet
- Comprendre les classes de stockage en C : Portée, durée de vie et performance