C++ gibt doppelten Zeiger von Funktion zurück.... was ist falsch?

C++ gibt doppelten Zeiger von Funktion zurück.... was ist falsch?


Ich kann anscheinend nicht herausfinden, was mit meiner Funktion nicht stimmt.... Ich muss den Benutzer nach einem Preis fragen und ihn dann als Doppelzeiger zurückgeben, aber ich erhalte Tonnen und Tonnen von Fehlern:


double* getPrice()
{
double* price;
cout << "Enter Price of CD: " << endl;
cin >> &price;

return price;
}

Antworten:


Um einen Zeiger jeglicher Art zu verwenden, muss er auf einen gültigen Speicher zeigen. Im Moment haben Sie einen Zeiger, der nicht initialisiert ist und auf Müll zeigt. Versuchen Sie Folgendes


double* price = new double();

Zusätzlich benötigen Sie cin pass zu einem double kein double** .


cin >> *price;

Beachten Sie, dass dadurch Ihrem Prozess neuer Speicher zugewiesen wird, der zu einem späteren Zeitpunkt freigegeben werden muss. Nämlich durch den Aufrufer von getPrice. Zum Beispiel


double* p = getPrice();
...
delete p;

Idealerweise sollte Ihnen in diesem Szenario überhaupt kein Zeiger zugewiesen werden, da dies zu unnötigem Speicherverwaltungsaufwand führt. Eine viel einfachere Implementierung wäre die folgende


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

Einige Code-Antworten


double* getPrice()  {
double* price;
cout <<
"Enter Price of CD: " <<
endl;
cin >>
&price;
return price;
}
double* price = new double();
cin >>
*price;
double* p = getPrice();
... delete p;
double getPrice() {   double price;
cout <<
"Enter Price of CD: " <<
endl;
cin >>
price;
return price;
}