C中怎样整形数组的长度

C中怎样求一个整形数组的长度
各位大侠,就是我想写一个函数,专门求整形数组的长度的,功能是只需要给定数组名就可以求出数组的长度,但是整形数组里不像字符数组中有 '\0'作为结束标志,所以不知怎么办了
------解决方案--------------------
int GetNum(int a[])
{
int n=0;
while (a[n]!=-858993460)
{
n++;
}
return i;
}
------解决方案--------------------
才发现有问题,还是得用结构体,转换赋值函数再弄下应该就可以了


struct XInt
{
    void * p;
    int  ival;
    XInt(int x)
    {
        ival=x;
        p=NULL;
    }
};

int Size_XInt(XInt * pXInt)
{
    int n=0;
    while (pXInt[n].p ==NULL )
    {
        n++;
    }
    return n;

}

__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    XInt a[] = {1,2,4};
    //显示元素个数
    ShowMessage( Size_XInt(a) );
    //不过要取某位置的数据就得用
    a[0].ival;


}

------解决方案--------------------
#define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0]))