Podarochek, можно . Можно передать указатель на твой указатель или ссылку на него. Вот эти два варианта:
1)ссылка на указатель . Параметр функции int*& _p . Тогда в теле функции где угодно можно присвоить новое значение :
void add_el(int*& _p,int& size, int el)
{
if(_p)
{
delete [] _p;
}
_p=new int[7];
}
//вызов
int* MyArray=...;
add_el(MyArray,...,...);
(ссылка - это лишь псевдоним, на самом деле работа идёт с внешним объектом, который был "передан" в аргументах функции)
2)указатель на указатель . Параметр функции int** _p . Тогда в теле функции где угодно можно присвоить новое значение через разыменование * :
void add_el(int** _p,int& size, int el)
{
if(*_p)
{
delete [] (*_p);
}
(*_p)=new int[7];
}
//вызов
int* MyArray=...;
add_el(&MyArray,...,...);
В функцию передаётся адрес переменной int* MyArray , то есть переменная типа int** .