Tableau à deux dimensions C

Fermé
Scipion - Modifié par Scipion le 7/03/2011 à 16:53
arthurc Messages postés 26 Date d'inscription mardi 22 février 2011 Statut Membre Dernière intervention 25 mars 2011 - 7 mars 2011 à 18:26
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 ...









A voir également:

1 réponse

arthurc Messages postés 26 Date d'inscription mardi 22 février 2011 Statut Membre Dernière intervention 25 mars 2011 4
7 mars 2011 à 18:26
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 matrice
size = 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.
0