Comprendre les variables en C : Types, règles de nommage et gestion mémoire
Une variable est un nom donné à une zone de stockage que le programme peut manipuler. Chaque variable en C a un type spécifique déterminant : la taille et l'organisation de sa mémoire, la plage de valeurs stockables, et les opérations applicables.
Le nom d'une variable peut contenir lettres, chiffres, underscore _. Il doit commencer par une lettre ou _. La casse distingue les identifiants (C est sensible à la casse).
Types de variables de base (voir chapitre précédent) :
| N° | Type et description |
|---|---|
| 1 | char : généralement 1 octet. Type entier. |
| 2 | int : taille naturelle d'entier pour la machine. |
| 3 | float : virgule flottante simple précision. |
| 4 | double : virgule flottante double précision. |
| 5 | void : absence de type. |
D'autres types (énumération, pointeur, tableau, structure, union) seront couverts plus tard.
Définition de variable en C
Une définition indique au compilateur où et combien de stockage créer. Syntaxe :
type liste_variables;
type : type C valide (char, int, float, double, etc.). liste_variables : un ou plusieurs noms séparés par des virgules.
int i, j, k; char c, ch; float f, salaire; double d;
int i, j, k; déclare et définit i, j, k de type int.
Initialisation à la déclaration
type nom_variable = valeur;
Exemples :
extern int d = 3, f = 5; // déclaration de d et f int d = 3, f = 5; // définition et initialisation byte z = 22; // définition et initialisation char x = 'x'; // x vaut 'x'
Sans initialiseur : variables à durée de stockage statique → initialisées à NULL (octets à 0) ; autres → valeur indéfinie (aléatoire).
Déclaration de variable en C
Une déclaration assure au compilateur qu'une variable du type et nom donnés existe, permettant la compilation sans détail complet. La définition est nécessaire à l'édition de liens.
Utile avec plusieurs fichiers : définissez dans un fichier, déclarez extern dans les autres. Une variable peut être déclarée plusieurs fois, mais définie une seule fois par fichier/fonction/bloc.
Exemple
#include <stdio.h>
// Déclarations externes
extern int a, b;
extern int c;
extern float f;
int main() {
// Définitions locales
int a, b;
int c;
float f;
// Initialisation effective
a = 10; b = 20;
c = a + b;
printf("valeur de c : %d \n", c);
f = 70.0/3.0;
printf("valeur de f : %f \n", f);
return 0;
}
Résultat :
valeur de c : 30 valeur de f : 23.333334
Même principe pour les fonctions : déclaration (prototype) en haut, définition ailleurs.
// déclaration
int func();
int main() { int i = func(); }
// définition
int func() { return 0; }
Lvalues et Rvalues en C
Deux sortes d'expressions :
lvalue : expression référençant une adresse mémoire. Peut apparaître à gauche ou à droite d'une affectation.
rvalue : valeur de données stockée à une adresse. Ne peut pas être affectée (pas à gauche).
Variables = lvalues (peuvent être à gauche). Littéraux numériques = rvalues (ne peuvent pas être à gauche).
int g = 20; // valide 10 = 20; // invalide : erreur de compilation
Langue C
- 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
- Maîtriser le mot-clé global en Python : Comment et quand l'utiliser
- Variables et littéraux en Java : Guide complet
- Variables et types de données en C++ : Guide expert sur int, double, char, string, bool
- Comprendre les affectations Verilog : Types, Syntaxe et Bonnes Pratiques