la mémoire d'un ordinateur est constituée de petites cases portant chacune un numéro.
Ce numéro est appelé l'adresse de la mémoire.
Chaque petite case permet de stocker un octet (nombre constitué de 8 bits).
Dans l'exemple ci-dessus, nous avons placé la donnée hexadécimale FD (1111 1101 en binaire) à l'adresse 5B.
Une adresse permet donc de connaitre l'emplacement en mémoire où nous stockons une donnée.
Analysons de suite un exemple :
Dans ce programme nous avons défini un entier : la variable "a" que nous avons actualisé à la valeur 20.
Observons maintenant la dernière ligne "cout" de ce programme.
En plaçant le symbole & devant le nom de notre variable,
ce n'est plus sa valeur qui s'affiche, mais l'adresse ou l'ordinateur a stocké cette variable.
En résumé,
& devant le nom d'une variable, est interprêté par "adresse de".
Notons que c'est l'ordinateur qui choisit l'adresse de stockage et non l'utilisateur. En effet, imposer une adresse, reviendrait à écrire n'importe où dans l'ordinateur, et risquer de provoquer un plantage de la machine.
Le pointeur est une variable particulière. Elle contient l'adresse d'une autre variable.
La déclaration d'un pointeur se fait comme pour une variable ordinaire en précisant le type (int, float, ...), puis
en ajoutant le symbole * devant le nom de cette variable.
Important :
Pour éviter qu'un pointeur s'initialise avec une valeur aléatoire, il est prudent de le déclarer avec une valeur nulle.
Analysons maintenant un programme utilisant un pointeur :
Cet exemple montre qu'à la fin du programme, notre pointeur contient bien l'adresse de a.
Notez qu'après avoir initialisé le pointeur, le symbole * n'apparait plus.
Un pointeur permet de désigner l'adresse d'une variable.
Nous venons de voir que lorsque nous utilisons un pointeur, il est écrit sans le * devant.
Que se passe-t-il si nous reécrivons ce symbole ?
Voyons un exemple :
C'est ce que nous appelons un déréférencement du pointeur. Il ne désignera plus l'adresse, mais
la valeur de la variable qu'il pointait.
"endl" est une instruction de saut à la ligne suivante.
Un déréférencement de pointeur permet de lire la valeur de la variable pointée, au lieu de son adresse.