2010-03-20 79 views
6

我似乎無法找出什麼地方錯了我的功能....我要問用戶以優惠的價格,然後返回它作爲一個雙指針,但我得到的錯誤噸,噸:C++從函數返回雙指針....出了什麼問題?

double* getPrice() 

{ 

    double* price; 

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

    cin >> &price; 



    return price; 

} 

回答

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

偉大的...我現在明白了。謝謝 – user69514 2010-03-20 19:07:48