我正在尝试使用双指针(指向指针的指针)并想正确理解它。我在上面的代码尝试以下代码指针与指针的指针
#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是一个指针指向第我有意不使用双指针(** q),只是为了检查会发生什么。编译器给了我一个警告,指示不兼容的指针类型。当我执行代码时,我明白q是一个指向p的指针,所以它包含了p的地址,但是* q没有给出p中包含的值,也就是y的地址,而是我得到了一些垃圾值。是否因为我没有将q声明为双指针?任何人都可以解释为什么我得到一些奇怪的* q值?
q是**不是**指向p的指针 –
您打破了q的规则,因此发出了警告,但我承认我不确定此示例中应该打印什么。可能是违反标准问题或导致未定义行为的事情?我会让其他人对这个进行破解。 –
@EugenRieck然后'q'指向哪里? – cdhowie