renvoyer l'adresse d'un seul objet d'un tableau de structure
Bonjour à tous,
Je bute depuis peu sur un ou deux problèmes qui je pense sont tout bête et certainement liés, mais mon code prenant de l'ampleur, je préfère demander votre avis avant de refondre en partie ce dernier.
Je souhaiterais faire passer à une fonction l'adresse d'une unique case d'un tableau.
En effet, j'ai un tableau d'objet (du type struct str *obj), et ma fonction doit traiter dans un ordre défini chaque case du tableau. ci dessous, un exemple :
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
| struct network {
int net_nb_int; // size of input vector
int net_nb_out; // size of output vector
int net_nb_lay; // size of layer vector
double *net_int; // input vector
double *net_out; // output vector
layer_t *net_layer; // layer vector
};
struct layer {
int layer_nb_int; // size of layer input vector
int layer_nb_ker; // size of kernel vector
double *layer_int; // layer input vector
double *layer_out; // layer output vector
kernel_t *layer_ker; // kernel vector
};
typedef struct network net_t;
typedef struct layer layer_t;
double* fst_func(net_t *net, double *u_entries)
{
net->net_out = snd_func(net->net_layer[0], u_entries);
for (int l = 1; l < net->net_nb_lay; l++)
{
net->net_out = snd_func(net->net_layer[l], net->net_out);
}
return net->net_out;
}
double* snd_func(layer_t *lay, double *u_ent)
{
for (int k = 0; k < lay->layer_nb_ker; k++)
{
lay->layer_out = thrd_func(lay->layer_ker, u_ent);
}
return lay->layer_out;
} |
Or, dans la première fonction, je ne peux pas faire : net->net_out = snd_func(net->net_layer[0], u_entries); car la seconde fonction attends une adresse comme premier paramètre. Mais je ne peux pas m'amuser à lui envoyer tout le tableau simplement car je ne veux traiter que l'objet net_layer[0] et pas tout le tableau net_layer. Dans la fonction suivante, j'ai un truc du genre net_layer[0].var[i] = xxx;
Alors, je sais bien évidemment que je peux tourner mon code différemment mais modifier dans le fond toute cette partie me fait reprendre pas mal de code en amont et en aval ; je voudrais doc éviter de passer à coter de quelque chose comme par exemple envoyer : &(net->net_layer[0]). mais ceci me génère aussi une erreur de segmentation.