Passer un tableau a 2 dimensions a une fonction

Passer un tableau a 2 dimensions a une fonction

Après analyse de l'organisation d'un tableau à 2 dimensions en mémoire, j'ai trouver cette solution :

Code source

// Fonction qui permettra de lire et modifier le tableau
void rec_tab( bool *tableau, int& taille_1, int& taille_2 ) 
{
      for ( int i_t1 =  0; i_t1<taille_1; i_t1++ )
      {
            for ( int i_t2 = 0; i_t2 < taille_2; i_t2++ )
                  tab[(int unsigned)((i_t1*taille_2)+i_t1))] = true;
      }
}
int main ()
{
   int taille_dimension1, taille_dimension2;
   taille_dimension1 = 4;
   taille_dimension2 = 4;
// Déclaration du tableau bool (Rappelez vous qu'un bool est codé sur 1 octet)
     bool tableau [taille_dimension1][taille_dimension2] = {false};
     rec_tab ( tableau[0], taille_dimension1, taille_dimension2 );    
     return 0;
}

EXPLICATIONS

Si, par exemple, on a un tableau qui est déclaré de cette façon :

bool tableau [ 2 ][ 2 ];

Cela revient a faire :

bool tableau [ 4 ]; // Parce que 2 * 2  = 4

donc pour accéder par exemple à l'index :

tableau [ 1 ][ 0 ];

il suffit de faire :

tableau [ 2 ];

et pour :

tableau [ 1 ][ 1 ];

il faut faire :

tableau [ 2 + 1 ];

J'espère que vous m'avez compris lol

Ce document intitulé « Passer un tableau a 2 dimensions a une fonction » issu de CodeS SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Rejoignez-nous