В языке Си можно описать и переменную типа «указатель на указатель». Это ячейка оперативной памяти, в которой будет храниться адрес указателя на какую либо переменную. Признак такого типа данных – повторение символа «*» перед идентификатором переменной. Количество символов «*» определяет уровень вложенности указателей друг в друга. При объявлении указателей на указатели возможна их одновременная инициализация. Например:
int y=5;
int *p1=&y;
int **pp1=&p1;
int ***ppp1=&pp1;
Теперь присвоим целочисленной переменной y новое значение, например 10. Одинаковое присваивание произведут следующие операции:
y=10; *p1=10; **pp1=10; ***ppp1=10;
Для доступа к области ОП, отведенной под переменную y можно использовать и индексы. Справедливы следующие аналоги:
*p1 p1[0] **pp1 pp1[0][0] ***ppp1 ppp1[0][0][0]