Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Аргументы - вызов по значению





 

Один аспект в "C" может оказаться непривычным для прог-

раммистов, которые использовали другие языки, в частности,

фортран и PL/1. в языке "C" все аргументы функций передаются

"по значению". это означает, что вызванная функция получает

значения своих аргументов с помощью временных переменных

/фактически через стек/, а не их адреса. Это приводит к не-

которым особенностям, отличным от тех, с которыми мы сталки-

вались в языках типа фортрана и PL/1, использующих "вызов по

ссылке ", где вызванная процедура работает с адресом аргу-

мента, а не с его значением.

Главное отличие состоит в том, что в "C" вызванная функ-

ция не может изменить переменную из вызывающей функции; она

может менять только свою собственную временную копию.

Вызов по значению, однако, не помеха, а весьма ценное

качество. Оно обычно приводит к более компактным программам,

содержащим меньше не относящихся к делу переменных, потому

что с аргументами можно обращаться как с удобно инициализи-

рованными локальными перемнными вызванной процедуры. Вот,

например, вариант функции POWER использующей это обстоятель-

ство

 

POWER(X,N) /* RAISE X N-TH POWER; N > 0;

VERSION 2 */

INT X,N;

{

INT P;

 

FOR (P = 1; N > 0; --N)

P = P * X;

RETURN (P);

}

 

 

Аргумент N используется как временная переменная; из не-

го вычитается единица до тех пор, пока он не станет нулем.

Переменная I здесь больше не нужна. чтобы ни происходило с N

внутри POWER это никак не влияет на аргумент, с которым пер-

воначально обратились к функции POWER.

При необходимости все же можно добиться, чтобы функция

изменила переменную из вызывающей программы. Эта программа

должна обеспечить установление адреса переменной /техничес-

ки, через указатель на переменную/, а в вызываемой функции

надо описать соответствующий аргумент как указатель и ссы-

латься к фактической переменной косвенно через него. Мы рас-

смотрим это подробно в главе 5.

Когда в качестве аргумента выступает имя массива, то

фактическим значением, передаваемым функции, является адрес

начала массива. /Здесь нет никакого копирования элементов

массива/. С помощью индексации и адреса начала функция может

найти и изменить любой элемент массива. Это - тема следующе-

го раздела.

 

 







Date: 2015-09-17; view: 348; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию