Главная » Статьи » Програмування » C [ Добавить статью ]

RUS Уроки по программированию на языке С (Ссылочные параметры. Передача аргументов по ссылке.)

Ссылочные параметры. Передача аргументов по ссылке.

Ссылочные переменные используются достаточно редко: значительно удобнее использовать саму переменную, чем ссылку на нее. В качестве параметров функции ссылки имеют более широкое применение. Ссылки особенно полезны в функциях, возвращающих несколько объектов (значений). Для иллюстрации высказанного положения рассмотрим программу:

#include <iostream> 
using namespace std;
//Обмен с использованием указателей.
void interchange_ptr (int *u,int *v)
{
 int temp=*u;
 *u = *v; *v = temp;
}
/* ------------- */
//Обмен с использованием ссылок.
void interchange_ref (int &u,int &v)
{
 int temp=u;
 u = v; v = temp;
}
/* ------------- */
void main ()
{
 int x=5,y=10;
 /* --------------------------------------- */
 cout << "Change whis pointers:\n";
 cout << "x = " << x << " y = " <<y <<"\n";
 interchange_ptr (&x,&y);
 cout << "x = " << x << " y = " << y <<"\n";
 cout << "-----------------------------------------" <<"\n";
 cout << "Change whis references:\n";
 cout << "x = " << x << " y = " << y <<"\n";
 interchange_ref (x,y);
 cout << "x = " << x << " y = " << y <<"\n";
}

В функции interchange_ptr() параметры описаны как указатели. Поэтому в теле этой функции выполняется их разыменование, а при обращении к этой функции в качестве фактических переменных используются адреса (&x,&y) тех переменных, значения которых нужно поменять местами. В функции interchange_ref() параметрами являются ссылки. Ссылки обеспечивают доступ из тела функции к фактическим параметрам, в качестве которых используются обычные переменные, определенные в программе.

Ссылки и указатели в качестве параметров функций тесно связаны. Рассмотрим следующую небольшую функцию:

void f(int *ip)
 {
 *ip = 12;
 }

Внутри этой функции осуществляется доступ к переданному аргументу, адрес которого хранится в указателе ip, с помощью следующего оператора:

f(&ivar); //Передача адреса ivar.

Внутри функции выражение *ip = 12; присваивает 12 переменной ivar, адрес которой был передан в функцию f(). Теперь рассмотрим аналогичную функцию, использующую ссылочные параметры:

void f(int &ir)
 {
 ir = 12;
 }

Указатель ip заменен ссылкой ir, которой присваивается значение 12. Выражение:

f(ivar); //Передача ivar по ссылке.

присваивает значение ссылочному объекту: передает ivar по ссылке функции f(). Поскольку ir ссылается на ivar, то ivar присваивается значение 12.

Теперь, когда мы познакомились с ссылками, перейдём к следующему разделу и рассмотрим одно из их предназначений.


Категория: C | Добавил: DEN-SHP (05.11.2012)
Просмотров: 641 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]