Typedef/struct-Deklarationen
Was ist der Unterschied zwischen diesen beiden Erklärungen, wenn jemand erklären könnte, im detail:
typedef struct atom {
int element;
struct atom *next;
};
und
typedef struct {
int element;
struct atom *next;
} atom;
Überprüfen Sie Unterschied eins und zwei, in der ersten typedef ist redundant
Die erste ist nicht gültig. Der springende Punkt bei der
Art wirft mehr Fragen auf als es beantwortet.
Ich bin ein bisschen ein Anfänger in C, so dass, wenn Sie es erklären könnte ein bisschen mehr 'plain'. Ich Verstand typedef gemeint wurde, um zu vermeiden, dass Typ struct jedes mal, wenn Sie erstellt eine neue struct~. Ich wollte nach der Tat struct mit dem Namen vor den geschweiften Klammern gibt an, einen Typ und einen Namen nach den Klammern gibt an, eine "variable" mit dem Namen, ich dachte es angewendet typedef struct auch, natürlich habe ich einen schweren Denkfehler hier irgendwo.
Die erste ist nicht gültig. Der springende Punkt bei der
typedef
geben Sie einen neuen Namen ein, um eine Art Erklärung, und Sie haben nicht einen beliebigen Namen für die Struktur geben.Art wirft mehr Fragen auf als es beantwortet.
Ich bin ein bisschen ein Anfänger in C, so dass, wenn Sie es erklären könnte ein bisschen mehr 'plain'. Ich Verstand typedef gemeint wurde, um zu vermeiden, dass Typ struct jedes mal, wenn Sie erstellt eine neue struct~. Ich wollte nach der Tat struct mit dem Namen vor den geschweiften Klammern gibt an, einen Typ und einen Namen nach den Klammern gibt an, eine "variable" mit dem Namen, ich dachte es angewendet typedef struct auch, natürlich habe ich einen schweren Denkfehler hier irgendwo.
InformationsquelleAutor user2780061 | 2013-09-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zweck der
typedef
ist, einen Namen zu geben, um eine Typ-Angabe. Die syntax ist:Nachdem Sie dies getan haben, können Sie
<name>
viel wie die eingebauten Typen der Sprache, um Variablen zu deklarieren.In deinem ersten Beispiel, Sie die
<specification>
ist alles, beginnend mitstruct atom
, aber es gibt keine<name>
nach. So haben Sie noch nicht einen neuen Namen für die Typ-Angabe.Verwendung eines namens in einer
struct
Erklärung ist nicht das gleiche wie die Definition eines neuen Typs. Wenn Sie möchten, um diesen Namen verwenden, haben Sie immer vorausgehen mit denstruct
Schlüsselwort. Also, wenn Sie erklären:Können Sie deklarieren eine neue Variable mit:
aber Sie können nicht erklären, einfach
Für letzteres, müssen Sie
typedef
.Beachten Sie, dass dies ist einer der wichtigen Unterschiede zwischen C und C++. In C++ deklarieren einer
struct
oderclass
Typ hat ermöglichen die Verwendung in Deklarationen von Variablen, die Sie nicht brauchen, eintypedef
.typedef
ist immer noch nützlich in C++ für die anderen komplexe Art konstruiert, wie Funktionszeiger.Sollten Sie wahrscheinlich Blick über einige der Fragen, die in der Verwandte sidebar, Sie erklären, einige andere Nuancen zu diesem Thema.
code
typedef struct { int element; struct *next; } atom;Das können Sie entweder
struct at
oderatom
um Variablen zu deklarieren.Bedeutung dies ist der Zweck dieser?
Sie müssen
struct
einen Namen, so dass Sie verweisen können es in dernext
link, weil dietypedef
ist nicht definiert, bis nach der Anweisung.Finden Sie diese Frage über typedef und verknüpfte Listen: stackoverflow.com/questions/3988041/...
InformationsquelleAutor Barmar
Dies ist Normal
structure declaration
Erstellung von
object
Und
Diesem Typ ist die definition von
struct atom
TypHier
atom_t
ist alias fürstruct atom
Erstellung von Objekt
typedef
ist ein Schlüsselwort . Der Zweck von "typedef" ist die form von komplexen Typen von mehr-grundmaschinentypen.SIEHE DIESE INFO typedef en.wikipedia.org/wiki/TypedefInformationsquelleAutor Gangadhar
Die Allgemeine syntax der typedef-Schlüsselwort wird:
typedef existing_data_type new_data_type;
InformationsquelleAutor Deep