Puntero vacío en C++

Zeeshan Afridi 12 octubre 2023
  1. Implementar el puntero void* en C++
  2. Tamaño del puntero void* en C++
Puntero vacío en C++

Este artículo discutirá los usos de los punteros void* en C++. También se proporciona un código de ejemplo para demostrar su implementación.

Implementar el puntero void* en C++

Hemos estudiado que el puntero debe ser del mismo tipo de datos al que apunta, como se especifica en la declaración del puntero. Si declaramos un puntero flotante, no puede apuntar a ningún otro tipo de datos como int, long o string; solo puede apuntar a una variable de tipo flotante.

C/C++ ha desarrollado una solución para superar este problema: el puntero void*. Un puntero void* es un puntero de propósito general que puede apuntar a cualquier tipo de datos sin ninguna definición de puntero estático.

Puede asignar la dirección de cualquier tipo de dato a un puntero void*. De manera similar, el puntero void* se puede asignar a cualquier tipo de datos de punteros sin encasillarlos explícitamente.

Sintaxis:

void *pointerName;
void *ptr;

Hay dos desventajas principales de usar punteros void* en C++:

  1. Debido al tamaño concreto, no es posible realizar aritmética de punteros con el puntero void* en C++.
  2. No puede desreferenciar un puntero void*.

Tamaño del puntero void* en C++

El tamaño del puntero void* es similar al tamaño del puntero del tipo de carácter en C++. El puntero almacena la dirección de memoria que apunta a algunos datos en el programa.

Este puntero en C++ depende de la plataforma de su computadora. En una plataforma de 32 bits, necesita 4 bytes o 32 bits para almacenar los datos de la dirección de memoria.

La función sizeof() puede identificar el tamaño del puntero.

Sintaxis:

void *ptr = NULL;  // void pointer
sizeof(ptr);

Código de ejemplo:

#include
#include

using namespace std;

int main() {
  void *ptr = NULL;  // void pointer
  int *p = NULL;     // integer pointer
  char *cp = NULL;   // character pointer
  float *fp = NULL;  // float pointer

  // size of pointers
  cout

Razón para usar punteros void* en programas C++

Usamos el puntero void* en C++ para superar los problemas de asignar valores separados a diferentes tipos de datos en un programa. El puntero void* en C++ puede apuntar a cualquier tipo de datos y encasillar ese tipo de datos sin encasillar explícitamente.

No tiene ningún valor de retorno. Un puntero void* puede apuntar a un int, float o char y se encasilla a ese tipo de datos específico.

Ayuda a los desarrolladores a escribir código y reducir las complicaciones de un programa.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

Artículo relacionado - C++ Pointer