Telechargé par Adem Lasmer

td-ponteurs

publicité
TD : Les pointeurs
Exercice 1 :
Soit le programme suivant :
main ( )
{ int A = 1 ;
int B = 2 ;
int C = 3 ;
int *p1, *p2 ;
p1= &A ;
p2 = &C ;
*p1 = (*p2) ++ ;
p1 = p2 ;
p2 = &B ;
*p1 - = *p2 ;
++ *p2 ;
*p1 * = *p2 ;
A = ++ *p2 * *p1 ;
p1 = &A ;
*p2 = * p1/ = *p2 ;
return 0 ;
}
Complétez le tableau suivant pour chaque instruction du programme ci-dessus :
A
B
C
P1
P2
Initialisation
1
2
3
/
/
p1 = &A
1
2
3
&A
/
p2 = &C
*p1 = (*p2) ++
p1 = p2 ;
p2 = &B
© BEN HAMIDA Sana
1
*p1 - = *p2
++ *p2
*p1 * = *p2
A = ++ *p2 * *p1
p1 = &A
*p2 = * p1/ = *p2
Exercice 2 :
Soient les déclarations suivantes :
int A[ ] = {12, 23, 34, 45, 56, 67, 78, 89, 90} ;
int * P ;
P=A;
Quels sont les résultats fournis par ces expressions :

*P + 2

*(P+2)

&P + 1

&A [4] – 3

A+3

&A [7] – P

P + (*P – 10)

*(P+ * (P + 8) – A [7] )
Exercice 3 :
Écrire une fonction qui prend un tableau d'entiers, un entier n et un double pointeur vers un
tableau d'entiers. La fonction doit allouer dynamiquement un nouveau tableau d'entiers de taille
n, le remplir avec les n premiers éléments du tableau d'entiers d'entrée, et stocker l'adresse de
ce nouveau tableau dans le double pointeur.
Exercice 4 :
Implémenter une pile avec deux pointeurs précédant et suivant.
© BEN HAMIDA Sana
2
Téléchargement