Я видимо как-то слабо улавливаю проблему, но если требуется передать указатель в функцию, в которой он
изменяется так, чтобы после выхода из функции это изменение
сохранилось, то передавать в функцию нужно не сам указатель, а указатель на указатель.
Код
void foo (int **pntr)
{ int *tmpPtr=*pntr; // tmpPtr теперь содержит адрес указателя, на который ссылается pntr
...
tmpPtr++; // изменили tmpPtr
...
*pntr=tmpPtr; // сохранили измененное значение указателя, адрес которого передавался через pntr
}
Как-то так примерно.