cplus-plus.ru logo
Мы переехали на cplus-plus.ru
Главная страница В закладкиО сайтеКарта сайта
Добавить в закладки

Меню сайта

Полезные ссылки

Наша рассылка
Подписаться на рассылку
"C++ : cplus-plus.ru :
Рассылка статей C++"


Друзья сайта
alsproject.ru Выбор выходного разделительного конденсатора

Приветствую Вас, Гость · rss 20-Апр-2024, 20:35
Главная » Статьи » Статьи по C++

Ссылки в C++
Как видно из предыдущего примера, для работы внутри функции с выходным параметром необходимо:

а) в вызывающей программе получить адреса переменных операцией взятия адреса «&»;
б) в теле функции обращаться к этим переменным с помощью операции разыменования «*».

Чтобы исключить эту рутинную работу, в C++ введена специальная разновидность указателей, называемая ссылками. Ссылки — это указатели, над которыми операция разыменования выполняется неявно.

Пример. Решение задачи об обмене переменных с использованием ссылок.

void swap ( int &a, int &b)
{
int r;
r = a; a = b; b = r;
}

Функция вызывается так:

int х = 5, у = 3 ;
swap(х, у);

Замечание. В программировании такой способ обмена данными с функцией называется передачей параметров по ссылке.

Большие массивы для экономии времени и памяти следует передавать по ссылке, даже если их значение не изменяется функцией. Чтобы предотвратить их случайное изменение, передают не просто ссылку, а ссылку на константу.
 
void £(const large &а, const large *b);

Используйте спецификатор const, чтобы обезопасить программу от случайных изменений параметров.

Ссылки редко используют за пределами функций, но, вообще говоря, это возможно. При этом нужно помнить, что ссылка — это разновидность указателя, который инициализируется только однажды, в момент своего определения.

Синтаксис определения ссылки следующий:

тип& имя = инициализирующее выражение;.

Инициализирующее выражение для ссылки должно быть lvalue, т.е. таким, что может стоять в левой части оператора присваивания.
Для ссылки на константу такого ограничения нет. Если инициализирующее выражение не lvalue, создается временный объект, хранящий значение инициализирующего выражения. Объект существует, пока не закончится время жизни ссылки.

int n = 5;
// ссылка rl - синоним n
int &r1 = n;
// ссылка r2 - временная переменная
const int &r2 = n + 1;

После инициализации ссылки-синонима все операции над ней фактически выполняются над переменной, которой она проинициализирована.

r1 = 6;   // равносильно n = 6 
r1++;    // равносильно n++

Источник: http://www.cplus-plus.ru
Категория: Статьи по C++ | Добавил: FazaNaka (10-Окт-2010)
Просмотров: 487 | Рейтинг: 0.0/0