Kort sagt, hvad er forskellen mellem "deklaration" og "definition" i C for newbies?


Svar 1:

I forbindelse med C-sprog henviser erklæring til at fortælle kompilatoren navn, type og underskrift af funktioner eller metoder.

F.eks:

/ * Deklarerende funktion * /
 FooBar (Argumentliste med datatype);

Vi kan her se, at det slutter med en semikolon, og er en enkelt linjekode, der bare fortæller kompilatorens navn, argument og returtype for en funktion.

Der henviser til, at definition handler om at definere det faktiske indhold (krop) af denne funktion. Som inkluderer alle koder og logikker og alt sammen, som beskriver, hvilken funktion der faktisk udfører.

F.eks:

/ * Definition af funktion * /
 FooBar (Argumentliste med datatype)
{
  / * Lokal variabel erklæring * /
  / *
   Kodelinjer, der indeholder den faktiske programlogik
  * /
   returner ;
}

I C skal angivelse udføres, før denne funktion bruges, så kompilatoren ikke kaster en fejl, hvor funktionsdefinition kan være et vilkårligt sted i det aktuelle omfang af programmet.

tak skal du have


Svar 2:

En erklæring informerer kompilatoren på forhånd om typen, variablenes størrelse og om parametrene, funktionens returtype.

Der sker ingen hukommelsestildeling under erklæringen.

eks: int j;

Definition: Det "definerer", hvad den variabel / funktion gør, hvilken værdi vil den have på. Faktisk hukommelsestildeling sker efter definitionen.

eks: j = 3;


Svar 3:

En erklæring er netop det - den er der for at fortælle kompilatoren at forvente at finde definitionen senere i kildekoden. Det er normalt i en headerfil (.h eller .hpp-udvidelse), og kilden (c, eller cpp-udvidelsen) har normalt definitionen. Formålet med erklæringen er at tillade en programmør, der bruger den funktion eller klasse, du erklærer, at kunne bruge funktionen eller klassen - de har ikke brug for definitionen, da det er kildekoden, der fortæller kompilatoren, hvordan man faktisk gør hvad funktionen / klassen skal gøre, men erklæringen fortæller dem, hvad funktionen returnerer, hvilke argumenter funktionen tager, og navnet på funktionen, så de senere kan kalde funktionen fra deres kode. Hvis det ikke var klart indtil videre, har definitionen kildekoden til at definere (dermed ordet "definition") funktionen. Et eksempel på begge er her:

//erklæring
int doSomething (int x, int y);

//definition
int doSomething (int x, int y)
{
retur (x * y);
}

Svar 4:

En erklæring er netop det - den er der for at fortælle kompilatoren at forvente at finde definitionen senere i kildekoden. Det er normalt i en headerfil (.h eller .hpp-udvidelse), og kilden (c, eller cpp-udvidelsen) har normalt definitionen. Formålet med erklæringen er at tillade en programmør, der bruger den funktion eller klasse, du erklærer, at kunne bruge funktionen eller klassen - de har ikke brug for definitionen, da det er kildekoden, der fortæller kompilatoren, hvordan man faktisk gør hvad funktionen / klassen skal gøre, men erklæringen fortæller dem, hvad funktionen returnerer, hvilke argumenter funktionen tager, og navnet på funktionen, så de senere kan kalde funktionen fra deres kode. Hvis det ikke var klart indtil videre, har definitionen kildekoden til at definere (dermed ordet "definition") funktionen. Et eksempel på begge er her:

//erklæring
int doSomething (int x, int y);

//definition
int doSomething (int x, int y)
{
retur (x * y);
}

Svar 5:

En erklæring er netop det - den er der for at fortælle kompilatoren at forvente at finde definitionen senere i kildekoden. Det er normalt i en headerfil (.h eller .hpp-udvidelse), og kilden (c, eller cpp-udvidelsen) har normalt definitionen. Formålet med erklæringen er at tillade en programmør, der bruger den funktion eller klasse, du erklærer, at kunne bruge funktionen eller klassen - de har ikke brug for definitionen, da det er kildekoden, der fortæller kompilatoren, hvordan man faktisk gør hvad funktionen / klassen skal gøre, men erklæringen fortæller dem, hvad funktionen returnerer, hvilke argumenter funktionen tager, og navnet på funktionen, så de senere kan kalde funktionen fra deres kode. Hvis det ikke var klart indtil videre, har definitionen kildekoden til at definere (dermed ordet "definition") funktionen. Et eksempel på begge er her:

//erklæring
int doSomething (int x, int y);

//definition
int doSomething (int x, int y)
{
retur (x * y);
}

Svar 6:

En erklæring er netop det - den er der for at fortælle kompilatoren at forvente at finde definitionen senere i kildekoden. Det er normalt i en headerfil (.h eller .hpp-udvidelse), og kilden (c, eller cpp-udvidelsen) har normalt definitionen. Formålet med erklæringen er at tillade en programmør, der bruger den funktion eller klasse, du erklærer, at kunne bruge funktionen eller klassen - de har ikke brug for definitionen, da det er kildekoden, der fortæller kompilatoren, hvordan man faktisk gør hvad funktionen / klassen skal gøre, men erklæringen fortæller dem, hvad funktionen returnerer, hvilke argumenter funktionen tager, og navnet på funktionen, så de senere kan kalde funktionen fra deres kode. Hvis det ikke var klart indtil videre, har definitionen kildekoden til at definere (dermed ordet "definition") funktionen. Et eksempel på begge er her:

//erklæring
int doSomething (int x, int y);

//definition
int doSomething (int x, int y)
{
retur (x * y);
}

Svar 7:

En erklæring er netop det - den er der for at fortælle kompilatoren at forvente at finde definitionen senere i kildekoden. Det er normalt i en headerfil (.h eller .hpp-udvidelse), og kilden (c, eller cpp-udvidelsen) har normalt definitionen. Formålet med erklæringen er at tillade en programmør, der bruger den funktion eller klasse, du erklærer, at kunne bruge funktionen eller klassen - de har ikke brug for definitionen, da det er kildekoden, der fortæller kompilatoren, hvordan man faktisk gør hvad funktionen / klassen skal gøre, men erklæringen fortæller dem, hvad funktionen returnerer, hvilke argumenter funktionen tager, og navnet på funktionen, så de senere kan kalde funktionen fra deres kode. Hvis det ikke var klart indtil videre, har definitionen kildekoden til at definere (dermed ordet "definition") funktionen. Et eksempel på begge er her:

//erklæring
int doSomething (int x, int y);

//definition
int doSomething (int x, int y)
{
retur (x * y);
}

Svar 8:

En erklæring er netop det - den er der for at fortælle kompilatoren at forvente at finde definitionen senere i kildekoden. Det er normalt i en headerfil (.h eller .hpp-udvidelse), og kilden (c, eller cpp-udvidelsen) har normalt definitionen. Formålet med erklæringen er at tillade en programmør, der bruger den funktion eller klasse, du erklærer, at kunne bruge funktionen eller klassen - de har ikke brug for definitionen, da det er kildekoden, der fortæller kompilatoren, hvordan man faktisk gør hvad funktionen / klassen skal gøre, men erklæringen fortæller dem, hvad funktionen returnerer, hvilke argumenter funktionen tager, og navnet på funktionen, så de senere kan kalde funktionen fra deres kode. Hvis det ikke var klart indtil videre, har definitionen kildekoden til at definere (dermed ordet "definition") funktionen. Et eksempel på begge er her:

//erklæring
int doSomething (int x, int y);

//definition
int doSomething (int x, int y)
{
retur (x * y);
}

Svar 9:

En erklæring er netop det - den er der for at fortælle kompilatoren at forvente at finde definitionen senere i kildekoden. Det er normalt i en headerfil (.h eller .hpp-udvidelse), og kilden (c, eller cpp-udvidelsen) har normalt definitionen. Formålet med erklæringen er at tillade en programmør, der bruger den funktion eller klasse, du erklærer, at kunne bruge funktionen eller klassen - de har ikke brug for definitionen, da det er kildekoden, der fortæller kompilatoren, hvordan man faktisk gør hvad funktionen / klassen skal gøre, men erklæringen fortæller dem, hvad funktionen returnerer, hvilke argumenter funktionen tager, og navnet på funktionen, så de senere kan kalde funktionen fra deres kode. Hvis det ikke var klart indtil videre, har definitionen kildekoden til at definere (dermed ordet "definition") funktionen. Et eksempel på begge er her:

//erklæring
int doSomething (int x, int y);

//definition
int doSomething (int x, int y)
{
retur (x * y);
}