Security-X

Forum Security-X => Programmation => Cours => Discussion démarrée par: igor51 le juillet 17, 2012, 19:12:22

Titre: Déclaration et initialisation des variables
Posté par: igor51 le juillet 17, 2012, 19:12:22
Déclaration et initialisation des variables.

Une variable est, dans un langage informatique, l'unité de base pour représenter un "objet". Cet objet peut être un nombre, une lettre, une chaîne de caractères, etc.
En fait, conceptuellement, la variable est un contenant : c'est un espace de stockage en mémoire vive. On peut donc la considérer comme une case mémoire, disposée à stocker une donnée, qui est donc le contenu de cette variable. Pour que le processeur puisse retrouver en mémoire vive la variable qu'on lui indique, chaque variable possède une adresse mémoire.
Concrètement, une variable est juste une étiquette pour faciliter la vie au développeur. Cette étiquette est ensuite remplacée par une adresse par le compilateur.
Nous reviendrons plus en détails sur ces variables lorsque nous aborderons les notions de pointeurs.

Comme je l'ai insinué, il existe plusieurs types de variable dont les principaux sont : int (entier), short (entier court), long (entier long), char (caractère), etc.

Pour déclarer une variable en C, il suffit d'écrire : <typeDeVariable> <nomVariable>;. Exemple : int maVariable;
Pour lui assigner une valeur, on écrit : <nomVariable> = valeur;. Exemple : maVariable = 5;

En C, il est possible de déclarer une variable sans pour autant l'initialiser (lorsqu'on assigne une valeur dès la déclaration). Le problème ? On ne sait pas ce qu'elle contient.

#include <stdio.h>

int main()
{
        int i, j, k;
        printf("%i %i %i \n", i , j, k);
        return 1;
}

Sortie :

Citer
igor51@lenovo-deb:~/test$ gcc -o prog main.c
igor51@lenovo-deb:~/test$ ./prog
0 0 32767

Comme on peut le constater, la variable k vaut "32767". Si vous le faites sur votre système, vous aurez sûrement une autre valeur.
En fait, si on assigne pas de valeur à notre variable, le contenu de la variable va correspondre à la donnée qui se trouvait précédemment à cet endroit dans la mémoire (adresse de notre variable).
Lorsqu'on déclare une variable, son contenu n'est pas mis à 0.

Il est donc important d'initialiser ses variables avec une valeur précise pour savoir exactement ce qu'il y a à l'intérieur.

#include <stdio.h>

int main()
{
        int i = 0, j = 1, k = 2;
        printf("%i %i %i \n", i ,j , k);
        return 1;
}

Sortie :

Citer
igor51@lenovo-deb:~/test$ gcc -o prog main.c
igor51@lenovo-deb:~/test$ ./prog
0 1 2

Voila, notre programme affiche bien ce que l'on veut.


-----

Comment expliquer cette valeur non-voulue ? En C, lorsque l'on déclare une variable, le système nous donne "une case mémoire". Il nous la donne sans réfléchir  à ce qu'il y avait avant.