2009-08-10 10 views

Antwort

7

Normalerweise verwenden Sie Zeiger, wenn Sie auf Heap-Variablen beziehen möchten (Objekt Ende Funktion überlebt) und dem nicht-Zeiger Form für lokale Variablen (Lebensdauer endet mit Block/Funktion).

Als Elementvariable verwenden Sie Zeiger, wenn Sie Foo-Objekte über verschiedene Referrer hinweg verwenden, und Sie verwenden eingebettete Objekte, wenn Sie eine vollständige Beziehung mit Foo haben.

2

Wenn das eine variable Deklaration ist, Foo * foo; deklariert eine Variable vom Typ pointer-to-Foo. Foo foo deklariert eine Variable vom Typ Foo.

Siehe wikipedia 's Artikel über Zeiger für weitere Informationen.

0

Sie Foo * foo in vielen Fällen verwenden:

1 - wenn der zurückgegebene Wert ein Array vom Typ Foo

2 - Wenn die Funktion einige Datenstrukturen manipuliert (insbesondere wenn Sie mit einem funktionalen Paradigma arbeiten, bei dem das einzige Ergebnis einer Funktion der zurückgegebene Wert ist) Beispiel:

List * deleteListNode(int nbr, List * src) { 
    Node * tmp = getElementPointer(nbr, src); 
    tmp->prev->next = tmp->next; 
    tmp->next->prev = tmp->prev; 
    return src; 
} 

Diese Funktion nimmt als Argumente die Nummer eines Elements in einer Liste und einer Liste und gibt nach dem Löschen des gewünschten Elements einen Zeiger auf dasselbe Listentoken als Argument zurück, so dass die Funktion nur Zeiger bearbeitet, wie Sie wissen sind 32-Bit-Werte (oder vielleicht 64 Bits auf 64-Bit-Systemen).

3 - wenn die Schaffung des zurückgegebenen Objekts verbraucht Ressourcen, so dass Sie einen Zeiger auf das vorhandene Objekt zurückkehren würde, vor allem in Ex-Erstellungsfunktionen: List * createList, Tree * createTree ... weil Sie innerhalb der Funktion der Datenstruktur Erstellen Sie dazu es ist in der Erinnerung vorhanden alles, was Sie haben müssen, ist die Adresse

Verwandte Themen