Реферат: Объективное программирование
структуры без ключевого слова struct.
struct dat
{ int day,month,year; }
dat NextDat(dat x) // Формальный параметр - структура
{ ... return(x); } // Возвратить структуру как результат
dat Nextdat1(dat *p)
{ ... return(*p); } // Возврат структуры косвенно по ссылке
dat a,b,c,*q; // Ключевое слово struct не используется
void main()
{
q = &b;
a = b; // Прямое присваивание структур
a = *q; // Косвенное присваивание по ссылке
c = NextDat(b); // Присваивание структуры как результата
c = NextDat1(&b); // функции, фактический параметр в
} // NextDat - копия структуры
2.2. Обращения по адресу (неявная ссылка)
----------------------------------------
При работе со структурами большого размера - при передаче их
в качестве параметров и результатов функций - копирование их является неэффективной операцией. Гораздо эффективнее передавать ссылку на эту структуру. Для того, чтобы постоянно не указывать операции взятия адреса и косвенного обращения по ссылке в Си++ введен тип - неявная ссылка: при определении переменной неявно вводится ссылка, указывающая на эту переменную. Использование этой переменной в большинстве операций предполагает косвенное обращение по соответствующей ссылке. При инициализации такой переменной значением другой переменной создается ссылка на эту другую переменную. При использовании в любом выражении переменной - неявной ссылки реально производится косвенное обращение по созданной ссылке.
Си++ Эквивалент в "классическом" Си
------------------------ -----------------------------//--------------- Инициализация константой -----------------int &a = 5; int a, *pa =a;
*pa = 5;
//--------------- Инициализация переменной -----------------int x; int x,*pa;
int &a = x; pa = &x;
a = 5; *pa = 5;
//-------------- Неявная ссылка на структуру ----------------struct dat struct dat
{ int day,month,year }; { int day,month, year };
dat x; dat x;