Ist "int a;" eine Deklaration oder Definition in C und in C ++?

7

Ist int a; eine Deklaration oder Definition in C? Gibt es einen Unterschied in C ++?

Ich dachte immer, es ist nur eine Erklärung, bis heute ...

Ist es eine Deklaration oder eine Definition?

    
lex 18.12.2010, 01:49
quelle

3 Antworten

17

Eine Deklaration beschreibt ein Objekt, während eine Definition die Erstellung eines Objekts anfordert. Alle Definitionen sind auch Deklarationen , aber das Gegenteil ist nicht wahr.

Im Fall von int a; hängt es davon ab, wo es im Quellcode steht:

  • Innerhalb einer Funktion ist int a; eine Definition - sie fordert die Erstellung einer int -Variable mit automatischer Speicherdauer (und natürlich auch einer Deklaration) an;
  • Im Dateibereich ist die Antwort in C und C ++ anders. In C ist int a; eine vorläufige Definition (von denen es mehrere geben kann, solange die Typen und die Verknüpfung akzeptabel sind); in C ++ ist es eine gewöhnliche Definition mit externer Verknüpfung.
  • Innerhalb eines struct oder union Spezifizierers ist int a; eine Deklaration eines Mitglieds.
caf 18.12.2010 02:45
quelle
6

Wo erscheint es in Ihrem Programm?

In den meisten Kontexten ist dies sowohl eine Deklaration als auch eine Definition.

OTOH, extern int a; ist nur eine Deklaration.

    
Ben Voigt 18.12.2010 01:51
quelle
0

Überlegen Sie:

%Vor%

Es ist eine Definition sowie eine Deklaration.

Betrachten Sie das folgende Beispiel ...

%Vor%

Ein bestimmter Wert wird gedruckt. Was offensichtlich bedeutet, dass es einen Speicherort hat.

Wenn Sie nur eine Variable deklarieren und nicht definieren wollen, dann gehen Sie nach "extern" keyword.

Somit ist extern int b; nur eine Deklaration und keine Definition.

Beispiel:

%Vor%

Somit wird das obige Programm einen Fehler ausgeben, da "var" nirgends definiert wurde.

    
user3478065 16.01.2015 14:23
quelle

Tags und Links