Lecon 2
Lecon 2
Lecon 2
Rodrigue DJEUMEN
Un objet P de type pointeur sert à désigner des objets : les valeurs q'il prend
sont des références (adresses en mémoire) à ces objets.
Une variable dynamique (ou objet pointé ) est un objet crée pendant
l'exécution d'un programme. Elle a un type et une valeur variable mais n'a
pas de nom.
int x;
int t[N];
/* &x a pour valeur, l'adresse de x
&t[3] a pour valeur l'adresse du 4e élément de t
&t est interdit (t est une constante)
*/
Rodrigue DJEUMEN Listes simplement chaînées 2 / 14
Les pointeurs Déclarateur de pointeur et adressage indirect
Comme pour les tableaux, il n'existe pas de type pointeur. Une variable
pointeur est dénie par un déclarateur de pointeur.
Exemple :
int *p; //déclare une variable p qui pointe sur les objets
int *p[N]; //déclare un tableau de N pointeurs;
int (*p)[N]; //déclare un pointeur sur un tableau;
Le pointeur va servir à faire des indirections, et à obtenir des valeurs par
indirection ; considérons :
int x = 4, y = 5;
int *p = &x;
p est le pointeur d'adresse initialisé à l'adresse
de x
∗p est la variable pointée de p , qui correspond à x
*p = y; //affecte à x la valeur y
Rodrigue DJEUMEN Listes simplement chaînées 3 / 14
Les pointeurs Opérateurs de pointeurs
Les opérateurs
Un pointeur qui ne pointe sur rien a pour valeur NULL (constante dénie
dans stdio .h) ;
Les aectations entre les pointeurs ayant des objets pointés de même types
sont possibles.
Les opérations arithmétiques suivantes sont dénies sur les pointeurs :
addition : Correspond à un déplacement dans le type pointé
soustraction de deux pointeurs : fournit le nombre d'éléments situés entre deux pointeurs
comparaisons :
Pointeurs et tableaux
Pointeurs et structures
Une liste est une suite d'un nombre variable d'objets de même type, appelés
éléments de la liste.
On dira donc qu'une liste simplement chaînée est une liste dans laquelle chaque
élément, sauf le dernier, pointe vers son successeur.
Pour dénir une liste simplement chaînée, il faut :
Décrire le type de ses éléments, qui est généralement un enregistrement constitué
de deux parties, une partie information et un pointeur qui référence l'élément
suivant,
Dénir un pointeur de tête qui permette d'accéder au premier élément de la liste.
Exemple : Dénir une liste simplement chaînée de nombres entiers.
typedef struct Cellule{
int info;
struct Cellule *suivant;
}*ListeEntier;
Création en tête
Insertion en queue
Suppression en tête
Suppression en queue
Le bloc principal
int main(){
int tab[8] = {0,1,2,3,4,5,6,7};
tete = creerTete(tab,8,tete);
parcours(tete);printf("\n");
tete=insererQueue(100,tete);
parcours(tete);
return 0;
}
Exercices