n isn't known at compile time, only the sizeof int. Also its stored on the stack.
Yup, thats what I was showing.
Yup, thats exactly what I've pointed out. int*arr is not the array and never will be, it only holds the address of the first element.
I showed clearly above how to pass a pointer to an array and get the correct size using sizeof.
void Foo( arr_t *arrp ){
Serial.println( sizeof( *arrp ) / sizeof( **arrp ) );
}