[ MaliBatica @ 02.05.2013. 12:17 ] @
E ovako,racunam nesto u vezi termike,i treba da dobijem rezultate temperature i pritiska,i sad bih ja to da iz funkcije dobijem vektor tipa a[2]={T,p}.
No medjutim ,nesto mi ne ide,ja sam stavio kod pa ako bi neko mogao da me posavetuje,sta da menjam.

#include <iostream>

using namespace std;

float funkcijapv(float a,float b,float c);

int main()
{
float a1=2,b1=4,c1=7;
float pv1[2];
//pv1[2]=funkcijapv(a1,b1,c1);
cout<<funkcijapv(a1,b1,c1)<<endl;
//cout<<pv1<<endl; return 0;
}
float funkcijapv(float a,float b,float c)
{
float pv[2]={a*b,a*b*c};
return pv[2];
}


Samo sam zbog pojednostavljivanja samog racunanja,stavio primer za zapreminu i povrsinu,ali radim po istom principu i konkretni primer za p i T.
[ djoka_l @ 02.05.2013. 12:52 ] @
Code (cpp):

#include <iostream>

using namespace std;

float* funkcijapv(float a,float b,float c);

int main()
{
   float a1=2,b1=4,c1=7;
   float* pv1;
   pv1=funkcijapv(a1,b1,c1);
   printf("%f %f\n", pv1[0], pv1[1]);
}
float* funkcijapv(float a,float b,float c)
{
   float* pv= new float[2];
   pv[0] = a*b; pv[1]=a*b*c;
   return pv;
}
 


1. Funkcija koja vraća niz float vrednosti ne može biti tipa float nego float*
2. Niz koji ima dva člana ima indekse članova 0 i 1, tj postoji pv1[0] i pv1[1], a sa pv1[2] si prekoračio granicu niza i napravio potencijalnu bombu u programu.
3. Užasno loše je što kao rezultat funkcije vraćaš lokalnu promenljivu funkcije. Ona postoji na steku za vreme izvršavanja funkcije i neposredno po povratku (neko vreme), a onda će je nešto drugo pregaziti. Znači MORAŠ da alociraš memoriju za pv u funkciji, bilo operatorom new bilo funkcijom malloc.