1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| #include <stdio.h>
#include <stdlib.h>
#define TAB_NB 3
void fois_5_stat (int tab[],int nb)
{
int i;
printf("argument fonction fois_5_stat : %p\n",tab);
for (i=0;i<nb;i++)
tab[i] = 5 * tab[i];
}
void fois_7_dyn (int *tab,int nb)
{
int i;
printf("argument fonction fois_7_dyn : %p\n",tab);
for (i=0;i<nb;i++)
tab[i] = 7 * tab[i];
}
int main(void)
{
int tab_stat[TAB_NB];
int *tab_dyn = malloc(TAB_NB*sizeof(int));
int single_int;
int i;
printf("quid des adresses ?\n");
printf("tab_stat : %p\n",tab_stat);
printf("&(tab_stat[0]) : %p\n",&(tab_stat[0]));
printf("tab_dyn : %p\n",tab_dyn);
printf("single_int : %p\n",&single_int);
printf("\ntab_stat (%p) mis en argument\n",tab_stat);
/* remplissage manuel avec 1 */
printf("au depart ... ");
for (i=0;i<TAB_NB;i++) {
tab_stat[i] = 1;
printf("%d%c",tab_stat[i],(i==TAB_NB-1)?'\n':' ');
}
/* tableau statique dans fonction avec "tableau statique" */
fois_5_stat(tab_stat,TAB_NB);
/* ca donne quoi ? */
printf("au retour ... ");
for (i=0;i<TAB_NB;i++)
printf("%d%c",tab_stat[i],(i==TAB_NB-1)?'\n':' ');
/* tableau statique dans fonction avec "tableau dynamique" */
fois_7_dyn(tab_stat,TAB_NB);
/* ca donne quoi ? aie ??? */
printf("au retour ... ");
for (i=0;i<TAB_NB;i++)
printf("%d%c",tab_stat[i],(i==TAB_NB-1)?'\n':' ');
/* traitement analogue avec le tableau alloue dynamiquement */
printf("\ntab_dyn (%p) mis en argument\n",tab_dyn);
printf("au depart ... ");
for (i=0;i<TAB_NB;i++) {
tab_dyn[i] = 2;
printf("%d%c",tab_dyn[i],(i==TAB_NB-1)?'\n':' ');
}
fois_5_stat(tab_dyn,TAB_NB);
printf("au retour ... ");
for (i=0;i<TAB_NB;i++)
printf("%d%c",tab_dyn[i],(i==TAB_NB-1)?'\n':' ');
fois_7_dyn(tab_dyn,TAB_NB);
printf("au retour ... ");
for (i=0;i<TAB_NB;i++)
printf("%d%c",tab_dyn[i],(i==TAB_NB-1)?'\n':' ');
/* traitement analogue sur l'entier */
printf("\nadresse single_int (%p) mis en argument\n",&single_int);
single_int = 3;
printf("au depart ... %d\n",single_int);
fois_5_stat(&single_int,1);
printf("au retour ... %d\n",single_int);
fois_7_dyn(&single_int,1);
printf("au retour ... %d\n",single_int);
return 0;
} |
Partager