An array name acts like a pointer to its first element. int arr[5] means arr stores the address of arr[0]. Assign to pointer: int* ptr = arr (no & needed). This means ptr[0] and arr[0] access the same element.
Use array notation on pointers and pointer notation on arrays interchangeably. I'll show why this matters for functions. Arrays decay to pointers, so you can't copy an array by passing it.