Pb de tableau en C
Fermé
pom
-
4 nov. 2005 à 09:52
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 4 nov. 2005 à 17:33
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 4 nov. 2005 à 17:33
A voir également:
- Pb de tableau en C
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Trier tableau excel - Guide
- Tableau de raccourcis clavier - Guide
2 réponses
crabs
Messages postés
908
Date d'inscription
lundi 18 avril 2005
Statut
Membre
Dernière intervention
3 août 2008
507
4 nov. 2005 à 17:16
4 nov. 2005 à 17:16
Salut,
Dans ta fonction d'allocation, il faudrait :
- que tu enregistres la dimension.
- que tu passes un pointeur sur la structure, en effet tu modifies la valeur
du pointeur et de la dimension.
Ce qui donne :
Il faut évidement changer l'appel dans le main :
Pour ta seconde question, tu peux déclarer un pointeur sur 'double',
l'affecter à la valeur du data (aprés l'allocation) et l'utiliser comme tableau.
Mais bon cela est déconseillé car tu perd de la lisibilité du code, mais ça
peut s'appliquer dans le cadre de la recherche de perfo pour des routines
temps réels par exemple [c'est pas le seul truc à faire...].
Dans ta fonction d'allocation, il faudrait :
- que tu enregistres la dimension.
- que tu passes un pointeur sur la structure, en effet tu modifies la valeur
du pointeur et de la dimension.
Ce qui donne :
void alloc_tableau( unsigned int d, Tableau* t ) { assert( d>0 ); t->data = malloc( d*sizeof(double) ) ; assert( t->data!=NULL ) ; t->dim = d ; }
Il faut évidement changer l'appel dans le main :
alloc_tableau( 3, &t1 ) ;
Pour ta seconde question, tu peux déclarer un pointeur sur 'double',
l'affecter à la valeur du data (aprés l'allocation) et l'utiliser comme tableau.
Mais bon cela est déconseillé car tu perd de la lisibilité du code, mais ça
peut s'appliquer dans le cadre de la recherche de perfo pour des routines
temps réels par exemple [c'est pas le seul truc à faire...].
double* vt1 ; ... vt1 = t1.data ; vt1[0] = ... ;
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
4 nov. 2005 à 17:33
4 nov. 2005 à 17:33
typedef struc t_mat
{
unsigned int dim; // la dimension du tableau
double * data;
double operator[](int i){return data[i];}
} Tableau;
maintenant tu peut faire t1[3]=5;
hic : aucun problème en C++, je ne garantie pas la réussite en C...
{
unsigned int dim; // la dimension du tableau
double * data;
double operator[](int i){return data[i];}
} Tableau;
maintenant tu peut faire t1[3]=5;
hic : aucun problème en C++, je ne garantie pas la réussite en C...