русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Аргументи - виклик за значенням


Дата додавання: 2014-11-28; переглядів: 799.


Одна з рис функцій C можливо не знайома програмістам, які звикли до інших мов, зокрема Fortran. У C, аргументи функцій передаються «за значенням». Це означає, що викликаній функції передаються значення аргументів у вигляді тимчасових змінних, а не оригінали. Це призводить до дещо відмінних властивостей, ніж ті, які можна зустріти у разі «виклику за зверненням», типового для Fortran, або у випадку параметрів var у Pascal, в якому викликана функція має доступ до оригінального аргументу, а не локальної копії.

Проте, виклик за значенням — це перевага, а не перешкода. Він, як правило, веде до компактніших програм з меншою кількістю сторонніх змінних, оскільки з параметрами можна обходитись як зі зручно ініціалізованими локальними змінними у викликаній функції. Ось, наприклад, версія power, яка користується цією властивістю.

/* power: зводить base до n-ного степеня; n >= 0 */

int power(int base, int n)

{

int p;

 

for (p = 1; n > 0; --n)

p = p * base;

return p;

}

Параметр n використовується як тимчасова змінна, значення якої поступово зменшується (циклfor, у оберненому напрямку), доки n не дорівнюватиме нулю. Потреба у змінній i відпадає. Що би не відбулося з n всередині power, це не матиме жодного впливу на аргумент, з яким powerбуло початково викликано.

Якщо треба, можна також примусити функцію змінити змінну у виликовій функції. В такому разі, викликач має вказати адресу змінної, над якою відбудеться дія (тобто, покажчик на змінну), а викликана функція повинна оголосити параметр, як покажчик, і звернутися до змінної непрямо через нього. Ми розглянемо покажчики в Розділі 5.

З масивами — інша історія. Коли як аргумент вказано назву масиву, тоді значення передане функції складатиметься з місцезнаходження, тобто адреси початку масиву; жодного копіювання елементів масиву не відбувається. Через індексацію цього значення, функція може звернутися і змінити будь-який елемент масиву. Саме це буде темою наступного розділу.


<== попередня лекція | наступна лекція ==>
Функції | Символьні масиви


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн