void

void - тип, специфікатор типу і ключове слово в мовах програмування Сі, Сі + +, Java, C #, Objective-C, D і ActionScript.


1. Історія

Серед сучасних мов програмування ключове слово void вперше з'явилося в Сі + + для підтримки концепції узагальнених покажчиків. Тим не менш, завдяки швидкому запозичення у Сі + +, першим нормативним документом, що містить це ключове слово, став стандарт мови Сі, опублікований ANSI в 1989р. У рамках мови Сі + + void був стандартизований в 1998р.

Згодом ключове слово void та пов'язані з ним мовні конструкції були успадковані мовами Java і C #, D.

2. Синтаксис

Синтаксично, void є одним з специфікатор типу, що входять в більш загальну групу специфікатор оголошення, але в деяких мовах програмування реалізований у вигляді оператора. Наприклад, у мові JavaScript void є оператором і завжди повертає undefined :

 void  expression  ===  undefined  ; 

3. Семантика

Семантика ключового слова void не підкоряється загальній семантиці специфікатор типу і залежить від способу вживання:

  • В якості імені типу значення, що повертається функцією: вказує на те, що функція не повертає значення, а виклик такої функції є void-виразом. Тіло такої функції не повинно містити операторів return з виразами. Наприклад:
     void  f  (  )  ; 
  • У складі декларатора функції: вказує на те, що функція має прототип і не має параметрів. Наприклад:
     int  f  (  void  )  ; 
  • В якості імені цільового типу операції приведення: таке void-приведення означає відмову від значення приводиться вирази. Наприклад:
     # Define promote_ptr () ((void) (ptr + +)) 
  • У складі імені типу void-покажчика: такий покажчик здатний представляти значення будь-яких вказівників на об'єктні та неповні типи, тобто адреси будь-яких об'єктів. Таким чином, void -покажчик є узагальненим об'єктним покажчиком. void -покажчики не здатні представляти значення покажчиків на функції. За винятком випадку приведення константного null-покажчика до покажчика на функцію в Сі, явних і неявних перетворень між void -покажчиками і покажчиками на функції немає.

Тип void визначений як неповний тип, який не може бути доповнений. Як наслідок, цей тип не повинен бути використаний там, де допускаються тільки повні типи, наприклад, в якості типу параметра у визначенні функції.


4. Мова Сі до введення void

До публікації першого стандарту Сі в 1989р., Яка ввела в мову ключове слово void загальноприйнятою практикою було оголошувати функції і не повертають значень без використання специфікатор типів. Хоча семантично таке оголошення було еквівалентно оголошенню функції, що повертає значення типу int, навмисно опущені специфікатори типу підкреслювали, що функція не повертає ніякого певного значення. Наприклад:

 f  (  long  l  )  {  / * ... * /  } 

Схожим чином, визначення функцій, які не мають параметрів записувалися з порожніми круглими дужками:

 int  main  (  )  {  / * ... * /  } 

В якості узагальненого покажчика використовувався покажчик на char. Більш того, сучасні стандарти вимагають, щоб подання та вимоги щодо вирівнюванню для void -покажчиків були тими ж, що для покажчиків на char, що означає взаємозамінність цих типів.

Перший стандартний діалект Сі ( C89), хоча вже дозволяв записи з ключовим словом void, все ж таки допускав таке використання неявного int в цілях підтримки сумісності з існуючим кодом. Сучасний діалект Сі ( C99) не допускає відсутність специфікатор типів в іменах типів і оголошеннях.


5. Приклади

Показані приклади оголошення функції, що повертає void.

5.1. C + +

 void  message  (  ) 

5.2. Java

 void  message  (  ) 

5.3. C #

 void  message  (  ) 

5.4. C

 void  message  (  void  ) 

5.5. Objective-C

 -  (  void  )  message  ; 

5.6. D

 void  message  (  ) 

5.7. ActionScript

 function  message  (  )  :  void 

Примітки

Перегляд цього шаблону - Ru.wikipelink11 Типи даних
Неінтерпретіруемие
Числові
Текстові
Покажчик

Адреса Посилання

Композитні
Інші

Логічний Нижчий тип Колекція Перераховуються тип Виняток First-class function Opaque data type Recursive data type Семафор Потік Вищий тип Type class Unit type Void

Пов'язані теми