ВУЗ:
Составители:
Рубрика:
12
int a = 10;
в памяти ЭВМ выделяется либо 2, либо 4 байта (в зависимости от стандарта
языка С), которые расположены друг за другом, начиная с определенного
адреса. Здесь под адресом следует понимать номер байта в памяти, который
показывает, где начинается область хранения той или иной переменной или
каких-либо произвольных данных. Условно память ЭВМ можно
представить в
виде последовательности байт (рис. 1).
Байты
0 1 2 3 … 20 21 22 23 … 100 101 102 … 1000 1001 1002
Переменная а
Рис. 1. Условное представление памяти ЭВМ с расположением переменной а
На рис. 1 переменная а расположена в 100 и 101 ячейках и занимает
соответственно два байта. Адрес этой переменной равен 100. Учитывая, что
значение переменной а равно 10, то в ячейке под номером 100 будет записано
число 10, а в ячейке под номером 101 – ноль. Аналогичная картина остается
справедливой
и при объявлении произвольных переменных и структур, только
в этом случае расходуется разный объем памяти в зависимости от типа
переменной.
В языке С имеется механизм работы с переменными через их адрес. Для
этого необходимо объявить указатель соответствующего типа. Указатель
объявляется также как и переменная, но перед его именем ставится символ ‘*’:
int *ptr_a;
char *ptr_ch, *ptr_var;
Для того чтобы с помощью указателя ptr_a работать с переменной a он
должен указывать на адрес этой переменной. Это значит, что значение
указателя ptr_a должно быть равно адресу переменной a. Здесь возникает две
задачи: во-первых, необходимо определить адрес переменной, и, во-вторых,
присвоить этот адрес указателю. Для определения адреса в языке С++
используется символ
‘&’ как показано ниже:
ptr_a = &a; //инициализация указателя
По существу получается, что указатель это переменная, которая хранит
адрес на заданную область памяти. Но в отличие от обычной переменной
позволяет еще, и работать с данной областью, т.е. записывать в нее значения и
считывать их. Допустим, что переменная a содержит число 10, а указатель ptr_a
указывает на эту переменную. Тогда для того
чтобы считывать и записывать
значения переменной a с помощью указателя ptr_a используется следующая
конструкция языка С:
Страницы
- « первая
- ‹ предыдущая
- …
- 10
- 11
- 12
- 13
- 14
- …
- следующая ›
- последняя »