int x; 如果没有特别说明那么这个值就默认为0,还有大学学的C语言很不规范,很多错误和不合理的地方。那个指针你就把它当做x来看,也就是置空了,为0。
定义的时候可以不赋值的,下面的第二行对他赋值了,p=&x,将x的地址给p了。所以输出的时候没有错误。
int *p是声明,赋值语句放在后面了,你往下看,p=&x,这里把变量x的地址赋给p
后面赋值了呀!