C CHAP10
Les pointeurs sont une des difficultés majeures du C++. Nous apprendrons dans ce chapitre à les manipuler. Ce sera l'occasion d'étudier les fonctions avec passage de paramètres par pointeur . Ce passage de paramètres peut sembler obsolète et on peut penser qu'il vaut mieux utiliser le passage de paramètres par référence mais tout programmeur en C++ se doit de le connaître et il est toujours très utilisé.
Nous étudierons également les liens entre les tableaux et les pointeurs. Jusqu'à maintenant, nous manipulions des tableaux dont la taille était constante. Nous étudierons dans ce chapitre les tableaux dynamiques dont la taille peut être quelconque et variable au cours du temps.
Ce sera l'occasion d'étudier l'allocation dynamique de mémoire qui permet au programmeur de gérer la RAM comme bon lui semble en créant ou en détruisant de nouvelles structures. A l'occasion d'exercices, nous verrons une structure de données plus complexe : des listes constitués de tableaux dynamiques dont la taille peut s'allonger au fur et à mesure des besoins.
[modifier] Une notion délicate
Il s'agit d'une notion importante du C++ mais qui est assez délicate à utiliser. Les pointeurs semblent au départ assez pratique à utiliser mais de nombreux bugs résultent de leur utilisation. Il convient donc de savoir les utiliser mais la prudence doit être de rigueur !
[modifier] Déclaration
Déclaration d'un pointeur : int * x; x est un pointeur vers un entier : x contient l'adresse en mémoire où est stocké un entier. Initialement le pointeur n'est pas initialisé : x vaut donc n'importe quelle adresse en RAM.
[modifier] L'opérateur &
Si a est un entier, &a renvoie l'adresse réelle en mémoire de la variable a.
On peut donc écrire : int a; int *x; x=&a; Dans ce bout de programme, on a copié l'adresse où est stockée en mémoire la variable a dans le pointeur x. Attention on a copié une adresse pas un entier.
On dit que x pointe vers la variable a.
[modifier] L'opérateur de déréférencement