[C] Comment passer des matrices par adresse??

Comment passer des matrices par adresse?? [C] - C++ - Programmation

Marsh Posté le 12-03-2003 à 22:23:30    

Salut !
 
Voila mon problème:
Je déclare une matrice dans mon main, je met ses coefs à 0, puis je la fait passer dans une fonction qui va modifier cette matrice, par une égalité avec une autre matrice:
 

Code :
  1. int **fonction(int **matrice_fontion)
  2. {
  3. int i,j;
  4. for (i=0;i<hauteur;i++)
  5.     for (j=0;j<largeur;j++)
  6. matrice_fonction[i][j]=5;
  7. return(fonction);


 
Puis dans une autre fonction j'ai ceci:

Code :
  1. void modifie_mat(int **matrice)
  2. {
  3. matrice=fonction(matrice);
  4. //les valeurs ici sont bien modifiés dans la matrice
  5. }
  6. main()
  7. {
  8. int ** matrice
  9. //initilisation à 0 etc..
  10. //puis:
  11. modifie_mat(matrice);
  12. //une fois revenu dans le main les coefs sont toujours à 0 !
  13. }


 
donc comment passer la matrice par adresse afin que ses coefs soient modifiées? je sais le faire avec des int, des chars... ,
mais pas avec des matrices.


Message édité par *LighTninG* le 13-03-2003 à 15:37:27
Reply

Marsh Posté le 12-03-2003 à 22:23:30   

Reply

Marsh Posté le 13-03-2003 à 23:13:24    

j'ai du mal a croire que ton programme compile sans warnings: return(fonction) ça renvoie un pointeur sur ta fonction, il faut mettre matrice_fonction. Après ça devrait marcher, les tableaux sont toujours passés par adresse en C

Reply

Marsh Posté le 15-03-2003 à 01:51:31    

effectivement, return(fonction) ca risque pas de marcher;
 
return(matrice_function) est mieux mais inutile
 
void fonction(** m)
{

Reply

Marsh Posté le 15-03-2003 à 09:36:45    

j'espère que t'oublie pas de faire de l'allocation. de plus [][] ne marche pas avec un **ptr, ce qui est logique.
si tuv eux faire une fonction qui modifie ta matrice, est bien rajoute une indirection de façon a modifié directement le pointeur passé par paramètre.
 
de plus le type de retour des fonctions doit etre explicit.
 
void pour main, ou int si tu veux etre conforme à la norme C99

Reply

Marsh Posté le 16-03-2003 à 22:06:43    

Merki pour vos réponses, mais sinon c'était une erreur de ma part lorsque j'ai écrit le post, dans mon programme j'ai bien mis return(matrice_fonction) :)

Reply

Marsh Posté le 16-03-2003 à 23:27:03    

soit j'ai bu, soit ce que tu manipules c'est un pointeur sur un tableau de pointeur :/

Reply

Sujets relatifs:

Leave a Replay

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