Lenguaje C | conjunto 4

Se han hecho las siguientes preguntas en el examen GATE CS.

1. En lenguaje C (GATE CS 2002)
a) Como máximo existe un registro de activación entre el registro de activación actual y el registro de activación del principal
b) El número de registros de activación entre el registro de activación actual y el registro de activación del principal depende de la secuencia de llamada de la función real.
c) La visibilidad de las variables globales depende de la secuencia de llamada de la función real.
d) La recursividad requiere que el registro de activación de la función recursiva se guarde en una pila diferente antes de que se pueda llamar a la función recursiva.

Respuesta(b)
a) –> No existe tal restricción en lenguaje C
b) –> Verdadero
c) –> Falso. En C, las variables tienen un alcance estático, no dinámico.
c) –> Falso. Los registros de activación se almacenan en la misma pila.

2. Considere el programa en C que se muestra a continuación.

# include <stdio.h> 
# define print(x)  printf ("%d", x) 
int x; 
void Q(int z) 
{ 
  z += x;
  print(z); 
} 
void P(int *y) 
{ 
  int x = *y+2; 
  Q(x); 
  *y = x-1; 
  print(x);
} 
  
main(void) 
{ 
  x=5; 
  P(&x); 
  print(x); 
  getchar();
} 

La salida de este programa es (GATE CS 2003)
a) 1276
b) 22 12 11
c) 14 6 6
d) 766

respuesta (a)

Tenga en cuenta que main() y Q() acceden a la variable global x. Dentro de P(), la variable de puntero y también contiene la dirección de la variable global x, pero x en P() es la propia variable local de su P.

Consulte GATE Corner para ver todos los documentos/soluciones/explicaciones del año anterior, programa de estudios, fechas importantes, notas, etc.

Escriba comentarios si encuentra que alguna de las respuestas/explicaciones es incorrecta, o si desea compartir más información sobre los temas discutidos anteriormente.

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 *