Pointeurs, adresses: exercices (1)
Dans le programme suivant tab est à l'adresse 3000 (base 10) et toutes les variables sont consécutives en mémoire:
int main (void)
{
float tab[4] = {10.5, 11,12.5,13.8};

char* s[2] = {"Bon", "Soir"};


float* p1 = tab;

printf("%f\n", *(tab+1));
printf("%p\n", tab+2);
printf("%c\n", *(s[0]));
printf("%s\n", *(s+1));
printf("%p\n", p1+1);
printf("%f\n", *(p1+1));
*(p1+1) = 67.4;
printf("%f\n", tab[1]);

printf("%s\n", s[1]);
s[1] = *s;

printf("%s\n", *s);
printf("%s \n",*(s+1));

return(0);
}



adresse de tab: 3000    
représentation en mémoire: une zone de 16 octets
adresse de s:  3016                       
représentation en mémoire:
un tableau de deux pointeurs qui pointent vers deux zones contenant "Bon" et "Soir"
repésentation en mémoire: 4 octets initialisés avec 3000.

affichage: 11.00
affichage: 3008
affichage: B
affichage: Soir
affichage: 3004
affichage: 11.00
zone affectée: Le second élément de tab
affichage: 67.40

affichage: Soir
zone affectée: le second pointeur du tableau s pointe vers la même zone que le premier élément (Bon)

affichage: Bon
affichage: Bon
suivant                    plan