有关指针NULL问题

#include<stdio.h> int main(){ int *p; p=NULL; int a=3; p=&a; printf("%d",*p); return 0; }
这个是我第一遍测试的源代码。很明显,最后的结果是3.没问题
接下来看第二种源代码:

#include<stdio.h> int *p; p=NULL; int main(){ int a=3; p=&a; printf("%d",*p); return 0; }
当把p定义一个全局变量指针时,给它初始化NULL,为什么就挂了?
求高手解答!!!