русс | укр

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

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

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

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


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

Указатели и адреса


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


Так как указатель содержит адрес объекта, это дает воз-можность "косвенного" доступа к этому объекту через указа-тель. Предположим, что х - переменная, например, типа INT, арх - указатель, созданный неким еще не указанным способом.Унарная операция & выдает адрес объекта, так что оператор рх = &х; присваивает адрес х переменной рх; говорят, что рх "ука-зывает" на х. Операция & применима только к переменным иэлементам массива, конструкции вида &(х-1) и &3 являются не-законными. Нельзя также получить адрес регистровой перемен-ной. Унарная операция * рассматривает свой операнд как адресконечной цели и обращается по этому адресу, чтобы извлечьсодержимое. Следовательно, если Y тоже имеет тип INT, то Y = *рх; присваивает Y содержимое того, на что указывает рх. Так пос-ледовательность рх = &х; Y = *рх; присваивает Y то же самое значение, что и оператор Y = X; Переменные, участвующие во всем этом необходимо описать: INT X, Y;INT *PX; с описанием для X и Y мы уже неодонократно встречались.Описание указателя INT *PX; является новым и должно рассматриваться как мнемоническое;оно говорит, что комбинация *PX имеет тип INT. Это означает,что если PX появляется в контексте *PX, то это эквивалентнопеременной типа INT. Фактически синтаксис описания перемен-ной имитирует синтаксис выражений, в которых эта переменнаяможет появляться. Это замечание полезно во всех случаях,связанных со сложными описаниями. Например, DOUBLE ATOF(), *DP; говорит, что ATOF() и *DP имеют в выражениях значения типаDOUBLE. Вы должны также заметить, что из этого описания следу-ет, что указатель может указывать только на определенный видобъектов. Указатели могут входить в выражения. Например, если PXуказывает на целое X, то *PX может появляться в любом кон-тексте, где может встретиться X. Так оператор Y = *PX + 1 присваивает Y значение, на 1 большее значения X; PRINTF("%D\N", *PX) печатает текущее значение X; D = SQRT((DOUBLE) *PX) получает в D квадратный корень из X, причем до передачи фун-кции SQRT значение X преобразуется к типу DOUBLE. (Смотриглаву 2). В выражениях вида Y = *PX + 1 унарные операции * и & связаны со своим операндом болеекрепко, чем арифметические операции, так что такое выражениеберет то значение, на которое указывает PX, прибавляет 1 иприсваивает результат переменной Y. Мы вскоре вернемся к то-му, что может означать выражение Y = *(PX + 1) Ссылки на указатели могут появляться и в левой частиприсваиваний. Если PX указывает на X, то *PX = 0 полагает X равным нулю, а *PX += 1 увеличивает его на единицу, как и выражение (*PX)++ Круглые скобки в последнем примере необходимы; если их опус-тить, то поскольку унарные операции, подобные * и ++, выпол-няются справа налево, это выражение увеличит PX, а не ту пе-ременную, на которую он указывает. И наконец, так как указатели являются переменными, то сними можно обращаться, как и с остальными переменными. ЕслиPY - другой указатель на переменную типа INT, то PY = PX копирует содержимое PX в PY, в результате чего PY указываетна то же, что и PX.


<== предыдущая лекция | следующая лекция ==>
Макроподстановка | Указатели и аргументы функций


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


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

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

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


 


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

 
 

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

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