|
Since an array is a pointer, a function that returns an array must return a pointer. For example, the following function returns a new array A of real numbers of size n, where A[i] = i for i = 0, …, n − 1.
double* countArray(int n) { double* A = new double[n]; for(int i = 0; i < n; i++) { A[i] = (double) i; } return A; }
Be careful with arrays that are in the run-time stack. Consider the following attempt to allocate an array of integers.
int* allocArr(int n) { int A[n]; return A; }The compiler will not give you an error on this. A is an array of integers (type int*), so the correct type of thing is returned. But the returned pointer is pointing into the frame of allocArr. As soon as allocArr returns, that becomes a dangling pointer. To allocate a chunk that you need to keep using after the function that creates the chunk returns, use new.
Write a function copyArray(A, n) that returns a copy of the first n members of array A (as a new array). Assume that A is an array of doubles. Answer
|