PUERTA | PUERTA CS Simulacro 2018 | Pregunta 27

Considere los siguientes dos programas C:

P1:

int main()
{
    int (*ptr)(int ) = fun;
    (*ptr)(3);
    return 0;
}
  
int fun(int n)
{
  for(;n > 0; n--)
    printf("GeeksQuiz ");
  return 0;
}

P2:

int main()
{
    void demo();
    void (*fun)();
    fun = demo;
    (*fun)();
    fun();
    return 0;
}
  
void demo()
{
    printf("GeeksQuiz ");
}

¿Cuál de las siguientes opciones es la correcta?
(A) P1 imprimió “GeeksQuiz GeeksQuiz” y P2 imprimió “GeeksQuiz GeeksQuiz”
(B) P1 imprimió “GeeksQuiz GeeksQuiz” y P2 da error de compilador
(C) P1 da error de compilador y P2 imprimió “GeeksQuiz GeeksQuiz”
(D) Ninguno de los

Respuesta anterior : (C)
Explicación: P1: El único problema con el programa es que la diversión no se declara/define antes de asignarlo a ptr. El siguiente programa funciona bien e imprime «GeeksQuiz GeeksQuiz GeeksQuiz»

int fun(int n);

int main()
{
    // ptr is a pointer to function fun()
    int (*ptr)(int ) = fun;

    // fun() called using pointer 
    (*ptr)(3);
    return 0;
}

int fun(int n)
{
  for(;n > 0; n--)
    printf("GeeksQuiz ");
}

P2: Este es un programa simple con punteros de función. La diversión se asigna para apuntar a la demostración. Así que las dos declaraciones “(*diversión)();” y diversión();» significar lo mismo.

La opción (C) es correcta.

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 *