2016-10-12 4 views
1

Для нижеследующего кода я пытаюсь рисовать таблицы символов для каждой области действия. Области являются глобальными, f1, else и f2. Мне было интересно, если бы для f2 х считался символом этого сфера. Кроме того, имеет ли f1 (5) получить связаны с какими-либо таблицами символов?Таблицы символов и область видимости

int x = 3; 
int f1(int x) { 
    if (x > 4) 
     f1(x-1); 
    else { 
     int x = 1; f2(); 
    } 
} 
int f2() { 
    print x; 
} 
f1(5); 

ответ

1

Работа с некоторыми общими предположениями о обзорного и объявления переменных.

  1. не как таковой. символ только добавляется в таблицу символов, когда объявляется. Поскольку вы используете только x, это не будет b e добавлено в любую таблицу. Поэтому ваш вопрос не имеет смысла. Ваш компилятор столкнется с использованием символа x и просмотрит его в таблице символов. Он будет найден как x из глобальной области.

  2. f1(5) не имеет отношения к символьным таблицам. Поскольку вы выполняете вызов функции, вам нужно искать f1, чтобы убедиться, что он существует (и номера параметров/типов совпадают). Вы найдете f1 в таблице символов в глобальной области видимости, поскольку она уже определена перед использованием (также, поскольку код в этой точке имеет только одну область, глобальную, есть только одна таблица, на которую нужно смотреть). Таким образом, f1(5) связан только с тем, что вы найдете символ f1 и информацию о параметрах в таблице символов.

 Смежные вопросы

  • Нет связанных вопросов^_^