Cette notion en C est en général assez complexe. Mais une fois maîtrisée elle se révèle très utile.
Les pointeurs sont des « variables » qui ne contiennent pas une valeur comme les variables que nous avons utilisées jusque là mais qui contiennent l’adresse d’une autre variable.
Par exemple, elle est notamment utilisée pour permettre de retourner plusieurs variables dans une fonction, car de base nous ne pouvons en retourner qu’une.
Qu’est-ce qu’une adresse ?
Dire qu’un pointeur contient une adresse, peut se révéler incompréhensible si vous ne savez pas ce qu’est une adresse.
L’adresse d’une variable est sa localisation dans la mémoire de l’ordinateur. Si vous imaginez que votre ordinateur est une armoire avec plusieurs tiroirs numérotés de 1 à 10.
Vous voulez ensuite stocker dans votre variable, une chaussette. Le programme va par exemple ranger la chaussette dans le tiroir numéro 2, et donc 2 sera l’adresse de la variable et la chaussette sera son contenu.
Et pour stocker ces adresses on peut utiliser les pointeurs.
Lors de vos premier TP vous avez dû utiliser le scanf, et bien lorsque vous renseignez dans les paramètres « &nom_variable », vous renseignez en faite l’adresse de la variable.
Syntaxe des pointeurs
Tout d’abord un pointeur doit être déclaré comme une variable.
type * Nom_pointeur;
Les types sont les mêmes que pour les autres variables, et vous devez bien sûr mettre le même type entre la variable et son pointeur.
Il faut bien penser à mettre l’étoile (*) car autrement le programme déclarera une variable basique.
Important : Après avoir déclaré votre pointeur vous devez absolument l’initialiser pour lui dire vers quelle variable il pointe.
Pour l’initialiser vous devez utiliser
Nom_pointeur = &nom_variable_pointee;
Et lorsque vous avez initialisé cela votre pointeur contiendra bien l’adresse de la variable choisie.
Exemple
Exemple de programme :
short var; //init de la variable short * pointeur_var; //init du pointeur pointeur_var = &var; //lien entre le pointeur et la variable
Vous avez donc ici crée une variable et un pointeur qui pointe dessus.
- pointeur_var renverra l’adresse de la variable var
- *pointeur_var renverra la valeur de la variable var
- &var renverra la valeur de la variable var
printf("pointeur %d\n", pointeur_var);
Cela renvoie l’adresse.
printf("valeur pointée %d\n", *pointeur_var);
Cela renvoie la valeur de la variable var.