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.