Doporučená, 2022

Redakce Choice

Rozdíl mezi definicí a deklarací

Definice a deklarace jsou velmi matoucí, pokud jste novým programováním. Tyto dva koncepty se liší v některých ohledech, protože definice zahrnuje přiřazení paměti proměnným, zatímco v paměti deklarace není přiděleno. Deklaraci lze provést více než jednou, naopak, entitu lze v programu definovat přesně jednou.

Definice je automaticky deklarací ve většině scénářů. Pojďme pochopit rozdíl mezi definicí a deklarací s podrobným srovnávacím grafem.

Srovnávací graf

Základ pro srovnáníDefiniceProhlášení
ZákladníUrčuje hodnotu uloženou v proměnné, funkci nebo třídě.Určuje název a typ proměnné, funkce, třídy atd.
Přidělení pamětiVyskytne seNeprovádí se.
OpakováníPříkazy nelze definovat znovu, pokud je již definováno.Zrušení může být snadno možné.
RozsahStanoví se doba trváníJe uvedena viditelnost

Definice definice

Definice identifikuje kód nebo data spojená s názvem proměnné, funkce, třídy, atd. Definice je nutně nutná kompilátorem alokovat úložný prostor pro deklarovanou entitu. Když je proměnná definována, uchovává množství paměti sestávající z několika bytů pro tuto proměnnou. Definice funkce vytváří kód funkce. V programu můžeme definovat programový prvek pouze jednou, protože definice je jedinečná specifikace programového prvku. Vztah mezi deklarací a definicí může být mnohostranný .

V některých situacích nemůže být prvek programu definován, ale deklarován, například když funkce není nikdy vyvolána nebo jeho adresa není nikdy použita, i když je deklarována. Jiným příkladem je to, ve kterém definice třídy není použita, zatímco musí být deklarována.

Definice prohlášení

Deklarace slouží k určení názvů programu, jako je název proměnné, funkce, jmenný prostor, třídy atd. V programu bez jeho deklarace nelze použít žádný název. Programové prvky mohou být deklarovány vícekrát, na rozdíl od definice. Více deklarací může být dosaženo pouze tehdy, když jsou různá prohlášení vytvořena s použitím identického formátu. Deklarace je prostředkem zajištění viditelnosti programového prvku z pohledu kompilátorů.

Prohlášení slouží k definici, pouze v určitých případech není podmínka uvedena, která je uvedena níže.

  • Když je statický datový člen deklarován uvnitř deklarace třídy, v tomto případě se nejedná o deklaraci. Protože generuje pouze jednu kopii pro všechny objekty třídy a statické datové členy, jsou součástí objektů daného typu třídy.
  • Pokud je deklarace příkazem typedef.
  • Proměnná je deklarována bez inicializátoru nebo funkce, ale obsahuje externí specifikátory. Označuje, že definice může být pro jinou funkci a poskytuje externí spojení.
  • Deklarace názvu třídy bez definice, jako je třída T;

Obvykle se prohlášení provádí v rozsahu . Rozsah určuje viditelnost deklarovaného jména a trvání definovaného objektu.

Klíčové rozdíly mezi definicí a deklarací

  1. Definice prvku programu určuje hodnotu přidruženou k tomuto prvku. Na druhé straně deklarace programového prvku specifikuje jeho název a typ pro kompilátor.
  2. Definice prvku programu si vyhrazuje určité množství paměti, zatímco deklarace nezahrnuje přidělení paměti.
  3. Programový prvek může být deklarován vícekrát. Definice naopak obsahuje jedinečnou specifikaci s názvem programového prvku, který může být rozlišován jakýmkoliv kódem nebo daty.
  4. Rozsah v deklaraci popisuje viditelnost proměnné, funkce, objektu, třídy, výčtu, atd. Naproti tomu v definici se rozsah týká délky trvání.

Definice Příklad

  • Definice proměnné a prohlášení:
    int r = 10;
  • Definice funkce:
     int add (int x, int y) {int a; a = x + y; návrat a; } 

Prohlášení Příklad

  • Prohlášení o proměnné:
    extern int r;
  • Prohlášení funkce:
    int add (int p1, int p2);

Závěr

Proces deklarace se používá k tomu, aby byl programový prvek viditelný pro kompilátor a nevyžaduje přidělení paměti. Definice je naopak deklarace, která rezervuje úložiště, jednoduchým slovem kompilátor rezervuje paměťový prostor pro deklarovanou entitu.

Top