关于C++函数指针数组有关问题

关于C++函数指针数组问题
#include<iostream>
 using namespace std;
 int fun1(int a,int b)
 {
  return a+b;
 }
 int fun2(int a,int b)
 {
  return a*b;
 }
 int (*fp[2])(int x,int y);
  fp[0]=fun1;
  fp[1]=fun2;
 int main()
 {
  cout<<fp[0](1,2)<<endl;
        cout<<fp[1](1,3)<<endl; 
  return 0;
 }
这为什么错了 
把fp[0]=fun1;
       fp[1]=fun2;这两句放在主函数里就可以了,不解
------解决思路----------------------
int (*fp[2])(int x,int y);
  fp[0]=fun1;
  fp[1]=fun2;

函数区域外不可以执行赋值语句,第一行是定义语句,而二、三行数据赋值语句,只能放在函数内,因此在main中是允许的。