Creation d'une matrice en langage c

Fermé
bakarim Messages postés 32 Date d'inscription samedi 23 août 2008 Statut Membre Dernière intervention 15 juillet 2009 - 21 févr. 2009 à 22:28
bakarim Messages postés 32 Date d'inscription samedi 23 août 2008 Statut Membre Dernière intervention 15 juillet 2009 - 22 févr. 2009 à 11:02
Bonjour,
sep, pour réaliser une matrice j'ai cherche sur internet comment on peut réaliser un tableau dynamique a 2 dimensions.J'ai trouve plusieurs résultats mes le problème qui se pose je ne parvient pas a comprendre exactement le fonctionnent de l'algorithme qu'ils utilisent.Est ce que quelqu'un peut m'expliquer voila un des solution que j'ai trouve :#include <stdlib.h>
#include <stdio.h>

#define COLONNES 5
#define LIGNES 3

/* On cherche à allouer un tableau de caractères de 5 colonnes et 3 lignes*/

int main (void)
{
char** tab_2d = NULL;
int i;

/* On alloue */
tab_2d = malloc (sizeof (char*) * LIGNES);

for (i = 0; i < LIGNES; ++i)
tab_2d[i] = malloc (sizeof (char) * COLONNES);

/* On libère */
for (i = 0; i < LIGNES; ++i)
free (tab_2d[i]);

free (tab_2d);

return 0;
}
A voir également:

4 réponses

Mr_khalid Messages postés 3 Date d'inscription samedi 21 février 2009 Statut Membre Dernière intervention 22 février 2009 2
22 févr. 2009 à 00:24
c'est pas un tableau a l'intérieur de l'autre mais chaque élément de tableau sera un tableau donc pour ca qu'on a déclaré un pointeur double
char** tab_2d = NULL; // déclaration est initialisation (le double pointeur déjà égal a NULL)

tab_2d = malloc (sizeof (char*) * LIGNES); // on a maintenant les éléments tab_2d[0], tab_2d[1] ...
//est pour chaque élément on va crée un tableau dynamique

for (i = 0; i < LIGNES; ++i)
tab_2d[i] = malloc (sizeof (char) * COLONNES); //tab_2d[0] est un pointeur (ou tab dyn) qui contien 5 element (5 et le nbr colonne ) donc on a tab_2d[0][0] tab_2d[0][1] tab_2d[0][2] tab_2d[0][3] tab_2d[0][4] même chose pour tab_2d[1] ....
2
Mr_khalid Messages postés 3 Date d'inscription samedi 21 février 2009 Statut Membre Dernière intervention 22 février 2009 2
21 févr. 2009 à 22:45
pour une matrice de 2 dim vous avez 2 possibilité soit statique(vous connaissez déja le nbr des lignes et des colonnes)
soit dynamique (les lignes et les colonnes seront passé a la saisie )
donc pour cet exemple :
1 chase on a allouée l'espace mémoire pour les lignes
a00
a01
a02
....

et pour chaque a(i,i) on va allouée de la memoire
a00 a10 a20 ...
a01 a11 a21 ...
a02 a12 a22 ...
...

même chose pour la libération de la mémoire
0
bakarim Messages postés 32 Date d'inscription samedi 23 août 2008 Statut Membre Dernière intervention 15 juillet 2009 3
21 févr. 2009 à 23:19
merci d'avance.
ce que j'ai pas compris c'est la premier malloc est ce que creer un tableau a 2 dimension revient a creer un tablaux a l'interieur d'unautre tableau. parceque des la 1 ere declaration (char** tab_2d = NULL)je pense que c'est tableau qui contient juste des pointeur.
est ce que ca est juste ou non.
0
bakarim Messages postés 32 Date d'inscription samedi 23 août 2008 Statut Membre Dernière intervention 15 juillet 2009 3
22 févr. 2009 à 11:02
Merci bien M_khalid
0