Xanetiz > Programmation > Les pointeurs en C
Tout d'abord, il faut voir la mémoire comme une suite d'adresses auxquelles correspondent une valeur unique. A chaque adresse, une valeur. Lorsque vous déclarez une variable en C, celle-ci est remplacé par une adresse à la compilation.
Le pointeur est la chose réputée la plus compliquée à comprendre en C. Pourtant c'est assez simple. Un pointeur est une variable spéciale qui contient l'adresse d'une autre variable. On dit que le pointeur pointe sur cette variable. Cela permet simplement de pouvoir modifier directement la variable pointé à l'aide du pointeur.
La question qu'il faut se poser : pourquoi de pas modifier la variable directement ? Parce que dans certains cas, ça n'est pas possible.
En C, une fonction est un bout de programme qui peut ne rien renvoyer (le type void) ou renvoyer une seule valeur (selon le type défini). Hors parfois, on veut obtenir un résultat sur plusieurs variables.
Le problème est que lorsque l'on passe directement une variable en paramètre à une fonction, celle-ci est copiée et sera supprimée à la fin de la fonction. Nous ne pouvons pas récupérer les valeurs.
C'est là que les pointeurs sont utiles. Il suffit juste de passer en paramètres les adresses des variables qui vont stocker le résultat. Ensuite, en travaillant sur les pointeurs dans la fonction, nous allons modifier indirectement les valeurs des variables pointés et donc nous aurons bien renvoyé plusieurs valeurs de manière indirecte.
Les pointeurs se déclarent comme les variables normales, sauf qu'il faut rajouter une étoile devant le nom. Pour pouvoir accéder à la valeur d'une variable pointée, on procède à une déréférenciation. Il suffit juste de rajouter une étoile devant le nom.
Il faut différencier :
Un exemple avec une fonction swap qui échange les valeurs dans deux variables :
void swap(int *p1, int *p2)
{
int t = *p2; // déréférenciation
*p2 = *p1;
*p1 = t;
}
void main(void)
{
int a = 5, b = 10;
swap(&a, &b);
printf("%d - %d", a, b); // va afficher 10 – 5
}
Pour obtenir l'adresse d'une variable en C, il faut utiliser le caractère & à placer devant le nom de celle-ci.
Titre | Vu | Date | |
---|---|---|---|
L'essentiel du langage PHP | 12 500 | 14/03/10 | |
Les injections SQL | 7 904 | 11/02/10 | |
Utiliser un IDE pour programmer | 6 822 | 25/02/10 | |
Les designs en CSS | 5 810 | 16/02/10 | |
L'assembleur | 7 123 | 10/02/10 |
Nombre d'inscrits : 262
Dernier membre : Clyderar
Visiteurs en ligne : 14
Membres en ligne : Aucun
Copyright © 2022 Xanetiz.com - Tous droits réservés