double arrow

Глобальные переменные

1. Extern - внешние переменные

Хранятся в области данных программы. Определяются до main() и доступны в любой функции программы. Время жизни - программа. При определении инициализируются по умолчанию 0 на стадии компиляции. Область видимости вся программа.

int count;

void main (void){

count ++;

.........

}

fun (){

printf ("%d\n", count);

}

Переменная count является внешней и доступна в обеих функциях.

Если в программе есть одноименная локальная переменная, она закрывает глобальную переменную. Для расширения видимости операция расширения доступа ::

int count;

void main (void){

int count; //автоматическая переменная

::count++;

..........

printf(“%d”,::count);

}

void fun (void){

count ++;

printf ("%d\n",count);

}

Если переменная определяется в одном модуле, но к ней есть обращение в другом, то нужно обязательно это указать, объявив ее как внешнюю, иначе будет создана новая переменная с этим именем.

I модуль. II модуль.

int cost; void func (void){

void main (void){ extern int cost;

............ ................

} }

Статистические внешние переменные - static

Область видимости ограничена одним модулем. Доступны всем функциям в одном модуле. Время жизни работа всей программы. Инициализируются по умолчанию 0 на стадии компиляции. Создаются в области данных программы.

static int num;

void main (void){

int count;

for (count=1; count<5; count ++){

printf ("%d\n", count);

fun ();

}

}

void fun (void){

int i=1;

num ++;

printf ("%d %d\n", i, num);

}






Сейчас читают про: