Я пишу программу C++, которая отправляет 1D-массив в функцию. Функция управляет массивом и возвращает другой массив того же порядка. Код выглядит следующим образом. У меня возникли проблемы с его компиляцией. Помогите мне устранить ошибки. Благодаря #includeПередача и возврат матрицы к функции
#include <ctime>
#include<cstdlib>
using namespace std;
long double * gradiv(long double *,int,long double);
int main()
{
int NN=3,c;
long double *pp;
long double hx;
long double matt[NN+2]={10,9,30,63,50};
pp = gradiv(matt,NN,1.0);
for (c=0;c<NN+1;c++)
cout<<endl<< *(pp+c)<<endl;
return 0;
}
long double *gradiv(long double *matt,int NN,long double hx)
{
int i,sg1,sg2;
long double retmat[(NN+2)];
retmat[0]=0;retmat[1]=0;retmat[NN]=0;retmat[NN+1]=0;
for (i =2; i <=(NN-1); i++)
{
if (i==2){
sg1=0;
sg2=1;
}
else if (i==(NN-1)){
sg1=1;
sg2=0;
}
else{
sg1=1;
sg2=1;
}
//===== my main formula for gradient(modified due to complication in the boundary)========
retmat[i]=((*(matt+i)-*(matt+i-1))/hx+(*(matt+i+1)-*(matt+i))/hx)/(sg1+sg2);
//cout <<retmat[i]<<endl;
//========================================================================================
}
return retmat;
}
сообщение об ошибке
[email protected]:~/Desktop/project$ g++ test.cpp
test.cpp: In function ‘long double* gradiv(long double*, int, long double)’:
test.cpp:23:14: warning: address of local variable ‘retmat’ returned [-Wreturn-local-addr]
long double retmat[(NN+2)];
Для начала 'std :: arrray', возможно, стоит изучить. Также задайте конкретный вопрос, а не что-то неопределенное –
где должен быть добавлен std :: array? Я новичок в C++ Конкретный вопрос: я хочу, чтобы значение массива «retmat» возвращалось функцией всякий раз, когда она вызывается. Но этого не происходит. – user3057202
Пожалуйста, google. Также посмотрите 'std :: vector' –