Un puntero vacío es un puntero que no tiene ningún tipo de datos asociado. Un puntero vacío puede contener direcciones de cualquier tipo y se puede encasillar en cualquier tipo.
C++
// C++ Program to demonstrate that a void pointer // can hold the address of any type-castable type #include <iostream> using namespace std; int main() { int a = 10; char b = 'x'; void* p = &a; // void pointer holds address of int 'a' p = &b; // void pointer holds address of char 'b' } // This code is contributed by sarajadhav12052009
C
int a = 10; char b = 'x'; void *p = &a; // void pointer holds address of int 'a' p = &b; // void pointer holds address of char 'b'
Ventajas de los punteros vacíos: 1) malloc() y calloc() devuelven el tipo void * y esto permite que estas funciones se usen para asignar memoria de cualquier tipo de datos (solo por void *)
C++
// C++ Program to demonstrate that a void pointer // cannot be dereferenced #include <iostream>; using namespace std; int main() { int a = 10; void* ptr = &a; cout << *ptr; return 0; } // This code is contributed by sarajadhav12052009
C
#include <stdio.h> int main() { int a = 10; void *ptr = &a; printf("%d", *ptr); return 0; }
C++
#include <iostream> using namespace std; int main() { int a = 10; void* ptr = &a; cout << *(int *)ptr << endl; return 0; } // This code is contributed by sarajadhav12052009
C
#include <stdio.h> int main() { int a = 10; void *ptr = &a; printf("%d", *(int *)ptr); return 0; }
C
#include<stdio.h> int main() { int a[2] = {1, 2}; void *ptr = &a; ptr = ptr + sizeof(int); printf("%d", *(int *)ptr); return 0; }
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA