void
— спеціальний тип результату функцій, який позначає що функція нічого не повертає. Застосовується в мовах програмування, похідних від C або Algol68.
Зазвичай такі функції застосовуються заради їхніх побічних ефектів, таких як виконання якогось завдання або запис у вихідні параметри. Використання типу void
у такому контексті можна порівняти з процедурами у мові Pascal або підпрограмами у Fortran, BASIC. Тип void
подібний до [en], що використовується у функційних мовах програмування та в теорії типів.
Мови C та також підтримують вказівник на тип void
(визначається як void *
), але це не пов'язане поняття. Змінні цього типу є вказівниками на дані невизначеного типу, тому в цьому контексті (але не в інших) void *
діє приблизно як універсальний або верхній тип. Програма, ймовірно, може перетворити вказівник на будь-який тип даних (крім вказівника функції) у вказівник на void
і назад до початкового типу, не втративши інформації, що робить ці вказівники корисними для поліморфних функцій. Стандарт мови C не гарантує, що різні типи вказівників мають однаковий розмір або вирівнювання.
Застосування в С та С++
Функція з типом результату void
закінчується або досягненням кінця функції, або виконанням оператора return
без поверненого значення. Тип void
можна також використати як єдиний аргумент прототипу функції, що вказує на те, що функція не приймає аргументів.
Важливо, що, попри назву, у всіх цих ситуаціях тип void
є одиничним типом, а не нульовим або нижнім типом (який іноді помилково називають «тип void
»), хоча, на відміну від реального одиничного типу, який є атомарним, тип void
не має способу представити значення, а мова не надає жодного способу оголосити об'єкт або представити значення з типом void
.
В ранніх версіях C функції без конкретного результату за замовчуванням повертали тип void
, а функції без аргументів просто мали порожні списки аргументів. Вказівники на не типізовані дані оголошувались як цілі числа або вказівники на символи. Деякі ранні компілятори C мали функцію, яка генерувала попередження про будь-який виклик функції, який не використовував повернуте значення функції. Старий код іноді передає такі виклики функції як void
для придушення цього попередження. У 1979—1980 рр., коли Б'ярн Страуструп розпочав свою роботу над C++, void
та вказівники void
були частиною діалекту мови С, підтримуваного AT&T сумісними компіляторами.
Явне використання void
замість надання аргументів у прототипі функції має різну семантику в C та C++. Порівняння наведено в таблиці:
C | C++ еквівалент |
---|---|
void f(void); | void f(); кращеvoid f(void); |
void f(); приймає постійну, але невідому кількість аргументів | template <typename... Ts> void f(Ts... ts) {} не повністю рівнозначно |
Прототипи в С без аргументів, наприклад void f()
не рекомендуються до використання, починаючи з (C99).
Застосування в Haskell
На відміну від C++, у функціональній мові програмування Haskell тип void
позначає порожній тип, який не існує й не може мати значень. Функція типу void
не повертає результатів, а програма з побічним ефектом із типом IO Void
не завершує роботу або зазнає аварійного завершення. Зокрема, немає загальних (total) функцій типу void
.
Примітки
- http://cm.bell-labs.com/cm/cs/who/dmr/chist.html [ 2015-03-28 у Wayback Machine.], «Standardisation.»
- Stroustrup, Bjarne (2009). Programming: Principles and Practice Using C++. Boston: Addison-Wesley. с. 996. ISBN .
- Bjarne Stroustrup, C and C++: Case Studies in Compatibility. Reconcilable differences? You decide [ 1 травня 2009 у Wayback Machine.], [en], 1 вересня 2002; print version [ 10 серпня 2011 у Wayback Machine.]
- . Архів оригіналу за 22 січня 2021. Процитовано 31 січня 2021.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
void specialnij tip rezultatu funkcij yakij poznachaye sho funkciya nichogo ne povertaye Zastosovuyetsya v movah programuvannya pohidnih vid C abo Algol68 Zazvichaj taki funkciyi zastosovuyutsya zaradi yihnih pobichnih efektiv takih yak vikonannya yakogos zavdannya abo zapis u vihidni parametri Vikoristannya tipu void u takomu konteksti mozhna porivnyati z procedurami u movi Pascal abo pidprogramami u Fortran BASIC Tip void podibnij do en sho vikoristovuyetsya u funkcijnih movah programuvannya ta v teoriyi tipiv Movi C ta C takozh pidtrimuyut vkazivnik na tip void viznachayetsya yak void ale ce ne pov yazane ponyattya Zminni cogo tipu ye vkazivnikami na dani neviznachenogo tipu tomu v comu konteksti ale ne v inshih void diye priblizno yak universalnij abo verhnij tip Programa jmovirno mozhe peretvoriti vkazivnik na bud yakij tip danih krim vkazivnika funkciyi u vkazivnik na void i nazad do pochatkovogo tipu ne vtrativshi informaciyi sho robit ci vkazivniki korisnimi dlya polimorfnih funkcij Standart movi C ne garantuye sho rizni tipi vkazivnikiv mayut odnakovij rozmir abo virivnyuvannya Zastosuvannya v S ta S Funkciya z tipom rezultatu void zakinchuyetsya abo dosyagnennyam kincya funkciyi abo vikonannyam operatora return bez povernenogo znachennya Tip void mozhna takozh vikoristati yak yedinij argument prototipu funkciyi sho vkazuye na te sho funkciya ne prijmaye argumentiv Vazhlivo sho popri nazvu u vsih cih situaciyah tip void ye odinichnim tipom a ne nulovim abo nizhnim tipom yakij inodi pomilkovo nazivayut tip void hocha na vidminu vid realnogo odinichnogo tipu yakij ye atomarnim tip void ne maye sposobu predstaviti znachennya a mova ne nadaye zhodnogo sposobu ogolositi ob yekt abo predstaviti znachennya z tipom void V rannih versiyah C funkciyi bez konkretnogo rezultatu za zamovchuvannyam povertali tip void a funkciyi bez argumentiv prosto mali porozhni spiski argumentiv Vkazivniki na ne tipizovani dani ogoloshuvalis yak cili chisla abo vkazivniki na simvoli Deyaki ranni kompilyatori C mali funkciyu yaka generuvala poperedzhennya pro bud yakij viklik funkciyi yakij ne vikoristovuvav povernute znachennya funkciyi Starij kod inodi peredaye taki vikliki funkciyi yak void dlya pridushennya cogo poperedzhennya U 1979 1980 rr koli B yarn Straustrup rozpochav svoyu robotu nad C void ta vkazivniki void buli chastinoyu dialektu movi S pidtrimuvanogo AT amp T sumisnimi kompilyatorami Yavne vikoristannya void zamist nadannya argumentiv u prototipi funkciyi maye riznu semantiku v C ta C Porivnyannya navedeno v tablici C C ekvivalent void f void void f krashe void f void void f prijmaye postijnu ale nevidomu kilkist argumentiv template lt typename Ts gt void f Ts ts ne povnistyu rivnoznachno Prototipi v S bez argumentiv napriklad void f ne rekomenduyutsya do vikoristannya pochinayuchi z C99 Zastosuvannya v HaskellNa vidminu vid C u funkcionalnij movi programuvannya Haskell tip void poznachaye porozhnij tip yakij ne isnuye j ne mozhe mati znachen Funkciya tipu void ne povertaye rezultativ a programa z pobichnim efektom iz tipom IO Void ne zavershuye robotu abo zaznaye avarijnogo zavershennya Zokrema nemaye zagalnih total funkcij tipu void Primitkihttp cm bell labs com cm cs who dmr chist html 2015 03 28 u Wayback Machine Standardisation Stroustrup Bjarne 2009 Programming Principles and Practice Using C Boston Addison Wesley s 996 ISBN 0 321 54372 6 Bjarne Stroustrup C and C Case Studies in Compatibility Reconcilable differences You decide 1 travnya 2009 u Wayback Machine en 1 veresnya 2002 print version 10 serpnya 2011 u Wayback Machine Arhiv originalu za 22 sichnya 2021 Procitovano 31 sichnya 2021