Différences entre les versions de « Programmation C++/Les pointeurs »

m
Bot: Retouches cosmétiques
(échange titre "Pointeur constant" <-> "Pointeur vers une valeur constante")
m (Bot: Retouches cosmétiques)
{{Programmation C++}}
== Les pointeurs ==
Un pointeur désigne une variable contenant une adresse mémoire. Il est utilisé lorsque l'on veut manipuler les données stockées à cette adresse. C'est donc un moyen indirect de construire et de manipuler des données très souvent complexes.
==== Déclaration ====
''type * identificateur;''<br/>
La variable ''identificateur'' est un pointeur vers une variable de type ''type''.
==== L'opérateur & ====
Il permet d'obtenir un pointeur vers une variable.<br/>
''&identificateur'' permet d'obtenir un pointeur vers la variable ''identificateur''. Il renvoit en réalité une adresse mémoire, l'adresse où est stocké physiquement la variable ''identificateur''. C'est donc une variable pointeur.
 
==== L'opérateur * ====
''* variable''<br\>
C'est l'opérateur de déréférencement. Il permet d'obtenir et donc de manipuler les données pointées par la variable ''variable''
* on affiche ensuite les valeurs de b et c c'est à dire respectivement 108 et 103.
 
=== Opérations arithmétiques sur les pointeurs ===
 
Hormis l'opérateur de déréférencement, les pointeurs peuvent être utilisés avec l'opérateur d'addition ( ''+'' ). L'addition d'un pointeur avec une valeur entière permet d'avancer ou reculer le pointeur du nombre d'éléments indiqué.
 
==== Exemple 1 ====
 
char* ptr="Pointeur"; // ptr pointe le premier caractère de la chaîne de caractères
Comme l'exemple précédent le montre, il est également possible d'utiliser les opérateurs d'incrémentation et de décrémentation.
 
==== Exemple 2 ====
 
int premiers[] = { 2, 3, 5, 7, 11, 13, 17 };
Cela montre que l'adresse contenue dans le pointeur est toujours incrémentée ou décrémentée d'un multiple de la taille d'un élément (<code>sizeof *ptr</code>).
 
==== Opération utilisant deux pointeurs ====
La seule opération valable (ayant un sens) utilisant deux pointeurs de même type est la soustraction ( <code>-</code> ) donnant le nombre d'éléments entre les deux adresses.
Elle n'a de sens que si les deux pointeurs pointent dans le même tableau d'éléments.
// affiche : Nombre de caractères de 'a' à 'è' = 28
 
=== Pointeur constant et pointeur vers valeur constante ===
Il ne faut pas confondre un pointeur constant (qui ne peut pointer ailleurs) avec un pointeur vers une valeur constante (l'adresse contenue dans le pointeur peut être modifiée mais pas la valeur pointée).
 
Dans les 2 cas le mot clé <code>const</code> est utilisé, mais à 2 endroits différents dans le type de la variable.
 
==== Pointeur vers une valeur constante ====
Le mot-clé <code>const</code> placé avant le type du pointeur permet d'empêcher la modification de la valeur pointée.
 
msg="Test"; // OK -> "Test"
 
==== Pointeur constant ====
Le mot-clé <code>const</code> placé entre le type du pointeur et la variable permet d'empêcher la modification du pointeur lui-même (l'adresse).
 
*msg = 'E'; // OK -> "Essai constant"
 
==== Pointeur constant vers une valeur constante ====
Le mot-clé <code>const</code> apparaissant aux 2 endroits empêche à la fois la modification du pointeur lui-même est celle de la valeur pointée.
 
12 783

modifications