C ++从函数返回双指针....出了什么问题?

时间:2010-03-20 19:02:40

标签: c++ pointers function function-pointers

我似乎无法弄清楚我的功能有什么问题....我需要询问用户的价格,然后将其作为双指针返回,但我得到了大量的错误:

double* getPrice()

{

    double* price;

    cout << "Enter Price of CD: " << endl;

    cin >> &price;



    return price;

}

1 个答案:

答案 0 :(得分:10)

为了使用任何类型的指针,它需要指向有效的内存。现在你有一个未初始化的指针并指向垃圾。请尝试以下

double* price = new double();

此外,您需要将cin传递给double而不是double**

cin >> *price;

请注意,这将在您的进程中分配新内存,必须在以后释放。即由getPrice的调用者。例如

double* p = getPrice();
...
delete p;

理想情况下,在这种情况下,您根本不应该分配指针,因为它会引入不必要的内存管理开销。一个更容易实现的将是以下

double getPrice() {
  double price;
  cout << "Enter Price of CD: " << endl;
  cin >> price;
  return price;
}