2010-04-24 9 views
0

j'ai le code suivantet question de référence (listes chaînées)

struct Node { 
    int accnumber; 
    float balance; 
    Node *next; 
}; 

Node *A, *B; 

int main() { 
    A = NULL; 
    B = NULL; 
    AddNode(A, 123, 99.87); 
    AddNode(B, 789, 52.64); 
    etc… 
} 

void AddNode(Node * & listpointer, int a, float b) { 
// add a new node to the FRONT of the list 
Node *temp; 
    temp = new Node; 
    temp->accnumber = a; 
    temp->balance = b; 
    temp->next = listpointer; 
    listpointer = temp; 
} 

dans ce ici void AddNode(Node * & listpointer, int a, float b) { qu'est-ce que cela signifie exactement *& listpointer.

Répondre

2

Node * &foo est un reference à un Node *

Alors, quand vous l'appelez avec

AddNode(A, 123, 99.87); 

il changera A.

+0

ok donc du haut, A est un pointeur sur une structure, et dans cette fonction l'argument est un pointeur qui est l'adresse déférée d'un pointeur? – silent

+0

Non, 'listpointer' est juste une référence à' A'. Voir le lien dans ma réponse. C'est-à-dire, quand vous changez 'listpointer', vous changez vraiment' A'. C'est un alias. –

+0

oh je vois, donc le '*' agit en fait comme le pointeur ici. pas l'opérateur de déférence – silent