| .. | ||
| ex_4_1.c | ||
| ex_4_2.c | ||
| ex_4_2_atof.c | ||
| ex_4_2_atof.h | ||
| par_4_3.c | ||
| par_4_4.c | ||
| README.md | ||
Глоссарий
Automatic variables- локальные перменные функции, которые создаются только во время, когда вызвана функция, и исчезают, когда функция остановлена (exited);Scope of a name- часть программы, в рамках которой имя может быть использовано;
Глава 4.3 - Внешние переменные
| 2026-02-09 22:56 |
Какая-то атомная дрочь с калькулятором и витиеватым описанием примера с getch и ungetch.
Пока пример опустил, суть то ясна о том, как работают области видимости
Глава 4.4 - Области видимости
Scope of external variable/function - длится от точки, где он объявлен и до конца файла, который будет скомпилирован.
Например:
main() { ... }
int sp = 0;
double val[MAXVAL];
void push(double f) { ... }
double pop(void) { ... }
Тут:
sp,valмогут быть использованы вpushиpopsp,val,push,popне видимы для функцииmain
extern
Если на внешнюю переменную нужно сослаться до ее определения, или же она определена в другом исходном файле, который отличается от того, где ее пытаются вызвать - необходимо использовать слово extern.
Важно различать decalaration и definintion внешней переменной.
- decalaration: объявляет пропертисы переменной (тип);
- definintion: так-же выделяет память под нее.
Например
int sp;
double val[MAXVAL];
Если они объявлены вне функций, то они определяют (define) внешние переменные, выделяя под них память и также выступая декларацией для остального исходного файла
extern int sp;
extern double val[];
Декларируют (declare) что sp это int, а val - массив double (размер которого определен в другом месте), но они не создают эти переменные и не резервируют память под них.