Tipo de Dato Void
Desliza para mostrar el menú
Siempre se debe especificar el tipo porque es un lenguaje de tipado estático. El compilador necesita conocer el tipo exacto de cada variable para asignar la cantidad correcta de memoria y garantizar la seguridad de tipos. También necesita conocer los tipos de los valores de retorno y los parámetros de las funciones.
Un lenguaje de tipado estático es aquel donde el tipo de dato de una variable se declara explícitamente y es verificado por el compilador.
main.cpp
12345678910#include <iostream> // Let's consider a simple example. // Imagine you need to create a function that logs something in console. // What type should it return? ___ log(std::string message) { std::cout << message; return ___; }
En este caso, no se requiere un tipo de retorno específico; podría ser int, double, float o bool. Para este escenario, el tipo exacto no es relevante. De hecho, ¿qué sucede si no necesitamos retornar nada en absoluto?
Void como tipo de retorno de función
A menudo existen funciones que no necesitan retornar ningún valor, como:
main.cpp
12345678// Outputting information in console ___ log(std::string message) { std::cout << message; } // Updating values of variables ___ update(int& variable, int new_value) { variable = new_value; } // Calling another function ___ closeFile(std::fstream& file) { file.close(); }
En este caso se puede utilizar el tipo de dato void. El tipo de dato void en programación indica la ausencia de cualquier valor o tipo. Puede emplearse de diversas maneras, pero en el caso de las funciones, generalmente se utiliza para señalar que una función no retorna ningún valor.
main.cpp
123456789101112#include <iostream> void log(std::string message) { std::cout << message; return; } int main() { log("This is a void function!"); }
Nota
Se utilizó la palabra clave
returnpero no se pasó ningún valor. La palabra clavereturntambién puede omitirse en funciones de tipovoid. Intente eliminarla en el ejemplo.
Void como Puntero
Los punteros void (void*) son punteros que no tienen un tipo de dato específico asociado. Pueden apuntar a cualquier tipo de objeto, pero es necesario convertirlos al tipo adecuado antes de utilizarlos. Son muy útiles, aunque a veces difíciles de comprender.
main.cpp
1234567891011121314#include <iostream> int main() { int num = 10; // Here we are creating a void pointer // Now it can point to any variable of any data type // You can try changing the type of `num` from `int` to `float` void* ptr = # // To use this pointer, we need to cast it to the appropriate type // VVV int* intPtr = static_cast<int*>(ptr); std::cout << *intPtr << std::endl; // Output: 10 }
En este ejemplo, ptr es un puntero void que apunta a un entero (num). Luego, convertimos ptr a un puntero de tipo int* para acceder y mostrar el valor de num.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla