Косвенная адресация или разыменование указателя

Так как указатель содержит адрес объекта, то это дает возможность «косвенного» доступа к этому объекту через указатель.

Операция * называется операцией косвенной адресации. Она возвращает значение переменной, на которую ссылается указатель.

Например:

int x = 10; // объявление переменной целого типа и

// её инициализация значением «10»

int *p; // объявление указателя на переменную целого типа

p = &x; // присваивание указателю p адреса переменной x

*p = 5; // присваивание переменной x значения 5

*p = *p*2; // присваивание переменной x значения 10

Рис.4.3. Указатель на переменную целого типа

Оба оператора выводят значение переменной x:

1) Без использования указателя

printf(“%d”, x);

2) С использованием указателя

printf(“%d”, *p);

К указателям может применяться определенный набор арифметических операций. В качестве примера определим массив int a[10], первый элемент которого будет иметь адрес в памяти, равный 3000. Инициализируем указатель p значением адреса элемента a[0], т.е. значение p равно 3000. Этот пример изображен на рис.4.3.

int a[10];

int *p1,*p;

p = &a[0];

Рис. 4.4. Массив a[] и указатель p, ссылающийся на a


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: