Студопедия

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

Разделы сайта

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






Подвійний вказівник






Інший спосіб деактивації дії модифікатора 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 рівнів.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.