The_KniGhT_972
Messages postés2Date d'inscriptionmercredi 5 octobre 2005StatutMembreDernière intervention19 mars 2008
-
19 mars 2008 à 11:36
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 2009
-
19 mars 2008 à 15:40
Bonjour,
dans mon code C, j'ai un tableau de int a deux dimensions noté comme suit
int tab[nbs][dmax];
et une fonction qui prend en paramètre un tableau a deux dimenstions comme suit
int fonction(int* class,int** tab)
j'ai mis avec des * et non des [] car le compilateur ne prenait pas
int fonction(int class[],int tab[][])
pouvez vous m'aider svp a comprendre pouquoir je ne peux pas faire
int tab[nbs][dmax];
puis l'utiliser en paramètre de cette fonction.
int fonction(int* class,int** tab)
j'ai cette erreur : attention : passing argument 2 of 'fonction' from incompatible pointer type
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 19 mars 2008 à 12:21
Salut,
Lorsque tu ecris int tab[][], tu es obligé d'indiquer la taille de la première dimension, soit int tab[10][].
Ou alors il faut utiliser comme tu l'as mis un int **tab (qui est strictement la même chose qu'un int *tab[]).
cs_jfrancois
Messages postés482Date d'inscriptionvendredi 26 août 2005StatutMembreDernière intervention 5 décembre 20092 19 mars 2008 à 12:23
Bonjour,
Cette erreur est normale et compréhensible.
Un tableau à 2 (ou plus) dimensions est juste une vue de l'esprit. Dans la réalité concrète de la mémoire de l'ordinateur tout est séquentiel (à la queue leu-leu !). Quand on crée un tableau à 2 dimensions et que l'on accède à l'élément [i][j] en fait le programme va chercher l'élément (i * longueur_d'une_ligne) + j. Ce qui veut dire que si l'on passe un tableau à 2 dimensions en paramètre d'une fonction il faut qu'elle connaisse la longueur d'une ligne du tableau pour pouvoir calculer l'emplacement d'une valeur.
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 19 mars 2008 à 12:29
Salut
En tout cas, j'espere que dans ton code les dimensions du tableau ne sont pas variables.
jFrancois l'a judicieusement mis dans son code:
const int nbs = 10;
const int dmax = 20;
Sinon pense il faut faire une allocation dynamique
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 19 mars 2008 à 15:40
const int nbs = 10;
const int dmax = 20;
int tab[nbs][dmax];
Déclaration incorrect avec un compilateur C non C99 (comme l'est VC++).
Un tableau DOIT avoir comme taille une VALEUR constant et non une VARIABLE constante.
#define NBS 10
#define DMAX 20
int tab[
NBS
][
DMAX
];
Même chose pour
for (int i =0 ; i<nbs ; ++i)
Impossible de déclarer une variable à même le for en C non C99.