【问题标题】:C++ return double pointer from function.... what's wrong?C ++从函数返回双指针......怎么了?
【发布时间】:2011-01-29 20:54:20
【问题描述】:

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

double* getPrice()

{

    double* price;

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

    cin >> &price;



    return price;

}

【问题讨论】:

    标签: c++ pointers function function-pointers


    【解决方案1】:

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

    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;
    }
    

    【讨论】:

      猜你喜欢
      • 2010-12-25
      • 1970-01-01
      • 1970-01-01
      • 2016-06-10
      • 1970-01-01
      • 2011-12-06
      • 2023-02-10
      • 1970-01-01
      • 2012-02-26
      相关资源
      最近更新 更多