Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Подвійний вказівник
Інший спосіб деактивації дії модифікатора const це використаня операторів динамічної роботи з типами. С++ дозволяє оголошувати вказівник на вказівник (подвійний вказівник). Загальний синтаксис має вигляд тип** ім’я вказівника; Операція подвійного знаходження адреси & &, яка інтуїтивно напрошується стосовно подвійного вказівника, є недопустимою, тобто наступний код є неправильним int i = 1; int **j = & & i; // недопустима операція Розіменування подвійного вказівника до типованої зміної здійснюється через операцію **. Наведемо приклади а) int i=5; int* j=& i; int** z=& j; **z=4; // розіменування подвійного вказівника Приклад 11 #include < windows.h> #include < clocale> #include < iostream> void main() { setlocale (LC_CTYPE, " rus"); int i=5; std:: cout< < " Початкове значення i: " < < i< < std:: endl; int* j=& i; int** z=& j; **z=4; // розіменування подвійного вказівника std:: cout< < " Модифiковане значення i: " < < i< < std:: endl; system(" pause"); } Скомпілюйте наведений приклад.
б) int i; int* j=& i; int** z; z=& j; **z=4; // розіменування подвійного вказівника Приклад 12 #include < windows.h> #include < clocale> #include < iostream> void main() { setlocale (LC_CTYPE, " rus"); int i; int* j=& i; int** z; z=& j; **z=4; // розіменування подвійного вказівника std:: cout< < " Значення i: " < < i< < std:: endl; system(" pause"); } Скомпілюйте наведений приклад.
Зазначимо, що більше двох рівнів непрямої адресації, в переважній більості випадків не використовується. Проте різні компілятори дають різну кількість рівнів організації багаторівневих ланцюжків непрямої адресації. Так, наприклад Visual C++ 6.0 дозволяє організовувати до 1010 рівнів, а Turbo C++ - 70 рівнів.
|