Chapitre11 Les pointeurs
LES POINTEURS
1. Introduction
• Depuis
D i quelques l chapitres h i on entendd parler l de d mémoire, é i d’adresse d’ d ou encore d’espace d’ réservé et on se dit mais c’est transparent pour le programmeur puisqu’il ne manipule pas directement ces fameuses adresses.
• Nous allons voir dans ce chapitre qu’il est possible grâce aux pointeurs de manipuler ces adresses et que cette pratique est courante.
• Les
L pointeurs i sont utiles il pour le l passage de d paramètres è d dans l fonctions les f i en C et permettent dans un deuxième temps d’optimiser la mémoire. (cf. chapitre suivant)
• A chaque fois qu qu’on on réalise une déclaration on réalise en réalité une demande d’allocation mémoire au système d’exploitation (autrement dit on lui demande l’autorisation d’occuper une partie de la mémoire). La taille de la mémoire occupée est dépendante du type de données à stocker. stocker • Cet espace mémoire est repéré par le nom de la variable d’affectation. Pour accéder à la donnée stockée il suffit de préciser le nom de la variable correspondante.
• En réalité lorsqu’on manipule une variable on manipule indirectement son adresse, en effet c’est le compilateur qui fait le lien entre le nom de la variable et son adresse mémoire.
• Or nous avons vu dans le chapitre des sous-programmes qu’il est parfois bien utile de pouvoir manipuler directement une variable par son adresse.
2
2. Notion de pointeurs
• Nous avons vu lors de la déclaration des sous-programmes qu’il est parfois indispensable de créer des variables pour stocker non pas des valeurs (int, double,…) mais des adresses.
• Un pointeur est ni plus ni moins qu’une variable qui contient l’adresse mémoire d’une autre variables.
• Qui dit pointeur dit nouveau type de variable ? La réponse est non un pointeur est définit à partir du type de variable dont il stocke l’adresse.
• Déclaration d’un pointeur : type *nom_du_pointeur; type de la variable dont on doit stocker l’adresse (ou type de la variable à