下面是一段代码,我已经写了:指向数组的指针derefferencing
#include <stdio.h>
void main()
{
int (*p)[2];
int a[2] = {0, 1};
p = &a;
printf("p = %x\n",p);
printf("&p = %x\n",&p);
printf("a = %x\n",a);
printf("&a = %x\n",&a);
printf("*p = %x\n",*p);
printf("*a = %x\n",*a);
}
下面是我得到的输出:
p = bfd387c8
&p = bfd387c4
a = bfd387c8
&a = bfd387c8
*p = bfd387c8
*a = 0
现在我有这样的怀疑,怎么可能p和* p是相等的。其实p = a;*a = 0;
那么为什么* p也不等于0。请这是我的第一个问题在堆栈 overflow.Please帮助我。
你指'INT * P [2];'代替'INT(* P)[2];'? – Sathish 2014-09-01 09:39:17
顺便说一句,你应该使用'%p'来打印一个指针的值。 – chrk 2014-09-01 09:43:17
'** p == * a == 0'。 – Nelfeal 2014-09-01 09:53:29