我在尝试使用双指针(指向指针的指针)并想要正确理解它。我正在尝试下面的代码:
#include<stdio.h>
int main()
{
int y = 5;
int *p = &y;
int *q = &p;
printf("\n\n %p %p %p %p %d\n\n",q,&p,p,*q,*p);
return 0;
}
现在,在上面的代码中,p是指向y的指针,q是指向p的指针。我故意没有使用双重指针(**q)来检查会发生什么。编译器给了我一个警告,指出不兼容的指针类型。当我执行代码时,我理解q是指向p的指针,因此它包含p的地址,但*q并没有给我p中包含的值,即y的地址,而是得到了一些垃圾值。是因为我没有将q声明为双重指针吗?有人可以解释一下为什么*q正好是一些奇怪的值吗?
q
指向哪里? - cdhowie