2016-07-01 1 views
-1

На некоторых языках, таких как lisp или scheme, программист может определять переменные с let, которые доступны только для определенной локальной области. Например, функция, которая вызывается только в другой функции.Имеет ли C локальные привязки?

Есть ли эквивалент C?

+2

C использует '{..}' для именования областей. Любая переменная, объявленная в часах, является локальной для этого блока. – CinCout

+0

Если вы используете static вне любых подпрограмм, область действия находится только внутри этого файла. Если статическое объявление находится внутри функции, значение * запоминается * при повторном входе. Это то, что вы ищете? – cup

+0

Переменные C являются ['auto'] (http://stackoverflow.com/q/13415321/995714) по умолчанию и не будут расти за пределами их объема. –

ответ

1

В C, переменные являются локальными для объема упаковки {} скобки они заключены в это же самое в. C++ и Java.

Если переменная определена вне функции, она является глобальной для этого модуля и может быть указана в других модулях, добавив префикс «extern» перед ссылкой на переменную из другого модуля модуля, который хочет его использовать ,

Если varaible определен вне функции и имеет префикс «статический», то он является глобальным только для этого модуля.

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

-1

Просто, если вы хотите переменную «количество» имеет свою область применения:

void test() 
{ 

    int input; //input is usable in function test() 
    ... 

    { 
     int count; //count only usable in scope {} 
     ... 
    } 
} 

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

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