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 :
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;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
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.
Partager