Составители:
Рубрика:
62
Покажем это на примере программы, приведенной на рис. 9.4.
#include<iostream.h>
#include <conio.h>
int multiply(int, int &);
main( )
{
clrscr(); //очистка экрана
int x1,y1,z;
cout<<"\nВведите первый сомножитель=";
cin>>x1;
cout<<"\nВведите второй сомножитель=";
cin>>y1;
cout<<"\nРезультат ="<<myltiply(x1, y1) ;
cout<<"\nx1="<<x1<<"\ny1="<<y1;
cout<<"\n------------------------------\n";
cout<<"\nНажмите любую клавишу ...";
getch();
}
int multiply(int x, int &y)
{
return ++x * ++y;
}
Результаты работы программы при введенных значениях
x1=1 и y1=2:
Результат= 6
x1=1, y1=3
Рис. 9.4
Приведенные данные показывают, что при передаче
параметров по ссылке
их исходные значения портятся. Так, исходное значение переменной у1 было
равно 2, а после вызова функции оно стало равным 3, тогда как значение пере-
менной х1, передаваемой по значению, осталось неизменным. Это объясняется
тем, что при вызове функции multiply в выражении ++х увеличивается ло-
кальная копия первого фактического параметра
, тогда как в ++у фактический
параметр увеличивается сам. Поэтому функции, которые изменяют свой пере-
даваемый по ссылке параметр, трудно интерпретируются, и их по возможно-
сти лучше избегать. Однако при наличии громоздких аргументов типа боль-
ших массивов целесообразно использовать передачу параметров по ссылке,
запрещая функции изменять значения аргументов. Это может быть
осуществле-
но передачей в функцию аргументов, как констант, что достигается установкой
ключевого слова const перед соответствующими переменными в списке аргу-
ментов.
Страницы
- « первая
- ‹ предыдущая
- …
- 60
- 61
- 62
- 63
- 64
- …
- следующая ›
- последняя »