Tipo vacío

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Tipo de retorno para funciones que no emiten valores cuando se llama

El tipo void, en varios lenguajes de programación derivados de C y Algol68, es el tipo de retorno de una función que regresa normalmente, pero no proporciona un valor de resultado a su llamador. Por lo general, estas funciones se llaman por sus efectos secundarios, como realizar alguna tarea o escribir en sus parámetros de salida. El uso del tipo void en tal contexto es comparable a los procedimientos en Pascal y a las construcciones sintácticas que definen subrutinas en Visual Basic. También es similar al tipo de unidad utilizado en lenguajes de programación funcionales y teoría de tipos. Consulte Tipo de unidad#En lenguajes de programación para obtener una comparación.

C y C++ también admiten el puntero al tipo void (especificado como void *), pero esta es una noción no relacionada. Las variables de este tipo son punteros a datos de un tipo unspecified, por lo que en este contexto (pero no en los demás) void * actúa más o menos como un tipo universal o superior. Un programa puede convertir un puntero a cualquier tipo de datos (excepto un puntero a función) en un puntero a anular y volver al tipo original sin perder información, lo que hace que estos punteros sean útiles para funciones polimórficas. El estándar del lenguaje C no garantiza que los diferentes tipos de punteros tengan el mismo tamaño o alineación.

En C y C++

Una función con tipo de resultado nulo finaliza al llegar al final de la función o al ejecutar una declaración de devolución sin valor devuelto. El tipo void también puede reemplazar la lista de argumentos de un prototipo de función para indicar que la función no toma argumentos. Tenga en cuenta que en todas estas situaciones, void no es un calificador de tipo en ningún valor. A pesar del nombre, esto es semánticamente similar a un tipo de unidad implícita, no a un tipo cero o inferior (que a veces se denomina confusamente "tipo vacío"). A diferencia de un tipo de unidad real que es un singleton, el tipo void carece de una forma de representar su valor y el lenguaje no proporciona ninguna forma de declarar un objeto o representar un valor con el tipo void.

En las primeras versiones de C, las funciones sin un resultado específico tenían por defecto un tipo de retorno int y las funciones sin argumentos simplemente tenían listas de argumentos vacías. Los punteros a datos sin tipo se declararon como números enteros o punteros a char. Algunos de los primeros compiladores de C tenían la característica, ahora vista como una molestia, de generar una advertencia en cualquier llamada a función que no utilizara el valor devuelto por la función. El código antiguo a veces convierte dichas llamadas a funciones en void para suprimir esta advertencia. Cuando Bjarne Stroustrup comenzó su trabajo en C++ en 1979-1980, los punteros vacíos y vacíos eran parte del dialecto del lenguaje C soportado por los compiladores derivados de AT&T.

El uso explícito de void versus no dar argumentos en un prototipo de función tiene una semántica diferente en C y C++, como se detalla en la siguiente tabla:

C C++ equivalente
void f(void);void f(); ()preferido)
void f(void);
void f(); ()acepta un número constante pero desconocido de argumentos) template void f(Ts... ts) {}

(no estrictamente equivalente)

La sintaxis de C para declarar una función (no variable) con un número de parámetros aún no especificado, p.e. void f() arriba, quedó obsoleto en C99. En C23 (y C++), un prototipo de función con paréntesis vacíos declara una función con cero parámetros.

En Haskell

Al contrario de C++, en el lenguaje de programación funcional Haskell el tipo vacío denota el tipo vacío, que no tiene habitantes [1]. Una función en el tipo void no devuelve resultados y un programa con efectos secundarios con firma de tipo IO Void no finaliza o falla. En particular, no hay funciones totales en el tipo vacío.

Contenido relacionado

Historia de la cámara

La historia de la cámara comenzó incluso antes de la introducción de la fotografía. Las cámaras evolucionaron desde la cámara oscura a través de muchas...

Tubo de vacío

Un tubo de vacío, tubo de electrones o válvula termoiónica, es un dispositivo que controla el flujo de corriente eléctrica en un alto vacío entre...

Señales de humo

La señal de humo es una de las formas más antiguas de comunicación a larga distancia. Es una forma de comunicación visual utilizada a larga distancia. En...
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save