c_programming_language/exercices/functions/README.md
2026-02-09 23:19:28 +03:00

2.6 KiB
Raw Blame History

Глоссарий

  • 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 и pop
  • sp, 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 (размер которого определен в другом месте), но они не создают эти переменные и не резервируют память под них.