русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Указатель на указатель


Дата добавления: 2015-06-12; просмотров: 582; Нарушение авторских прав


 

При работе с динамическим массивом указателей и, как частный случай, с динамическими матрицами, в объявлении будут использоваться два подряд идущих символа “*”, что означает указатель на указатель. Поэтому параграф начнём с рассмотрения этого понятия.

Как мы знаем, обычный указатель содержит адрес некоторого участка памяти, в котором находится некоторое значение. В случае указателя на указатель, первый из них содержит адрес ячейки, в которой находится не обрабатываемая информация, а в свою очередь адрес другого участка памяти, содержащего некоторое значение. В некоторых книгах это называют многочисленным перенаправлением или цепочкой указателей.

Переменная, являющаяся указателем на указатель, описывается с использованием двух символов “*” перед именем. Например, объявление

float **p2;

означает, что p2 — это не указатель на число с плавающей точкой, а в p2 будет храниться адрес ячейки, в которой будет находиться адрес другой ячейки с вещественным числом. Такую переменную можно кратко назвать как указатель на указаетль на вещественное число.

Для получения доступа к такой информации, то есть у нас к вещественному числу, необходимо дважды применить операцию “*”. Например, рассмотрим следующий фрагмент:

float x, *p1, **p2;

x=2.2; p1=&x; p2=&p1;

printf (“%5.1f %5.1f%5.1f”, x,*p1,**p2);

В результате будет трижды выведено число 2.2, доступ к которому осуществляется с помощью простой переменной x, операции разыменования для указателя на вещественное число p1 и дважды используемой операции разыменования для указателя на указатель p2.

Мы уже знаем, что cout<<p1; выведет адрес ячейки памяти, в которой находится вещественное число x=2.2. Аналогично в p2 хранится адрес ячейки p1, в которой адрес вещественного числа. А что получится в результате выполнения cout<<(*p2);? Будет выведено содержимое ячейки памяти, адрес которой в p2, то есть значение p1.



Многочисленное перенаправление теоретически может и дальше расширяться, то есть в объявлении разрешается записывать более двух звёздочек. Но это на практике встречается не так часто. Излишнее перенаправление может приводить к трудно исправляемым концептуальным ошибкам.



<== предыдущая лекция | следующая лекция ==>
Статический массив строк | Динамические “матрицы”.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.259 сек.