Переменные: имена, адреса и значения

Переменные: имена, адреса и значения

     Наше обсуждение указателей строится на рассмотрении связей между именами, aдреcaми и значениями переменных; дальше мы продолжим обсуждение этих вопросов.

     При написании программы мы представляем себе переменную как объект, имеющий два атрибута: имя и значение. (Кроме указанных, существуют еще и другие атрибуты, например тип, но это уже другой вопрос). После компиляции программы и загрузки в память "с точки зрения машины" данная переменная имеет тоже два атрибута: адрес и значение. Адрес - это машинный вариант имени.

     Во многих языках программирования адрес объекта скрыт от программиста и считается относящимся к уровню машины. В языке Си благодаря операции & мы имеем возможность узнать и использовать адрес переменной:

&bаrn - это адрес переменной bаrn.

     Мы можем получить значение переменной, соответствующее данному имени, используя только само имя:

printf(" %d ", barn)          печатает значение переменной barn

Мы можем также получить значение переменной, исходя из ее адреса, при помощи операции *:

 

РИС. 9.6. Имена, адреса и величнны в системе с "байтовой адресацией" тина IBM PC.

     Дано pbarn = &bаrn; тогда *pbarn - это величина, помещенная по адресу &bаrn. Хотя мы и можем напечатать адрес переменной для удовлетворения своего любопытства, это не основное применение операции &. Более важным является то, что наличие операций &, * и указателей позволяет обрабатывать адреса и их содержимое в символическом виде, чем мы и занимались в программе обмен3.