So, given the following:
#include <stdio.h>
int * getarr();
int main(int argc, char* argv)
{
    int * arr = getarr();
    printf("%d", sizeof(arr));
}
int* getarr()
{
    static int a[4] = {0,1,0,3};
    return a;
}
How does one find the length of arr? arr[4] == 0, but so does arr[0] and arr[2].
If this were a char*, the answer would be iterate until '\0', but that does not seem to work here as '\0' == 0. 
Addressing arr[5] can seems to consistently result in a value > 163 - 1 (the size of an int on my system), but that does not seem to be a reliable measure as it strikes me as simply an empty location in memory.
Is there a way to retrieve this value consistently? Or does it simply have to be passed in?
 
     
     
     
     
    