Один аспект в "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. Когда в качестве аргумента выступает имя массива, тофактическим значением, передаваемым функции, является адресначала массива. /Здесь нет никакого копирования элементовмассива/. С помощью индексации и адреса начала функция можетнайти и изменить любой элемент массива. Это - тема следующе-го раздела.