puntero vacío en C/C++ – Part 1

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *