I have a c function receiving pointer of array as its one parameter.
Since pass an array is actually the pointer of its first element, so the pointer of an array should
so the pointer of an array should be a pointer of pointer.
No. Arrays are not pointers. Pointer to pointer and pointer to array both are of different types.
&arr is of type int (*)[4]. You are passing an argument of type pointer to an array of 4 int while your function expects argument of type int **.
Change the function declaration to
int receiveArrayPtr(int (*arrPtrPara)[4])