I think it is best to make a copy of the pointer, then whenever you need to reference the first element, you just use a new copy. Example:
int *array = ..; int *beginning = array;
If you need to reference the first element or even copy the source address to the source pointer, you simply use the start pointer.
source share