Chaque variable dans un programme a besoin d'un certain nombre d'octets en mémoire. Jusqu'ici, la réservation de la mémoire s'est déroulée automatiquement par l'emploi des déclarations des données. Dans tous ces cas, le nombre d'octets à réserver était déjà connu pendant la compilation. Nous parlons alors de la déclaration statique des variables.
Exemples
float A, B, C; /* réservation de 12 octets */ short D[10][20]; /* réservation de 400 octets */ char E[] = {"Bonjour !"}; /* réservation de 10 octets */ char F[][10] = {"un", "deux", "trois", "quatre"}; /* réservation de 40 octets */
Pointeurs
Le nombre d'octets à réserver pour un pointeur dépend de la machine et du 'modèle' de mémoire choisi, mais il est déjà connu lors de la compilation. Un pointeur est donc aussi déclaré statiquement. Supposons dans la suite qu'un pointeur ait besoin de p octets en mémoire. (En DOS: p =2 ou p = 4)
Exemples
double *G; /* réservation de p octets */ char *H; /* réservation de p octets */ float *I[10]; /* réservation de 10*p octets */
Chaînes de caractères constantes
L'espace pour les chaînes de caractères constantes qui sont affectées à des pointeurs ou utilisées pour initialiser des pointeurs sur char est aussi réservé automatiquement:
Exemples
char *J = "Bonjour !"; /* réservation de p+10 octets */ float *K[] = {"un", "deux", "trois", "quatre"}; /* réservation de 4*p+3+5+6+7 octets */