Язык С

КарПрайс        

Блочная структура


Язык "C" не является языком с блочной структурой в смыс- ле PL/1 или алгола; в нем нельзя описывать одни функции внутри других. Переменные же, с другой стороны, могут определяться по методу блочного структурирования. Описания переменных (вклю- чая инициализацию) могут следовать за левой фигурной скоб- кой,открывающей любой оператор, а не только за той, с кото- рой начинается тело функции. Переменные, описанные таким об- разом, вытесняют любые переменные из внешних блоков, имеющие такие же имена, и остаются определенными до соответствующей правой фигурной скобки. Например в

IF (N > 0) { INT I; /* DECLARE A NEW I */ FOR (I = 0; I < N; I++) ... }

Областью действия переменной I является "истинная" ветвь IF; это I никак не связано ни с какими другими I в програм- ме. Блочная структура влияет и на область действия внешних переменных. Если даны описания

INT X;

F() { DOUBLE X; ... }

То появление X внутри функции F относится к внутренней пере- менной типа DOUBLE, а вне F - к внешней целой переменной. это же справедливо в отношении имен формальных параметров:

INT X; F(X) DOUBLE X; { ... }

Внутри функции F имя X относится к формальному параметру, а не к внешней переменной.



    Содержание раздела