Pointeur et allocation dynamique
Bonjour,
J'ai une structure dans laquelle j'ai créer une tableau d'élement d'une liste qui est dynamiquececi est une contraite venant de mon simulateur que je ne peux pas en aucun cas écarte. Le format est donnée ci-dessous:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
typedef struct _cord _t cord_t *cord_pt;
typedef struct _point_arbre_t point_arbre_t *point_arbre_pt;
typedef struct _voisin_t voisin_t *voisin_pt;
typedef struct _donne_t donne_t *donne_pt;
struct _cord_t {
double x;
double y;
double z;
};
struct _voisin_t {
int identite;
cord_pt position_voisins;
};
struct _point_arbre_t {
int id;
int Nfils;
cord_pt position;
int taille_tab;
voisin_pt tab;
};
fin format structure.
//Nb : nombre d'elements du tableau
//paquet_pt pour former un paquet de donner à expèdier au voisins
paquet_pt paquet = malloc(sizeof(struct _donne_t) + Nb*sizeof(_point_arbre_)) ;
point_arbre_pt donnee = (struct point_arbre *) paquet;
//affectation
donnee->id = 1;
donnee->Nfils = 4;
donnee->position->x = cord_en_x;
donnee->position->y = cord_en_y;
donnee->position->z = cord_en_z;
donnee->taille_tab = valeur_connu
//Pour la suite voila comment je procède pour remplir le tableau
voisin_pt voisin = (struct _voisin_t *) (2*sizeof(int) + sizeof(struct _cord_t));
// ceci fait pointe le pointeur sur l'element l'élement suivant après les affections prècedentes
// le neoud parcourt la liste des voisins en remplissant maintenant le table voisins.
for(i = 0; i < valeur_connu; i++) {
voisin[i].identite = val_connu;
voisin[i]->position_voisins.x = val_connu;
voisin[i]->position_voisins.y = val_connu;
voisin[i]->position_voisins.z = val_connu;
} |
Ainsi se termine la phase de remplissage de mon paquet, si j'essaie d'afficher par la même façon sauf que pour le tableau j'utilise :
Code:
1 2 3 4 5 6 7
|
for(i= 0; i < valleur_connu; i++) {
voisin_pt voisin = (struct _voisin_t *) (s*sizeof(int) + sizeof(struct _cord_t) + (i + 1)*sizeof(struct _voisin_t));
je n ai pas les meme résulats et pour le dernier élement il affiche des valeur très bizzard !!, très grand.
} |
Voila grosso mode ce que ça ressemble la partie qui me bloque.
Est que quelqu'un arrive avoir quoi sait le problème car je galère sur ça.
Merci