Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1247 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  passage d'un tableau en argument

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

passage d'un tableau en argument

n°1543151
guynemer
Trust rather than monogamy
Posté le 15-04-2007 à 23:51:32  profilanswer
 

J'ai deux ti soucis avec des tableaux pour les passer en arg.
 
1er pb :
 
J'ai un tableau style unsigned char tab[8][8] en global  (déclaré avec extern "c" dans une projet en C++ ...)
 
Si j'y accède directement dans une des méthodes de ma classe , ca marche. Par contre si je veux le passer en argument comme ça :
 
call_methode((unsigned char **)tab)
 
 
 
void     classe::call_methode(unsigned char ** tab)
{
 
... // ici ca plante des que j'essaie d'utiliser tab, et je vois pas pk ...
}
 
J'ai essayé de faire un truc genre
 
void     classe::call_methode(unsigned char ** tab)
{
 
unsigned char *tmp[8][8]
 
*tmp = tab;
 
....
}
 
Mais pareil ça marche pas :/
 
 
Vous vous demandez peut etre pk je m'emmerde si la var est en globale ... mais c 'est jsut pr un test, apres la variable viendra a changer et ne sera pas en global.
Là j'ai mis global juste pr tester rapidos.
 
 
 
2ème pb :  
 
J'ai demandé à plusieurs personnes et personne n'a réussi a me dire comment faire pr passer en arg a une fonction un tab dont les dimensions sont définies a la compil
 
 
par exempl
 
int tab[8][8];
 
 
Si je peux ensuite ballader cette variable à une fonction, si je fais fonction (int **tab) ca marche pas, fonction(int tab[][]) ca marche pas non plus, en mettant les dimensions comme ça fonction(int tab[8][8]), ca marche pas non plus ...
 
Voilà si qqu'un peut m'aider  :sarcastic:

mood
Publicité
Posté le 15-04-2007 à 23:51:32  profilanswer
 

n°1543186
tbp
Posté le 16-04-2007 à 09:22:10  profilanswer
 

Confusion: unsigned char ** est un pointeur sur un pointeur de unsigned char.  Un tableau comme "unsigned char tab[8][8]" n'est pas un tableau de pointeurs sur des unsigned char[8], mais un tableau qui peut être abaissé à "unsigned char[8*8]".
 
Il n'y pas grand interet à trimbaler les dimensions d'un tableau dans le type, parce que in fine ils sont tous abaissables. Révisez vos fondamentaux C & C++, jetez un oeil à std::vector et reformulez votre problème.

n°1543428
guynemer
Trust rather than monogamy
Posté le 16-04-2007 à 17:19:32  profilanswer
 

C'est vrai que je peux utilsire les vectors, mais bon ça répond pas à ma question.
 
Clairement si je veux passer en arg a une fonction un [8][8], comment est ce que je dois le déclarer dans le prototypage de la fonction recevante ?

n°1543431
did-54
Posté le 16-04-2007 à 17:34:12  profilanswer
 

c'est pas plutot ce que tu fais dans call_methode qui merde ?

n°1543491
guynemer
Trust rather than monogamy
Posté le 16-04-2007 à 19:55:40  profilanswer
 

bah non , puisque si je change juste le **, et que j'attaque directement la variable globale ca marche nickel ...

n°1544166
tbp
Posté le 18-04-2007 à 11:17:57  profilanswer
 

guynemer a écrit :

C'est vrai que je peux utilsire les vectors, mais bon ça répond pas à ma question.
 
Clairement si je veux passer en arg a une fonction un [8][8], comment est ce que je dois le déclarer dans le prototypage de la fonction recevante ?


Visiblement vous ne voulez ni regarder comment std::vector est fichu ni réviser les règles héritées du C quant à aux pointeurs/tableaux.
 
Alors, au risque de me répeter, il sera de toute façon tjs légal d'écrire

Code :
  1. unsigned char tab[8][8];
  2. void foo(unsigned char * const);
  3. foo(tab);


... ce qui répond à votre question, que vous le vouliez ou non.
 
La véritable solution à votre problème passe par un enrobage.
 
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  passage d'un tableau en argument

 

Sujets relatifs
Problème d'affichage d'un tableau[JS DOM]Tableau créé en DOM, s'affiche sous FF, pas sous IE
acceler le parcour de mon tableautableau a 2 dimensions!!!!!
[Pascal] Length pour tableau ?tri d'un tableau par ordre alphabétique
Passage d'une requête en paramètre[résolu]Comment attraper tous les noeud d'un même type dans un tableau
Passage de la taille d'un tableau en argumentpassage en argument d'un tableau en POST
Plus de sujets relatifs à : passage d'un tableau en argument


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR