Logo du langage C

Introduction à la programmation - Le langage C - Les variables


Welcome back, nous revoilà pour un nouveau tutoriel sur le c. Aujourd'hui c'est une notion plutôt facile que nous allons voir puisqu'il s'agit des variables

Qu'est-ce qu'une variable ?

Une variable en C est tout simplement un emplacement de la mémoire de votre programme dont la valeur enregistrée peut changer.

Par exemple le programme ci-dessous stocke le nombre 42 dans une variable de type "int" (diminutif d'"integer" en anglais, soit "entier" en français, un nombre ne possédant pas de décimales) :

#include <stdio.h>

int main(void)
{
int mon_nombre = 42;
printf("mon_nombre = %d\n", mon_nombre);
return 0;
}

Dans ce code nous déclarons une variable nommée "mon_nombre" de type entier (int) valant 42 et nous affichons sa valeur avec la fonction printf. À ce propos, les deux paramètres utilisés avec la fonction printf sont des variables, je vous expliquerai son fonctionnement plus tard lorsque nous verrons les fonctions.

Nous verrons les notions suivantes à propos des variables :

Les types de variables

Il existe de nombreux types de variables en C, en fait il est même possible d'en créer nous-même. Les types les plus courants sont :

TypeTailleDescription
char1 octetUn caractère, par exemple 'a', ou un nombre entre -128 et 127
unsigned char1 octetUn nombre entre 0 et 255
short2 octetsUn nombre entier entre -32768 et 32767
unsigned short2 octetsUn nombre entier entre 0 et 65535
int4 octetsUn nombre entier entre –2147483648 et 2147483647
unsigned int4 octetsUn nombre entier entre 0 et 4294967295
long8 octetsUn nombre entier entre -9223372036854775808 et 9223372036854775807
unsigned long8 octetsUn nombre entier entre 0 et 18446744073709551615
float4 octetsUn nombre flottant entre -3.4*10-38 et 3.4*1038
double8 octetsUn nombre flottant entre -1.7*10-308 et 1.7*10308
long doublejusqu'à 16 octets mais seulement 10 octets utilisésUn nombre flottant entre -3.4*10-4932 et 3.4*104932
* (pointeur)Identique à l'architecture du CPU (8 bits, 16, 32, 64, ...etc)La localisation d'une variable dans la mémoire. Par exemple si votre variable est une feuille de papier et que vous voulez donner son contenu à quelqu'un, vous pouvez lui dire où se trouve la feuille au lieu de lui donner une photocopie

Ces types sont les types standards originels du C, néanmoins leurs tailles réelles dépends de l'architecture de votre processeur. Les valeurs données dans le tableau ci-dessus correspondent à celle d'un programme compilé pour un processeur 64 bits, les plus courants aujourd'hui.

Afin d'avoir des types dont la taille est fixe est quelque soit l'architecture de la machine, les types suivants ont été implémentés dans le fichier stdint.h :

TypeTailleValeurs possibles
int8_t1 octetUn nombre entier entre -128 et 127
uint8_t1 octetUn nombre entier entre 0 et 255
int16_t2 octetsUn nombre entier entre -32768 et 32767
uint16_t2 octetsUn nombre entier entre 0 et 65535
int32_t4 octetsUn nombre entier entre –2147483648 et 2147483647
uint32_t4 octetsUn nombre entier entre 0 et 4294967295
int64_t8 octetsUn nombre entier entre -9223372036854775808 et 9223372036854775807
uint64_t8 octetsUn nombre entier entre 0 et 18446744073709551615

En informatique 1 octet est composé de 8 bits. Comme vous pouvez le remarquer avec le tableau ci-dessus, le nom des types est composé ainsi : La lettre 'u' si le type est n'a pas de signe, "int" car ce sont des entiers, le nombre de bits utilisé (donc leur taille en octets est ce nombre divisé par 8), et enfin terminé par "_t".

Si vous voulez retrouver le nombre de valeurs que peut prendre une variable en informatique, vous pouvez la calculer avec la formule suivante : 2^nombre_de_bits.

Les modificateurs des variables

Il existe plusieurs mots-clés que vous pouvez ajouter devant la déclaration d'une variable afin de changer le comportement de celle-ci :

Mot-cléDescription
constRend "constant" une variable, c'est-à-dire que sa valeur ne peut-être changée
staticLa variable existe en un seul exemplaire pour tout les appels de la fonction où elle existe au lieu d'être recrée à chaque fois

Créer une variable

Il existe deux manière de créer une variable :

Soit en écrivant son type et son nom comme ceci :

int mon_nombre = 42;

La création de la variable est alors gérée par le compilateur dans une zone de la mémoire appelée le tas, ainsi que sa destruction pour libérer la mémoire.

Mais on peut aussi créer la variable pendant l'exécution du programme en appelant la fonction "malloc" qui prend en paramètre la taille de la variable que l'on veut créer avec l'instruction "sizeof" ("taille de" en anglais) et nous renvoie sa localisation (un pointeur) :

int *mon_nombre = malloc(sizeof(int));
*mon_nombre = 42;

Cependant il faut aussi libérer la mémoire nous même en passant la localisation de la variable à la fonction "free" lorsque nous avons fini de l'utiliser, sinon cela engendre une fuite de mémoire.

Alors pourquoi créer nous-même les variables au lieu de laisser le compilateur faire ? Il faut savoir que le tas est une petite portion de la mémoire et que les variables qui crées par le compilateur ont une durée de vie limitée. Il peut donc parfois être nécessaire d'appeler la fonction "malloc" afin de créer une variable contenant beaucoup de données pendant longtemps. Cependant elle est à appeler le moins possible et n'existe plus aujourd'hui dans certains langages modernes où la mémoire est intégralement gérée par le compilateur.

À présent que vous savez utiliser les variables, vous pouvez stocker des données dans vos programmes. Dans le prochain tutoriel nous verrons le fonctionnement des conditions.

À la prochaine fois :)


Publié le 13/09/2016