c语言指针+全局变量?

#include<stdio.h> int k=2; void fun(int *p){ p=&k; } int main( ) { int a=5,*p=&a; fun(p); printf("%d,%d\n",a,*p); return 0; }
请问大家这个程序为什么不输出2,2而是5,5呢?
#include<stdio.h> int k=2; void fun(int *p){ p=&k; } int main( ) { int a=5,*p=&a; fun(p); printf("%d,%d\n",a,*p); return 0; }