Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Посилання






Змінні-посилання (references) є окремим різновидом вказівників і також містять адресу іншої змінної. Посилання є альтернативним іменем об’єкта.

Посилання, на відміну від вказівника, не займає додаткового простору в пам'яті і є просто іншим ім'ям величини. Операція над посиланням призводить до зміни величини, на яку вона посилається.

Така сучасна мова програмування як Java взагалі використовує іх взамін вказівників. В С# посилання є основою адресації, в той час як ви­користання вказівників - не рекомендований розробником спосіб. Це зу­мовлено тим, що посилання за своєю суттю є безпечним константим вказівником.

На відміну від вказівників:

- посилання обов'язково ініціалізуються при оголошенні;

- посиланням не можна присвоювати нову адресу;

- посилання не займає зайвої пам’яті і може знищуватись раніше самого об’єкта, на яке воно організоване;

- стосовно посилань не можна застосовувати операцію знаходження адреси (це стосується окремих С++ компіляторів);

- не можна створювати масив посилань;

- для посилань є зайвою операція розіменування; ними оперують як звичайними змінними.

int& i=2; int j=3;

i = j; // i = 3; посиланнями оперують як звичайними змінними

У даному прикладі показано, що значення за посиланням i змінюється без операції розіменування.

Наступний приклад найкраще ілюструє ідею посилання

Приклад 29

#include < windows.h>

#include < clocale>

#include < iostream>

#include < conio.h>

using namespace std;

int main()

{

setlocale (LC_CTYPE, " rus");

int i = 1;

int * const p1=& i;

int& p2 = i;

/*Модифікатор showbase покаже в якій системі числення виводиться значення змінної. Модифікатор hex всередині вихідного потоку призначений для виведення значень в шістнадцятковому вигляді */

cout< < " Адреса змiнної: " < < showbase< < hex< < & i< < " \n";

cout< < " Адреса посилання: " < < showbase< < hex< < & p2< < " \n";

cout< < " Адреса вказiвника: " < < showbase< < hex< < & p1< < " \n";

system(" pause");

return 0;

}

Скомпілюйте наведений приклад.

Результат роботи програми є таким:

інструкції (модифікатори) showbase i hex вказують на те, що виводити результат треба з вказанням системи числення у 16-м форматі. Детальніше про модифікатори розберіться самостійно.

В переважній більшості випадків посилання використовуються трьома способами

- ·посилання можна передавати у функцію;

- ·посилання можна повертати з функції. Тут треба бути обережним. Якщо функція повертає посилання, то це повинна бути адреса реально існуючого доступного об’єкта.;

- ·допускається створення незалежних посилань (independ references), тобто посилань, які є просто іншим іменем змінної.

int j; int& i=j; // i - незалежне посилання

Посилання може посилатись на константу

const int & i = 5;

Оголошення посилання з модифікатором const робить неможливою змі­ну значення, на яке вказує посилання.

Поняття безтипових посилань (void&) не існує.

Використання покажчиків дісталося у " спадок" від мови С. Щоб спростити процес зміни параметрів, С + + вводить таке поняття як посилання. Як ви дізнаєтеся з цього уроку, посилання являє собою псевдонім (або друге ім'я), який ваші програми можуть використовувати для звернення до змінної.


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал