I'm new to C++ coming from Java so forgive me for being naive, but I'm trying to pass an array out of a function. I know the way to do this is to pass a pointer, like so:
int *foo(){
int arr[3] = {1, 2, 3};
int *arrptr = arr;
return arrptr;
}
And then to access that array:
int main(){
int *arrptr = foo(); //create a pointer to array
//cout all elements
for(int x = 0; x < 3; x++)
cout << arrptr[x];
return 0;
}
And naturally, this works just fine. But for some reason in a different code, this same process only returns the first value of the array and the rest seem to be random.
int main(){
stringstream allstats;
allstats << readFile(); //readFile() simply returns a string read from a file
while(!allstats.eof()){ //check for end of stream
string temp;
getline(allstats, temp); //grab a line from allstats and put it into temp
double *arr = calculateStats(temp); //create pointer to array of stats calculated for temp
// print arr
for(int x = 0; x < 6; x++)
cout << arr[x] << endl;
//****This spits out the correct value for arr[0] but for the rest of the array
//****it is values like 8.58079e-306 which tells me those addresses have been
//****overwritten.
}
return 0;
}
//calculate stats for each player, return as formatted string
double* calculateStats(string player){
//cut for conciseness, just know it works and the proper values are in the following array
//create stat array
double statarr[6] = {(double)BA, (double)OB, (double)H, (double)BB, (double)K, (double)HBP};
//create pointer to stat array
double *ptr;
ptr = statarr;
return ptr;
}
In Java it would be as simple as just returning an array and the job is done. Is this even possible in C++ or is this just beyond my level of understanding and the solution is much more complicated than I thought?