Je n'arrive pas à comprendre la différence entre les différentes déclarations sur un tableau ou un tableau 2d.
par exemple:se référant à des tableaux comme des pointeurs
void swap(char **a, char **b) {
char *t = *a;
*a = *b;
*b = t;
}
int main(int argc, char **argv) {
char a[] = "asher";
char b[] = "saban";
swap(&a,&b);
}
ce code ne compile pas, il délivre en sortie:
warning: passing argument 1 of ‘swap’ from incompatible pointer type
test.c:10: note: expected ‘char **’ but argument is of type ‘char (*)[6]’
n'est pas a
un pointeur vers la première cellule de tableau de caractères et &a
est un pointeur vers pointeur?
est un autre exemple:
char (*c)[3];
char (*d)[3];
swap(c,d);
ne compile pas non plus .. est char (*c)[3]
même comme un pointeur vers char a[] = "ab"
?
Toutefois, cela ne compilez:
char *c[3];
char *d[3];
swap(c,d);
donc je suis totalement confus. Pourquoi y a-t-il une différence? Y a-t-il des règles à ce sujet pour m'empêcher de me tromper tout le temps?
Merci à tous
C'est la deuxième fois que nous avons vu ce code en trois jours: [Permutation de deux pointeurs de chaîne] (http://stackoverflow.com/questions/3816233/). Si, par hasard, c'est parce que vous partagez une classe avec la basse, vous voudrez peut-être vous réunir avec lui pour une aide mutuelle ... – dmckee