Frage : Mühe mit, Zeigern zu arbeiten im c-Programm haben

Ich arbeite an einem Programm, in dem ich Nullpunkte von Punkt A führen muss, um B zu zeigen, um C. zu zeigen.  Es gibt 3 Arten Nullpunkte (A, B, C).  In der bestimmten Funktion zeige ich unten, ich versuche, Nullpunkt B zu Position C. Nullpunkt B zu führen soll einen Nullpunkt A (folglich der Grund geführt er innen), zusammen mit irgendeinem anderem information.

The Hauptteil enthalten, das ich mit bin kämpfe, wie man auf Datenelemente für die Struktur zurückgreift, die die Zeiger auf zeigen.  das

I morgens auch unsicher von der Rolle „Anschluss“ spielt in der NODE_TYPE Struktur.  Bedeutet es mich kann ein A_TYPE oder ein B_TYPE oder ein C_TYPE haben?

A das vereinfachte Programm, welches die Funktion BtoC zusammen mit Teil der .h Akte zeigt, ist attached.

Any Hilfe sein groß appreciated.
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:
6:
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:
 ***** im Hauptprogramm ******/

….

BtoC (NODE_TYPE *node_from_a)
{
   NODE_TYPE *node_to_c; /* Gebrauch node_alloc () zum dieses zu verursachen * 
   /* DIESES IST, WO ICH HILFE BENÖTIGE *
   node_to_c = node_alloc ();
   /* verursachen b_node: Gebrauch node_alloc () - DIESES IST, WO ICH HILFE BENÖTIGE *
   b_node = node_alloc (); //CORRECT?????
   /* Fülle die Felder von b_node - DIESES IST, WO ICH HILFE BENÖTIGE *
   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; //????
   
   /* senden zu c *
   send_node_to_c (node_to_c);
   
   Rückkehr 0;
}

….

/***** Im .h Akte ******/

….

/* Dateneinheit zwischen A und B *
typedef struct {
     int snode;                    /* Quellnullpunktadresse *
     int dnode;                    /* Bestimmungsortnullpunktadresse *
     Putzfraudaten [DATASIZE];           /* Mitteilung *
} A_TYPE;

/* Dateneinheit zwischen B und C *
typedef struct {
     int curr_node;   /* Adresse dieses Nullpunktes *
     int next_node;   /* Adresse des folgenden Nullpunktes *
     A_TYPE a_node;
     enum Boolesche Störung; /* JA oder NO *
} B_TYPE;

/* Dateneinheit zwischen c-Schichten *
typedef struct {
     int-Art;
     B_TYPE b_node;
} C_TYPE;

/* Werte für die Art Feld in NODE_TYPE *
#define TYPE_A_NODE 0
#define TYPE_B_NODE 1
#define TYPE_C_NODE 2

typedef struct {
     Anschluss {
	  A_TYPE a_node;
	  B_TYPE b_node;
	  C_TYPE c_node;
     } u; 

     int-Art;    /* eins von TYPE_A_NODE, TYPE_B_NODE, TYPE_C_NODE *
} NODE_TYPE;

int node_init (); /* initialisieren die Lache von Nullpunkten. Rückkehr 0 für Ausfall. *
NODE_TYPE *node_alloc (); /* zuteilt einen Nullpunkt und zurückbringt einen Zeiger ngt *

….

Antwort : Mühe mit, Zeigern zu arbeiten im c-Programm haben

wenn Sie kopieren möchten. das herstellt ein Duplikat, dann nn

Wenn sie Zeiger sind:
*node_to_c->u->b_node->a_node = *node_from_a->u->a_node;

wenn Sie sie auf den gleichen Nullpunkt zeigen wünschen
node_to_c->u->b_node->a_node = node_from_a->u->a_node;


Wenn sie nicht Zeiger sind, dann (er verursacht doppelten Nullpunkt)
node_to_c->u.b_node.a_node =node_from_a.u.a_node;
Weitere Lösungen  
 
programming4us programming4us