Question : Avoir l'ennui travailler avec des indicateurs dans le programme C

Je travaille sur un programme où je dois passer des noeuds du point A pour diriger B pour diriger le C.  Il y a 3 types de noeuds (A, B, C).  Dans la fonction particulière je montre ci-dessous, j'essaye de passer le noeud B au noeud B de l'endroit C. doit contenir un noeud A (par conséquent la raison il est passé dedans) avec une autre pièce principale d'information.

The que je lutte avec est comment accéder à des éléments pour la structure laquelle les indicateurs indiquent.  le

I AM également incertain du rôle « union » joue dans la structure de NODE_TYPE.  Me signifie-t-il peut-il avoir un A_TYPE ou un B_TYPE ou un C_TYPE ? le programme simplifié par/>A du


Any serait considérablement appreciated.
class= > " clair " de
> de " codeSnippet " de class= de
class= " lineNumbers " de
class= de
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= " de l'id= " codeSnippet815893 de
 ***** dans le ****** principal de programme/

….

BtoC (*node_from_a de NODE_TYPE)
{
   *node_to_c de NODE_TYPE ; node_alloc d'utilisation de/* () pour créer ceci * 
   /* CECI EST OÙ J'AI BESOIN DE L'AIDE *
   node_to_c = node_alloc () ;
   /* créent le b_node : le node_alloc d'utilisation () - CECI EST OÙ J'AI BESOIN DE L'AIDE *
   b_node = node_alloc () ; //CORRECT ? ? ? ? ?
   Suffisance de/* les champs du b_node - CECI EST OÙ J'AI BESOIN DE L'AIDE *
   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 ; // ? ? ? ?
   
   /* envoient à c *
   send_node_to_c (node_to_c) ;
   
   retour 0 ;
}

….

/***** Dans le ****** de dossier de .h/

….

unité de données de/* entre A et B *
struct de typedef {
     snode d'international ;                    adresse de noeud de source de/* *
     dnode d'international ;                    adresse de noeud destinaire de/* *
     données de char [DATASIZE] ;           message de/* *
} A_TYPE ;

unité de données de/* entre B et C *
struct de typedef {
     curr_node d'international ;   adresse de/* de ce noeud *
     next_node d'international ;   adresse de/* de prochain noeud *
     A_node d'A_TYPE ;
     erreur booléenne d'enum ; /* oui ou non *
} B_TYPE ;

unité de données de/* entre les couches de C *
struct de typedef {
     type d'international ;
     B_node de B_TYPE ;
} C_TYPE ;

Les valeurs de/* pour le type mettent en place dans NODE_TYPE *
#define TYPE_A_NODE 0
#define TYPE_B_NODE 1
#define TYPE_C_NODE 2

struct de typedef {
     union {
	  A_node d'A_TYPE ;
	  B_node de B_TYPE ;
	  C_node de C_TYPE ;
     } u ; 

     type d'international ;    /* un de TYPE_A_NODE, TYPE_B_NODE, TYPE_C_NODE *
} NODE_TYPE ;

node_init d'international () ; /* initialisent la piscine des noeuds. Retours 0 pour l'échec. *
*node_alloc de NODE_TYPE () ; /* assigne un noeud et renvoie un indicateur *

….
class= de

Réponse : Avoir l'ennui travailler avec des indicateurs dans le programme C

si vous voulez copier. cela crée une reproduction, puis

S'ils sont des indicateurs :
*node_to_c->u->b_node->a_node = *node_from_a->u->a_node ;

si vous voulez qu'ils indiquent le même noeud
node_to_c->u->b_node->a_node = node_from_a->u->a_node ;


S'ils ne sont pas des indicateurs, alors (il créera le noeud double)
node_to_c->u.b_node.a_node =node_from_a.u.a_node ;
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us