int []x in a code block creates an array on the stack while int *x holds a pointer (or an array). As function parameters though, e.g.
int getElement(int x[], int index){ ... }
int getElement(int *x, int index){ ... }
int getElement(int x[78], int index){ ... }
where 78 is any arbitrary constant, all of these function definitions behave exactly the same way, even if I access an index higher than 78 directly by value or by a variable. Is there any difference between these?