View Single Post
Join Date: Apr 2004
Posts: 4,364
Reputation: Dave Sinkula has a brilliant future Dave Sinkula has a brilliant future Dave Sinkula has a brilliant future Dave Sinkula has a brilliant future Dave Sinkula has a brilliant future Dave Sinkula has a brilliant future Dave Sinkula has a brilliant future Dave Sinkula has a brilliant future Dave Sinkula has a brilliant future Dave Sinkula has a brilliant future Dave Sinkula has a brilliant future 
Solved Threads: 242
Team Colleague
Dave Sinkula's Avatar
Dave Sinkula Dave Sinkula is offline Offline
long time no c

Re: Return Array from C++

 
0
  #7
May 11th, 2004
Originally Posted by tlee
Hence, although we want to have 2 different arrays, the first one is modified because 2 pointers in main() actually point in the same memory location.
Ah. You want a function that creates a new array each time it is called.
#include <iostream>
 
#define LENGTH 5
 
using std::cout;
using std::endl;
using std::cin;
 
int* getArray();
void printArray(int* array);
 
int main()
{
   int* array = getArray();
   cout << "array in main" << endl;
   printArray(array);
   int* array2 = getArray();
   cout << "array2 in main" << endl;
   printArray(array2);
   cout << "array in main" << endl;
   printArray(array);
delete[] array2;
   delete[] array;
   return 0;
}
 
int* getArray()
{
int *array = new int[LENGTH];
   for ( int i = 0; i < LENGTH; i++ )
   {
	 cout << "Enter an integer: ";
	 cin >> array[i];
   }
   cout << "array in getArray()" << endl;
   printArray(array);
   return array;
}
 
void printArray(int* array)
{
   for ( int i = 0; i < LENGTH; i++ )
	 cout << *(array+i) << " ";
   cout << endl;
   cout << endl;
}
 
/* my output
Enter an integer: 1
Enter an integer: 2
Enter an integer: 3
Enter an integer: 4
Enter an integer: 5
array in getArray()
1 2 3 4 5 
array in main
1 2 3 4 5 
Enter an integer: 6
Enter an integer: 7
Enter an integer: 8
Enter an integer: 9
Enter an integer: 10
array in getArray()
6 7 8 9 10 
array2 in main
6 7 8 9 10 
array in main
1 2 3 4 5 
*/
Last edited by The Other Dave; May 11th, 2004 at 5:47 pm. Reason: Put back in (most of) the indention spaces that were removed when posting.
Reply With Quote