Різновиди параметрів

Область оперативної пам'яті, що її використовує програма, поділяється на сегмент коду, сегмент даних та сегмент стеку. В сегменті коду (64 Кбайт) зберігаються команди програми, в сегменті даних (64 Кбайт) — значення глобальних змінних, а в сегменті стеку — значення локальних змінних і параметрів підпрограм.

Параметри, що їх імена вказані в заголовку підпрограми, називаються фор­мальними, оскільки під час компіляції їх оголошення вони не прив'язуються до жодного реального об'єкта. Натомість значення, що замінюють формальні пара­метри під час виклику підпрограм, називаються фактичними параметрами або аргументами. Під час виклику підпрограми між її фактичними та формальними параметрами встановлюється однозначна відповідність щодо кількості парамет­рів, їх типів та порядку згадування.

Формальні параметри поділяються на параметри-значення, параметри-змінні, параметри-константи та нетипізовані параметри-змінні.

Якщо параметр оголошено як параметр - значения, то під час виклику підпрограми обчислюється значення відповідного аргументу і копія отриманого результату передається підпрограмі. Зміна параметрів-значень усередині підпрограми не впливає на значення змінних, що могли бути вказані як аргументи підпрограми, оскільки змінюються їх копії.

Якщо параметр оголошено як параметр-змінну, то до підпрограми передається покажчик на параметр, тобто адреса певної змінної в сегменті даних оперативної пам'яті. Тому підпрограма виконує дії над значеннями параметрів-змінних, а не над їх копіями, і модифікація параметра-змінної приведе до модифікації змінної, що була вказана як аргумент в операторі виклику підпрограми.

Для параметра-константи копія значення відповідного аргументу під час звернення до підпрограми не створюється. Значення такого параметра не можна змінювати у тілі підпрограми. Параметра-константи дозволяють зекономити оперативну пам'ять та підвищити швидкість виконання програми. У заголовку підпрограми перед іменем параметра-константи треба записати зарезервоване слово const.

Якщо формальний параметр є нетипізованим параметром-змінною, то відповідний йому фактичний параметр може бути покажчиком на змінну довільного тилу, тобто адресою сегмента даних оперативної пам'яті, де зберігаються значення, тип яких не відомий. У заголовку підпрограми перед іменем параметра-змінної слід записати слово var, але не треба вказувати тип параметра.