Изменение размера массива

Допустим в main-е я объявил указатель определенного типа и создал переменную int size, затем адрес указателя и переменной size передаю первую функцию. В ней меняется значение переменной size и объявляется массив динамический массив, адрес которого совпадает с указателем, который я передал. Массив имеет размер size. Всё это возвращается в main, а затем передается в другую функцию, массив очищается (delete [] mass), меняется значение size и объявляется новый массив с большим или меньшим значением, чем был в первой функции, имеющий опять же тот же адрес, что и мой первоначальный указатель.

Не знаю, достаточно ли понятно я всё описал, но можно ли так делать? Грамотно ли это?