一个关于sizeof的有关问题

一个关于sizeof的问题
C/C++ code

void check(char data[])
{
    cout<<sizeof(data)<<endl;
}
void main()
{
    char data[31]={'A','B','C','D','E',0,0,0,0,'F','G'};
         cout<<sizeof(data)<<endl;           //输出31
         check(data);                         //输出4
}


为什么输出的两个值会不一样?
对于数组作为函数实参的传值方式不是很了解,有人能解释下吗?
困惑ING……

------解决方案--------------------
第一个sizeof一个数组,
第二个sizeof一个指针。

采用值传递,多了一个指针变量指向数组首地址。sizeof该变量就是sizeof该指针。