Я делал некоторые операции с указателями и наткнулся на это:
int main(void)
{
int a = 100;
int *p, *q;
p = &a;
q = &p;
printf("\n *q= %p",*q);
printf("\n &p= %p",&p);
printf("\n *p= %d",*p);
printf("\n q= %p",q);
printf("\n p= %p",p);
printf("\n &a= %p",&a);
return 0;
}
Это дает мне следующий вывод
*q= 0xe5b83d74
&p= 0x7ffee5b83d78
*p= 100
q= 0x7ffee5b83d78
p= 0x7ffee5b83d74
&a= 0x7ffee5b83d74
Значение, данное *q
, похоже на адрес a
, но это не то же самое. *q
не относится к &a
? Я не пытаюсь исправить этот код. Что на самом деле здесь происходит?