De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

El tipo void , en varios lenguajes de programación derivados de C y Algol68 , es el tipo para el resultado 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 construcciones sintácticas que definen subrutinas en Visual Basic . También es similar al tipo de unidad que se utiliza en los lenguajes de programación funcionales.y teoría de tipos. Consulte Número de tipo de unidad en lenguajes de programación para ver una comparación.

C y C ++ también admiten el puntero al tipo void (especificado como void *), pero esta noción no está relacionada. Las variables de este tipo apuntan a datos de un tipo no especificado , por lo que en este contexto (pero no en los otros) void *actúa aproximadamente como un tipo universal o superior . Un programa probablemente puede convertir un puntero en cualquier tipo de datos (excepto un puntero de función ) en un puntero para 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 de lenguaje C no garantiza que los diferentes tipos de punteros tengan el mismo tamaño o alineación.

En C y C ++ [ editar ]

Una función con el tipo de resultado nulo finaliza al llegar al final de la función o al ejecutar una declaración de retorno sin valor devuelto. El tipo void también puede aparecer como el único argumento de un prototipo de función para indicar que la función no acepta argumentos. Tenga en cuenta que a pesar del nombre, en todas estas situaciones, el tipo vacío sirve como un tipo de unidad , no como un tipo cero o inferior (que a veces se llama confusamente el "tipo vacío"), aunque 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 resultado específico tenían por defecto un tipo de retorno de inty 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 compiladores de C tempranos tenían la característica, ahora vista como una molestia, de generar una advertencia en cualquier llamada de función que no usara el valor devuelto por la función. En ocasiones, el código antiguo convierte estas llamadas a funciones en anuladas para suprimir esta advertencia. Cuando Bjarne Stroustrup comenzó su trabajo en C ++ en 1979-1980, los punteros void y void formaban parte del dialecto del lenguaje C compatible con compiladores derivados de AT&T. [1]

El uso explícito de void frente a 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: [2]

El prototipo de CA sin argumentos, por ejemplo, el void f()anterior, ha quedado obsoleto en C99 , [3] sin embargo.

En Haskell [ editar ]

Muy 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 vacío no devuelve resultados y un programa de efectos secundarios con firma de tipo IO Void no finaliza o se bloquea. En particular, no hay funciones totales en el tipo vacío.

Referencias [ editar ]

  1. ^ http://cm.bell-labs.com/cm/cs/who/dmr/chist.html , "Estandarización".
  2. ^ Stroustrup, Bjarne (2009). Programación: Principios y práctica con C ++ . Boston: Addison-Wesley. pag. 996. ISBN 0-321-54372-6.
  3. ^ Bjarne Stroustrup, C y C ++: estudios de casos de compatibilidad. ¿Diferencias reconciliables? Usted decide , Dr. Dobb's , 1 de septiembre de 2002; versión impresa