Tableau à deux dimensions C
Scipion
-
arthurc Messages postés 27 Statut Membre -
arthurc Messages postés 27 Statut Membre -
Bonjour, voilà mon problème :
J'ai une structure matrice avec 3 champs : int lines int columns et un dernier champ que j'aurai envie de définir int ** matrice;
Dans l'initialisation de ma strcture, si j'ai une matrice 3x3 voilà ce qui se passe :
j'initialise la structure, et les deux premiers champs.
Cependant si j'ai une matrice 3x3 que j'ai rempli préalablement je n'arrive pas à faire ceci :
int a [3][3];
/* Allocation + init des valeurs */
si j'ai un pointeur vers ma struct disons m;
m->matrice = a;
Cependant cette opération ne marche pas. Comment puis-je réussir à faire cela ? je ne peux pas dans ma struct faire : int tab[lines][columns] donc je ne vois pas très bien comment faire ...
J'ai une structure matrice avec 3 champs : int lines int columns et un dernier champ que j'aurai envie de définir int ** matrice;
Dans l'initialisation de ma strcture, si j'ai une matrice 3x3 voilà ce qui se passe :
j'initialise la structure, et les deux premiers champs.
Cependant si j'ai une matrice 3x3 que j'ai rempli préalablement je n'arrive pas à faire ceci :
int a [3][3];
/* Allocation + init des valeurs */
si j'ai un pointeur vers ma struct disons m;
m->matrice = a;
Cependant cette opération ne marche pas. Comment puis-je réussir à faire cela ? je ne peux pas dans ma struct faire : int tab[lines][columns] donc je ne vois pas très bien comment faire ...
1 réponse
-
Bonjour,
ton int a[3][3] est local à ta fonction où tu initialises.
Tu ne peux pas pointer dessus et ensuite t'en servir dans d'autre fonctions.
pour initialiser je ferais ainsi avec size la taille de matricesize = 3; m->matrice = (int *) malloc (sizeof (int *) * size); for (i = 0; i < size; ++i){ m->matrice[i] = (int)malloc (sizeof(int) * size); }
le permier malloc sert à initaliser 3 cases de pointeur sur entier, le malloc du for sert à initialiser une case de int pour chacune des cases.