Fråga : Ha besvära arbetet med pekare i c-program

Arbetet för förmiddag I på ett program, var jag behöver att passera, knutpunkter från pekar A för att peka B för att peka C.  Det finns 3 typer av knutpunkter (A, B, C).  I detaljen fungera mig visar nedanfört, den pröva I-förmiddagen för att passera knutpunkt B till knutpunkt B för läge C. är att innehålla en knutpunkt A (hence resonera den passeras in), tillsammans med någon annan information.

The som den huvudsakliga förmiddagen för del som I kämpar med, är hur man tar fram databeståndsdelar för strukturera, som pekarna pekar till.  förmiddagen för

I är osäker av de fackliga” lekarna för rollen ”i NODE_TYPEN, strukturerar också.  Den betyder mig kan ha en A_TYPE eller en B_TYPE eller en C_TYPE?

A förenklade programvisning som fungera BtoC tillsammans med delen av .hen sparar är skulle hjälp för attached.

Any är väldeliga appreciated.
> för
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:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
" codeBody " " notpretty class= " för ***** i huvudsaklig program******/, …., BtoC (NODE_TYPE-*node_from_a) { NODE_TYPE-*node_to_c; -/*bruksnode_alloc () som skapar detta * /* DETTA ÄR VAR JAG BEHÖVER HJÄLP * node_to_c = node_alloc (); /* skapar b_node: bruksnode_alloc () - DETTA ÄR VAR JAG BEHÖVER HJÄLP * b_node = node_alloc (); //CORRECT????? Den -/*påfyllningen sätter in av b_node - DENNA ÄR VAR JAG BEHÖVER HJÄLP * b_node->u->a_node = &node_from_a; //CORRECT????? b_node->type = TYPE_B_NODE; //CORRECT????? node_to_c->u->b_node = &b_node; //???? node_to_c->type = TYPE_C_NODE; //???? /* överför till c * send_node_to_c (node_to_c); retur 0; } …., /***** I .h sparar ******/, …., -/*dataenhet mellan A och B * typedefstruct { int-snode; -/*källknutpunkten tilltalar * int-dnode; -/*destinationsknutpunkten tilltalar * rödingdata [DATASIZE]; -/*meddelande * } A_TYPE; -/*dataenhet mellan B och C * typedefstruct { int-curr_node; /* tilltalar av denna knutpunkt * int-next_node; /* tilltalar av den nästa knutpunkten * A_TYPE-a_node; boolean fel för enum; /* JA eller NR. * } B_TYPE; -/*dataenhet mellan c-lagrar * typedefstruct { int-typ; B_TYPE-b_node; } C_TYPE; /* värderar för typen sätter in i NODE_TYPE * #define TYPE_A_NODE 0 #define TYPE_B_NODE 1 #define TYPE_C_NODE 2 typedefstruct { union { A_TYPE-a_node; B_TYPE-b_node; C_TYPE-c_node; } u; int-typ; /* en av TYPE_A_NODE, TYPE_B_NODE, TYPE_C_NODE * } NODE_TYPE; int-node_init (); /* initialiserar slå samman av knutpunkter. Retur 0 för fel. * NODE_TYPE-*node_alloc (); /* tilldelar en knutpunkt och går en pekare tillbaka * ….,
" klar "

Svar : Ha besvära arbetet med pekare i c-program

om du önskar att kopiera. det skapar ett dubblett, därefter

Om de är pekare:
*node_to_c->u->b_node->a_node = *node_from_a->u->a_node;

om du önskar att de ska peka till den samma knutpunkten
node_to_c->u->b_node->a_node = node_from_a->u->a_node;


Om de inte är pekare, då (den ska skapar dubblettknutpunkt),
node_to_c->u.b_node.a_node =node_from_a.u.a_node;
Andra lösningar  
 
programming4us programming4us