** tab vs tab[][] - C++ - Programmation
Marsh Posté le 20-02-2013 à 12:18:04
Alors, si je ne me trompe pas, les tableaux 2D sont un peu particulier lorsqu'ils sont déclarés comme ça :
type T [x][y];
C'est pas un "pointeur sur pointeur" pour faire ce tableau, AMHA il est 'converti' en tableau 1D avec la formule pour accéder aux cases :
T[i][j] -> *(T + i* x + j);
Pareil pour du 3D :
T[i][j][k] = *( T + j*x + i*y + k); (pas sûr de la formule, mais l'idée est là )
Alors qu'un tableau déclaré en Type ** T, on y accède comme ça :
T[i][j] -> *(*(T+i)+j); (à une vache près la formule, en gros ça équivaut à un tableau de tableaux.)
Mais il est possible que ça dépende carrément du compilateur utilisé.
edit : Donc en gros, quand tu fais passer un Tab[x][y] dans une func, il faut préciser la largeur au moins
Marsh Posté le 19-02-2013 à 22:29:18
bongoure
Il me semble que dans une fonction, quand on fait :
c'est en fait converti en *tab.
Alors pourquoi quand je fais ça, ça ne me marche pas :
[cpp]
void trololo(char ** tab ) { }
int tab[10][10];
trololo( tab ); // -> boom ???
[/bpp]
thx