C | Conceptos básicos del puntero | Pregunta 14

Predecir la salida del siguiente programa

#include<stdio.h>
int main()
{
    int a = 12;
    void *ptr = (int *)&a;
    printf("%d", *ptr);
    getchar();
    return 0;
}

(A) 12
(B) Error del compilador
(C) Error de tiempo de ejecución
(D) 0

Respuesta: (B)
Explicación: Hay un error del compilador en la línea «printf(«%d», *ptr);».

Los punteros de tipo void * no se pueden desreferenciar. Debemos escribirlos antes de desreferenciarlos.

El siguiente programa funciona bien e imprime 12.

#include<stdio.h>

int main()
{
    int a = 12;
    void *ptr = (int *)&a;
    printf("%d", *(int *)ptr);
    getchar();
    return 0;
}

Cuestionario de esta pregunta

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 *