acidjackproject
Messages postés9Date d'inscriptionsamedi 18 novembre 2000StatutMembreDernière intervention 5 avril 2008
-
20 janv. 2008 à 16:36
soso62fr
Messages postés59Date d'inscriptionmardi 28 novembre 2006StatutMembreDernière intervention28 avril 2010
-
6 déc. 2008 à 11:54
Bonjour, j'aimerai pas un tableau à 2 dimension en paramètre sans pointeurs. Quand je le fais (comme suit), il m'affiche "error:array type has incomplete element type". Voila un extrait de mon code.
Merci d'avance
void tabu(int tab[][]);
main()
{
int tab[4][2];
...
//j'appelle la fonction
tabu(&tab[0][0]);
...
}
void tabu(int tab[][]) // il me met l'erreur ici
{
...
}
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 20 janv. 2008 à 16:54
Essais
void tabu(int tab[4][2])
Le problème c'est que tu limiteras ta fonction à traiter uniquement des tableaux de cette taille.
Pour traiter des tableaux de taille différentes, il faut passer par les pointeurs.
nickydaquick
Messages postés416Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention19 décembre 20133 20 janv. 2008 à 20:24
Salut
Pour passer un tableau a dimension sans passer par la notation des pointeurs :
soit un tableau int TAB[a][b];
et la fonction const int function qui doit prendre TAB en parametre; tu declares alors ( la signature de la fonction comme suit):
const int function(int TAB[][b]);
il faut donc que tu precises la 2eme dimension.
comme dit SAKingdom , ca te limite dans tes variables que tu pourrais passer en argument (a cause du buffer-overflow).
si tu utilises les pointeurs il y 2 autres notations possibles
const int function(int* TAB[]);
et
const int function(int** TAB);
je suis heureux de faire partie d'une grande famille ...!
soso62fr
Messages postés59Date d'inscriptionmardi 28 novembre 2006StatutMembreDernière intervention28 avril 20108 6 déc. 2008 à 11:54
J'ai eu le meme probleme que toi moi aussi j'arrive pas a passer un tableau a 2 dimensions mais j'ai annalysé l'organisation d'un tableau a 2 dimensions en memoire et j'ai trouver ça comme soluce (tu comprendra avec ce ptit code source) :
void rec_tab( bool* tableau, int& taille_1, int& taille_2 ) // Fonction qui permetra de lire et modifier le tableau
{
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;
}
/* EXPLICATIONS
Si par exemple on a un tableau qui est declarer de cette façon :
bool tableau [ 2 ] [ 2 ]; Cela revient a faire :
bool tableau [ 4 ]; // Parce que 2 * 2 = 4
donc pour acceder par exemple a l'index :
tableau [ 1 ][ 0 ]; suffit de faire :
tableau [ 2 ]; et pour :
tableau [ 1 ][ 1 ]; faut faire :
tableau [ 2 + 1 ]; }
int main ()
{
int taille_dimension1, taille_dimension2;
taille_dimension1 = 4;
taille_dimension2 = 4;
bool tableau [taille_dimension1][taille_dimension2] = {false}; // Declaration du tableau bool ( Rappelez vous qu'un bool est codé sur 1 octet )