Adresse,
pointeur et indirection ...
Intuition:
- Introduction: Vous
êtes PDG d'une entreprise d'informatique, quand vous êtes
absent, votre secrétaire note vos rendez vous.
- Solution 1: Vous
lui donnez une photocopie de votre planning du mois, et elle note vos
rendez vous sur la photocopie ==> problème: Votre agenda ne
contient pas les rendez vous qu'elle a notés sur la photocopie. Modifier la photocopie ne modifie pas l'original.
- Solution 2: Vous
lui donnez un papier avec l'endoit où se trouve le planning
(2ème tiroir à gauche, par exemple) et elle notera vos
rendez vous sur votre planning original ==> vous lui avez
donné l'adresse de votre planning, elle peut modifier le planning original
(mais pas le déplacer c'est à dire changer son adresse)
en allant à l'adresse indiquée sur le papier
(indirection).
- Vocabulaire: Le papier
sur lequel est noté l'endroit où se trouve le planning
s'appelle un pointeur. Ce qui est inscrit
sur le papier (donc le pointeur) est une adresse.
Modifier le planning original en partant du papier où est
notée l'adresse s'appelle faire une indirection.
En langage C:
- En C, toute variable prend une
certaine place en mémoire centrale à un certain endroit
qu'on appelle l'adresse.
- Un programmeur peut à
tout moment connaître cette adresse en utilisant le
caractère &. Ainsi
l'adresse d'une variable varx est
retournée par l'expression &varx.
Par exemple, la valeur retournée par l'expression &mTVA est l'adresse de la variable mTVA.
- Le programmeur peut aussi
déclarer des variables qui contiendront des adresses grâce
au caractère *. On appelle ces
variables des pointeurs. La syntaxe pour déclarer un pointeur
est type* nomVar; . Ainsi float*
adrNb;
déclare une variable de type pointeur de float donc une variable
qui contiendra une adresse de float.
suivant
plan