Kod: Zaznacz cały
double* funkcja(double *t, int n)
{
double*nowa=new double [n]
for(int i=0;i<n;i++)
nowa[i]=sqrt(t[i]);
return nowa;
}
Kod: Zaznacz cały
double* funkcja(double *t, int n)
{
double*nowa=new double [n]
for(int i=0;i<n;i++)
nowa[i]=sqrt(t[i]);
return nowa;
}
double*
, a nie double
, więc musisz poprawić nagłówek.Kod: Zaznacz cały
double* funkcja(double *t, int n)
{
double*nowa=new double [n]
for(int i=0;i<n;i++)
nowa[i]=sqrt(t[i]);
return nowa;
}
new
, więc pozostanie ona w pamięci do momentu skasowania jej przy pomocy delete
. Nagłówek funkcji jest poprawny. Jak odwołać się do takiej tablicy w dalszym kodzie programu? Oto przykład:Kod: Zaznacz cały
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
double* funkcja(double *t, int n)
{
double*nowa=new double [n];
for(int i=0;i<n;i++)
nowa[i]=sqrt(t[i]);
return nowa;
}
int main()
{
double* tablica;
double tab[3]={1.0,4.0,9.0};
tablica=funkcja(tab,3);
cout << tablica[0] << endl;
cout << tablica[1] << endl;
cout << tablica[2] << endl;
return 0;
}
Kod: Zaznacz cały
1
2
3
double *tab = new double[5];
oraz double tab2[5];
tab
i tab2
są identyczne. Jedyna różnica jest to, że w jednym przypadku ty musisz dbać o zwolnienie pamięci, a w drugim nie.tab[2]
jest tożsame z *(tab + 2)
tab[100]
i jeśli nie spowoduje to błędu dostępu do pamięci to otrzymasz to co się znajduje w tym miejscu pamięci zintepretowane jako double
.