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

use*_*514 6 c++ pointers function-pointers function

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

double* getPrice()

{

    double* price;

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

    cin >> &price;



    return price;

}
Run Code Online (Sandbox Code Playgroud)

Jar*_*Par 10

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

double* price = new double();
Run Code Online (Sandbox Code Playgroud)

另外你需要将cin传递给a double而不是a double**.

cin >> *price;
Run Code Online (Sandbox Code Playgroud)

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

double* p = getPrice();
...
delete p;
Run Code Online (Sandbox Code Playgroud)

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

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