Passage d'une matrice dans une fonction (C)
J'ai un problème de passage d'une matrice à une fonction en C. Il y a la fonction que j'ai créer:
void ins (int *matrix, int row, int column);
mais j'ai remarqué que contrairement aux vecteurs, la matrice de me donner une erreur. Comment puis-je passer ma matrice à une fonction?
EDIT --> voici le code:
//Matrix
#include <stdio.h>
#define SIZE 100
void ins (int *matrix, int row, int column);
void print (int *matrix, int row, int column);
int main ()
{
int mat[SIZE][SIZE];
int row, col;
printf("Input rows: ");
scanf ("%d", &row);
printf("Input columns: ");
scanf ("%d", &col);
printf ("Input data: \n");
ins(mat, row, col);
printf ("You entered: ");
print(mat, row, col);
return 0;
}
void ins (int *matrix, int row, int column);
{
int i, j;
for (i = 0; i < row; i++)
{
for (j = 0; j < column; j++)
{
printf ("Row %d column %d: ", i+1, j+1);
scanf ("%d", &matrix[i][j]);
}
}
}
void print (int *matrix, int row, int column)
{
int i;
int j;
for(i=0; i<row; i++)
{
for(j=0; j<column; j++)
{
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
Combien sont les diemensions de votre matrice? Est-il 1D ou 2D?
Possible en double stackoverflow.com/questions/546860/...
Possible en double stackoverflow.com/questions/546860/...
OriginalL'auteur Lc0rE | 2012-07-11
Vous devez vous connecter pour publier un commentaire.
Vous devez passer le nombre de dimensions à titre indicatif,
c'est à dire si votre matrice est 2D (10 par 100), alors:
mais le précédent est faux, car tout statique tableau 2D nécessite que le deuxième niveau de pointeurs être
const
pointeur de tableau statique. L'en-tête précédent serait correcte si la matrice est un tableau dynamique. donc la bonne est:ou dans votre cas:
ou tout simplement:
ou dans votre cas:
OriginalL'auteur
Si vous avez un moderne compilateur C, vous pouvez effectuer les opérations suivantes pour les matrices 2D de toutes les tailles
Important, c'est que les tailles avant de la matrice, tels qu'ils sont connus, il n'.
À l'intérieur de votre fonction, vous pouvez alors avoir accès aux éléments facilement que
matrix[i][j]
et le compilateur est en train de faire tous les calculs d'indice pour vous.OriginalL'auteur Jens Gustedt
il serait également possible de laisser la première dimension vide, la même chose que (*matrice):
OriginalL'auteur asam
C - l'allocation d'une matrice dans une fonction
Ci-dessus, vous trouverez un programme que j'ai fait avec les fonctions d'allocation et de manipuler des matrices de toute les façon possible pour C (gcc C11/C99).
OriginalL'auteur 42n4
Bien meilleure façon d'utiliser la fonction de malloc et de créer dynamiquement alloué tableau et faire ce que vous voulez faire à l'aide de tableau 2d:
OriginalL'auteur Prashant gaUtam