下面是一段代碼,我已經寫了:指向數組的指針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