C ++ Struktur in sich selbst?

8

Ich habe versucht, diesen Code nach Python zu portieren, aber es gibt etwas, das ich in C ++ nicht verstehe (ich kenne ein bisschen C ++, aber das ist jenseits meiner):

%Vor%

Was ich nicht verstehe ist, wie huffnode_s in sich selbst sein kann, ich habe das vorher noch nie gesehen und verstehe es nicht ganz. Was bedeutet das, und wenn jemand kann, was wäre das Python-Äquivalent?

    
Douglas 21.05.2010, 20:54
quelle

8 Antworten

19

huffnode_s ist nicht in sich selbst, nur Zeiger bis huffnode_s sind dort drin. Da ein Zeiger von bekannter Größe ist, ist das kein Problem.

    
Carl Norum 21.05.2010 20:56
quelle
11

Dies.

%Vor%

Sie können dann Ihre verschiedenen C-Funktionen als Methoden dieser Klasse umgestalten.

Oder vielleicht das.

%Vor%

Wenn Ihre C-Funktionen Funktionen bleiben sollen.

Das ist es.

%Vor%

Das ist alles, was benötigt wird.

    
S.Lott 21.05.2010 20:58
quelle
4

es hat keine Struktur in sich. Es hat einen Zeiger auf diese Struktur.

im Speicher struct huffnode_s würde aussehen (32-Bit-Maschine):

| ------------------ huffnode_s * null - 4 Bytes -------------- |

| ------------------ huffnode_s * eins - 4 Bytes ---------------- |

| unsigned char val - 1 Byte + 3 Bytes Füllung ======= |

| ------------------- float freq - 4 Bytes ---------------------- --- |

Diese Größen würden von Maschine zu Maschine variieren, und wie es im Speicher aussieht, wird vom Compiler entschieden.

    
Ramadheer Singh 21.05.2010 20:55
quelle
1

Um Carls Antwort hinzuzufügen, ist das Gleiche in C ++ auch möglich:

%Vor%

(Beachten Sie, dass die obige Klasse dumm ist, aber der Punkt ist, dass Sie einen Zeiger innerhalb einer Klasse haben können, die vom Klassentyp ist)

    
Brian Roach 21.05.2010 21:01
quelle
0

(struct huffnode_s *) deklariert einen Zeiger auf eine andere Struktur, die dieselben Variablen enthält wie die Struktur, in der sie deklariert ist. Siehe diese Frage .

    
Yktula 21.05.2010 21:00
quelle
0

Dies ist ein Zeiger auf einen Huffnode innerhalb eines Huffnodes. Was das bedeutet ist, dass Sie sagen können:

%Vor%

Dies wird kompiliert, und es wird so lange funktionieren, wie all diese Huffnode-Nachkommen tatsächlich zugewiesen und korrekt ausgerichtet sind.

Zeiger sind wie Objektverweise in JavaScript. Sie enthalten keine Daten, sie beziehen sich nur darauf. Seien Sie versichert, dass Sie nicht auf einen unendlichen Typ schauen.

    
Joey Adams 21.05.2010 21:00
quelle
0

Dies ist bekannt als eine selbstreferentielle Struktur und es ist genau wie es sich anhört: eine Struktur, die einen Verweis auf sich selbst enthält. Ein häufiges Vorkommen davon ist in einer Struktur, die einen Knoten für eine verknüpfte Liste beschreibt. Jeder Knoten benötigt einen Verweis auf den nächsten Knoten in der Kette.

%Vor%     
Amir Afghani 21.05.2010 21:03
quelle
0

Wie andere bemerkt haben, sind die Referenzen auf sich selbst einfach Zeiger auf andere Instanzen dieser Struktur.

Die Zeiger innerhalb der Struktur würden es erlauben, Instanzen miteinander als eine verknüpfte Liste zu verbinden.

    
Holman716 21.05.2010 20:57
quelle

Tags und Links