Sunteți pe pagina 1din 5

ALGORITMIQUE

AVANCE LANGAGE C

TCSRIT LICENCE 1

CHAPITRE 1 : LES POINTEURS


1.1 DEFINITION
Prenons par exemple une variable numrique N de type ENTIER dadresse en mmoire centrale
19432 et contenant le nombre entier 235. Nous appelons variable de type POINTEUR vers
cette variable N, une variable dynamique contenant ladresse de la variable N.
Nous dirons aussi que pointe vers la variable N et que le contenu de est 235.
Linformation N peut tre simple ou structure.

1.2 DECLARATION DUNE VARIABLE DYNAMIQUE


Une variable dynamique se dclare comme une variable classique mais le type est prcd du
symbole , elle est type (le type de la donne vers laquelle elle pointe), mais sa gestion est
entirement la charge du programmeur travers les procdures dallocation et de dsallocation
mmoire respectivement appeles new et dispose.
1.3 UTILISATION PRATIQUE DES VARIABLES DYNAMIQUES
Le Contenu dune variable dynamique dj alloue : il est not
Dans lexemple prcdent :
vaut 235 (contenu de la variable dynamique)
vaut 19432 (adresse de la variable dynamique)

Dtaillons pas pas un programme dutilisation de pointeur


Soit lexemple prcdent :

Voici le programme analyser :

Algorithme VariableDynamique;
variable x : Entier;
Debut
new(x);
235;
Ecrire("la
variable dadresse x vaut: ",
Le programme de droite
dispose(x);
crit sur lcran le contenu
Fin
de la variable (contenu
de la cellule pointe par x)

);

Dclaration dune variable dynamique de type entier :


Soit linstruction :
variable : ENTIER ;

Rsultat produit :

est cre (mais x ne pointe vers rien


encore) x vaut nil
Allocation dune variable dynamique x dj dclare :
Soit linstruction :
new ( ) ;

Rsultat produit :

une cellule mmoire de type integer est cre,


pointe vers la cellule cre.
( vaut la valeur de ladresse de la cellule)
Affectation du contenu dune variable dynamique
Soit linstruction :
235 ;

dj dclare :

Rsultat produit :

La cellule mmoire pointe par x contient


235.
Dsallocation dune variable dynamique

dj alloue :

Soit linstruction :
dispose ( ) ;

Rsultat produit :

La cellule mmoire qui contenait 235


nexiste plus, elle est rendue au systme (ont
dit quelle a t dsalloue)

Attention
Ne pas confondre leffacement de ladresse dune variable dynamique et sa dsallocation.
Effacement de ladresse dune variable dynamique : mot clef NIL
Dsallocation dune variable dynamique : procdure DISPOSE()
Soit lexemple prcdent :

Rsultat produit par x nil :

nexiste plus (x ne pointe vers plus rien)


x vaut nil
La cellule mmoire qui contient 235 existe toujours,
mais nest plus accessible !

Rsultat produit par dispose ( x ) :

nexiste plus (x ne pointe vers plus rien)


x vaut nil
La cellule mmoire qui contenait 235 nexiste plus !

Cest en particulier cette dernire remarque qui pose le plus de soucis de maintenance aux
dveloppeurs utilisant les pointeurs (par ex : problme de la rfrence folle).
Affectation de variables dynamiques entre elles :
On suppose que deux variables dynamiques x et y de type ENTIER ont t dclares et
cres par la procdure new, nous figurons ci-aprs lincidence de laffectation x y sur ces
variables :
Soient les instructions :
235 ;
1098 ;

Rsultat produit :

Soient laffectation :
xy;
x et y pointent vers la mme cellule
mmoire

Rsultat produit :

S-ar putea să vă placă și