【问题标题】: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;
}