#1 Le 25/09/2020, à 22:05
- zephyre123
Transmettre en parametre un vecteur de matrice à une fonction
Bonjour,
J'ai fait le code ci dessous qui me permet via une fonction d'initialiser touts les termes de la matrice à zéro ci dessous :
#include <stdio.h>
#include <stdlib.h>
int matrice[2][3] =
{
{1, 2, 3},
{4, 5, 6},
};
void initialisation(int (*pMatrice)[2][3])
{
for(int i = 0; i < 2; i++)
for(int j = 0; j < 3; j++)
*pMatrice[i][j] = 0;
for(int i = 0; i < 2; i++)
for(int j = 0; j < 3; j++)
printf("pMatrice[%d][%d] = %d\n",i, j, *pMatrice[i][j]);
}
int main(void)
{
initialisation(&matrice);
return EXIT_SUCCESS;
}
Maintenant je voudrai faire exactement la même chose mais au lieu de transmettre un pointeur sur matrice à ma fonction j'aimerai lui transmettre un vecteur de pointeur qui me permettrai d'initialiser plusieurs matrice en même temps
J'ai fais le code ci dessous :
#include <stdio.h>
#include <stdlib.h>
typedef int matrice[2][3];
int matrice_pair[2][3] =
{
{0, 2, 4},
{6, 8, 10},
};
int matrice_impair[2][3] =
{
{1, 3, 5},
{7, 9, 11},
};
void initialisation(matrice (*p)[2])
{
for(int i = 0; i < 2; i++)
for(int j = 0; j < 3; j++)
*p[0][i][j] = 0;
for(int i = 0; i < 2; i++)
for(int j = 0; j < 3; j++)
*p[1][i][j] = 0;
for(int i = 0; i < 2; i++)
for(int j = 0; j < 3; j++)
printf("Matrice_0[%d][%d] = %d\n",i, j, *p[0][i][j]);
printf("\n\n");
for(int i = 0; i < 2; i++)
for(int j = 0; j < 3; j++)
printf("Matrice_1[%d][%d] = %d\n",i, j, *p[1][i][j]);
}
int main(void)
{
initialisation(&matrice_pair, &matrice_impair);
return EXIT_SUCCESS;
}
Je comprends rien au erreur du compilateur
Dernière modification par zephyre123 (Le 25/09/2020, à 22:06)
Hors ligne
#2 Le 26/09/2020, à 07:23
- NicoApi73
Re : Transmettre en parametre un vecteur de matrice à une fonction
Bonjour,
Tu déclares une fonction initialisation qui prend 1 argument. Dans main, tu lui en passes 2, donc le compilateur te dit que tu appelles ta fonction avec trop d'arguments... Il faut appeler 2 fois la fonction avec 1 seul argument.
Inapproprié. Voir la réponse de kamaris ci-dessous
Dernière modification par NicoApi73 (Le 26/09/2020, à 14:17)
Hors ligne
#3 Le 26/09/2020, à 10:17
- kamaris
Re : Transmettre en parametre un vecteur de matrice à une fonction
C'est
void initialisation(matrice *p[2])
et (en faisant de même pour p[1])
(*(p[0]))[i][j] = 0;
…
printf("Matrice_0[%d][%d] = %d\n",i, j, (*(p[0]))[i][j]);
puis
matrice *p[2] = { &matrice_pair, &matrice_impair };
initialisation(p);
Dernière modification par kamaris (Le 26/09/2020, à 10:27)
Hors ligne
#4 Le 26/09/2020, à 14:14
- zephyre123
Re : Transmettre en parametre un vecteur de matrice à une fonction
Merci beaucoup Kamaris t'as exactement compris ce que je voulais faire
C'est parfait !
Hors ligne
#5 Le 26/09/2020, à 14:17
- NicoApi73
Re : Transmettre en parametre un vecteur de matrice à une fonction
Ma réponse était inapproprié. Je corrige
Hors ligne