Exercice 01 :
1) ---
(&a) : a, *tab : tab[0], *(tab + 0) : tab[0], (*tab) + 1 : tab[0] + 1, &(tab[0]) : tab, &(tab[i]) : (tab + i), ++tab[i] : ++(*(tab + i))
2)----
1. Quelle sera la différence en octets entre les deux adresses tab et p ?
Correction. sizeof(char) = 1 octet en C (standard, dépend pas de l’archi)
2. Même question si tab et p sont déclarés pointer sur des int ?
Correction. sizeof(int) = 4 octet sur PC 32 bits, Leur dire que l’on peut faire la diffe-
rence entre pointeurs. Pas dit en cours. L’exo s’y prete bien.
3)
Exercice 2 :
/* représenter l’occupation mémoire */
---------------------------------------------------------------------------
--------------------------------------------------------------------
Probleme :
1)
1. Écrire le programme en utilisant l’opérateur [].
Correction.
#include <stdlib.h> /* EXIT_SUCCESS */
#include <stdio.h> /* printf */
#define TAILLE 4 /* taille du tableau utilisateur */
/* declaration de fonctions utilisateurs */
int main()
{
int tab[TAILLE] = {-1,3,3,2}; /* tableau a initialiser par l’utilisateur */
int elt; /* l’elt a chercher */
int nb_occ = 0; /* le nombre d’occurrences de elt dans tab */
int i; /* var. de boucle */
/* saisie de l’entier à chercher */
printf("Compte le nombre d’occurrences de quel entier ?\n");
scanf("%d",&elt);
/* compte le nombre d’occurrences */
for(i = 0;i < TAILLE;i = i + 1) /* chaque case du tableau */
{
if(tab[i] == elt) /* trouvé */
{
/* un de plus */
nb_occ = nb_occ + 1;
}
}
/* i >= TAILLE */
/* affiche résultats */
printf("Il y a %d occurrences de %d dans le tableau.\n",nb_occ,elt);
return EXIT_SUCCESS;
}
2)
#include <stdlib.h> /* EXIT_SUCCESS */
2 #include <stdio.h> /* printf */
3
4 #define TAILLE 4 /* taille du tableau utilisateur */
5
6 int main()
7 {
8 int tab[TAILLE] = {-1,3,3,2}; /* tableau a initialiser par l’utilisateur *
9 int elt; /* l’elt a chercher */
10 int nb_occ = 0; /* le nombre d’occurrences de elt dans tab */
11 int *p_int; /* var. de boucle */
12
13 /* représentation de l’occupation mémoire */
14
15 /* saisie de l’entier à chercher */
16 printf("Compte le nombre d’occurrences de quel entier ?\n");
17 scanf("%d",&elt);
18
19 /* compte le nombre d’occurrences */
20 for(p_int = tab;p_int < (tab + TAILLE);p_int = p_int + 1) /* chaque case d
21 {
22 if(*p_int == elt) /* trouvé */
23 {
24 /* un de plus */
25 nb_occ = nb_occ + 1;
26 }
27 }
28 /* p_int >= tab + TAILLE */
29
30 /* affiche résultats */
31 printf("Il y a %d occurrences de %d dans le tableau.\n",nb_occ,elt);
32
33 return EXIT_SUCCESS;
34 }
3)----------