Void (datový typ)

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

Void je v informatice speciální datový typ, který v několika programovacích jazycích odvozených od jazyka C a ALGOL68 označuje typ pro výsledek funkce, která při návratu neposkytuje do volajícího výrazu žádnou výslednou (návratovou) hodnotu.

Charakteristika[editovat | editovat zdroj]

Návratový datový typ void se obvykle používá u funkcí, které nevrací konkrétní hodnotu, ale jsou využívány kvůli vytváření vedlejších účinků, jako je plnění některých úkolů nebo výpis výstupní parametrů. Použití funkcí s návratovým typem void je v tomto ohledu srovnatelné se syntaktickými konstrukty v jiných programovacích jazycích, které v takovém případě používají speciální typ podprogramu (tzv. procedura), jako například v programovacím jazyce jazyce Visual Basic nebo Pascal, případně podobně jako typ jednotky používaný ve funkcionálních programovacích jazycích a v teorii typů.

Programovací jazyk C a C++ podporují ukazatele na typ void (definováno jako void *), ale to je nesouvisející pojem. Proměnné tohoto typu jsou ukazatele na data blíže nespecifikovaného typu, takže v tomto kontextu (ale ne jinak) působí void * zhruba jako univerzální ukazatel nebo zastřešující top typ. Program může převést data zpřístupněná takovým ukazatelem na libovolný datový typ (s výjimkou ukazatele na funkci) a zpět beze ztráty informací, což činí tyto ukazatele užitečné pro polymorfní funkce. Standardní jazyk C nezaručuje, že jiné typy ukazatelů mají stejnou velikost.

V C a C++[editovat | editovat zdroj]

Funkce vracející jako výsledek typ void končí buď dosažením konce funkce nebo provedením příkazu return bez argumentu (bez vrácené hodnoty). Typ void může také objevit jako jediný parametr funkce u prototypu funkce, který indikuje že funkce nepoužívá žádné parametry. Všimněte si, že bez ohledu na jméno, ve všech těchto situacích slouží typ void jako jednotkový typ a ne jako nula nebo spodní typ (který je někdy poněkud matoucím způsobem také nazýván jako „void typ“), i když na rozdíl od skutečného typu jednotky, což je singleton, postrádá typ void možnost, aby zastupoval svou hodnotu a jazyk neposkytuje žádný způsob, jak deklarovat objekt nebo představovat hodnotu typu void.

V prvních verzích jazyka C přebírala funkce nevracející konkrétní výsledek implicitní návratový typ int a funkce bez argumentů měla prostě prázdný seznam argumentů. Ukazatele na netypovaná data byla deklarována jako celá čísla (int) nebo jako ukazatele na char. Některé dřívější překladače jazyka C měly vlastnost, která je nyní považována za nepříjemnou, že generovaly upozornění při volání funkce, které nevyužilo vrácenou hodnotu. Starší kód proto používal přetypování takových volání, aby bylo toto upozornění potlačeno. V letech 1979—1980, kdy Bjarne Stroustrup začal pracovat na C++, byl datový typ void a ukazatel typu void již součástí dialektů jazyka C podporovaných překladači odvozenými od překladačů AT&T.[1]

Explicitní použití void proti nepoužití žádných argumentů v prototypu funkce používá v jazyce C a C++ různé sémantiky zápisu, jak ukazuje následující tabulka:[2]

C C++ ekvivalent
void f(void); void f(); (preferované)

void f(void);

void f(); (přijímá konstantní, ale neznámý počet argumentů) žádný ekvivalent

Prototyp funkce v jazyce C bez uvedených argumentů, např. void f() jak je uvedeno výše, je však již od verze C99 považováno za zastaralé.[3]

Reference[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku Void type na anglické Wikipedii.

  1. http://cm.bell-labs.com/cm/cs/who/dmr/chist.html, "Standardisation."
  2. [s.l.] : [s.n.]. ISBN 0-321-54372-6.  
  3. Bjarne Stroustrup, C and C++: Case Studies in Compatibility.