形参求数组长度结果对不上

#include <stdio.h>

int  length(int* parr)
{
    int len=0;
    while(*parr!='\0')
    {
        len++;
        parr++;    
    }
    return len;
}


int main()
{
    int arr[]={10,9,8,7,6,5,4,3,2,1};
    int m=length(arr);
    int n=sizeof(arr)/sizeof(arr[0]);
    printf("%d\n",m);      //结果11 
    printf("%d\n",n);      //结果10     
    return 0;    
} 

想写个函数,通过函数来求传入的数组的长度,但发现结果不对,我的目的是想让length函数返回的结果为数组arr的长度,也就是10,有没有人帮忙看看,我方法哪弄错了,怎么改?

题主你是想求数组长度,而不是里面有效元素数,对吗

数组的结束的条件,不是!= '\0'