© Éditions Eyrolles
127
chapitre n° 7
Les tableaux et les pointeurs
4 Notion de pointeur – Les opérateurs * et &
4.1 Introduction
Nous avons déjà été amené à utiliser l’opérateur & pour désigner l’adresse d’une lvalue. D’une
manière générale, le langage C permet de manipuler des adresses par l’intermédiaire de
variables nommées pointeurs.
En guise d’introduction à cette nouvelle notion, considérons les instructions :
int * ad ;
int n ;
n = 20 ;
ad = &n ;
*ad = 30 ;
La première réserve une variable nommée ad comme étant un pointeur sur des entiers. Nous
verrons que * est un opérateur qui désigne le contenu de l’adresse qui le suit. Ainsi, à titre
mnémonique, on peut dire que cette déclaration signifie que *ad, c’est-à-dire l’objet d’adresse
ad, est de type int ; ce qui signifie bien que ad est l’adresse d’un entier.
L’instruction :
ad = &n ;
affecte à la variable ad la valeur de l’expression &n. L’opérateur & (que nous avons déjà utilisé
avec scanf) est un opérateur unaire qui fournit comme résultat l’adresse de son opérande.
Ainsi, cette instruction place dans la variable ad l’adresse de la variable n. Après son exécution,
on peut schématiser ainsi la situation :
|
|
|
20
|
|_________| --------> |________|
ad
n
L’instruction suivante :
*ad = 30 ;
signifie : affecter à la lvalue *ad la valeur 30. Or *ad représente l’entier ayant pour adresse
ad (notez bien que nous disons l’entier et pas simplement la valeur car, ne l’oubliez pas, ad est
un pointeur sur des entiers). Après exécution de cette instruction, la situation est la suivante :
|
|
|
30
|
|_________| --------> |________|
ad
n
Delannoy Livre.book Page 127 Mercredi, 6. mai 2009 4:26 16
Précédent

- 140/281

Suivant