I'm trying to write a function that casts an array of ints into doubles. It takes in a constant pointer to the original int[] array (to avoid unwanted modifications?) and returns a pointer to an array of casted double[]. However, the code that I wrote doesn't seem to be working. Can anyone point out what's wrong with it?
#include <iostream>
using namespace std;
double* castToDouble(const int *input);
int main(){
    int integers[] = {1,2,3,4};
    double *doubles = castToDouble(integers);
    cout << "numElements in doubles: " << sizeof(doubles)/sizeof(double) << endl;
    for(int i = 0; i < sizeof(doubles)/sizeof(double); i++){
       cout << doubles[i] << endl;
    }
    return 0;
}
double* castToDouble(const int *input){
    // Obtain the number of elements in input.
    int numElements = sizeof(input)/sizeof(int);
    double *doubleAry = new double[numElements];
    cout << "numElements in input: " << numElements << endl;
    for(int i = 0; i < numElements; i++){
        doubleAry[i] = static_cast<double>(input[i]);
    }
    return doubleAry;
}
The output of the program is the following:
numElements in input: 2
numElements in doubles: 1
1
The numElements' calculated seem to be arbitrary too. I'm pretty new to c++ and am unable to pinpoint the problem. Thanks in advance.
 
    