Попытка понять разницу между статической и динамической областью видимости в этой программе на C - PullRequest
1 голос
/ 23 октября 2019

Так что я просто пытаюсь взглянуть на этот небольшой кусочек кода на C. В основном я пытаюсь научиться читать / определять различия при использовании статической и динамической области видимости и как выходные данные будут различаться в зависимости от того, какойЯ использую. Я выбрал 3 строки и собирался просто сравнить таблицу символов для статического и динамического, но не знаю, с чего начать.

# include <stdio.h>            
int a = 101; 
char b = 'z'; int q(char b) {
  int a = 89;
  printf ("%c\n",a);      
  printf("%d\n",b);        // line 7
  return a;
}
void p() {
  double b = 2.6;
  printf("%c\n",a);
  printf("%f\n",b);               // line 13 
  a = q(a);
}
int main() {
  char a = 'L'; 
  printf("%c\n",b);      // line 17 
  p();
  return 0;
}

Код работает нормально. Я просто не уверен, что смогу выбратьиспользовать статический или динамический обзор или как. Мне просто нужно понять, что происходит, - это то, что мне нужно.

1 Ответ

1 голос
/ 23 октября 2019

В строке 7 b относится к аргументу q();это ближайшее объявление b.

. В строке 13 b относится к локальной переменной.

В строке 17 b относится к глобальной переменной;другого кандидата нет.

...