<分区>
我正在尝试编写一个将 int
数组转换为 double
的函数。它接受一个指向原始 int[]
数组的常量指针(以避免不必要的修改?)并返回一个指向转换后的 double[]
数组的指针。但是,我编写的代码似乎不起作用。任何人都可以指出它有什么问题吗?
#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;
}
程序的输出如下:
numElements in input: 2
numElements in doubles: 1
1
计算的 numElements 似乎也是任意的。我是 c++ 的新手,无法查明问题所在。提前致谢。