13.01.2015 Views

Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

24<br />

ками. «Введение связей с другими элементами данных через указатели –<br />

чрезвычайно важ<strong>на</strong>я идея в программировании; это ключ к представлению<br />

сложных структур» [6].<br />

Указатель (pointer) – это специальный тип данных, описывающий не<br />

з<strong>на</strong>чение, а размещение переменной, константы или возвращаемого з<strong>на</strong>чения<br />

функции, «одно из хитроумных понятий C» [9]. Его объявляют как Тип<br />

*имяУказателя. Оператор разыменования * (dereference operator) служит<br />

средством доступа к данным, а имяУказателя может быть другим указателем<br />

или адресом конкретной области памяти. В последнем случае указатель <strong>на</strong>зывают<br />

ссылкой (reference) и объявляют как Тип &имяСсылки. & – это оператор<br />

взятия адреса, а имяСсылки – з<strong>на</strong>чение хранящихся по этому адресу данных.<br />

Между операторами * и & установлено следующее соотношение: если<br />

имяУказателя – адpес данных, то *имяУказателя – их з<strong>на</strong>чение (т.е. указатель);<br />

если имяСсылки – з<strong>на</strong>чение данных, то &имяСсылки – их адpес (т.е.<br />

ссылка).<br />

Од<strong>на</strong>жды инициализировав ссылку, ей нельзя присвоить другое з<strong>на</strong>чение.<br />

И, в отличие от указателей, которые могут быть объявлены без инициализации<br />

или установлены в нуль, ссылки всегда указывают <strong>на</strong> конкретные<br />

данные.<br />

Использование указателей и ссылок играет важную роль в работе с<br />

функциями.<br />

Обычно аргументы, передаваемые в функцию при ее вызове, обрабатываются<br />

функцией как копии данных, и потому сами данные не меняются в<br />

ходе выполнения функции. В вызывающем модуле функция может изменить<br />

только одну переменную – ту, которую о<strong>на</strong> возвращает как результат своей<br />

работы. Если же требуется, чтобы функция изменяла более одной переменной,<br />

ей в качестве аргументов следует передавать не з<strong>на</strong>чения, а ссылки <strong>на</strong><br />

данные, и в первую очередь – адpеса переменных.<br />

А<strong>на</strong>логичное правило действует и при передаче функции в другую<br />

функцию в качестве аргумента.<br />

Для выполнения операций <strong>на</strong>д типизированными данными в C++ используется<br />

более 50 простых операторов. В табл. 8 они расположены по убыванию<br />

приоритета.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!