Académique Documents
Professionnel Documents
Culture Documents
Partie 4
POINTEURS
Pointeur
Exemple:
contenu
int *pA , i, j;
int **ppA;
A010 j
i=10; A00C 10 i
A008 A00C pA
pA = &i;
A004 A00C ppA
ppA = (int**)pA; A000
int i, *pi;
pi =&i;
i = 1;
*pi = 2;
…
Lorsqu’on ajoute 1 à un pointeur,
cela augmente la valeur de l’adresse
A010 A000 T
qu’il contient non pas de 1, mais de
la taille d’un élément pointé.
Intérêt :
Si un pointeur pointe A012 T[3]
au début d’un tableau. A008 T[2]
A004 T[1]
A000 T[0]
Ajouter 1 fait pointer
…
sur l’élément suivant.
Khalid SBAI – Cours D’Informatique
Ecole supérieure de Technologie
Département de Génie Electrique
11/09/2021
III. POINTEURS (suite)
Exemple
…
int T[4] = {0, 10, 20, 30}; A010 A000 T
int* t;
t = &T[0];
printf("%d\n", *t);
t = t + 1;
printf("%d\n", *t); A012 T[3]
t = t + 1;
A008 T[2]
printf("%d\n", *t);
A004 T[1]
t = t + 1;
A000 T[0]
printf("%d\n", *t);
…
Khalid SBAI – Cours D’Informatique
Ecole supérieure de Technologie
Département de Génie Electrique
11/09/2021
III. POINTEURS (suite)
Somme d’un pointeur et d’un entier
Lorsqu’on ajoute "n" à un pointeur, cela augmente la valeur de
l’adresse de n fois la taille de l’élément pointé.
T+i &T[i]
Pointeur tableau
*(T+i) T[i]
Données statiques
On connaît à l'avance (lors de l'écriture du programme) la
taille des données. La mémoire peut être réservée à l'avance,
avant l'exécution du programme
Données dynamiques
On ne connaît la taille des données qu'à l'exécution du
programme la réservation de la mémoire se fait au cours
de l'exécution du programme
La commande exit
S'il n'y a pas assez de mémoire pour effectuer une action avec
succès:
il est conseillé d'interrompre l'exécution du
programme et de renvoyer une valeur différente
de zéro comme code d'erreur du programme
Appel
Commande: exit( 1 )
de la bibliothèque <stdlib.h>
free(nom_pointeur);
p = (int )malloc(sizeof(int));
P =4;
205 4
int ** A;
A = (int **)malloc(15*sizeof(int *));
for (int i=0; i<15; i++)
A[i] =(int *) malloc(20*sizeof(int));
FIN