Gestion des variables en langage C

Les variables constituent l'unité fondamentale de stockage de données en C. Elles possèdent un identifiant et un type qui déterminent comment l'information est en mémoire et quelles opérations peuvent lui être appliquées. Maîtriser leur déclaration, leur initialisation et leur portée est essentiel pour programmer efficacement en C.

Définition et caractéristiques des variables

Une variable représente une zone nommée dans la mémoire de l'ordinateur. Son type, défini lors de la déclaration, spécifie la taille occupée, la représentation des données et les opérations valides.

Règles de dénomination

  • Composition autorisée : lettres, chiffres, underscores.
  • Doit commencer par une lettre ou un underscore.
  • La casse est significative (ex: age et Age sont distincts).
  • Les mots réservés du C (comme int, float, if) ne peuvent pas être utilisés.

Types de données fondamentaux

Type Description Taille (octets)
char Caractère 1
int Entier 4
float Réel simple précision 4
double Réel double précision 8
void Type incomplet (pointeur, retour de fonction) -

Déclaration et affectation de valeurs

Définition d'une variable

La définition alloue de la mémoire et spécifie le type. Un ou plusieurs identifiants peuvent être définis dans une seule instruction.

int temperature;
double pression, humidite;

Initialisation

Une valeur initiale peut être assignée lors de la définition ou ultérieurement.

// À la définition
int compteur = 0;
char symbole = 'X';

// Après la définition
float moyenne;
moyenne = 15.7;

Variables non initialisées

Les variables globales et statiques sont automatiquement initialisées à zéro. Les variables locales contiennent une valeur indéterminée si elles ne sont pas explicitement initialisées, ce qui peut provoquer un comportement imprévisible.

Déclarations multiples et portée

Déclaration avec le mot-clé extern

La déclaration indique l'existence d'une variable définie ailleurs, sans réserver d'espace mémoire.

extern int limite_globale;

Lvalues et Rvalues

En C, une lvalue désigne un objet occupant une adresse mémoire identifiable (côté gauche d'une affectation). Une rvalue est une valeur temporaire ou une constante (côté droit).

int nombre = 42;    // 'nombre' est une lvalue, 42 est une rvalue
nombre = 100;       // Correct : affectation à une lvalue

// 42 = nombre;     // Interdit : une rvalue ne peut pas recevoir de valeur

int tableau[] = {10, 20, 30};
tableau[1] = 99;    // 'tableau[1]' agit comme une lvalue
int valeur = tableau[1]; // 'tableau[1]' agit comme une rvalue

Gestion de la mémoire

La mémoire pour les variables est allouée dans différentes zones selon leur type de durée de vie :

  • Pile : Variables locales et données de contexte des fonctions. Allocation/désallocation automatiques.
  • Tas : Allocation dynamique via malloc, calloc, realloc et libération par free.
  • Segment statique : Variables globales, variables statiques, constantes.

Adresses mémoire

#include <stdio.h>

int main() {
    int premier = 7;
    int second = 14;
    printf("Adresse de premier : %p\n", (void*)&premier);
    printf("Adresse de second : %p\n", (void*)&second);
    return 0;
}

L'opérateur & permet d'obtenir l'adresse d'une variable.

Durée de vie et portée

  • Variables locales : Existent uniquement pendant l'exécution du bloc de code où elles sont définies.
  • Variables globales : Visibles dans tout le programme. Leur durée de vie correspond à la durée d'exécution du programme.
  • Variables statiques : Conservent leur valeur entre les appels de fonction (si définies dans une fonction) ou limitent la visibilité au fichier courant (si définies au niveau fichier).

Étiquettes: C langage C variables types de données mémoire

Publié le 4 juin à 19h25