Vraag : Het hebben van probleem die met wijzers in c- programma werken

Ik werk aan een programma waar ik knopen van punt A tot punt B moet overgaan om C. te richten.  Er zijn 3 types van knopen (A, B, C).  In de bijzondere functie die IK hieronder heb getoond, probeer ik om Knoop B tot plaats C. Node B over te gaan ben een Knoop A (vandaar wordt de reden het overgegaan binnen) samen met één of ander ander hoofddeel information.

The te bevatten ik met ben worstel hoe te tot gegevenselementen voor de structuur toegang te hebben de wijzers waaraan richten.  

I am ook onzeker van de rol „unie“ speelt in de structuur NODE_TYPE.  Betekent kan het ik een A_TYPE of een B_TYPE of C_TYPE hebben? />A het vereenvoudigde programma


Any zou zijn zeer appreciated.
" codeBody "
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:
" notpretty "
/***** in hoofdprogramma ******/

….

BtoC (*node_from_a NODE_TYPE)
{
   NODE_TYPE *node_to_c; /* gebruik node_alloc () om dit te creëren */ 
   /* DIT IS WAAR IK HULP */NODIG HEB
   node_to_c = node_alloc ();
   /* cre�ër b_node: GEBRUIK NODE_ALLOC () - DIT IS WAAR IK HULP */NODIG HEB
   b_node = node_alloc (); //CORRECT?????
   /* vul de gebieden van b_node - DIT IS WAAR ik HULP */NODIG HEB
   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; //????
   
   /* verzend naar c */
   send_node_to_c (node_to_c);
   
   terugkeer 0;
}

….

/***** In .h dossier ******/

….

/* gegevenseenheid tussen A en B */
typedef struct {
     int. snode;                    /* bronknoopadres */
     int. dnode;                    /* het adres van de bestemmingsknoop */
     klusjes gegevens [DATASIZE];           /* bericht */
} A_TYPE;

/* gegevenseenheid tussen B en C */
typedef struct {
     int. curr_node;   /* adres van deze knoop */
     int. next_node;   /* adres van volgende knoop */
     A_TYPE a_node;
     de enum fout van Boole; /* JA of GEEN */
} B_TYPE;

/* gegevenseenheid tussen de lagen van C */
typedef struct {
     int. type;
     B_TYPE b_node;
} C_TYPE;

/* waarden voor het typegebied in NODE_TYPE */
#define TYPE_A_NODE 0
#define TYPE_B_NODE 1
#define TYPE_C_NODE 2

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

     int. type;    /* één van TYPE_A_NODE, TYPE_B_NODE, TYPE_C_NODE */
} NODE_TYPE;

int. node_init (); /* initialiseer de pool van knopen. Winst 0 voor mislukking. */
NODE_TYPE *node_alloc (); /* wijst een knoop toe en keert een wijzer terug */

….

Antwoord : Het hebben van probleem die met wijzers in c- programma werken

als u wilt kopiëren. dat leidt tot dubbel, toen

Als zij wijzers zijn:
*node_to_c->u->b_node->a_node = *node_from_a->u->a_node;

als u hen aan de zelfde knoop wilt richten
node_to_c->u->b_node->a_node = node_from_a->u->a_node;


Als zij geen wijzers zijn, dan (het zal tot dubbele knoop leiden)
node_to_c->u.b_node.a_node =node_from_a.u.a_node;
Andere oplossingen  
 
programming4us programming4us