1059 Stimmen

Was ist der Unterschied zwischen einer Definition und einer Erklärung?

Die Bedeutung von beidem entzieht sich mir.

20 Stimmen

Um ehrlich zu sein, hatte ich große Schwierigkeiten, herauszufinden, wer wer ist, und ich fand die Namen nicht offensichtlich. Ich hatte kein Problem mit den Bedeutungen, sondern nur damit, welche Namen ich mit den Bedeutungen in Verbindung bringen konnte.

2 Stimmen

Wir haben das schon ausführlich besprochen: stackoverflow.com/questions/671925/

7 Stimmen

Dennoch ist es keine doppelte Frage, da diese Frage sich auf C/C++ bezieht, während die andere Frage sich auf alle oder keine Sprachen im Allgemeinen bezieht. Es gibt nur doppelte Antworten (da bei der anderen Frage einige Antworten alle Sprachen außer C und/oder C++ ignorierten).

0voto

achoora Punkte 1230

Das Konzept der Deklaration und der Definition wird zu einem Fallstrick, wenn Sie die externe Speicherklasse verwenden, da sich Ihre Definition an einem anderen Ort befindet und Sie die Variable in Ihrer lokalen Codedatei (Seite) deklarieren. Ein Unterschied zwischen C und C++ besteht darin, dass in C die Deklarationen normalerweise am Anfang einer Funktion oder Codeseite vorgenommen werden. In C++ ist das nicht so. Sie können an einer Stelle Ihrer Wahl deklarieren.

0voto

Jeet Parikh Punkte 305

Stadien der Generierung einer ausführbaren Datei:

(1) Präprozessor -> (2) Übersetzer/Compiler -> (3) Linker

In Phase 2 (Übersetzer/Compiler) teilen die Deklarationsanweisungen in unserem Code dem Compiler mit, dass wir diese Dinge in Zukunft verwenden werden und dass Sie die Definition später finden können:

Übersetzer darauf achten, dass : Was ist was? bedeutet Erklärung

und (3) die Stufe (Linker) braucht eine Definition, um die Dinge zu verbinden

Linker stellen sicher, dass : Wo ist was? bedeutet Definition

0voto

Brad Solomon Punkte 33623

Es gibt einige sehr klare Definitionen, die in K&R (2. Auflage) verstreut sind; es ist hilfreich, sie an einem Ort zusammenzufassen und sie als Ganzes zu lesen:

"Definition" bezieht sich auf die Stelle, an der die Variable erstellt oder ihr Speicherplatz zugewiesen wird; "Deklaration" bezieht sich auf die Stellen, an denen die Art der Variablen angegeben wird, aber kein Speicherplatz zugewiesen wird. [p. 33]

...

Es ist wichtig, zu unterscheiden zwischen dem Erklärung einer externen Variablen und ihrer Definition . Eine Deklaration gibt die Eigenschaften einer Variablen (vor allem ihren Typ) bekannt; eine Definition bewirkt auch, dass Speicherplatz zur Verfügung gestellt wird. Wenn die Zeilen

int sp;
double val[MAXVAL]

außerhalb einer Funktion erscheinen, sind sie definieren. die externen Variablen sp y val und dienen auch als Erklärung für den Rest der Quelldatei.

Andererseits sind die Linien

extern int sp;
extern double val[];

deklarieren für den Rest der Quelldatei, die sp ist ein int und dass val ist eine double Array (dessen Größe an anderer Stelle festgelegt wird), aber sie erstellen weder die Variablen noch reservieren sie Speicherplatz für sie.

Es darf nur einen einzigen Definition einer externen Variablen unter allen Dateien, aus denen das Quellprogramm besteht. ... Array-Größen müssen bei der Definition angegeben werden, sind aber optional mit einem extern Erklärung. [S. 80-81]

...

Deklarationen spezifizieren die Interpretation, die jedem Bezeichner gegeben wird; sie reservieren nicht unbedingt den mit dem Bezeichner verbundenen Speicherplatz. Deklarationen, die Speicherplatz reservieren, werden als Definitionen . [p. 210]

0voto

Sindhukumari P Punkte 182

Die Deklaration erfolgt, wenn eine primitive oder Objektreferenzvariable oder -methode erstellt wird, ohne dass ein Wert oder ein Objekt zugewiesen wird. int a; final int a;

Die Definition bedeutet, dass der Wert bzw. das Objekt zugewiesen wird int a =10;

Initialisierung bedeutet die Zuweisung von Speicher für eine entsprechende Variable oder ein Objekt.

0voto

sun1211 Punkte 593

Erklärung Die Deklaration einer Variablen dient dazu, dem Compiler folgende Informationen mitzuteilen: Name der Variablen, Art des Wertes, den sie enthält, und den Anfangswert, falls sie einen solchen annimmt, d.h. die Deklaration enthält Einzelheiten über die Eigenschaften einer Variablen. Dagegen, Definition einer Variable gibt an, wo die Variable gespeichert wird, d.h. der Speicher für die Variable wird bei der Definition der Variable zugewiesen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X