Programmation • IoT

Résumé : Chap 4 – Les pointeurs

Ce chapitre a pour objectif d’introduire les pointeurs en s’appuyant sur les notions de variable, d’adresse mémoire et de référence étudiées précédemment.

Le lecteur découvre tout d’abord qu’une adresse mémoire est une valeur qui peut être conservée dans une variable. Une variable spécialement conçue pour contenir l’adresse d’un objet est appelée un pointeur.

La déclaration int* p = &a; signifie que p peut contenir l’adresse d’un objet de type int et qu’il reçoit ici l’adresse de la variable a.

Le chapitre cherche à distinguer clairement l’objet, son adresse et le pointeur qui mémorise cette adresse. Ainsi, a représente la valeur de l’objet, &a son adresse et p l’adresse enregistrée dans le pointeur.

L’opérateur de déréférencement * permet ensuite d’accéder à l’objet situé à l’adresse contenue dans un pointeur. L’expression *p désigne donc la valeur de l’objet vers lequel pointe p.

Le déréférencement ne sert pas uniquement à lire une valeur. Une instruction comme *p = 25; permet de modifier directement l’objet désigné par le pointeur.

Le chapitre montre également qu’un pointeur est lui-même une variable. Il possède sa propre zone mémoire, sa propre adresse et une valeur qui peut être remplacée afin de désigner successivement différents objets.

Cette possibilité constitue une différence importante avec une référence. Une référence reste définitivement liée au même objet, tandis qu’un pointeur peut recevoir une nouvelle adresse.

La notion de pointeur nul est introduite avec nullptr. Un tel pointeur ne désigne aucun objet et ne doit jamais être déréférencé, car cela provoquerait un comportement indéfini.

Le but général est donc d’apprendre à manipuler les adresses de manière consciente et sûre, en distinguant le pointeur, l’adresse qu’il contient et l’objet accessible à cette adresse. Ces bases préparent directement l’étude des tableaux, de l’allocation dynamique et des structures de données.