TD 3 - Pointeurs
TD 3 - Pointeurs
TD 3 - Pointeurs
-| Pointeur |-
Exercice1 :
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;
}
A B C P1 P2
Init. 1 2 3 / /
P1=&A 1 2 3 &A /
P2=&C
*P1=(*P2)++
P1=P2
P2=&B
*P1-=*P2
++*P2
*P1*=*P2
A=++*P2**P1
P1=&A
*P2=*P1/=*P2
1
Exercice 2 :
char *pc;
int *pi,*pj,*pk;
float *pr;
pc = malloc(10);
pi = malloc(16);
pr = malloc(24);
pj = malloc(sizeof(int));
pk = malloc(3*sizeof(int));
free(pi);
free(pr);
Pointeurs et tableaux
Exercice 3 :
int A[] = {12, 23, 34, 45, 56, 67, 78, 89, 90};
int *P;
P = A;
a) *P+2
b) *(P+2)
c) &P+1
d) &A[4]-3
e) A+3
f) &A[7]-P
g) P+(*P-10)
h) *(P+*(P+8)-A[7])
Exercice 4 :
Ecrire un programme qui lit deux tableaux d'entiers A et B et leurs dimensions N et M au
clavier et qui ajoute les éléments de B à la fin de A. Utiliser deux pointeurs PA et PB pour
le transférer et afficher le tableau résultant A.
Pointeurs et chaines de caractères
2
Exercice 5 :
Ecrire un programme qui lit une chaîne de caractères CH au clavier et qui compte les
occurrences des lettres de l'alphabet en ne distinguant pas les majuscules et les
minuscules. Utiliser un tableau ABC de dimension 26 pour mémoriser le résultat et un
pointeur PCH pour parcourir la chaîne CH et un pointeur PABC pour parcourir ABC.
Afficher seulement le nombre des lettres qui apparaissent au mois une fois dans le texte.
Exemple:
Exercice 6 :
Exercice 7 :
On veut créer une bibliothèque de plusieurs livres, sous la forme d’un tableau de livres.
1) É crire une fonction init qui renvoie un tableau de n livres, qui alloue la mémoire
nécessaire et qui initialise les champs à 0 ou à la chaîne de caractères vide.
2) É crire une fonction qui permet la saisie d’un livre.
2) É crire une fonction qui affiche un tableau de n livres.
4) É crire une fonction qui fait l’échange des livres d’indice i et j dans le tableau de livres .