2013-09-09 3 views
7

Например, если я сделал переменную:Что может использоваться для переменной void?

void helloWorld; 

Что я мог сделать с этим? Поскольку он ничего не представляет, сначала я думал, что с этим ничего не поделаешь. Я знаю, что функции используют void без возвращаемого значения, но имеют ли переменные цель?

- EDIT -

Я узнал ответ. Я теперь знаю, что переменные void являются незаконными в языках программирования, таких как Java, C++ и C. Спасибо за все ваши ответы!

+1

Это вызовет ошибку компиляции в 'java'. Если вы не подразумеваете «Пустота». –

+0

Говоря строго о Java, 'void' - это ключевое слово, которое нельзя использовать с переменными. Тем не менее, 'Void' является неинсталлируемым объектом, поддерживающим ключевое слово' void', и, поскольку это объект, он действительно может использоваться как тип. – Gamb

+4

Я уверен, что вы не можете определить переменную 'void' на любом из трех языков, о которых вы спрашиваете; что делает вопрос довольно бессмысленным. –

ответ

9

void переменные недействительны в C/C++, потому что компилятор не может определить их размер. void действителен только как список аргументов функции (не принимает никаких аргументов) или возвращает типы (ничего не возвращает).

Существует void *, который просто означает «указатель любого типа» и является общим типом указателя, но вам не разрешено разыгрывать его. пункт 19

+1

Формально причина, по которой они являются недопустимыми, заключается в том, что 'void' является * неполным типом *. –

+0

@R ..; Да ты прав. Это из-за неполного типа (C99 6.2.6, пункт 19) – haccks

4

C99 6.2.6 говорит:

аннулируются типа содержит пустое множество значений; это недопустимый тип , который не может быть заполнен.

Кроме того, void в C, является типом, который не имеет размера. Таким образом, если вы должны объявить переменную типа void, компилятор не знает, сколько памяти выделяется для нее.
Итак, you can't declare a void variable, потому что он неполного типа.

void полезен только тогда, когда мы говорим о указателях (void*), так как он позволяет объявлять общий указатель без указания типа.

Прочтите этот answer, указанный Keith Thompson для более подробного объяснения.

+0

Так что _possible_ (но бесполезно) объявить переменную 'void helloWorld' в C? Ссылка на документ стандартов, который вы, по-видимому, использовали, будет приятным. –

+2

Этот ответ не объявляет переменную void: он вычисляет выражение невоичной переменной и отбрасывает его в пустоту. Я просто попытался получить 'gcc', чтобы принять объявление переменной' void helloWorld' (в отличие от выражения '(void) helloWorld', где' helloWorld' объявлен как не-'void') и не удалось. –

+0

@MarnixKlooster; Я прочитал это в этом [учебнике] (http://www.crasseux.com/books/ctutorial/void.html). – haccks

3

В Java вы не можете использовать void как тип переменной.

Однако вы можете использовать Void

Пустоты класс является uninstantiable класса заполнителя провести ссылки на объект класса, представляющего пустоту ключевого слова Java.

Вы не будете в состоянии сделать что-нибудь с ним, за исключением получения Class объекта, но это static поля в любом случае, так что вам не нужна ссылка на объект.

0

Я думаю, вы не знаете, что такое «пустота» ??? делать вам ..

маленькой и быстрой информация о ничтожной

пустоте не тип данных, как межды или полукокс, который используется для объявления переменных.

недействительным является возвращение типа

аннулируется возвращаемый тип используется, чтобы сказать, что мы не возвращаемся ничего из этой функции.

Если вы ничего не возвращаете, вам нужно написать void как возвращаемый тип для функции (включая основную функцию). в качестве альтернативы вы можете сказать ....

return 0; 

в конце определения функции.

Надеюсь, это поможет вам понять, что пусто.

+0

Это тот же случай с любым языком программирования (c, C++, java, C#, vb.net, js, motif, языки сценариев, pascal, cobal) ... почти везде – nikhil

+1

Я знаю, что такое тип пустоты, m просто спрашивает, можно ли его использовать в переменной. Я уже получил ответ, поэтому спасибо за ваш ответ. Я объявлю, что я получил свой ответ в вышеупомянутом сообщении .... – Taking1n1

1

В C можно привести параметры функции к аннулированию

(void)myarg; 

это полезно только для работы с неиспользованным предупреждения параметров однако.