Я думаю, что вам лучше всего сделать копию указателя, а затем всякий раз, когда вам нужно сослаться на первый элемент, вы просто используете новую копию. Пример:
int *array = ..;
int *beginning = array;
Если вам нужно сослаться на первый элемент или даже скопировать начальный адрес в исходный указатель, вы просто используете начальный указатель.