[РЕШЕНО]Двойной указатель в СИ

Изучаю СИ. С обычным указателем в общем-то понятно. Но есть определенное недопонимание принципа работы двойного указателя.
#include <stdio.h>
int main(int argc, char **argv) 
{
int i = 10, *p, **q;
p = &i;
q = &p;
printf ("%d", **q); /* вывод значения переменной i */ 
printf ("\n %p", *q); /* ??? */
printf ("\n %p", q); /* ??? */
return 0;
}
Вопрос, какие адреса я получаю в printf (“\n %p”, *q) и printf (“\n %p”, q). То есть, в первом случае это адрес указателя на указатель переменной i, а во втором адрес переменной i ? Или наоборот? Или я вообще неправильно что-то понимаю?
#include <stdio.h>
int main()
{
    int i = 10, *p, **q;
    p = &i;
    q = &p;
    printf ("%p", &**q); /* вывод адреса переменной i */
    printf ("\n%p", *q); /* тоже, что и вверху */
    printf ("\n%p", q); /* адрес самого у-ля */
    return 0;
}
Спасибо!
 
Зарегистрироваться или войдите чтобы оставить сообщение.