It entirely depends on the programming language. Supposing C, any array is passed as a pointer to its base address and this pointer is passed by "value". i.e., inside the called function we can use the parameter value to point to anything else. But if we dereference the pointer, we can get/modify the array elements. Some books call this as "pass by pointer" but this is certainly not "pass by reference".