** tab vs tab[][]

** tab vs tab[][] - C++ - Programmation

Marsh Posté le 19-02-2013 à 22:29:18    

bongoure
 
Il me semble que dans une fonction, quand on fait :

Code :
  1. void tralala( unsigned tab[]);


 
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

Reply

Marsh Posté le 19-02-2013 à 22:29:18   

Reply

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à :D)

 

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 :jap:


Message édité par Terminapor le 20-02-2013 à 12:24:59

---------------
Perhaps you don't deserve to breathe
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed