Книга: Язык Си - руководство для начинающих
Переменные: имена, адреса и значения
Переменные: имена, адреса и значения
Наше обсуждение указателей строится на рассмотрении связей между именами, aдреcaми и значениями переменных; дальше мы продолжим обсуждение этих вопросов.
При написании программы мы представляем себе переменную как объект, имеющий два атрибута: имя и значение. (Кроме указанных, существуют еще и другие атрибуты, например тип, но это уже другой вопрос). После компиляции программы и загрузки в память "с точки зрения машины" данная переменная имеет тоже два атрибута: адрес и значение. Адрес - это машинный вариант имени.
Во многих языках программирования адрес объекта скрыт от программиста и считается относящимся к уровню машины. В языке Си благодаря операции & мы имеем возможность узнать и использовать адрес переменной:
&bаrn - это адрес переменной bаrn.
Мы можем получить значение переменной, соответствующее данному имени, используя только само имя:
printf(" %dn", barn) печатает значение переменной barn
Мы можем также получить значение переменной, исходя из ее адреса, при помощи операции *:
РИС. 9.6. Имена, адреса и величнны в системе с "байтовой адресацией" тина IBM PC.
Дано pbarn = &bаrn; тогда *pbarn - это величина, помещенная по адресу &bаrn. Хотя мы и можем напечатать адрес переменной для удовлетворения своего любопытства, это не основное применение операции &. Более важным является то, что наличие операций &, * и указателей позволяет обрабатывать адреса и их содержимое в символическом виде, чем мы и занимались в программе обмен3.
- Операция косвенной адресации: *
- Выражения в значениях по умолчанию для доменов
- Имена индексов ограничений
- Системные переменные ROWS_AFFECTED, GDSCODE, SQLCODE, TRANSACTIONJD, CONNECTIONJD
- Значения переменных по умолчанию
- Имена объектов длиной 68 символов
- 1.2.3. Константы, переменные и типы
- Глава 2 Обнаружение адреса
- 5.21 IP-адреса, интерфейсы и множественное пребывание
- 1. Пустые значения (Empty-значения)
- 2. Неопределенные значения (Null-значения)
- Множественные интерфейсы и имена методов