求教大神 关于指针赋值 谢谢

#include
int main()
{
int a[]={1,2,3,4,5},*p=&a[3];
printf("%d\n",*p=&a[3]);
}
为什么给指针初始化的时候可以写成“*p=&a[3]”,但是在printf语句中就不可以这么写
麻烦哪位大神帮忙解答一下,谢谢啦!!!

 int a[]={1,2,3,4,5},*p=&a[3];中的*应该和int一起看,表示的是int*这个类型
 而你printf里面的*表示的是解引用的*
 两者的含义不同

*p 是指的是值,&a[3]指的是地址,*p != &a[3]===>这个东西是不成立的。

p = &a[3] 就对了,这个打印出来是指针地址