Непонятно, почему вы передаете старый массив функции, которая не использует его .
Если вы изменяете отдельные значения, то нет смысла создавать новый экземпляр массива. Если нет, то просто создайте новый массив и верните его.
Итак, либо измените исходный массив:
void someFunc(double* pDoubleArray, int length)
{
for(int i = 0; i < length; i++)
{
pDoubleArray[i] = i * 3 + 2;
}
}
Или вернуть новый массив из функции:
// this indicates that the returned value is
// actually a new instance
double* getNewArray(double* pDoubleArray, int length)
{
double* pNewDoubleArray = new double[length];
for(int i = 0; i < length; i++)
{
pNewDoubleArray[i] = i * 3 + 2;
}
return pNewDoubleArray;
}
Альтернативой является передача входного массива по ссылке, но это усложняет освобождение неиспользуемых экземпляров.
[Изменить]
Чтобы прояснить этот последний случай:
void someFunc(double** pDoubleArray, int length)
{
double* pNewDoubleArray = new double[length];
for(int i = 0; i < length; i++)
{
pNewDoubleArray[i] = i * 3 + 2;
}
*pDoubleArray = pNewDoubleArray;
}
void main()
{
double dbls[] = { 1, 2, 3, 4, 5 };
double* pArray = dbls;
// this will change what pArray
// points to
someFunc(&pArray, 5);
return 0;
}
Как я уже говорил, последний подход приведет к утечкам памяти, если pArray
указывает на выделенный массив кучи до вызова someFunc
.