I’m reading a C++ book which says this:
C++ passes arrays to functions by reference—the called functions can modify the element values in the callers’ original arrays.
It is referring to situations like this:
int hourlyTemperatures[ 24 ];
modifyArray( hourlyTemperatures, 24 );
However, this is vanilla C array pointers at work here, right? There is no use of a C++ “reference” technique, what is being passed is a pointer by value, in this case, a pointer to the first element of the array. The end result is that the function does have access to the full original array, like a reference, but this is not actually pass by reference, right?
From this Prentice Hall book:

You’re right. The wording is very confusing and uses a meaning of “reference” that is not the same as the term reference relating to the C++ feature of the same name. Instead, it’s talking about the way that array names decay to pointers — in fact you do not “pass an array” like this at all!
In the “olden days” “reference” was used in a more general sense in the same way as “handle” — an abstract term to represent the use of indirection to fake by-reference semantics in languages that did not support it. But, C++ does support things that it calls references; thus, we tend not to use “reference” in its “handle” sense when talking about C++ (where Deitel ∉ “we”, evidently).
Recommended reading:
Any other C++ book be very wary!! Though in the majority of areas of life it would be insane of me to suggest that inclusion in the above two specific lists is a definitive pre-requisite for a book to be considered “good”, there is a sufficient wealth of dangerously incorrect C++ text out there (such as the text you quote) and this is a sufficiently big problem for our language newcomers that in the world of C++ books it’s actually a good rule of thumb to follow.