Académique Documents
Professionnel Documents
Culture Documents
TD2
Exercice1 :
Quelle est la différence entre une variable statique et une variable dynamique ?
Exercice2 :
Exercice 3 :
a) Écrire un programme qui permet de créer et de lire deux tableaux A et B « leurs taille respective : N et M» en utilisant
seulement des pointeurs.
b) Ajouter l’ensemble d’instructions qui permet de fusionner ces 2 tableaux en un autre T (sa taille = N+M) et de supprimer A
et B.
Exercice4 :
La fonction sizeof(TYPE) en langage C permet de calculer l’espace mémoire nécessaire pour un type donné (simple ou structuré).
a) Expliquer le principe de calcule utilisé par cette fonction afin de calculer la taille d’un type structuré
b) Calculer la taille des types suivants :
M. bada 1
TD2 : les pointeurs Université de Batna 2 Algorithmique et structures de données
Exo1 :
La différence :
Var Statique Var dynamique
Temps d’occupation Réservé jusqu'à la fin du pgm Pendant un temps fini (selon le besoin)
Exo2 : int A[] = {12, 23, 34, 45, 56, 67, 78, 89, 90};
*P+2 ! 12 +2 = 14
*(P+2) ! *(#100 +2) = *(#108) = A[2] = 34
P+1 ! (#100+1) = (#104) = &A[1]
&A[4]-3 ! & A[1] = #104
A+3 ! &A[3] = #112
&A[7]-P ! (P+7)-P = 7 éléments
*P+(*P-10) ! 12 + (12-10) = 12+ 2 = 14
*(P+*(P+8)-A[7]) ! * (#100 + A[8] –A[7]) = *(#100 +90-89) = *(#100+1) = A[1]= 23
Exo3 :
Q1
main()
{
int N,M;
int* A;
int* B;
/*allocationmémoire*/
A=(int*)malloc(N*sizeof(int)); // réserver un espace memoire : N * 4 Octets
B=(int*)malloc(M*sizeof(int));
for(i=0;i<N;i++){
scanf("%d", (A+i)); //&A[i] " (A+i) : dans scanf on met tjr l’@ de la variable
}
for(i=0;i<taille2;i++){
scanf("%d", (B+i) );
}
}
M. bada 2
TD2 : les pointeurs Université de Batna 2 Algorithmique et structures de données
Q2. Sol1 :
/*fusiondesdeuxtableaux*/
int* T;
int* debut;
T=(int*)malloc((N+M)*sizeof(int));
debut=T;
if(i<N)
{
*T=*A;
T++;
A++;
}
else
{
*T=*B;
T++;
B++;
}
T=debut;
Sol2
/*fusiondesdeuxtableaux*/
int* T;
int* debut;
T=(int*)malloc((N+M)*sizeof(int));
*(T+i) = *(A+i) ;
}
*(T+i) = *(B+j) ;
}
free (A) ;
free (B) ;
M. bada 3
TD2 : les pointeurs Université de Batna 2 Algorithmique et structures de données
Q3
Exo4 :
1 . on utilise le principe de rembourrage (arranger les données du même type d’une manière contiguë de telle sorte on divise
la mémoire en un ensemble de blocs / taille = le type le plus grand ):
type1 : le type le plus grand dans cette structure est INT ! diviser la mémoire en bloc de 4 Octets
les 1er 4 octets (1er bloc) c’est pour X , le 2eme bloc (4 octets ) c’est pour c1, c2 et c3.
! gaspillage de 1 octet
type2 : le 1er bloc : 8 octets pour Y , le 2eme bloc : 4 octets pour X et 4 vide . ! total = 16 octets
type3 : 24 octets
type4 : 32 octets
M. bada 4