2010-03-20 10 views
6

मैं क्या मेरी समारोह के साथ गलत क्या है यह पता लगाने की प्रतीत नहीं कर सकते हैं .... मैं एक मूल्य के लिए कहें और फिर एक डबल सूचक के रूप में इसे वापस करने की जरूरत है, लेकिन मैं टन और त्रुटियों की टन मिलती है:सी ++ फ़ंक्शन से डबल पॉइंटर लौटता है .... क्या गलत है?

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

संबंधित मुद्दे