1 2 3 4 5 6 7 8 9 10 11 12 13
| int a[5]; // a est un tableau et a <=> &a[0] et &a n'a pas de sens il est vu comme équivalent à a
int **b; // b doit pointer sur un pointeur
b = &a; // FAUX on s'attend à recevoir l'adresse d'un pointeur, or &a est un pointeur
int *c = a; // ok c pointe sur le début de a
b = &c; // ok b pointe sur c qui pointe sur le début de a
foo( b ); // ok, foo() attend un pointeur de pointeur, il reçoit l'adresse de c
void foo( int *tab[] ) {
printf("%p\n", tab ); // tab est bien l'adresse de c
printf("%p\n", *tab ); // *tab est le contenu de c, c'est un pointeur correspondant à a
printf("%d\n",(*tab)[0]); // (*tab)[0] est le 1er pointé par c, donc a[0]
printf("%d\n", **tab ); // est aussi a[0]
} |