Void (datový typ)

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Void je datový typ v jazyce C a některých dalších programovacích jazycích, který slouží pro označení absence hodnoty. Jedná se o speciální typ, který nemá žádnou hodnotu a nemůže být ani vytvořen žádnou hodnotou. Používá se například jako návratový typ funkcí, které nevracejí žádnou hodnotu. Typ void se také používá pro označení ukazatelů, které nejsou vázány na žádný konkrétní typ. Tyto ukazatele lze použít například pro práci s pamětí nebo pro předávání dat mezi funkcemi, které mají různé návratové typy. Použití void datového typu může napomoci k lepší čitelnosti a strukturování kódu, jelikož jasně označuje, že jeho hodnota není důležitá a nepotřebuje být zpracována.

Název void (anglicky prázdný) v informatice označuje dva odlišné datové typy. V programovacích jazycích odvozených od jazyka C a ALGOL68 se tak 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. Oproti tomu ve funkcionálních jazycích (např. v Haskellu) a teoretické počítačové vědě, potažmo teorii typů, se jako void označuje prázdný typ.

Podprogram bez návratové hodnoty

V některých jazycích pro imperativní programování se pomocí datového typu void deklarují funkce, které nevracejí návratovou hodnotu, ale volají se kvůli vyvolání příslušného vedlejšího účinku. 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. +more procedura), jako například v programovacím jazyce Visual Basic nebo Pascal.

V C a C++

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).

V jazyce C (a kvůli zpětné kompatibilitě je to možné použít též v C++) se také typ void používá pro definici bezparametrické funkce: pokud je jediným parametrem funkce nepojmenovaný parametr typu void, indikuje to, že funkce nepoužívá žádné parametry.

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 buď jako celá čísla (int), nebo jako ukazatele na char. +more 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í na void, aby se toto upozornění potlačilo. 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.

Sémantika explicitního použití void a naopak vynechání parametrů v prototypu funkce se mezi jazyky C a C++ liší, jak ukazuje následující tabulka:

VýznamCEkvivalent v C++
Funkce bez parametrůvoid f(void)void f (preferované) void f(void)
Konstantní, ale neznámý počet parametrůvoid f (od C99 zastaralé)žádný přesný ekvivalent, lze napodobit pomocí: template void f(Ts... ts)

Ukazatel na void

Programovací jazyk C a C++ také podporují ukazatele na typ void (definováno jako void *), což je ale použití stejného termínu pro nesouvisející význam. 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. +more 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.

Prázdný typ

V teorii typů existuje typ, pro který neexistuje žádná hodnota. Tento prázdný typ (neboli spodní typ, bottom) se v některých programovacích jazycích (např. +more v Haskellu) označuje jako void (resp. Void). (Naopak ekvivalentem typu void tak, jak je popsán výše, je ve funkcionálních jazycích jednotkový typ, unit, označovaný např. pomocí . ) Prázdný typ je podtypem všech typů. Prakticky se prázdný typ používá pro vyjádření návratového typu funkce, která nikdy nevrátí výsledek (např. protože se zacyklí), případně pro indikaci chyby či nemožné alternativy. Neexistuje žádná totální funkce do typu void (s triviální výjimkou unikátní funkce typu void→void).

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top