Лабораторная работа № Ознакомление с фундаментальными типами данных План: Целые типы данных


Download 0.88 Mb.
bet20/64
Sana13.09.2023
Hajmi0.88 Mb.
#1677324
TuriЛабораторная работа
1   ...   16   17   18   19   20   21   22   23   ...   64
Bog'liq
Лаборатория № 1 - 6

Передача данных по ссылке
Это ещё один из способов вернуть результат работы функции через список параметров. Напомним, что применяется только для С++. В языке С такого варианта нет.
При передаче данных по ссылке в функцию, куда передаются данные, создаются синонимы исходных объектов. Поэтому работа в подпрограмме ведётся именно с исходными объектами. Если в подпрограмме ссылочная переменная изменит значение, то это сразу отразится на исходной переменной.
В вызывающей функции параметр, передаваемый по ссылке, может быть только простой переменной любого известного типа.
Вернёмся снова к примеру обмена, только данные передадим по ссылке.
Пример 4. Даны два числа, хранящиеся в переменных a и b. Используя подпрограмму, выполнить обмен содержимого ячеек этих переменных.
Возможный вариант реализации программы:
#include
using namespace std;
void Obmen(double &x, double &y);
int main()
{
double a = 2.5, b = 3.1;
cout << "Do Obmen: a=" << a << " b=" << b << endl;
Obmen(a, b);
cout << "Posle Obmen: a=" << a << " b=" << b << endl;
return 0;
}


void Obmen(double &x, double &y)
{
double c;
cout << "Function Obmen start:\n x=" << x << " y=" << y << endl;
c = x;
x = y;
y = c;
cout << "Function Obmen end:\n x=" << x << " y=" << y << endl;
}
Результаты выполнения программы:
Do Obmen: a=2.5 b=3.1
Function Obmen start:
x=2.5 y=3.1
Function Obmen end:
x=3.1 y=2.5
Posle Obmen: a=3.1 b=2.5
Результаты, выводимые на экран монитора, подтверждают правильность работы.
Обратите внимание на то, что для объекта, передаваемого по ссылке, в списке формальных параметров указывается значок & перед именем переменной (работаем с ссылкой на объект), а далее в теле подпрограммы используется просто имя этой переменной. При вызове в списке фактических параметров задаётся имя нужной переменной.
Для простых объектов передача данных по ссылке предпочтительнее, чем передача по адресу, так как в этом случае текст функции проще, легче читается, не требуется выполнять операции разыменования.
К недостатку способа (передача данных по ссылке) можно отнести то, что по вызову функции нельзя понять, что параметр передаётся именно по ссылке, а не по значению, и как следствие, этот параметр скорее всего изменяется функцией. Чтобы не было сомнений, всегда смотрите на запись прототипов функций, использованных в программе. Прототипы всегда доступны, даже если сами функции имеются только в виде объектных модулей.

Download 0.88 Mb.

Do'stlaringiz bilan baham:
1   ...   16   17   18   19   20   21   22   23   ...   64




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling