为什么子函数还会段异常

为什么子函数还会段错误?
Cd_chiong-mini2440(2444048960) 16:54:16
#include<stdio.h>
#define N 20
int main(){
 int n,i,x[N];

 printf("请输入学生人数:");
 scanf("%d",&n);
 printf("输入%d个数据\n",n);
 for(i=0;i<n;i++){
  scanf("%d",&x[i]);
 }
 printf("the max is:%d\n",fun(x,n));
}

int fun(int x[],int n){
 int i,max=0,*index=0;
 for(i=0;i<n;i++){
  if(x[i]>max)
  {max=x[i];*index=i;}
  else;
 }
return max;
}

求解为何在子函数还会段错误?

------解决方案--------------------
int *index=0;
*index=i;

对NULL单元赋值么...
------解决方案--------------------
何必用指针,用个局部变量int index不方便多了

即使用指针也要指向正确的地方:
int index;
int *indexptr = &index;
------解决方案--------------------
你的指针没空间就存值了。