0% ont trouvé ce document utile (0 vote)
23 vues13 pages

Chapitre 1: Pointeurs Et Allocation Dynamique

Le document explique les pointeurs en programmation, qui sont des variables contenant des adresses mémoire d'autres variables. Il aborde leur déclaration, déréférencement, initialisation et utilisation pour l'allocation dynamique de mémoire, ainsi que leur rôle dans la manipulation de tableaux. Les pointeurs permettent une gestion efficace des données et l'implémentation de structures de données avancées.

Transféré par

fedia
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
23 vues13 pages

Chapitre 1: Pointeurs Et Allocation Dynamique

Le document explique les pointeurs en programmation, qui sont des variables contenant des adresses mémoire d'autres variables. Il aborde leur déclaration, déréférencement, initialisation et utilisation pour l'allocation dynamique de mémoire, ainsi que leur rôle dans la manipulation de tableaux. Les pointeurs permettent une gestion efficace des données et l'implémentation de structures de données avancées.

Transféré par

fedia
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

CHAPITRE 1

POINTEURS ET ALLOCATION DYNAMIQUE

1
QU’EST CE QU’UN POINTEUR?

Un pointeur en programmation est une


variable qui contient l’adresse mémoire
d’une autre variable.

2
ILLUSTRATION D’UN POINTEUR

3
QUELS SONT LES T YPES DE POINTEURS?

A chaque type de variable correspond un type


de pointeur (Même si en réalité un pointeur
contiendra toujours une adresse sous forme
d’entier).

On peut même envisager des pointeurs sur


des fonctions…

4
POURQUOI UTILISER LES POINTEURS?

Il est souvent plus efficace en terme de temps


d’exécution et de consommation mémoire de
passer les données entre les différentes partie
(fonctions) d’un programme en utilisant les
pointeurs.

Les pointeurs permettent de faire le passage


par variable (ou par adresse) des paramètres
d’une fonction.

5
POURQUOI UTILISER LES POINTEURS?

Une fonction peut retourner plusieurs valeurs


en utilisant les pointeurs.

Les pointeurs permettent l’implémentation de


types de données avancés comme les listes
chaînées et les piles.

6
OPÉRATIONS SUR LES POINTEURS
DÉ C LA RATION D’UN P OI N T EUR

Pour déclarer un pointeur, il suffit d’écrire de


précéder son nom par *. Par exemple:

*nom_pointeur:type
*ptr1, *ptr2 : type

7
OPÉRATIONS SUR LES POINTEURS
RÉ F É RE NCEM ENT

Le référencement ou affectation d’une adresse


à un pointeur peut se faire de plusieurs façons:

nom_pointeur <- &variable (l’opérateur & se


lit adresse de)
nom_pointeur1 <- nom_pointeur2
nom_pointeur <- NULL
Allocation dynamique

8
OPÉRATIONS SUR LES POINTEURS
D É R É F É R ENC EMENT

Le déréférencement permet l’accès, à partir


d’un pointeur, à la valeur de la variable sur
laquelle il pointe.

Le déréférencement se fait principalement à


travers l’utilisation de l’opérateur *. Par
exemple:
val <- *nom_pointeur

9
OPÉRATIONS SUR LES POINTEURS
I N C RÉ MENTATI ON DE P OI N T EURS

Attention:
Incrémenter un pointeur par une valeur « i »
revient à incrémenter sa valeur (qui est
l’adresse d’une autre variable) par i fois la
taille du type de la variable sur laquelle il
pointe.

10
OPÉRATIONS SUR LES POINTEURS
I N I T IALISATION DE S P OI N TE URS

 Lorsqu’un pointeur est déclaré pour la première


fois, il contiendra une valeur entière et pointera
très probablement vers une zone mémoire qui
n’appartient pas à votre programme.

 Il est donc impératif d’initialiser un pointeur


avant de l’utiliser.

 A défaut d’initialisation en temps de compilation,


il vaut mieux initialiser le pointeur à NULL (nulle
part) et lui affecter une adresse mémoire
dynamiquement en temps d’exécution.

11
ALLOCATION DYNAMIQUE

Pour allouer une variable dynamiquement en temps


d’exécution il faut:
 Déclarer un pointeur qui recevra l’adresse de cette
variable:
*ptr : type
 Réserver dynamiquement une zone mémoire et
affecter son adresse au pointeur en question:
ptr <- allouer(taille en octet)
RQ. la fonction taille(TYPE) retourne le nombre d’octets
nécessaires à l’allocation mémoire d’une variable de type
TYPE.
 Contrairement à l’allocation statique il faut penser à
libérer l’espace mémoire alloué une fois qu’on en a
plus besoin:
libérer(ptr) 12
POINTEURS ET TABLEAUX

Les tableaux peuvent être manipulés en


utilisant les pointeurs. Soit tab un tableau de
type, on aura dans ce cas:
tab est un pointeur sur son premier élément.
taille(tab) retourne la taille de tout le tableau.
tab <- allouer(taille) est valide pour toutes les
tailles multiple de la taille de type.
tab <- réallouer(taille) permet de modifier
dynamiquement la taille du tableau en plus ou
en moins.
13

Vous aimerez peut-être aussi