Questione : Avendo difficoltà funzionare con gli indicatori nel programma in C

Sto lavorando ad un programma dove devo passare i nodi da punto A per indicare la B per indicare il C.  Ci sono 3 tipi di nodi (A, B, C).  Nella funzione particolare mostro sotto, io sto provando a passare il nodo B al nodo B di posizione C. devo contenere un nodo A (quindi il motivo è passato dentro) con una certa altra parte che principale di information.

The sto lottando con sono come accedere agli elementi per la struttura che gli indicatori stanno indicando.  il

I inoltre incerto del ruolo “unione„ gioca nella struttura di NODE_TYPE.  Lo significa può avere un A_TYPE o un B_TYPE o un C_TYPE? il programma semplificato/>A del


Any sarebbe notevolmente appreciated.
class= > " libero " del
> " del codeSnippet " del class= del
class= " lineNumbers " del
class= del
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:
class= " del id= " codeSnippet815893 del
 ***** nel ****** principale di programma/

….

BtoC (*node_from_a di NODE_TYPE)
{
   *node_to_c di NODE_TYPE; node_alloc di uso di/* () per generare questo */ 
   /* QUESTO È DOVE HO BISOGNO DELL'AIUTO */
   node_to_c = node_alloc ();
   /* generano il b_node: il node_alloc di uso () - QUESTO È DOVE HO BISOGNO DELL'AIUTO */
   b_node = node_alloc (); //CORRECT?????
   Materiale di riempimento di/* i campi di b_node - QUESTO È DOVE HO BISOGNO DELL'AIUTO */
   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; //????
   
   /* trasmettono alla c */
   send_node_to_c (node_to_c);
   
   ritorno 0;
}

….

/***** Nel ****** della lima di .h/

….

unità di dati di/* fra A e la B */
struct del typedef {
     snode di int;                    indirizzo di nodo di fonte di/* */
     dnode di int;                    indirizzo di nodo di destinazione di/* */
     dati del carbone [DATASIZE];           messaggio di/* */
} A_TYPE;

unità di dati di/* fra la B e la C */
struct del typedef {
     curr_node di int;   indirizzo di/* di questo nodo */
     next_node di int;   indirizzo di/* del nodo seguente */
     A_node di A_TYPE;
     errore booleano di enum; /* SÌ o NO */
} B_TYPE;

unità di dati di/* fra gli strati di C */
struct del typedef {
     tipo di int;
     B_node di B_TYPE;
} C_TYPE;

I valori di/* per il tipo sistemano in NODE_TYPE */
#define TYPE_A_NODE 0
#define TYPE_B_NODE 1
#define TYPE_C_NODE 2

struct del typedef {
     unione {
	  A_node di A_TYPE;
	  B_node di B_TYPE;
	  C_node di C_TYPE;
     } u; 

     tipo di int;    /* uno di TYPE_A_NODE, TYPE_B_NODE, TYPE_C_NODE */
} NODE_TYPE;

node_init di int (); /* inizializzano lo stagno dei nodi. Ritorni 0 per guasto. */
*node_alloc di NODE_TYPE (); /* assegna un nodo e restituisce un indicatore */

….
class= del

Risposta : Avendo difficoltà funzionare con gli indicatori nel programma in C

se volete copiare. quello sta generando un duplicato, allora

Se sono indicatori:
*node_to_c->u->b_node->a_node = *node_from_a->u->a_node;

se li volete indicare lo stesso nodo
node_to_c->u->b_node->a_node = node_from_a->u->a_node;


Se non sono indicatori, quindi (genererà il nodo duplicato)
node_to_c->u.b_node.a_node =node_from_a.u.a_node;
Altre soluzioni  
 
programming4us programming4us