Практикум по информатике и информационным технологиям. I. Обработка данных на ПК
92 Чтобы отличать параметры подпрограммы, описанные в её заголовке и теле, от параметров, указываемых при вызове подпрограммы, первые приня то называть формальными параметрами, вторые - фактическими параметра ми. При вызове функции фактические параметры, указанные в команде вызо ва, становятся значениями соответствующих формальных параметров, чем и обеспечивается передача данных в функцию. В описании функции задается список формальных параметров. Каждый параметр, указанный в списке формальных параметров, является локальным по отношению к данной функции и в программном блоке функции на него можно ссылаться по его идентификатору (имени). Существует два способа передачи параметров внутрь функции: по зна чению и по ссылке. При передаче параметра по значению формальному пара метру функции присваивается копия значения фактического параметра. При этом все изменения формального параметра внутри функции никак не отра жаются на фактическом параметре. При передаче параметра по ссылке в качестве формального параметра передается адрес фактического параметра. Внутри функции этот адрес от крывает доступ к фактическому параметру. Это значит, что все изменения формального параметра будут отражаться на значении фактического пара метра. 10.2.2. Передача параметров по значению Формальный параметр-значение обрабатывается, как локальная по от ношению к процедуре или функции переменная, за исключением того, что он получает свое начальное значение из соответствующего фактического пара метра при активизации функции. Изменения, которые претерпевает фор мальный параметр-значение, не влияют на значение фактического параметра. Фактический параметр должен иметь тип, совместимый по присваи ванию с типом формального параметра-значения. По умолчанию в С++ используется передача по значению. В этом слу чае операторы, образующие тело функции, не могут изменять фактические параметры, указанные при ее вызове. Пример: #include <stdio.h> int sqr(intx); void main(void) { int t=10; printf("%d %d", sqr(t), t); } int sqr(int x) { x=x*x; return x; }
Made with FlippingBook
RkJQdWJsaXNoZXIy MTY0OTYy