Информатика и технология программирования


Ссылка (неявный указатель)


Ссылка представляет собой на первый взгляд странное сочетание обычной переменной и неявного указателя:



-синтаксис определения ссылки имеет вид синтаксиса определения указателя, в котором операция "*" заменена на "&#38";



-в процессе работы к ссылке обращаются как к обычной, с точки зрения синтаксиса, переменной, без использования операции косвенного обращения по указателю;



-транслятор создает для ссылки неявный указатель, который может быть настроен на какую-либо переменную;



-при выполнении действий по чтению или записи значения ссылки транслятором выполняется косвенное обращение по соответствующему неявному указателю;



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



-размерностью ссылки является размерность указуемого типа данных, а не указателя.

.


struct dat { int day,month, year };
//--------------------------------------------------------


// Си++Эквивалент в "классическом" Си


//--------------------------------------------------------


//--------------- Инициализация константой --------------


int &#38a = 5; int aа = 5, *pa = &#38аa;
//--------------- Инициализация переменной --------------


int x; int x,*pa;
int &#38a = x; pa = &#38x;
a = 5; *pa = 5;
//-------------- Ссылка на структуру ---------------------


dat x; dat x;
dat &#38b = x; dat *pb = &#38x;
dat &#38c = {12,12,1990}; dat cc = {12,12,1990};
dat *pc = &#38cc;
b.year = 1990; pb-&#62year= 1990;
c.day=b.day+3; pc-&#62day = pb-&#62day+3;
// копирование структуры


c = b; *pc = *pb;
...sizeof(b)... ...sizeof(x)...
...sizeof(*pb)... // но не sizeof(pb)

Единственный разумный вывод, который можно сделать из приведенного примера, состоит в том, что ссылка представляет собой псевдо-переменную, которая отображается в процессе работы с ней на ту переменную или константу, которой она была инициализирована.


Начало  Назад  Вперед



Книжный магазин