Рубрики

Язык C | Набор 4

Следующие вопросы были заданы на экзамене GATE CS.

1. На языке Си (GATE CS 2002)
а) Существует не более одной записи активации между текущей записью активации и записью активации для основного
b) Количество записей активации между текущей записью активации и записью активации для основного зависит от фактической последовательности вызова функции.
c) Видимость глобальных переменных зависит от фактической последовательности вызова функции.
d) Рекурсия требует, чтобы запись активации рекурсивной функции была сохранена в другом стеке, прежде чем рекурсивная функция может быть вызвана.

Ответ (б)
а) -> На языке Си такого ограничения нет
б) -> Правда
в) -> Ложь. В C переменные ограничены статически, а не динамически.
в) -> Ложь. Записи активации хранятся в одном стеке.

2. Рассмотрим программу на C, показанную ниже.

# 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();

Выход этой программы (GATE CS 2003)
а) 1276
б) 22 12 11
в) 14 6 6
г) 766

Ответ (а)

Обратите внимание, что main () и Q () обращаются к глобальной переменной x. Внутри P () указатель переменной y также содержит адрес глобальной переменной x, но x в P () является собственной локальной переменной P.

Пожалуйста, смотрите GATE Corner для всех документов / решений / объяснений предыдущего года, учебных планов, важных дат, заметок и т. Д.

Пожалуйста, пишите комментарии, если вы найдете какие-либо неправильные ответы / объяснения, или вы хотите поделиться дополнительной информацией по темам, обсужденным выше.

Рекомендуемые посты:

Язык C | Набор 4

0.00 (0%) 0 votes