Язык С++ и программирование на нем. Рейзлин В.И. - 50 стр.

UptoLike

Составители: 

52
void main(){
int a; // Автоматическая переменная;
static float b[1000], c=2.3; // статические переменные;
}
int f(){int d; // автоматическая переменная;
static int m=2, k; // статические переменные m, k.
}
Статические и глобальные переменные, если они не инициализи-
рованы явно, инициализируются нулевыми значениями. В любом слу-
чае, инициализация статических переменных осуществляется только
один раз.
Локальные переменные, не объявленные как static, являются ав-
томатическими. Такие объекты начинают свое существование при объ-
явлении его имени в блоке и заканчивают его при завершении этого
блока. Если автоматический объект явно не инициализирован, то его
значение до присвоения не определено.
void f();
void main(){
for (int i = 3; i > 0; i– –) f();
}
void f(){static int i; int j = 0;
cout<<”i =”<<i++<<” j =”<< j++ <<”\n”; }
Здесь будет напечатано:
i = 0 j = 0
i = 1 j = 0
i = 2 j = 0
Заметим, что если служебное слово static применено к глобаль-
ной переменной или к имени функции, то оно имеет другой смысл. В
этом случае и глобальная переменная, и функция становятся видимы
только в пределах файла, где они определены и невидимы из других
файлов.