【发布时间】:2013-07-24 19:25:43
【问题描述】:
以下代码有问题:
#include <iostream>
using namespace std;
double* FillArray(void)
{
double result[5];
for (int i = 0; i<5;i++){
result[i]=(double) i;
}
return result; // return the pointer
}
int main()
{
double * a = FillArray();
for (int i = 0; i<5;i++){
cout << a[i] << endl; // print out the array
}
return 0;
}
输出很奇怪:
0
3.47187e-236
8.89753e-308
8.8976e-308
3.90251e-236
您能说出我的代码有什么问题吗? 我尝试使用函数返回一个数组,并在 main() 中打印出来。
【问题讨论】:
-
FillArray() 函数结束时结果数组超出范围。
-
调高编译器的警告级别,它应该告诉你这段代码有问题。
-
你的标题有一个大问题:“c/c++”。坚持使用两种语言中的一种。要么放弃 C++,要么深入研究
std::vector及其有用的伙伴。
标签: c++ arrays function pointers double