Emmanuel :
Bref, d'après ce que j'ai pu constater en 15 ans de métier, l'usage des pointeurs de tableau est extrèmement rare...
Oui, c'est exact car les déclarations sont plus lourdes et moins parlantes pour la plupart des lecteurs du code. Remarque, il ne s'agit pas là de pointeur sur tableau, mais de pointeur sur élément du tableau.
Toutefois, la notation "allégée"
void affiche_map(int Map[][6]);
présente l'inconvénient de présenter la variable locale Map sous un type tableau ce qu'elle n'est pas (elle est d'un type pointeur). Ceci est une source d'erreurs pour ceux qui débutent (et quelquefois les autres) qui pensent, comme bonjour69, que, suivant le principe général de la gestion des paramètres du C , Map est un tableau local initialisé par copie lors de l'appel :
bonjour69 :
mais ceci ne correspond pas a un passage par valeur ??
j'ai l'impression qu'on recopie le tableau je dois me tromper non ?
De plus, ils ont de très mauvaises surprises dans l'utilisation de sizeof(Map) dans la fonction. Ceci oblige à créer un cas d'exception pour l'interprétation des paramètres dans le cas des tableaux .
Il faut passer l'adresse du tableau (&tab), ajouter une * : (*p_tab)[i] pour accéder à un élément, la taille est dans le type, donc la maintenance est aussi cauchemardesque...
Non, le reste est inchangé
1 2 3 4 5 6 7
| void affiche_map(int (*map)[6])
{
map[1][0] = ....
}
.....
int Map[5][6];
affiche_map(Map); |
Partager