函数调用的一个简单题,搞不太懂

#include<stdio.h> void main () { int *fun(int*p); int a[10]={0,1,2,3,4,5,6,7,8},*p; p=fun(a+1); p=fun(p+2); printf("%d",*p); } int *fun(int *p) { static int a=0; return p+a++; }
这个程序从头到未都不懂啊!被调用的代码是什么意思都不懂。
#include<stdio.h> void main () { int *fun(int*p); int a[10]={0,1,2,3,4,5,6,7,8},*p; p=fun(a+1); p=fun(p+2); printf("%d",*p); } int *fun(int *p) { static int a=0; return p+a++; }