We can now understand how array names and pointers to arrays are passed in function arguments. If arrays were passed by values in a function parameter, the entire array might then be copied into the function body. This is extremely inefficient, especially for very large arrays. However, the array itself is not passed by a value; the reference to it is copied. That reference is then used within the function to access array elements. This reference is actually a pointer value—an address.
So, the array values themselves are not copied, only the address of the zeroth element. C converts the arraynamed location(without[]) to a pointer value,&array[0], and uses that to accessarrayfrom within the function body.