Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Посилання
Змінні-посилання (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&) не існує. Використання покажчиків дісталося у " спадок" від мови С. Щоб спростити процес зміни параметрів, С + + вводить таке поняття як посилання. Як ви дізнаєтеся з цього уроку, посилання являє собою псевдонім (або друге ім'я), який ваші програми можуть використовувати для звернення до змінної.
|