Указатели на указатели (многочисленное перенаправление).

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

Рисунок: Одиночное перенаправление.

 
 

указатель переменная

 

Рисунок: Многочисленное перенаправление.

Указатель указатель переменная

 
 

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

Многочисленное перенаправление может и дальше расширяться, но существует не много случаев, когда необходимо что-то более мощное, чем указатель на указатель, излишнее перенаправление приводит к концептуальным ошибкам, которые трудно исправлять. Переменная, являющаяся указателем на указатель, должна быть описана следующим образом. Это выполняется путем помещения 2-х * * перед именем.

Например, следующее объявление сообщает компилятору, что newbalance это указатель типа float

float * * newbalance;

При этом newbalance – это не указатель на число с плавающей точкой, а указатель на указатель на вещественное число. Для получения доступа к целевому значению, косвенно указываемому указатель на указатель, следует применить оператор " * " два раза, как показано в следующем примере.

Пример:

# include < stdio.h >

int main (void)

{ int x, * p, * * q;

x = 10;

p = & x;

printf (" % d", * * q); / * вывод значения х * /

return 0;

}








Дата добавления: 2016-04-14; просмотров: 548;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.008 сек.