
C. Тема 1. Раздел 11
.pdf
Область видимости (область действия) имени – часть программы, в которой это имя определено и может использоваться для обращения к одному и тому же элементу
Область видимости переменных, определённых в функции, включая формальные параметры – тело функции
Область видимости внешней переменной
От точки её объявления в файле исходного текста
До конца файла исходного текста
Для доступа к внешней переменной до точки её объявления следует использовать ключевое слово extern

int a = 10;
int some_function( int i )
{
extern int b; return i + a + b;
}
int b = 20;

Объявление переменной, приводящее к выделению памяти
int i;
Описание переменной со ссылкой на её определение в другом месте без
объявления и выделения памяти extern int i;

Локальные переменные, объявленные как статические, не уничтожаются при возврате из функции
Статические переменные обеспечивают постоянное, недоступное извне хранение данных внутри функции
По умолчанию статические переменные инициализируются нулём
Синтаксис
static тип_переменной идентификатор;

int sum( int i )
{
static int s; s += i; return s;
}
void main()
{
printf( "sum( 1 ): %d\n", sum( 1 ) ); printf( "sum( 1 ): %d\n", sum( 1 ) ); printf( "sum( 1 ): %d\n", sum( 1 ) );
}

Внешние статические переменные ограничены по возможности использования только исходным файлом, в котором они описаны
Это возможность скрыть внешнюю переменную от функций из других файлов

По умолчанию функции являются внешними, как внешние переменные
При использовании ключевого слова static в определении функция становится статической
Её можно использовать только в файле исходного текста, в котором она определена

extern int some_function( int i );
void main()
{
some_function( 30 );
}
int some_function( int i )
{
return i++;
}

Может являться альтернативным вариантом передачи параметров в функцию и возврата из неё
Может использоваться для сохранения данных между вызовами функций
Не следует злоупотреблять использованием внешних переменных

Спасибо за внимание!